バックテスト年利+360%のシステムが実弾で-8%になった話 — 過適合の解剖記録
これは他人の失敗談ではありません。当ラボの前身システムが実際に踏んだ失敗の、一次データつきの解剖記録です。
何が起きたか
機械学習(LightGBM)で株価の上昇確率を予測する日中売買システムを構築し、バックテストは次の数字を出しました。
| 指標 | バックテスト |
|---|---|
| 年率リターン | +359.9% |
| 勝率 | 70.9% |
| 最大ドローダウン | 1.21% |
この数字を信じて仮想売買(ペーパートレード)を約2.5ヶ月・119トレード実施した結果がこちらです。
| 指標 | 実運用(ペーパー) |
|---|---|
| 損益 | -7.97% |
| 勝率 | 34.5% |
| 1トレード期待値 | 約-985円 |
原因1: データリーク(これが主犯)
機械学習モデルの学習期間が2024年4月〜2026年5月、バックテストの検証期間が2025年6月〜2026年5月。つまり検証期間が学習期間に丸ごと含まれていました。モデルは「未来の答えを暗記した状態」でテストを受けていたのです。
これは初歩的ミスに見えて、実際には非常に起こりやすい事故です。モデルの再学習を繰り返すうちに、学習データの終端がバックテスト期間に侵食していても、コードを見ただけでは気づきにくい。+360%のような数字が出た瞬間に喜ぶのではなく、疑うべきでした。
原因2: 平均利益より平均損失が大きい
実運用119トレードの内訳は、平均利益+1,352円に対して平均損失-2,216円。勝率34.5%と合わせると期待値は必ずマイナスになります。損切りは24回で合計-111,495円。「小さく勝って大きく負ける」構造でした。
再発防止として今も使っている5つのチェック
- 学習期間と検証期間が1日でも重なっていないか
- 判定に使う情報が「その時点で入手可能だったか」(当ラボは判定=前日終値まで、執行=翌日寄付のみ、と構造で強制)
- 投資額が毎日の資金残高を超えていないか(資金制約のないバックテストは数字が数倍に膨らむ)
- 月次リターンに+50%超のような異常値がないか
- 手数料・スリッページ・単元株制約を入れているか
教訓
バックテストの数字は「上げようと思えばいくらでも上がる」ものです。パラメータを結果を見ながら調整すれば、過去に対して完璧なシステムは誰でも作れます。しかしそれは将来の期待値を下げながら表示上の数字を上げる行為です。当ラボが現在運用中のシステムがバックテストで年率30%前後という「地味な」数字なのは、これらのチェックをすべて通した後の数字だからです。それでも将来は保証されません — だからこそ毎日の検証記録を公開しています。
関連記事
本サイトは投資助言ではなく、自動売買システムの検証記録と一般的な金融教育情報の提供を目的としています。掲載する実績にはペーパートレード(仮想売買)を含み、将来の成果を保証するものではありません。投資判断はご自身の責任で行ってください。