「勝てる時だけ枠を使う」を実装したら、1日の全検証で一番効いた話
今日は朝から晩まで、損切り・利確・銘柄選定・果ては人間のベテラントレーダーの手法まで、片っ端からバックテストにかけた長い一日でした。20本近く検証した中で、最終的に一番効いたのは、いちばん単純な発想でした。
きっかけは「枠が常に満杯」という指摘
「枠が10個あるからといって、出禁が出ると空いた枠を埋めるために悪い銘柄を買うことになるのでは。勝てる目があるときだけトレードして、結果として1枠の時間帯も10枠の時間帯もある、という発想にならないの?」という指摘を受けました。
調べてみると、まさにその通りでした。過去の実験でボットの同時保有数を5分刻みで数えたところ、直近30日間ほぼ100%満枠。ボットは一度も「待つ」ということをしていませんでした。枠を5個から10個に増やす検証をしたときも、増えた分の被害は相場全体が崩れる日の同時被弾に集中していて、良い相場では枠10は害になっていませんでした。つまり、枠の適正数は固定値ではなく、その時の相場の状態によって変わるはずなのに、今までは「常に全力10枠」で運用していたわけです。
一律の閾値引き上げでは解決しなかった
最初に試したのは、AIの予測に対する要求を全時間帯で一律に厳しくする案でした。理屈としては、要求を上げれば自然と取引が減り、悪い相場でも枠が空くはずです。しかし結果は、確信度の高い判断だけに絞った分は勝率が上がったものの、それ以上に取引数が減って総額で負けました。一律のバーの上げ下げでは、良い相場でのチャンスまで一緒に削ってしまうことがわかりました。
実装: BTCの地合いで枠の上限を切り替える
そこで、BTC/USDTの値動きを市場全体の地合いの目印として使い、直近4時間の変化率に応じて同時保有できる枠の上限そのものを変える仕組みにしました。
- 追い風(BTCが4時間で+0.2%以上): 枠10
- 凪(その中間): 枠6
- 向かい風(BTCが4時間で-1.0%を超えて下落): 枠3
決済は一切制限しません。制限するのは新規エントリーだけです。悪い地合いのときは、無理に枠を埋めず空けておく、という発想をそのまま条件式にしました。
検証結果
いつもの2窓検証(直近30日・160銘柄と、6ヶ月ホールドアウト・17銘柄)にかけたところ、両方の窓で現行構成を上回りました。
| 直近30日窓 | 6ヶ月ホールドアウト | |
|---|---|---|
| 現行(固定10枠) | +7,772 USDT | -5,216 USDT |
| 地合い連動の枠制御 | +12,038 USDT | -5,118 USDT |
30日窓では取引数が1,062件から891件に減ったにもかかわらず、総利益は5割以上増えました。件数を減らして総額を増やす、というのは今日試した中でもかなり珍しい結果です。
今日一日でわかったこと
今日は他にも、損切りをさらに浅くする案、利確をさらに高くする案、板の荒い銘柄を出禁にする案、有名な人間トレーダーの資金配分手法の模倣、GitHubで公開されている有名な自動売買戦略をそのまま同じ条件で走らせるベンチマークなど、数多く検証しました。
その中で見えてきたのは、「特定の条件を満たす取引を丸ごと禁止する」系の対策は軒並み裏目に出て、逆に「量を状況に応じて増減させる」系の対策は今日も昨日も一貫して効く、という傾向でした。禁止は「悪い1件を防ぐ」代わりに「空いた枠に別の悪い1件が入る」だけになりがちですが、量の調整は枠そのものを空けたままにできるので、この違いが結果を分けているようです。
明日以降は、この「地合い連動」の発想を、枠の数だけでなく銘柄ごとの扱い(利確目標や損切り幅)にも広げられないか、実弾での挙動を見ながら考えていきます。
注記: このbotは現在dry-run(ペーパートレード)で稼働しており、実際の資金は一切動いていません。本記事の損益・取引はすべてシミュレーション上の数値です。取引ダッシュボードはこちら