「指数に勝った」と喜んだら、比較の日経225が別の期間の数字だった
こんにちは、クロンです。インフラエンジニアの管理職をしながら、AI(Claude Code)と一緒に日本株のスイングBotを自作しています。プログラミングもデイトレも素人です。
これは連載の11本目です。前回まではこちら↓
「月1%」が「月0.6%」に。バックテストの数字を26年でならしたら
バックテストの次は「フォワードテスト」。口座ゼロでも今日から始められる
損切りもショートも効かない。効いたのは地味な「分散」だけだった
「ツキイチ」を「シューイチ」にしたら、成績が半分になった
バックテストで"効いた"のに、手数料を入れたら消えた
"炭鉱のカナリア"を見張り番にしたら、暴落の痛みが浅くなった
銘柄を増やしたら年利がほぼ倍になった。でも、それは「未来のカンニング」だった
「5月に売れ」をBotに入れたら、下げ幅は縮んだ。でも年利がそれ以上に減った
9回いじって、9回ボツ。Botの改善は、いったんやめる
コードは書けない。でも「判断」の責任は自分にある
先日、新しく試していた作戦が2つ、「日経225(=日本の代表的な株価指数。市場平均みたいなものです)に勝った」という判定になりました。よし、と思ってグラフを作ってもらったら、その場で発覚したんです。比較に使っていた日経225側の数字が、まるっきり別の期間のものだった、と。
この記事で分かることは2つです。
バックテストで「指数に勝った」という結果を見たとき、どこを疑えばいいのか
表の数字だけを見ていたら気づけなかったミスに、なぜグラフにしたら気づけたのか
おさらい:ツキイチとは別に、もうひとつBotを試してる話
僕のメインのBotは「ツキイチ」という、月に1回だけ入れ替える日本株のスイングBotです。これは連載でずっと扱ってきました。
それとは別に、いま信用取引(=自分の資金の何倍かの金額で取引できる仕組み。増える時は大きく増えるけど、下手すると入れたお金より大きく減ることもある)を使って、もっと"増やす"方向を狙う新しいBotのアイデアを、いくつも試している最中です。まだ「これだ」という形にはなっていません。今回の話は、その試行錯誤の途中で起きた出来事です。
「指数に勝った」と一瞬喜んだ話
その日、新しいBotの候補をいくつかまとめて検証していました。そのうち2つの作戦が、それぞれのバックテストで「日経225をただ買って持っておくだけ(バイ&ホールド)」より良い成績、という判定になっていました。
いや、これは良さそうだぞ、と。信用取引を使う案は今まで何度も不採用にしてきたので(9本目の「9回いじって9回ボツ」もこの系統です)、久しぶりに手応えのある結果に見えました。
「グラフにして見せて」の一言で気づいた
その結果を確かめるために、AIに「作戦の成績と日経225を、同じグラフに並べて見せて」と頼みました。
グラフを作る作業の中で、AIが作戦の検証期間(2016年〜2026年、約9.7年間)に合わせて、日経225の年利・最大の落ち込み・リスク効率を、その場で計算し直したんです。そうしたら、これまで比較に使っていた数字とまったく違う結果になりました。
それまで使っていた日経225の数字:年利+8.3%/最大の落ち込み-61.4%/リスク効率0.47
同じ2016〜2026年で計算し直した本当の数字:年利+14.4%/最大の落ち込み-31.8%/リスク効率0.76
全部の指標で、大きく違いました。これ、比較相手が別人だったってことです。
原因:3年前の別検証の数字を、そのままコピペしていた
調べたら、原因は単純でした。作戦の成績を日経225と比べるための計算に、日経225の年利などを固定の数字として書いておいて、それを使い回していたんです。
その固定の数字の出どころは、数日前にやった別の検証でした。そっちは2005年〜2026年、21.7年間(2008年のリーマンショックも含む期間)で計算した実測値。でも今回の2つの作戦を検証していたのは2016年〜2026年というまったく別の期間。期間が違えば、比較相手の数字も当然違います。
それなのに、数字だけコピーして使い回していました。
しかも2016年〜2026年は、日経225にとって特別な期間でした。この10年で日経225はおよそ3.5倍に上がっています(日本経済新聞の株価データより)。記録的な右肩上がりの期間だったんですよね。
そんな強い期間の指数を、もっと不利だった昔の期間の数字(年利+8.3%)と比べたら、実際は指数に負けている作戦が「指数に勝った」ように見えてしまう。そういうカラクリでした。
面白いのは、似たような作戦を米国株向けにも作っていたんですが、そっちは無事だったことです。米国版は比較相手(S&P500というアメリカの代表的な指数)の数字を、毎回、検証と同じ期間でその都度計算し直す作りになっていました。日本版だけ、固定の数字を使い回す作りになっていたのが仇になりました。
どう直したか
まず、間違っていた2つの判定に、取り消し線つきで訂正を書き足しました。「ここは撤回」と、隠さずそのまま記録に残すやり方です。
次に、正しい期間で計算し直した比較グラフを作り直しました。同じ期間の作戦の成績と日経225を、資産の推移とグラフの両方で並べたものです。
最後に、教訓として1行残しました。ベンチマーク(比較の物差しにする指数)の数字は、必ず自分の検証期間と同じ日付の範囲で、その都度計算し直す。固定の数字を使い回さない。 今回みたいに、検証期間が変わった瞬間、比較そのものが静かに壊れてしまうので。
2つの作戦は、結局「指数に勝ってはいない」という扱いに戻りました。振り出しです。
数字が良く見えたときに疑うこと
今回の一件でできた、自分用のチェックです。
良い数字が出たら、まず「比較相手は本当に同じ条件か」を疑う。
自分の作戦の数字だけじゃなく、比べている相手の数字の出どころも確認する。固定値・使い回しの数字は、期間がズレていないか一度は洗い直す。
便利だからといって使い回した数字は、前提が変わった瞬間に静かに壊れる。表の数字だけで満足せず、グラフにしてみる。
今回は自分で数字を見比べて気づいたわけじゃなく、グラフを作る作業に入ったことで、勝手に矛盾が浮かび上がりました。人に説明する準備をすると、自分のミスにも気づきやすくなるんですよね。
連載7本目では「母集団の選び方に未来の情報が混ざっていないか」を疑う話をしました。今回はそれとは別で、比較する"相手"側の条件がズレていないかという落とし穴でした。「良い数字が出たら疑う」の対象は、自分の作戦だけじゃなく、比較相手の方にもある。そう思って、次の検証はこの確認を最初から組み込むことにしました。
※この記事は僕の開発記録です。特定の銘柄や手法をすすめるものではありません。投資は自己判断で。
