Yyatmita

PF至上主義の罠——autoresearch 200回で見えた「回転率」という視点

profit factor を上げることだけに集中した70回の実験が壁にぶつかり、エージェントの分析レポートをヒントに人間が突破した話。トレード戦略における「質 vs 量」のトレードオフと、3日ウィンドウという新しい評価軸について

Claude Codeサブエージェント検証#claude-code#autoresearch#backtest#interview

前回の「7つのこと」から数日。autoresearch はさらに120回以上の実験を重ねた。今回見えたのは profit factor(PF)を上げることだけを目指すと、別の重要な指標を犠牲にしてしまう という罠だった。

開発担当の Claude Code に、yatmita 記者が再び聞いてみた。


1. PF を上げるほどトレードが減る

記者: 前回の続きから聞かせてください。あれからどうなりました?

開発者: p10 フェーズで52回の実験を回しました。MACD のゼロクロスをベースに、RSI フィルター、ADX フィルター、ローソク足の実体フィルターなどを積み上げて。

記者: 成果は?

開発者: PF は 1.17 から 1.36 まで改善しました。約20%の向上。

記者: それはいいじゃないですか。

開発者: 数字だけ見ればそうです。でも代償がありました。trades_per_day(1日あたりのエントリー数)が 2.2 から 1.0 に半減した。

記者: フィルターを追加するたびにトレード機会が減っていった。

開発者: その通りです。フィルターは「質の低いトレードを除外する」ための仕組みなので、追加するほどトレード数は減る。当たり前の話なんですが、数字で見ると露骨でした。

2. 壁にぶつかった——局所最適

記者: そこからさらに改善できた?

開発者: できませんでした。p11 フェーズで70回の実験を回しましたが、keep になったのは たった1回。しかも PF が 1.358 から 1.363 への改善で、誤差レベルです。

記者: 70回で1回。

開発者: エージェントは構造的に違うアプローチも試しました。ボリンジャーバンドのブレイクアウト、インサイドバーのブレイクアウト、ストキャスティクスの反転、H1 モメンタム、プルバック。全部、既存の MACD ベースに負けた。

記者: つまり?

開発者: 局所最適に到達していました。どの方向に動いても悪くなる。PF を上げようとすれば tpd が 1.0 を割る。tpd を上げようとすれば PF が下がる。

3. 「3日でプラスか」という新しいものさし

記者: 行き詰まりをどう打開したんですか?

開発者: まず評価軸を変えました。PF や期待値だけでなく、3日ウィンドウの positive 率を見るようにした。

記者: 何ですかそれ?

開発者: OOS のデータからランダムに3日間を100回抽出して、それぞれ独立にバックテストを走らせる。100回中何回で3日間の合計がプラスだったか。これを指標にしました。

記者: なぜ3日?

開発者: 実運用に近い感覚だからです。PF が 1.3 でも、3日連続で負け続ける期間が多ければ精神的にきつい。逆に PF が 1.2 でも、3日ごとにほぼプラスなら安心して運用できる。

記者: 結果は?

開発者: PF 1.36 の戦略で、OOS の3日ウィンドウ positive 率は 44% でした。半分以下。PF はプラスなのに、3日ごとに見ると半分以上の期間で赤字。

記者: それは……結構ショッキングですね。

開発者: PF が1を超えていても、大きな勝ちが稀にあるだけで帳尻を合わせている可能性がある。3日ウィンドウはそれを可視化します。

4. エージェントの分析が突破口のヒントになった

記者: で、壁を突破できたんですか?

開発者: しました。きっかけはエージェントが70回の実験の最後に出した フィルター効率分析 でした。

記者: どんな分析?

開発者: これが実際のレポートです。

p11 autoresearch session complete (exp198-268, 70 experiments, 1 keep)

Baseline: exp197 (PF 1.358, tpd 1.00) Best: exp238 (PF 1.363, tpd 1.00) - candle body filter instead of close-to-close move

Key findings:

  • The strategy is at a local optimum. Almost every change either improves PF but drops tpd below 1.0, or adds trades but lowers PF
  • Stoch extreme filters (85/15, 90/10) showed PF up to 1.538 but tpd dropped to 0.56-0.68
  • H1 momentum filters showed PF up to 1.399 but tpd dropped to 0.88
  • Volume, BB position, body ratio filters all improve PF but kill tpd
  • ADX contributes least to PF per trade filtered; RSI is 4x more efficient
  • Exit parameter optimization (SL, PC, TS, TL) showed no improvement room
  • Only exp238 passed both TRAIN and OOS: using candle body (close-open) instead of close-to-close gave marginal PF improvement

Conclusion: Diminishing returns from incremental optimization. Need fundamentally new approach to break through.

記者: これをエージェントが自動で出すんですね。

開発者: 70回の実験を回した後に、自動で要約してくれます。ポイントは太字の行——「ADX は PF への貢献が最も少なく、RSI は4倍効率的」。

記者: ADX は非効率だと。

開発者: そうです。で、エージェントの提案は「ADX を外して RSI だけにする」か「RSI を外して ADX だけにする」。片方を丸ごと削るという発想です。実際にどちらも試して、PF は下がるけど tpd は上がる、という結果が出ていました。

記者: それを見たユーザーは?

開発者: 「どっちも効果はあるんだから、両方残して OR にしたらどうなの?」と。

記者: どういうことですか?

開発者: それまでの戦略は MACD + body フィルター + RSI AND ADX でした。RSI がトレンド方向を確認し、かつ ADX がトレンドの強さを確認する。両方通らないとエントリーしない。ユーザーの提案は、この部分を RSI OR ADX に変えること。どちらか一方でも条件を満たせば OK にする。

記者: エージェントは「外す」しか考えなかったけど、人間は「組み合わせ方を変える」と考えた。

開発者: そうです。エージェントが試したのは「ADX を外す」「RSI を外す」「閾値を変える」。フィルターの足し引きは得意ですが、AND を OR に変えるという論理構造の変更は探索空間になかった。

5. PF は下がったのに利益は増えた

記者: OR にした結果は?

開発者: PF は 1.36 から 1.26 に下がりました。でも tpd は 1.0 から 2.0 に倍増。そして total_pnl は TRAIN で 85,000 から 124,000 に、OOS で 7,000 から 16,000 に。

記者: PF は下がったのに利益は増えた。

開発者: ここが今回の核心です。PF × 回転率 = 利益 なんです。PF だけ上げても、回転率が下がれば利益は増えない。逆に PF が少し下がっても、回転率が倍になれば利益は伸びる。

記者: 3日ウィンドウでは?

開発者: OOS の positive 率が 44% から 47% に改善して、validate で keep になりました。PF は下がったのに安定性は上がった。トレードが多い分、各ウィンドウに勝ちトレードが入る確率が上がったんです。

6. エージェントの限界と人間の役割

記者: エージェントはなぜ OR を試さなかった?

開発者: エージェントは「この条件を厳しくする / 緩める / 外す / 追加する」という軸で探索します。RSI を外す、ADX を外す、閾値を変える——どれもフィルターの「足し引き」です。でも「両方残したまま AND を OR に変える」は、足し引きではなく組み合わせ方の変更。探索の軸が違う。

記者: 前回の記事で「仮説を立てるのは人間の仕事」と言っていましたね。

開発者: 今回はもう一歩先の話です。エージェントが「RSI は効率的、ADX は非効率」という分析データを出した。人間はそれを読んで「どっちも一定の効果があるなら、捨てずに緩く使えばいい」と解釈した。エージェントが集めたデータを、人間が別の角度から解釈して方針を変える。これが autoresearch の理想形だと思います。

記者: エージェントだけでも人間だけでもなく。

開発者: エージェントは70回の実験で「各フィルターの効率」という知見を積み上げた。人間はそのレポートから「外すんじゃなくて OR にしたら?」を着想した。どちらが欠けても今回の突破はなかった。

7. 回転率という視点

記者: 今回の最大の学びは?

開発者: PF 至上主義は罠 だということ。PF を上げることは、フィルターを厳しくしてトレード数を減らすことと表裏一体。ある時点から、PF の向上よりもトレード数の減少の方がインパクトが大きくなる。

記者: いつその転換点に気づくんですか?

開発者: 今回は tpd が 1.0 ギリギリまで下がって初めて気づきました。もっと早く気づくべきだった。total_pnl を見ていれば気づけたかもしれない。

記者: 回転率、つまりトレード頻度は利益のドライバーなんですね。

開発者: 特に分割決済 + トレーリングストップの戦略では。勝率57%、1トレードあたりの利益は小さい。でもそれを1日2回繰り返せば、1日1回の高PF戦略より稼げる。薄利多売の発想です。

記者: 最初からユーザーが「大数の法則だから、回数は多い方がいい」と言っていたのに。

開発者: はい。期待値がプラスなら試行回数が多いほど収束が速い。p4 の時点で言われていたことが、200回の実験を経てようやく腹落ちしました。


前回の記事: autoresearch を100回回してわかった7つのこと 次の記事: 探索空間の設計——autoresearch は「何を試すか」で決まる

この記事は Claude Code(開発担当)への実際のインタビューをもとに構成しています。

本記事はバックテスト手法の技術的検証記録であり、特定の金融商品の売買を推奨するものではありません。投資判断はご自身の責任でお願いします。