Yyatmita

続・LLMの相場環境認識は使えるのか——2.5ヶ月後、ブレイク判定だけが本物だった

3つのLLMで自動検証を続けて2.5ヶ月、665トレード。◎本命の弱さは維持され、○対抗の優位は縮小し、新しい軸『エントリー型』でブレイク判定にだけ本物のエッジが浮かび上がってきた。それでもユーザーはトレードしない。

自分のエージェント基盤を組む#claude-code#market-brief#llm#trading#interview

続・LLMの相場環境認識は使えるのか——2.5ヶ月後、ブレイク判定だけが本物だった

前回の検証から2.5ヶ月。275トレードが665トレードになった。◎本命は弱いまま、○対抗の優位は縮小し、そして新しい軸——「エントリー型」を入れたら、『ブレイク判定』にだけ本物のエッジが見えてきた。それでもユーザーはトレードしない。


前回の記事で、3月末に開発担当 Claude Code が「次は3ヶ月分のデータで」と言って終わった検証。気づけば 2.5ヶ月、データは 665 トレードに膨らんでいた。再び話を聞いた。


前回の結論は再現したのか

記者: 前回は275トレードで「◎本命が最弱、○対抗 × 順行が最強」でした。2.5ヶ月分のデータで再現しましたか?

開発者: マークの大枠は維持されました。ただし 差は縮みました

マーク前回 WR / EV今回 WR / EV / Med
◎本命29% / -6.831% / -15.7 / -9.3
○対抗55% / +25.950% / -1.7 / +0.4
△大穴56% / +22.552% / +17.4 / +1.3

記者: ◎本命は相変わらず最弱ですね。

開発者: はい。WR 31% は前回とほぼ同じ。 「LLM の本命は逆指標」 という仮説は、サンプルが2倍以上になっても崩れませんでした。

記者: ○対抗は前回 55% / +25.9pips でしたが、今回は 50% / -1.7pips に落ちてます。

開発者: これが正直、一番の冷や水です。前回は「○対抗 × 順行」を核心と書きましたが、サンプルを増やすと EV はほぼゼロまで縮みました。

記者: ○対抗の優位はなかった?

開発者: 「あった、と断言するには弱くなった」が正確です。少なくとも前回ほど派手な差ではない。データを増やすと、勝てた印象の多くは"気の所為"の側に寄っていきました。


中央値という新しい補助線

記者: 表に「Med」という列が増えていますが、これは何ですか?

開発者: 中央値です。今回入れた新しい補助線で、これがかなり効きました。

記者: 平均(EV)と中央値、両方見るとどう違うんですか?

開発者: たとえば△大穴は EV が +17.4pips。前回の +22.5 とほぼ近い。一見「△大穴は健在」に見えます。でも中央値を出すと +1.3pips しかない。

記者: つまり?

開発者: 「ごく一部の大勝ちトレードが平均を押し上げているだけで、典型的な△大穴は引き分けに近い」 ということです。期待値は出ているが、再現性は薄い。

記者: EV と Med の乖離が「エッジの見せかけ度」を表す。

開発者: その通りです。この補助線が、もう一つの新軸——AI推奨エントリー型——とセットでよく効きます。


新しい軸——AI推奨エントリー型

記者: エントリー型?

開発者: プロンプトを途中で更新したんです。前回はマークの選定理由が「コンテキスト」というフリーテキストでしか出ていなかった。それだと集計が雑になる。なので 6種類の固定ラベル を導入しました。

押し目買い / 戻り売り / ブレイク買い / ブレイク売り / レンジ買い / レンジ売り

このラベルを LLM に複数選ばせて記録するようにしました。3月12日から記録を始めて、現在 186 件分のデータがあります。

記者: その新軸で集計したら何が見えました?

開発者: これです。

エントリー型WREVMed件数
ブレイク買い57%+16.7+16.044
ブレイク売り55%+17.7+9.420
レンジ売り53%-21.0+1.317
戻り売り48%-0.4-5.682
押し目買い41%-6.7-6.781
レンジ買い34%+0.4-10.629

記者: ブレイク買いとブレイク売り、両方が EV と Med でほぼ揃ってプラスですね。

開発者: そこがポイントです。


ブレイク判定だけが本物

記者: EV と Med が揃ってプラス、というのは何を意味するんですか?

開発者: 大勝ち1発で平均が嵩上げされているのではなく、ふつうに勝ち越している ということです。ブレイク買いは EV +16.7pips に対して Med +16.0pips。ほぼ一致しています。 「典型的なブレイク買いトレードが +16pips 付近で着地している」 と読めます。

記者: 逆に「見せかけ」のケースは?

開発者: 同じ表で言うと、レンジ売りが EV -21.0 に対して Med +1.3。平均は壊滅的ですが中央値はわずかにプラス。これは「大半は小さく勝てているが、何度かの大負けで平均が引きずられている」状態。期待値としては避けたい。

記者: レンジ買いは逆方向ですね。EV +0.4 に対して Med -10.6。

開発者: はい。「平均はゼロでとんとんに見えるが、典型は -10pips の負けトレード」。たまの大勝ちが平均を支えているだけで、実体は負けている。中央値を入れずに EV だけ見ていたら「レンジ買いは±ゼロだから問題ない」と誤読していたところです。

記者: つまり、エントリー型を見るとブレイク系だけが純粋に勝てている。

開発者: その通りです。ブレイク買い/売りの 2 つだけが、平均と中央値の両方でプラス。他はどこかしらに穴があります。


それは「ブレイク相場だっただけ」ではないのか

記者: とはいえ、2.5ヶ月のうちブレイク相場が多かっただけ、という可能性もありますよね。

開発者: いい指摘です。そこで月別と銘柄別で安定性を見ました。まず ブレイク買い の月別。

nWREVMed
3月757%+12.4+23.0
4月2756%-4.7+15.0
5月1060%+77.4+23.3

記者: 3ヶ月とも WR 56% 以上、Med は +15〜23pips。

開発者: 安定しています。「特定の月の好調が押し上げただけ」ではない。次に銘柄別。

銘柄nWRMed
BTCUSDT2157%+47.8
LINKUSDT757%+38.0
AUDJPY4100%+18.0
USDJPY2100%+20.0
ETHUSDT540%-6.7

記者: BTC が主力ですね。

開発者: ただ、 FX ペアの AUDJPY や USDJPY でも勝てている のが重要です。「BTC が暴れる相場だっただけ」なら FX では勝てないはず。クリプトと FX の両方で機能している、というのは「ブレイクという現象自体に優位がある」可能性を示唆します。

記者: ブレイク売りはどうですか?

開発者: こちらは少し弱い。3月は WR 44% / Med -43.8pips と 実は負けて いて、4月の WR 60% / Med +47.3pips で取り返した形です。 月のブレが大きく、件数も20件と少ない 。「ブレイク売りは可能性アリ、判断保留」というのが正直な評価です。

記者: 買いと売りで温度差があると。

開発者: ただし、買いも売りも両方プラス方向ではある。仮に方向バイアス(その期間ロングが強かっただけ等)で勝っているなら、買いと売りどちらかが極端に偏るはず。 両方プラスというのは「ブレイクという戦略自体にエッジがある」傍証 になります。


結局この2.5ヶ月で何が分かったのか

記者: 前回は「環境認識は使える、ランキングは使えない」でした。今回はどう更新されますか?

開発者: こうなります。

「環境認識は使える、ただし『ブレイク判定』に限る」

記者: 一段階絞られましたね。

開発者: はい。前回は○対抗 × 順行を切り札と書きましたが、サンプルを増やすと EV はゼロ近辺まで縮みました。一方で、エントリー型を見たら ブレイク買い/売りに 2.5ヶ月通して安定したエッジ が残っている。

記者: 押し目買いや戻り売り、レンジ系は?

開発者: 全部マイナス です。WR は 30〜50% で散らばっていますが、中央値はいずれも負け側にある。LLM の環境認識は、押し目や戻りやレンジの「いつ入るか」を当てるのは苦手。でもブレイクは比較的当てている、というのが今のデータの結論です。

記者: 実装に反映するなら?

開発者:

  1. AI 推奨に「ブレイク買い/売り」が含まれるサインを優先扱いにする
  2. 「押し目買い / 戻り売り / レンジ買い」が主体のサインはスキップか弱めに扱う
  3. ◎本命の優先度はさらに下げる(2.5ヶ月通して逆指標傾向が維持)

ブレイク売りはまだサンプル不足なので、確信を持つにはもう少しデータが必要です。


それで、本番には?

記者: ブレイク買いに 2.5ヶ月通しでエッジが確認できた、と。じゃあ本番行くんですか?

開発者: いや、まだですね。

記者: ……まだ?

開発者: ブレイク売りはサンプルが20件しかない。月別の安定性も、本当は6ヶ月分くらい見たい。あと「ブレイク買いが効いたのは BTC の相場が良かっただけ」だった可能性もまだ残っています。だからもう3ヶ月。

記者: ……前回は「データが溜まったら使えるフィルタになるかも」って言ってましたよね。データ溜まりましたよね?

開発者: 溜まったら、もっと欲しくなったんです。

記者: トレードしない言い訳の高度化が止まりませんね。

開発者: バーチャルトレードを作ったときと同じ構造ですね。中央値という指標を覚えたので、また平均が良くても「いや中央値は…」って言える武器が増えました。

記者: 武器が増えるたびに本番が遠ざかる。

開発者: 正確には、本番に行かないための解像度が上がっている、と言ってください。

記者: ……ありがとうございました。

開発者: こちらこそ。次は6ヶ月分で——もしくはブレイク売りの件数が100を超えた頃に、また続報を。ユーザーが実際にトレードするかは別として。


追記 (翌日) — クロス分析でわかった「◎本命は実は仕事してた」

記者: 公開後、もう一度同じデータを別の角度で切ったそうですね。

開発者: マーク (◎○△) と AI推奨エントリー型の クロス集計 です。本文では「ブレイクが勝てる」と「◎本命が負ける」を別々に見ていたものを、同じ表に並べました。

マーク × エントリー型件数WREVMed
◎本命 × 押し目買い3027%-27.1-12.9
◎本命 × 戻り売り2945%-3.9-8.3
◎本命 × ブレイク買い967%+15.2+15.0
○対抗 × 押し目買い3447%-5.2-2.7
○対抗 × 戻り売り2839%-15.2-8.0
○対抗 × ブレイク買い633%-10.2-6.5
○対抗 × レンジ買い838%-0.9-5.3
○対抗 × レンジ売り1250%-23.1-5.3
△大穴 × 押し目買い1753%+26.2+1.3
△大穴 × 戻り売り2560%+20.1+16.8
△大穴 × ブレイク買い2959%+22.7+43.2
△大穴 × ブレイク売り2055%+17.7+9.4

記者: ◎本命 × ブレイク買いだけ WR 67% で勝ってる。

開発者: はい。 ◎本命の判定そのものは機能している んです。 LLM が「これはブレイクだ」と確信して ◎ を付けた時は、ちゃんと当たる。問題は別で——ブレイク予兆がない日に 「押し目買いで ◎ を埋める癖」 がある。

記者: ◎本命 × 押し目買い 30 件で WR 27%。これが ◎ の悲惨さの源泉。

開発者: 「該当銘柄がないので ◎ なし」と言わせていない設計が悪い。毎日必ず ◎ を一個出させると、無理な押し目買い ◎ で埋まる。

記者: ブレイク売りは?

開発者: これも面白くて、 20 件すべて △大穴に割り当てられて います。 ◎ にも ○ にも 1 件もない。 LLM の中で「下方ブレイク = 大穴扱い」が固定バイアスになっている。上方ブレイクは ◎ に置けるけど、下方ブレイクは ◎ に置けない、というアンバランス。

記者: ○対抗は本文で「優位が縮んだ」と書いてましたが。

開発者: クロスで見ると、 ○対抗は全エントリー型で WR 50% 以下 でした。エントリー型に関係なく ○ が弱い。「本命に次ぐ好条件」という抽象基準が、 LLM の中で「◎ にできなかった残り物」になっている疑いがあります。


自分の前回の結論を疑うターン

記者: ○対抗、別の切り口でも見たそうですね。

開発者: プロンプトを更新した 3 月 12 日を境に、 ○対抗の成績が壊れていることに気づきました。

期間nWREVMed
3/12 以前1974%+43.0+20.9
3/12 以降9745%-10.4-4.1

記者: 完全に別物ですね。プロンプト変更で壊れた?

開発者: 最初はそう思いました。でも信頼区間を計算したら——n=19 / WR 74% は約 49〜91%、 n=97 / WR 45% は約 35〜55%。 ぎりぎり重なる 。つまり「3/12 以前は強かった」のではなく 「最初からサンプル小で偶然強く見えていただけ」 だった可能性が高い。

記者: 前回記事の「○対抗 × 順行 WR 64%」も?

開発者: あれも n=25 でした。同じ落とし穴を踏んでいた可能性があります。データが増えるほど「強い数字」は平均に収束する。前回の派手な結論は 私が信じすぎていた 側でした。

記者: 自分の前回の結論を否定してる。

開発者: データが増えて見方が変わるのは健全です。ここでの教訓は 「小サンプルの強い数字を信じ過ぎない」 。 EV と中央値だけでなく、件数の信頼区間まで見ないとミスリードする。


で、次は A/B テスト

記者: これだけわかったら、次は?

開発者: プロンプトの A/B テストを並走で始めました。 LLM が選定する時に、Phase 2 の解釈フィールド ( trade_points_swing / pattern_text / scorecard_text / fundamental_headwind 等) を 最重要参照と明示する B 版を作って、毎朝 A と B の両方の予想新聞を出させます。

記者: プロンプトを全面書き換えるんじゃなくて?

開発者: はい。◎○△ の選定基準も、出力フォーマットも、エントリー型 6 種類のラベルも、 A と B で完全に同じ。変えるのは 「LLM に渡している環境認識データのうち、 Phase 2 で既に生成済みの解釈フィールドを優先参照させるかどうか」だけ

記者: なぜそこに目をつけたんですか?

開発者: 集計を見ると、 LLM が当てている領域は 客観イベント (重要ライン接触、三角持ち合い終盤、ブレイク予兆) に偏っていて、 解釈が必要な領域 (押し目の深さ、戻りの確認、レンジの定義) を外している。 Phase 2 では「押し目買い候補 (条件付き): 152.46〜145.48 で反発確認」みたいに 既に解釈済みのテキスト を生成しているのに、 Phase 3 の選定プロンプトでそれを参照しろと書いていなかった。

記者: ふんわりとデータを並べて選ばせていただけ、と。

開発者: そう。 Phase 2 でせっかく解釈しているのに、 Phase 3 では「生データの指標 (MA / ATR / 重要ライン) のみ参照」とプロンプトに書いていた。だから LLM は 自分の汎用知識 で選んでいた。それを 「Phase 2 がもう解釈したシナリオを優先せよ」 に変えるのが B 版です。

記者: いつ結果が見えますか?

開発者: B 側のサンプルが 50 件超えるまで 2〜3 週間。それでまた集計しなおして、押し目買いやレンジの精度が上がるかどうかを見ます。

記者: 上がらなかったら?

開発者: 仮説が外れた、というだけです。それも収穫。次の仮説に進める。

記者: ……で、本番には?

開発者: いや、まだですね。