銘柄を増やしたら年利がほぼ倍になった。でも、それは「未来のカンニング」だった
こんにちは、クロンです。インフラエンジニアの管理職をしながら、AI(Claude Code)と一緒に日本株のスイングBotを自作しています。プログラミングもデイトレも素人です。
これは連載の7本目です。前回まではこちら↓
「月1%」が「月0.6%」に。バックテストの数字を26年でならしたら
バックテストの次は「フォワードテスト」。口座ゼロでも今日から始められる
損切りもショートも効かない。効いたのは地味な「分散」だけだった
「ツキイチ」を「シューイチ」にしたら、成績が半分になった
バックテストで"効いた"のに、手数料を入れたら消えた
"炭鉱のカナリア"を見張り番にしたら、暴落の痛みが浅くなった
先日、Botの「売買候補にする銘柄のリスト」を39銘柄から221銘柄に広げてみました。そうしたら過去21年のバックテスト(=過去のデータで作戦を試すこと)で、年利がおよそ+11%から+18%へ、1.6倍近く。リスクに対する効率の指標も良くなりました。
「よし、これ採用でしょ」と思いました。でも数字をノートに書き写す前に、昔の自分が書いたメモの脚注を読み返して、手が止まったんですよね。その数字、実力じゃなくて「未来のカンニング」で出た下駄でした。結局ボツにしました。
この記事で分かることは2つです。
バックテストで良い数字が出たとき、それが実力か"未来のカンニング"かを見分ける、自分用のチェックの型
「候補を増やせば成績は良くなる」という当たり前っぽい話が、なぜ今回は外れたのか
おさらい:僕のBotがやってること
ざっくりだけ。僕のBotは、毎月1回、その時いちばん勢いのある大型株の上位数銘柄に入れ替えるだけです。過去の値動きの強さ(モメンタム=勢い)だけで機械的に決めます。相場が崩れてきたら株の比率を自動で下げる安全弁もついています。
その「入れ替え候補にする銘柄のリスト」を、僕は母集団(ぼしゅうだん)と呼んでいます。今は39銘柄。業種がかたよらないように、大型の優良株を手作業で選んだリストです。
今回いじったのは、この母集団の中身です。
候補リストを39→221銘柄に広げてみた
やったことはシンプルです。39銘柄の母集団を、1株から買える範囲の流動株221銘柄に差し替えただけ。勢いの測り方も、保有する銘柄数も、安全弁も、全部これまで通り。候補の数だけを増やしました。
狙いはこうです。候補が5倍以上に増えれば、勢いの強い・弱いがハッキリ分かれる。39銘柄だと「本当は弱いのに、消去法で上位に残ってしまう」銘柄が混ざりやすい。母数が増えれば、その分だけ上位の質が上がるはず、と考えました。
結果がこれです。数字はすべて僕の実測で、過去21年ぶんのバックテスト。過去データ上の結果で、将来を保証するものではありません。
現行39銘柄 拡大221銘柄 年利 +11.1% +18.2% 暴落時の最大の落ち込み -25.3% -31.2% リスク効率(リターン÷値動きの荒さ) 0.80 0.96
年利が7ポイントも上がって、リスク効率も改善。落ち込みは深くなったけど、それを補って余りある数字に見えました。前半・後半に期間を割っても、両方で年利は改善しています。
「これ採用でしょ」と思った、そのとき
正直、小躍りしかけました。守りの工夫はこれまでさんざん外してきたので(3本目・5本目の記事)、久しぶりに気持ちよく効いた検証でした。
ただ、数字を記録する前にひとつだけ、いつもの手順をやりました。過去に自分が書いた検証レポートを読み返す、というやつです。今回は「攻め型の設定を試した回」のレポートを開きました。そこの脚注に、数ヶ月前の自分がこう書いていました。
母集団を広げたときの参考値(年利+18〜22%/落ち込み-31〜-45%)は、いまの株価指数の構成銘柄で計算した、生存バイアス込みの数字
今回出た数字(+18.2%/-31.2%)は、この「生存バイアス込み」のレンジにすっぽり収まっていました。
いや、これは偶然じゃないな、と。「母集団を広げた効果」だと思っていたものは、別の名前がついた下駄かもしれない。そう思って、いったん保留にしました。
生存バイアスって何?
生存バイアス(せいぞんバイアス)=「今日まで生き残ったものだけを見て、途中で消えたものを数えないこと」です。生存"者"バイアスとも言います。
僕が使った221銘柄のリストは、今の時点で元気に取引されている会社のリストです。2004年から2026年までの間に、経営が傾いて上場廃止になったり、買収されて消えたりした会社は、最初から入っていません。
同じことを別の日に確かめました。僕の39銘柄と同じ電機セクターで、昔は大型株だったのに今は上場していない会社が2社ありました。東芝(2023年12月に上場廃止)と三洋電機(2011年3月に上場廃止)です。株価データを取るライブラリで実際にこの2社を叩いてみたら、データはもう返ってきませんでした。上場廃止になった瞬間、いま使っているデータの仕組みからは、その会社がまるごと消える。これが生存バイアスの正体です。
言い換えると、こうです。今の順位表を見ながら、過去の試合をやり直している。「勝ち残ったチームだけ」で総当たり戦を組めば、平均成績が良くなるのは当たり前なんですよね。
数字でも知られています。国内株のアクティブ型投資信託で、2020〜2024年に運用をやめた(=消えた)ファンドの2015〜2019年の平均リターンは年率5.9%。運用を続けているファンドの平均は年率7.4%でした(出典:松井証券のコラム)。消えたぶんを見ないだけで、平均が1.5ポイントほど良く見えます。
追試でハッキリした:改善幅の"偏り"が手がかり
保留のあと、追試をしました。「221銘柄は広げすぎかもしれない。大型で優良な70銘柄くらいに控えめに絞れば、生存バイアスの影響は小さいはずだ」と考えたからです。
追試1。直近5年の売買代金(=どれだけ活発に取引されたか)で上位70銘柄を選び、母集団にしました。結果は……ほぼ同じ好成績。年利+17.6%、リスク効率0.96。
でも、内訳がおかしかった。前半(2005〜2015年)の改善は+2ポイント。後半(2016〜2026年)の改善は+12ポイント。後半だけ効果が6倍。こんなに偏るのは不自然です。
原因はすぐ分かりました。「直近5年の売買代金で選ぶ」の"直近5年"が、検証の後半期間とまるかぶりしていたんです。つまり、後から株価が急に伸びて取引も活発になった銘柄(半導体まわりなど)を、結果を知っている僕が後出しで選んでいた。221銘柄版とは違う物差し(流動性の順位)を使っただけで、やっていることは同じ「未来の情報で過去を選ぶ」でした。
追試2。物差しを変えました。ランキングに使うのは「検証期間より前、2005〜2008年の売買代金」だけ。それ以降のデータは順位付けに一切使わない。
現行39銘柄 大型70銘柄(2005-08年の情報だけで選ぶ) 年利 +11.1% +11.0% 暴落時の最大の落ち込み -25.3% -32.3%
年利の改善は、消えました。落ち込みはむしろ全期間で深くなった。却下です。Botの設定は何も変えませんでした。
数字が良すぎたときの、自分用チェックリスト
今回できあがったチェックの型を置いておきます。
記録する前に、昔の自分のメモや脚注を読み返す。 今回はこれが最初の気づきでした。過去の自分が「この数字はバイアス込み」と警告を残していた。良い結果ほど、記録して満足する前に一拍おく。
改善幅が、前半と後半で不自然に偏っていないか。 本物の効果なら、期間を割っても似たように出るはず。片方の期間だけ極端に効いていたら、その期間の"答え"を先に知って選んでいる可能性を疑う。
候補選び・順位付けに、「今の情報」や「検証期間内の情報」が混ざっていないか。 今の指数構成、直近の出来高、直近の勝ち組。どれを物差しにしても、未来がにじみ込みます。順位付けは「検証期間より前のデータだけ」で作る。
参考に、他の人の体験も。ある個人ブログでは、バックテストで勝率92%・リスク効率3.5という出来すぎた数字が出て、原因が「今日下がったのを確認してから、今日の朝に戻って買う」コードのバグ(ルックアヘッドバイアス=先読みのズル)だったそうです。気づいた方法は、①でたらめなタイミングで売買した場合と比べる、②取引を1件ずつ目で見る、③データを途中で切ってサインが変わるか見る、の3つ。「市場はそこまで甘くない」という締めが、耳が痛いです(出典:algo-trading.tokyoのブログ)。
ひとつ補足。よく聞く「過剰最適化(=過去相場に合わせ込みすぎ)」とは別物です。あれはパラメータのいじりすぎ。今回のは候補リストの選び方に未来が混ざるという、もう一段見えにくいやつでした。
なぜ「候補を増やせば良くなる」は外れたのか
バイアスを抜いたら効果が消えた、というだけじゃなく、落ち込みはむしろ悪化しました。ここも理由があります。
今の39銘柄は、業種がかたよらないように手作業でバランスを取ったリストです。それを「大型で、よく取引されている」という1つの物差しだけで70銘柄に広げると、銀行や重厚長大な業種の比率が上がります。すると、2008年の金融危機みたいな局面で、下げをより広く食らう。
「候補を増やせば分散が効いて安定する」と思っていたけど、増やし方の軸が雑だと、逆にかたよる。数を増やすことと、バランスを取ることは、別の作業でした。
次にやること/同じところで迷ってる人へ
次は、母集団を本気で広げるなら、その手前の「その時点で実際に買えた銘柄リスト」を用意するところから始めます。過去のどの月にどの会社が上場していたか、という記録(point-in-timeデータと呼ばれます)。ここを揃えないと、母集団をいじる検証は毎回この罠にはまります。
同じところで迷っている人へ。バックテストで良い数字が出たら、まず自分を疑う。 とくに「候補を増やした」「今のリストで回した」ときは、その好成績の何割かは"未来のカンニング"かもしれない。連載1本目で「バックテストの数字は割り引いて見る」と書きましたが、今回みたいに、割り引くどころか丸ごと下駄だった、ということもあるんですよね。
僕も危うく採用するところでした。止めてくれたのは、数ヶ月前の自分が残しておいた脚注のひとことでした。
※この記事は僕の開発記録です。特定の銘柄や手法をすすめるものではありません。投資は自己判断で。
いいなと思ったら応援しよう!
この記事は noteマネー にピックアップされました

