深淵を科学する 第5回:700万円消えました

Pocket


勝ったと思ったら、順番のせいだった

前回まで、AIと一緒にいくつかの株式売買戦略を組み合わせ、実際の過去データを使って検証してきた。

それなりに良い数字も出てきた。

「もしかしたら、これは使えるんじゃないか」

そんな感覚も少しずつ出てきた。

だから次に考えたのは、当然これだった。

「もっと良くできないか?」

そこで、いろいろな方法を試してみた。

そして今回、かなり面白いことが分かった。

新しく試した戦略は、ほぼ全部ダメだった。

……いや、それだけならいつもの話だ。

本当に面白かったのは、その途中で、

「勝ったと思っていた数字そのものが、怪しい」

ということが分かってきたことだった。

「勝った」と思った

組み合わせていた3つの戦略の中に、特にシグナルを出す確率が高い戦略があった。

問題は、買いたい銘柄が多すぎることだった。

例えば、実際の資金では5銘柄までしか持てないのに、ある日には30銘柄、別の日には50銘柄くらいが「買いたい」と手を挙げてくる。

当然、全部は買えない。

そこで、

「だったら、持てる銘柄数を増やしたら、もっと利益が出るんじゃないか?」

とAIに聞いてみた。

やってみる。

すると、本当に成績が良くなった。

それまで指数に負けていた成績が、初めて指数を上回った。

これはちょっと嬉しかった。

「もしかして、これが答えなのでは?」

と思った。

ところが、ここで一度立ち止まった。

バックテストで数字が良くなったときほど、疑ったほうがいい。

「なぜ良くなったのか?」

これを確認しないといけない。

そこで「順番」を疑った

今回の仕組みでは、買いたい銘柄が30~50銘柄あっても、実際に買えるのはその一部だけだ。

つまり、

「どの銘柄を先に買うか」

が結果に影響する。

例えば、買いたい銘柄が、A、B、C、D、E、F、G……と並んでいたとして、5銘柄しか買えないなら、A~Eを買うことになる。

では、もし順番が、F、G、H、I、J……だったら?

買う銘柄はまったく変わる。

つまり、銘柄を選ぶ能力とは別に、

「たまたまどの銘柄が先頭に並んでいたか」

という要素が入り込んでいる。

これは危ない。

そこで、AIにこう頼んだ。

「銘柄の優先順位をランダムにして、何回もやってみよう」

同じ条件で、銘柄の並び順だけをランダムに変える。これを20回繰り返した。

すると、面白い結果が出た。

最初に「指数に勝った」と喜んだ数字は、20回のランダムな結果と比べてもかなり良かった。

一見すると、「じゃあ、やっぱりすごい戦略だったんじゃないか」とも思える。

しかし、よく考えると逆だ。

その良い結果が、特定の並び順に依存していた可能性がある。

つまり、「この銘柄を選ぶ能力があったから勝った」のではなく、「この順番で処理したから、結果的に都合のいい銘柄が選ばれた」だけかもしれない。

さらに順番を変えて何度も検証すると、その疑いが強くなっていった。

結局、「枠を増やしたら指数に勝った」という最初の発見は、そのままでは戦略の優位性を証明するものではなかった。

バックテストの数字は出ている。でも、その数字が生まれた理由が説明できない。

これはかなり重要な問題だ。

そして、700万円が消えた

そんな検証をしている途中、別の実験でも妙な数字が出てきた。

3つの戦略を別々に管理するのではなく、「3つの戦略で資金を一つにまとめて運用したらどうなるか?」という実験をしていた。

ところが、出てきた成績が異様に悪い。

「これはさすがにおかしい」ということで、AIに実装を一つずつ確認してもらった。

すると、見つかった。バグだった。

同じ日に、2つの戦略が同じ銘柄を買おうとした場合に問題が起きていた。片方の取引記録が、もう片方の記録によって上書きされていた。

その結果、本来存在しているはずの資金が、計算上消えていた。

金額にすると、およそ700万円分。

もちろん実際のお金が消えたわけではない。バックテスト上の資金が、プログラムのミスによって消滅していたという話だ。

修正すると、当然ながら成績は正常な数字に戻った。

しかし、この件はかなり怖かった。

なぜなら、もし数字だけを見ていたら、「この運用方法はものすごく成績が悪い」という結論を出してしまっていた可能性があるからだ。

そして逆方向にも、まったく同じことが言える。

バグによって悪く見えることがあるなら、何らかの実装ミスによって良く見えている可能性もある。

バックテストの数字を信用するには、「結果」だけではなく、その結果がどのように計算されたのかまで確認しなければならない。

「暴落に強い」の正体

もう一つ、今回かなり気になったことがある。

これまで、この戦略には一つ自信を持っていた。

「下落相場に比較的強い」ということだ。

指数が大きく下がっている期間でも、こちらの戦略はそれほど大きく下がらない。これは戦略の防御力が高いからだと思っていた。

ところが、ふと気づいた。

この戦略、そもそも株を全部買っていない。だいたいいつも、資金の半分くらいしか株式に投入していなかった。残りの半分は現金だ。

……それなら、下落に強くて当たり前ではないか。

株が50%下がっても、資金の半分が現金なら、ポートフォリオ全体への影響は半分になる。

そこで比較してみた。複雑な銘柄選択をする戦略と、「指数を半分だけ買って、残りは現金で持つ」というだけの極めて単純な方法。

結果はどうだったか。

ほぼ同じだった。

つまり、「この戦略は暴落に強い」と思っていた部分のかなりの割合が、単純に株を半分しか持っていなかったことで説明できてしまった。

これは地味にショックだった。

工夫したことに、本当に価値はあるのか?

ここまで来ると、少し嫌な疑問が出てくる。

AIと一緒に、銘柄を選ぶ。モメンタムを見る。相場環境を判定する。クラッシュを検知する。保有枠を調整する。決算を利用する。タイミングを調整する。

いろいろなことをやっている。

しかし、それらの複雑な仕組みを全部取り払って、「指数を半分だけ持って、半分は現金にしておく」だけでも、似たような結果が出てしまう。

だったら、今まで作ってきた複雑な仕組みに、いったいどれだけの価値があるのか。まだ証明できていない。

ここはかなり重要だと思っている。

投資戦略を作っていると、「複雑なものほど賢そう」に見えてしまう。条件を増やして、フィルターを増やして、AIに分析させて、たくさんの数字を組み合わせる。

でも、複雑になったことと、優れた戦略になったことは同じではない。

むしろ、単純な方法で説明できる結果なら、まず単純な方法で説明できないかを確認したほうがいい。

今回、試したもの

今回の検証では、いろいろなアイデアを試した。結果を残しておく。

値上がりの強い銘柄を毎月選び直す戦略。指数並みのリターンは出たが、時々大きく下落する癖が残った。

相場の急落を事前に察知して逃げる仕組み。2種類試したが、どちらも結局、落ち始めてから危険だと判断する形になった。事前予測ではなく、事後反応だった。

保有枠を増やす方式。今回の「勝ったと思ったら順番だった」の原因になったやつだ。一時的には指数を上回ったが、銘柄の優先順位に結果が左右される問題が見つかった。

3つの戦略の資金を一つにまとめる方式。理論上は効率が良さそうだった。しかし、同じ銘柄を複数の戦略が買ったときの処理にバグがあり、バックテスト上で約700万円分の資金が消えていた。修正後も、最終的には採用しなかった。

2008年のリーマンショックまで遡る長期耐久テスト。できればやりたかった。しかし、手元にあるデータが足りず断念。データがなければ、どれだけAIに頑張ってもらっても検証できない。

2020年のコロナショックを通した耐久テスト。一見すると下落をうまく避けている。しかし、よく見ると、暴落中に何も買っていなかっただけだった。これも「暴落に強い」という証明にはならない。

複雑な戦略と、指数を半分だけ持つだけの単純な方法の比較。結果はほぼ同じ。現時点では、複雑な仕組みの優位性を証明できなかった。

相場の勢いに応じて指数への投資倍率を変える戦略。理屈は良さそうだった。しかし、実際に判定してみると、タイミングがことごとく裏目に出た。

決算発表後の値動きを利用する戦略。今回試した中では、一番成績が悪かった。

結局、何が分かったのか

今回の検証で、戦略そのものについて大きな発見があったわけではない。むしろ逆だった。

「自分たちが勝ったと思っている数字を、どこまで疑えるか」

という話になった。

指数を上回った。でも、銘柄の並び順を変えたら結果が変わった。暴落に強かった。でも、単純に現金を半分持っていただけだった。成績が異常に悪かった。調べたらプログラムのバグだった。

こうして一つずつ調べていくと、「すごい戦略を発見した」と思っていたものが、どんどん普通のものに戻っていく。

でも、これは失敗ではないと思っている。

むしろ、本番でお金を入れる前に、「勝っているように見えるだけの理由」を一つずつ潰せているからだ。

そして、紙トレードを始めた

ここまで来たので、理屈の検証だけではなく、実際の市場で動かしてみることにした。

ただし、まだ本物のお金は入れない。

仮に1000万円を運用するとしたらどうなるのか。その前提で、紙トレードを始めた。

毎日、AIがシグナルを出す。そのシグナルをダッシュボードに反映する。実際に売買したつもりで記録する。

そして、「昨日買った銘柄は今日どうなったのか」「このシグナルは本当に機能したのか」「想定していなかった動きをした銘柄はなぜそうなったのか」を毎日追っていく。

バックテストでは、過去の数字を見る。紙トレードでは、これから起こる市場を相手にする。この二つは似ているようで、かなり違う。

バックテストでは、「過去に勝てたか」を見る。紙トレードでは、「今、この瞬間に本当に使えるのか」を見る。

そして、その先にようやく、「実際のお金を入れてもいいのか」という判断がある。

まだそこには到達していない。

今のところ分かっているのは、「勝てる戦略を見つけた」ということではない。むしろ、「勝てると思った戦略を、疑って、壊して、また検証する」という作業をしているということだ。

深淵を覗いているつもりだったが、どうやら最初に覗かなければならなかったのは、自分たちが出した「勝った」という数字のほうだった。

中の人の一言

やればやるほどインデックスの凄さが身に染みて分かってくる。

銘柄、タイミングを選ぶほどに資金拘束され、選ぶ基準を下げればリスクが増えていく。

宝くじを当てるのではなく、期待値を積んでいく。これができない。

やってみて初めて理解できた気がしますね。「値ごろ感で適当にやると勝てない」と。

「だけど、順張りしてたらそのうち価格戻るしずっと持ってればいいやん」という気持ちも残っている。

このあたりがもう一段深堀できたらいいなと今考えている。