本文へスキップ
hdknr blog
戻る

自律システムはなぜ自分の欠陥に気づけないのか — Claude Code で自律システムを作るときの5つの教訓

実運用中の自律トレーディングシステムで起きたインシデントの振り返り。個別の資産額・銘柄・成績値は伏せ、構造と教訓に絞って一般化している。実践編は 目標駆動・自律改善システムの構築ベストプラクティス を参照。

発端:ある素朴な質問

自律的に運用しているトレーディングシステムに、こんな質問を投げたところから始まった。

「ある銘柄を SELL にしているけど損益がマイナス。もっと早く売っていれば良かったのに、シグナルの判断が甘いのでは?」

このシステムは、複数の AI エージェント(テクニカル / センチメント / リスク / 統合)が毎日投資計画を立て、毎日パフォーマンスレビューまで自動で回している。にもかかわらず、含み損銘柄の売りが遅れた。

普通なら「シグナルのしきい値をいじる」で終わる話だ。だが調べていくと、真因はシグナルのロジックではなく、自律改善サイクルそのものが構造的に見えていない盲点にあった。しかも盲点は 1 つではなく、層をなして重なっていた。

この記事は、その調査と修正の記録であり、「自分で回るシステム」を Claude Code のようなエージェントで作るときに踏みやすい落とし穴の一般化でもある。

Part 1:見えていなかった事実

問題の銘柄(以下 X)は、あるタイミングで買い、約 2 週間後に含み損で売った。エージェントの説明は「売りシグナルが揃ったのは執行の直前」。

DB の実際の株価と、毎日の提案が「見ていた」株価を並べると、犯人が浮かんだ(値は相対イメージ)。

日付実際の終値(DB)その日の提案が見ていた終値判断
初日100100(正常)HOLD
+1〜4日収集欠損100 のままHOLD
+5日95(下落)「現在値100 > BBミドル」HOLD
+6日95(売りシグナル点灯)100 参照HOLD
+9日96「100、むしろ強気改善中」HOLD
+10日97ようやく実勢を反映、全シグナル点灯SELL

出口シグナル(BBミドル割れ / MACDデッドクロス / ATRストップ——いずれもテクニカル指標ベースの売り条件)は DB の終値で計算される。その終値が約 1 週間凍結していた。エンジンは「終値100 はBBミドルを上回る → 未点灯」と、古い入力に忠実に判定し続けていた。

シグナルは鮮度の良いデータが来た瞬間に即発火していた。遅れたのは判断ロジックではなく、データ供給だった。

(余談だが、この銘柄は買った直後からほぼずっと含み損で、「もっと早く売れば得」は実は成立しなかった。むしろ凍結のおかげで売値は改善していた。ユーザーの体感は正しく問題を指し示していたが、指していた先は本人の想定と違った——これも自律システムでよくある。)

Part 2:なぜ「毎日レビュー」で気づけなかったのか

ここが本題だ。毎日自動でレビューしているのに、なぜこの事実を拾えなかったのか。 調べると、盲点が 5 層に重なっていた。

① 価格ソースの split-brain(決定と観測が別のデータを見る)

決定エンジン(出口シグナル)は DB の終値を、ポートフォリオ評価・週次ふりかえりは 外部 API のライブ価格を読んでいた。証拠に、同じ日の週次ふりかえりは X を正しい実勢価格・含み損で表示していた。片方は正しく、片方は凍結。両者の食い違いを照合する主体が誰もいなかった。

② レビューは「記述」であって「制御ループ」ではない

レビューは含み損を表に出すが、それを行動(売却・アラート)に変換する経路がない。フィードバック先は「買いのしきい値」に偏っていて、既存保有の出口を是正する回路が欠けていた。観測できることと、行動を変えられることは別物だ。

③ 学習信号のサバイバーシップ・バイアス

実現損益ベースの学習機構はあった。だがその期間の実現損益は「決済トレードなし」。負けを切らずに持ち続けることこそが問題行動なのに、切っていないから統計に一生載らない。 システムは「終わった取引」からは学べても、「終わらせない失敗」は見えなかった。

④ データ鮮度を誰も検査していない

各銘柄の最新日付は記録していたが、「それが今日から何日前か」を検証していなかった。自己修復の再取得は「データが完全に欠損した銘柄」だけが対象で、X のような「存在するが凍結」は素通りだった。

⑤ 目標が「もっと買え」の圧力になっていた

システムには意欲的な長期目標(短期間での資産大幅増)が設定されていた。ところが達成可能性の判定しきい値がゆるく、**現実には過大な必要リターンを「達成可能」**と表示。ペースも「順調」判定。そして「出遅れたら積極化(露出拡大)」というロジックが、勝率の低いエントリーを後押ししていた。レビューの分析も「買い逃し(機会損失)」に偏り、「負けを繰り返している」を言語化しなかった。

5 つの盲点は同じ根につながっていた。自律ループは自分が消費する同じデータ・同じ前提の上に立っているので、その前提が壊れると、全レイヤーが仲良く同じ間違いに合意する。

Part 3:どう直したか

5 つの盲点に対して、5 本の PR で対処した。

記号対処塞いだ盲点
A保有銘柄の価格鮮度ガード(凍結を毎日検知→自己修復、ダメなら通知)
BDB終値 vs ライブ価格の乖離検知(分割未調整・不良ティック)
C未決済含み損の「撤退優先度ランキング」を日次レビューに常設②③
D診断計器の正直化 + 「出遅れ→積極化」を「出遅れ→エッジ改善」に反転
E目標にリスク予算(許容DD=ドローダウン・最低勝率・最低PF=プロフィットファクター)を付与、レビューをリスク調整後で評価②③⑤

原則として貫いたのは 1 つ。目標は下げない。診断を正直にする。目標へはレバレッジでなくエッジ(勝率×損益比)で近づく。

D/E を入れた瞬間、同じデータに対して評価が変わった:

成績自体は前から悪かった。変わったのは、システムがそれを「悪い」と認めて毎日突きつけるようになったことだ。

Part 4:Claude Code で自律システムを作るときの 5 つの教訓

ここからが本題の一般化。自律的に回るシステムをエージェントで組むとき、上の 5 盲点はほぼ普遍的に現れる。

教訓 1:入力の鮮度は、境界で能動的に検査する(GIGO は静かに来る)

自律ループは自分のデータストアを信じて動く。入力が静かに古くなると、エラーも例外も出ないまま全レイヤーが古い答えに合意する。「データが無い」は気づけるが、「データが古い」は気づけない。→ 境界に鮮度ガードを置き、古さを一級市民として扱う。

教訓 2:決定と観測は同じ真実を見る(さもなくば乖離を明示検知する)

「判断に使う値」と「人間が見る値」が別ソースだと、片方だけ壊れたとき誰も気づかない。単一の真実源にできないなら、ソース間の乖離そのものを監視項目にする。

教訓 3:観測(observability)と制御(control)を混同しない

「ダッシュボードに出ている」は「システムが対処できる」を意味しない。レビューが問題を描写するだけで行動を変えられないなら、それはフィードバックループではない。→ ループを閉じる。観測項目には必ず「で、どう動くのか」を紐づける。

教訓 4:学習信号のサバイバーシップに注意する

「完了したアクション」からしか学ばないと、「完了させない」という失敗モードが不可視になる。トレードなら実現損益だけでなく含み損・保有期間を、一般には「やり残し・塩漬け・先送り」を明示的に計測する。

教訓 5:目標は北極星に。計器を目標に合わせて曲げない

達成困難な目標を「達成可能」と表示させる較正は、体温計をいじる行為だ。目標は下げず、計器を正直にして、ギャップを毎日突きつける。 そして「遅れているからリスクを上げる」は多くの場合ギャンブラーの破滅。目標へはエッジ改善で近づき、リスク予算(許容DD・最低勝率)で土台を守る。

そして最大のメタ教訓

自律システムは、自分の盲点を自分では監査できない。

この一件を掘り起こしたのは、精緻なレビュー機構ではなく、外部の人間の素朴な一言だった。「なんでもっと早く売らなかったの?」。自律ループは自分の前提の内側でしか物を見られない。だから——

Part 5:残る改善ポイント

正直に、まだ閉じていない穴を挙げておく。

  1. 単一 DB を信じる構造は残る — A/B で鮮度と乖離は見るが、収集ジョブ自体がなぜ数日欠損したかの根治は別(収集の可観測性・リトライ)。
  2. しきい値は依然として人間が置いた定数 — 最低勝率・PF・乖離率など。本当はレジームや資産規模で動くべきで、これ自体が次の「較正ミス」候補。
  3. エッジ改善の“中身”はまだ薄い — 「出遅れ→エッジ改善要請」に反転したが、要請を受けて具体的に何をどう改善するかは今後の自律ループの宿題。
  4. メタ盲点は原理的に消えない — 今回塞いだ 5 つは「今わかっている盲点」。次の未知の盲点は、また外部の問いからしか出てこない。だからこそ教訓 5 のメタ(人間の問いを設計に組み込む)が、機能追加よりも本質的だ。

まとめ

「シグナルが甘いのでは?」という一言から、データ鮮度・価格ソースの分裂・観測と制御の混同・学習のサバイバーシップ・目標較正という 5 つの構造盲点が芋づる式に出てきた。共通するのは、自律ループが自分の前提の内側で完結してしまうという一点だ。

Claude Code のようなエージェントで自律システムを作るのは驚くほど速い。だが速さは、盲点も高速に量産する。効くのは派手な機能ではなく、境界での鮮度チェック / ソース乖離の監視 / ループを閉じる / やり残しを測る / 計器を正直に保つ——そして何より、外側から刺す人間の問いを設計に織り込むことだった。

具体的な設計原則・構築順序・Claude Code 機能へのマッピングは、実践編の 目標駆動・自律改善システムの構築ベストプラクティス にまとめている。

この調査・修正・本記事はすべて Claude Code とのセッションで行い、5 本の PR(鮮度ガード・乖離検知・撤退監査・診断正直化・リスク予算)として実装・マージした。



前の記事
Claude Codeチーム公式ガイド「ループ設計」を読み解く — Turn-based から Proactive まで4段階の委譲
次の記事
目標駆動・自律改善システムの構築ベストプラクティス — Claude Code で自分で改善しながら回るシステムを作る