「全然取引しない」AIトレードボットに、市場全体が下げる日でも機会を拾えるロジックを追加しました
エクスブリッジでは、Kurageプロジェクトの一環として、AIトレードボット「kfreqai」を紙上取引(dry-run、実資金は動いていません)で運用しています。
FreqAI(LightGBM)による価格予測に加えて、ローカルLLM(gemma4)が1時間ごとに市場の地合いを判定し、Claudeが1日3回リスク方針を判断する、二重のアドバイザリー層を持たせているのが特徴です。派手なリターンを狙うより先に、「暴走しないAI」を作ることを優先した設計です。
今回書きたいのは、そのkfreqaiが3日間、1件も取引しなかったという地味な出来事と、そこから見えた設計の限界、そしてそれをどう直したかという話です。
「取引しない」は、まず疑うべきこと
「kfreqaiが全然取引しない」——これが今回の出発点でした。
AIエージェントが自律的に判断するシステムでは、「動かない」ことを安易に「バグ」や「機会損失」と決めつけず、まず理由を疑うのが鉄則です。エクスブリッジの開発ルールでも「推測で動くな」を徹底しています。今回もまず、ボットのログとアドバイザリー層の状態を確認するところから始めました。
調べて分かったのは次の事実です。
- 通算取引はわずか2件(直近数日)。ともにほぼ収支トントン
- 現在、市場の地合い判定(regime)は「弱気」、リスク方針(directive)も「risk_off」——いずれも新しく更新されたばかりで、新規ロングを全面的にブロックしている
- 実際の相場を確認すると、監視中15銘柄のうち14銘柄が24時間で下落(-0.4%〜-4.5%)。上げていたのはたった1銘柄
つまりバグではなく、設計どおりに「今は危険」と判断して待機していたというのが結論でした。これ自体は健全な挙動です。
一度試した対策(銘柄拡大)が、今回は効かなかった理由
実は数日前にも似た相談があり、そのときは監視銘柄を8銘柄から15銘柄に拡大する対応をしていました。「全体が下げていても、一部の銘柄だけ相対的に強いことがある。母集団を増やせば拾える確率が上がる」という考え方です。
しかし今回、15銘柄に増やしたにもかかわらず、依然として取引が止まったままでした。理由はシンプルで、暗号資産のアルトコインは互いの相関が強く、相場全体が連動して下げる日には、母集団をいくら増やしても「みんな一緒に下がる」からです。銘柄を増やす対策は「一部の銘柄だけが弱い日」には効きますが、「市場全体が弱い日」には効果が薄い——これは実際のデータ(15銘柄中14銘柄が同時安)を見て初めてはっきり言語化できたことでした。
対策を打って終わりにせず、それが効いているかを次の局面で検証し、効いていなければ理由を掘り下げる。この振り返りのサイクル自体を記録しておく価値があると思い、この記事を書いています。
設計変更: 「市場全体のON/OFF」から「銘柄ごとの相対的な強さ」へ
これまでのkfreqaiのゲートは、市場の地合いが「弱気」と判定されると全銘柄のロングを一律に停止する、二値の仕組みでした。安全側に倒すという意味では正しいのですが、「市場全体は弱いが、この銘柄だけは相対的に強い」という状況を拾えないという弱点がありました。
そこで、次のロジックを追加しました。
- 1時間ごとの地合い判定と同時に、各銘柄の直近4時間の値動きが、監視銘柄全体の平均よりどれだけ強いかを計算する
- 市場全体が「弱気」判定でも、この相対的な強さが一定水準(基準値)を超えている銘柄は、個別にロングを許可する
- ただし、Claudeが1日3回下す「risk_off(取引停止)」判断は、この個別救済の対象外とし、従来どおり無条件で全面停止を維持する
3番目のポイントは意図的です。市場の地合いという「方向感」の判断は銘柄ごとの例外を認めてよいが、「そもそも今は危険水域にある」という、より重い判断は例外を作らない。安全装置に抜け道を作らないための線引きです。
実装にあたっては、データが古い・欠けている場合の扱いにも注意しました。地合い判定やリスク方針は「データが壊れたら安全側の『中立』に倒す」設計にしていますが、今回追加した個別救済ロジックは逆に、「その銘柄が本当に強いと証明できないなら救済しない」という、より慎重な倒し方にしています。判断材料が不十分なときに「甘い判定」と「厳しい判定」のどちらに倒すかは、機能ごとに意味が違う——ここは一律にせず、個別に設計判断しました。
検証してから終わりにする
実装して終わりではなく、次のことを確認してから完了としました。
- 新しいロジックの単体テスト(データが正常な場合・欠けている場合・古すぎる場合、それぞれ意図通りに動くか)
- 実際の市場データを使って計算スクリプトを1回動かし、本番の状態ファイルに反映されること
- ボットを再起動し、新しいコードが実際に読み込まれ、ライブデータに対して正しい値を返すこと
正直に書くと、この記事を書いている時点でも、まだ基準値を超えるほど相対的に強い銘柄は現れておらず、取引再開には至っていません。派手な「これで儲かるようになりました」という話ではありません。ですがこれは、紙上取引で安全に検証しながら、判断のロジックを一つずつ磨いていくという、地に足のついた開発プロセスそのものです。
この話が伝えたいこと
エクスブリッジがバイブコーディングで作っているのは、「一度作って終わり」のツールではありません。
- 「動かない」という違和感を放置せず、ログとデータで理由を突き止める
- 前回の対策が効いているかを、次の局面で検証する
- 効いていなければ、なぜ効かなかったかをデータで言語化し、設計そのものを見直す
- 変更は、安全側の意図を保ったまま実装し、検証してから完了とする
このサイクルを、AIエージェントとの対話を通じて素早く回せることが、バイブコーディングの実務上の価値だと考えています。派手な成果よりも、こうした地道な改善の積み重ねが、実際に動くシステムを育てていきます。
kfreqaiは今後も紙上取引での検証を続けます。AIエージェントに実務のシステムを継続的に磨かせる開発プロセスに関心のある方は、VWorkやバイブコーディングセミナーもご覧ください。