個人でUSD/JPYの自動売買システムを開発しています。 最近、相場の動きを物理法則で記述する「世界論」を作り始めて、 実際にデータから法則が見つかったので書いてみます。
きっかけ
自動売買を作っていると、テクニカル指標のパラメータ調整の沼にハマります。 MAの期間を20にするか25にするか。RSIの閾値を70にするか75にするか。 これは結局、過去データへのカーブフィッティングです。
ある時ふと思いました。 そもそも為替レートって何なの? なぜ動くの? この問いに答えられないまま、表面的なパターンだけ探していていいのか。
バネに挟まれたボール
考えてみると、ドル円レートは2つの引力に挟まれています。
- ドルの引力: 金利が高い → お金がドルに流れる → 円安方向に引っ張る
- 円の引力: 金利が低い → 引力は弱いが、ゼロではない
レートは、この2つのバネに挟まれたボールです。
[ドル引力]===強いバネ===●===弱いバネ===[円引力]
バネに挟まれたボールを放っておくと何が起きるか。 物理学の答えは明快です。振動します。 そして摩擦があるので、徐々に減衰して均衡点に収束します。
つまりレンジ相場はデフォルト状態です。異常ではない。 むしろトレンド(一方向への持続的な動き)のほうが特殊で、 誰かがエネルギーを投入し続けないと起きない現象です。
世界の方程式
これを方程式で書くとこうなります。
m·ẍ = -k·(x - x_eq) + F - γ·ẋ
xはレートkはバネの強さ(金利差)Fは推進力(市場参加者の売買エネルギー)γは摩擦(スプレッド等のコスト)
高校物理のバネ-ダンパー系と同じ構造です。
ただし正直に言うと、この方程式を書いた時点では 記号を置き換えただけでした。 「レンジ」を「減衰振動」と呼び、「トレンド」を「推進飛行」と呼んだだけ。 それでは世界論とは言えない。
本当の世界論は、データに値を入れたら答えが出る法則があって初めて成立する。
データから法則を探す
ケプラーは、惑星の軌道データを何年も眺めて T² = a³ を見つけました。 なぜそうなるかはケプラー自身にもわからなかった。後からニュートンが説明した。
順序は まず法則、次に理論 です。
私のシステムでは、ニューラルネットが5分ごとに 「5分後、10分後、...、60分後の価格変動」を12本の予測として出力します。 この12本の予測と、実際の価格変動を大量に並べて、関係式を探しました。
見つかった法則
法則1: 予測精度は時間の平方根に比例する
予測精度(相関係数)を縦軸、予測の先の時間を横軸にプロットすると、 12個の点がほぼ完璧に1本の曲線に乗りました。
精度 = a·√(時間) + b
フィッティングの決定係数 R² = 0.982。
5分先の予測はほとんどランダムに近い。 でも60分先になると、そこそこ当たる。 その間の精度の上がり方が、平方根に比例する。
なぜ平方根なのか。おそらく、ランダムウォークの標準偏差が√tで増大する性質と関係しています。 短期ではノイズが支配的で予測が難しいが、 長期では構造的なドリフト(引力バランスの方向)が顕在化する。
法則2: 市場参加者が多いほど予測が当たる
5分間のティック数(取引の活発さ)と予測精度の相関が r = 0.87。
市場が活発なとき(ティック密度が高い)はパターンが明瞭で、NNが捉えやすい。 閑散としているとき(ティック密度が低い)はノイズが支配的で、予測が外れやすい。
これは方程式の推進力Fの代理変数としてティック密度が使えることを意味します。 エネルギーが大きいときほど、世界は予測可能になる。
法則3: 予測は実際より控えめ
NNの予測値と実際の変動を比べると、 実際は予測の約1.4倍動いていました。
NNは「こっちに動きそう」という方向は当てるが、 「どのくらい動くか」は控えめに見積もる。 これはMSE損失関数の性質(条件付き平均への収縮)で理論的にも説明できます。
これの何がうれしいのか
値を代入すれば答えが出る。
これまでの自動売買の設計は「こうしたら儲かるかも」→「バックテストで確認」の繰り返しでした。 でも法則があれば、なぜ儲かるか(あるいは儲からないか)が説明できる。
例えば:
- 法則2から「閑散相場ではエントリーしない」というフィルタが自然に導かれる
- 法則1から「5分先の予測は信頼しない、60分先の予測を重視する」が定量的に決まる
- 法則3から「予測値を1.4倍に補正すべきか」を検証できる
フィルタの根拠が「バックテストで良かったから」ではなく 「物理法則がそう言っているから」になる。 カーブフィッティングとは本質的に違います。
将棋AIとの類比
私のシステムの設計思想は将棋のBonanzaと同じです。
- 評価関数(NNで学習): 市場がこれからどう動くかを予測する
- 探索(アルゴリズム): 予測を見て、いつ売買するかを決める
評価関数は複雑でいい。NNに任せる。人間はルールを作らない。 でも探索(売買判断)はシンプルなアルゴリズムにする。
世界論はこの探索層に属します。 「推進力が十分強く、かつ振動状態でないときだけ、順張りで入る。」 これが今のところの行動公式の全てです。
まだ途中
世界論はまだv4(第4版)です。 見つかった法則は3つだけ。未検証の仮説がたくさんあります。
でも方向は見えています。 1つずつ法則を検証して積み上げていけば、 最終的には数行の公式で全ての売買判断が記述できるはずです。
世界を理解してから、世界の中で行動する。 遠回りに見えるけど、これが一番確実なやり方だと思っています。