明日の日経平均の終値を予測

伝統的な数理ファイナンス、ミリ秒単位の攻防戦のアルゴリズム取引、で押さえたポイントを踏まえて、日経平均の予測に取り掛かります。
日経平均株価が上がるか下がるかを前日に知ることが出来れば、色々と良いことがあります。

※ テーマとしては面白いのですが、合算である上に、算出に株価換算係数や除数を使っている為、 まともに計算すると、複雑な因数分解を解くようなもので、普通はやりません。

分析と考察

まず、データの特性を見極めるために、統計的な分析を行います。
試しに、2024年8月から2025年7月までの価格の変動状況をチェックします。

  1. 2024年8月5日 売りが売りを呼ぶパニック下げ
  2. 2025年4月7日 トランプ関税砲下げ
  3. 2025年7月24日 電撃関税交渉成立上げ

例えば、1~3のような前日からの変動幅が大きい日に関しては、注視する必要があります。
2に関しては、一見、突発的な要因に見えますが、一週間ぐらい前から兆候が出ており、例年4月上期の季節性の変動とも重なっています。

等々、多角的に分析して、特徴量エンジニアリングの方向性を決めます。

データの前処理

機械学習を行う前に、データのクリーニングや正規化などを行い、AIが学習しやすいように整えます。

(前処理の一例)定常性について
統計的に分析可能な状態にする為には、データが平均と分散が時間によらず一定になっている必要があります。

日経平均価格の生データの定常性を拡張ディッキー・フラー(ADF)検定でチェックした結果、
Critical Value (1%): -3.4314109835286453
Critical Value (5%): -2.8620088595072937
Critical Value (10%): -2.567019571125975
ADF Statistic: 0.05479051498643435
p-value: 0.9628353914977755

P値(有意水準)が0.05より大きければ、非定常なデータなので、処理を加える必要があります。

予測対象データを定常化する方法

Differencing
単位根を持つ非定常データに有効な方法で、時系列の前の値との差(1次差分、2次差分等)を取ることで、データのトレンドを取り除く。

Log Transformation
元データに対して、自然対数や常用対数を取って、データの分散を安定させる。

Moving Average
移動平均を計算し、元データを平滑化することで、ノイズを減らす。

Seasonal Adjustment
季節成分を推定し、特定の周期成分を抽出して削除する。

Filtering
Hodrick-Prescott FilterやBaxter-King Filterなどを使って、トレンド成分と循環成分を分離し、データを平滑化する。

他、必要に応じて、標準化(StandardScaler)、スケール変換(MinMaxScaler)、ドロップアウト、正則化(L1, L2)を適時実行します。

日経平均と関連指標の相関

例えば、
前日の為替、先物、NYダウ、S&P500、ナスダックの変動幅が日経平均に与える影響をヒートマップで見てみます。

このようにして、相関を確認しながら、予測に使えるデータを選定します。

機械学習で予測

目的変数は、明日の日経平均の終値と終値の変化率です。
リークを防ぐために、予測対象の値は除外しています。
説明変数は、移動統計量、テクニカル指標、ラグ特徴量、等などを使っています。

挑戦1回目 2025年8月6日
方法 VectorAutoregressionベースのアンサンブル学習
AI予測価格 40,652円
正解価格 40,794円
誤差 -142

挑戦2回目 そのうち