日米株リードラグ戦略を論文から実装して断念した話
論文を読んで興奮した。バックテストでも利益が出た。でも実運用は無理だった。
「これ、勝てるのでは」と思った論文
今年の3月、ある論文を見つけた。タイトルは「部分空間正則化付き主成分分析を用いた日米業種リードラグ投資戦略」。学術論文のタイトルらしく長いが、やっていることはシンプルだ。
日本の株式市場は、アメリカの市場に遅れて反応する。この「遅れ」を使って利益を出せないか、という研究だ。
論文に記載されたバックテスト結果はシャープレシオ2.22、年率リターン23.79%。個人投資家の僕からすると、かなり魅力的な数字だった。
「これは自分でも実装して試してみたい」。そう思って、論文の再現実装に取りかかった。
リードラグ戦略とは何か
まず「リードラグ」という概念を説明する。
アメリカの株式市場は日本時間の深夜に動いている。S&P500が大きく上がった翌日、日経平均も上がることが多い。逆にS&P500が下がれば、日経も下がりやすい。
この「アメリカが先に動いて、日本が後から追いかける」関係をリードラグ関係と呼ぶ。
ただし、話はそこまで単純ではない。業種ごとにこの「追いかけ方」が違う。たとえば半導体セクターはアメリカの動きにすぐ反応するが、内需系のセクターは反応が鈍い。
この論文がやっていたのは、業種別のリードラグ関係を主成分分析(データの特徴を少ない軸で捉える手法)で抽出して、翌日の日本市場の動きを予測するというものだ。
予測の方向に沿ってTOPIX-17(日本の業種別ETF、17本)をロングしたりショートしたりする。毎日リバランスして、毎日ポジションを組み替える。
実装の経緯
再現実装はPythonで行った。主な処理は以下の通り。
米国の業種別ETF(XLK, XLF, XLVなど)と日本のTOPIX-17 ETFの日次リターンを取得する
過去の米国リターンと翌日の日本リターンの相関構造を主成分分析で抽出する
その相関構造を使って、当日の米国リターンから翌日の日本セクターリターンを予測する
予測に基づいてロング/ショートのポジションを構築する
データの取得にはyfinanceを使った。学習期間は2010年から2014年、検証期間は2015年から2025年の約7年間だ。
論文に書かれていない細かい部分(たとえばXLC(通信セクター)が2018年まで存在しないこと)は自分で対処した。実装自体は2日ほどで完了した。
バックテスト結果: 利益は出た
取引コストをゼロと仮定した場合の結果がこちらだ。
年率リターン: 18.36%
シャープレシオ: 1.87
最大ドローダウン: -13.16%
勝率: 54%
シャープレシオ1.87というのは、かなり優秀な数字だ。一般的にシャープレシオが1.0を超えていれば「良い戦略」とされる。1.87なら文句なしに見える。
17銘柄中14銘柄で予測方向が正しかった。シグナル自体は確かに有効だった。
論文の数字(シャープレシオ2.22、年率23.79%)には届かなかったが、再現実装としては十分な結果だ。
ここまでは順調だった。
取引コストを入れた瞬間、景色が変わった
問題はここからだ。
バックテストに取引コストを入れてみた。片道5bps(0.05%)という、かなり控えめな仮定だ。
年率リターン: 18.36% → 1.94%
シャープレシオ: 1.87 → 0.20
最大ドローダウン: -13.16% → -23.44%
利益がほぼ消えた。
片道10bps(0.1%)にすると、もっと悲惨なことになる。
年率リターン: -6.94%
シャープレシオ: -0.68
最大ドローダウン: -48.28%
完全に赤字だ。やればやるほど損をする。
なぜこうなるのか: 年300回転の罠
原因は明確だった。この戦略のターンオーバー(売買回転率)が年率約300回転だったのだ。
ターンオーバーが年300回転ということは、ポートフォリオ全体を年に300回入れ替えているのと同じだ。毎日17銘柄のポジションを全部組み替えるのだから、当然そうなる。
1回の売買で片道5bps(0.05%)のコストがかかるとする。往復で10bps。それが年300回。年間のコストは300 x 0.1% = 30%だ。
年率リターンが18%の戦略に、年間30%のコストがかかる。差し引きでマイナスになるのは当たり前だ。
損益分岐コストを計算すると、片道6.1bps。TOPIX-17 ETFの実際の取引コスト(スプレッドとマーケットインパクトを含む)は5〜10bps程度。つまり、最も楽観的な見積もりでもギリギリ、現実的にはほぼ確実に赤字になる。
論文は間違っていたのか
論文が間違っていたとは思わない。シグナル自体は有効だったし、リードラグ関係も確かに存在している。
ただ、論文のバックテスト結果(年率23.79%)は取引コストを過小評価しているか、考慮していない可能性が高い。学術論文ではコスト未考慮のバックテストが珍しくない。研究の目的は「シグナルの有効性を示すこと」であって、「実際に儲かるかを検証すること」ではないからだ。
これは論文の落ち度というより、学術研究と実運用の目的の違いだ。
バックテストで勝てても本番で負ける理由
この経験を通じて、バックテストと実運用の間にある溝がよく見えた。バックテストで勝てる戦略が本番で負ける理由はいくつかある。
取引コストの過小評価がまず一つ。今回はこれが致命的だった。スプレッド、手数料、マーケットインパクト。これらを正確にモデル化しないと、バックテストの利益は幻になる。
スリッページも見落としがちだ。バックテストでは「この価格で約定した」と仮定するが、実際には注文を出してから約定するまでに価格が動く。特に流動性の低い銘柄では、想定価格で約定できないことがよくある。
そしてデータスヌーピングバイアス。これは「過去のデータを何度も見て、たまたまうまくいくパラメータを選んでしまう」問題だ。今回の戦略ではパラメータチューニングはほとんどしていないが、一般的にはこれも大きな落とし穴になる。
もう一つ、市場の構造変化がある。過去10年で有効だったパターンが、明日も有効とは限らない。リードラグ関係もアルゴリズム取引の普及とともに弱まっている可能性がある。裁定機会は見つかった瞬間から消え始める。
個人投資家がAI投資で気をつけるべき3つのこと
この失敗から学んだことを3つにまとめる。
1つ目。シグナルの有効性と、戦略の収益性は別物だ。「予測が当たるかどうか」と「儲かるかどうか」は全く別の問いだ。予測精度54%でも取引コストが低ければ儲かるし、予測精度70%でもターンオーバーが高すぎれば赤字になる。戦略を評価するときは、シグナルの強さだけでなく、売買頻度と取引コストを必ずセットで見る必要がある。
2つ目。バックテストの結果を鵜呑みにしない。コストゼロのバックテストは「理論上の上限」でしかない。実運用を前提にするなら、現実的なコストを入れた結果だけを見るべきだ。論文やブログに載っているバックテスト結果も、コストの仮定を必ず確認したほうがいい。
3つ目。「やめる判断」も重要な投資判断だ。実装に時間をかけたからといって、無理に運用する必要はない。損益分岐コストを計算して、現実的に利益が出ないと分かったら撤退する。サンクコストに引きずられて実運用を始めていたら、実際にお金を失っていた。
失敗は無駄じゃない
この検証に費やした時間は2日ほどだ。論文を読んで、実装して、バックテストを回して、「これは無理だ」と判断するまで。
結果としてこの戦略で1円も稼いでいない。でも無駄だったとは思わない。
得られたものは3つある。
「ターンオーバーと損益分岐コストを先に計算する」という実装前のチェック項目が増えた
学術論文と実運用の溝を体感で理解できた
「バックテストでシャープレシオ1.87が出ても、コストで死ぬことがある」という具体的な事例を手に入れた
特に3つ目は、今後どんな投資戦略を検討するときにも使える基準になる。新しい戦略を見つけたとき、最初に確認するのは「ターンオーバーはどれくらいか」「損益分岐コストは何bpsか」になった。
失敗から得た判断基準は、成功から得た判断基準より頑丈だ。なぜなら「やってはいけないこと」の輪郭がはっきりするから。
論文を読んで、実装して、検証して、撤退する。このサイクルを回すこと自体が、投資家としての筋トレだと思っている。
次はもう少しターンオーバーの低い戦略を探すつもりだ。
まとめ
シグナルの有効性と戦略の収益性は別物。予測が当たっても、取引コストで赤字になることがある
バックテストの結果を鵜呑みにしない。現実的なコストを入れた数字だけを見るべきだ
「やめる判断」も重要な投資判断。損益分岐コストを計算して、無理なら撤退する
この記事が参考になったら「スキ」を押してもらえると嬉しい。
気になる方はこちらもチェック!
僕のnoteではAI投資の実体験や、予測AIの開発記録について発信している。フォローしておくと新しい記事が届く。
※この記事は投資助言ではありません。投資判断は自己責任で行ってください。
いいなと思ったら応援しよう!
この記事は noteマネー にピックアップされました



コメント