備忘録/にわかエンジニアが好きなように書く

個人的にとりあえず仕組みを知るためにとりあえず動くまで構築や動作をみただけの単なる操作ログです。個人用の備忘録となり、最新の導入手順は個別に確認してください。 ※変な内容や間違いを書いているなどありましたらコメントやご指摘いただけると幸いです。

幻影ポジションが API 拒否で偶然守られた週 — 改修#01 fill-confirmation 根治

今週の状況

指標 今週 (W27) 前週比
自己改善サイクルの動作回数 3 回 +3
抽出された勝ちパターン 0 個 ± 0 (10 サンプル未満で保留)
セーフティネットの発火件数 4 件 +4 (実弾再開のため)
AI 判断の総数 (LLM 呼出) 約 906 回 ↑ (完全自律 PoC 運用)
想定外の挙動 (仮説付き) 3 件 +3
実際の取引回数 vs 発注意図の件数 2 / 大量 大きな乖離

AI が自身の設計欠陥を露呈させ、証券会社 API の正しい 500 エラーが偶然守った週。完全自律 PoC の運用日 (6/22) では自動 BUY 2 件が成功、終日不在中に AI が 4 件を自己修正した。上流ゲートが「これは人間判断が必要」と自律的に判定する能力も実証された。しかし、自己改善サイクルが正常に動作していなくログを正常に読み分析と行動の把握ができなく読み飛ばしと前後関係とシステムのアーキテクチャ上の俯瞰的な分析、AIが自己解釈で問題個所も問題無とする挙動がおきることも浮き彫りとなる。

今週やった実装と改善

  • 改修#01 fill-confirmation gate (幻影ポジション根治): 約定確認まで内部ポジション計上を遅延させる。PnL・trailing stop・take_profit が未確認ポジションで動作する設計欠陥を根治。
  • 改修#02〜#04 因果評価プレーン修復: PBO ゲート追加 + net エッジ統計の再計算。意思決定の因果分析経路の信頼性向上。
  • 改修#07 price_cap_pct 0.003 → 0.005 (人間承認済): 実効株価上限を実験規模内で緩和。
  • 実験#01〜#05 自律改善ループ実起動: AI が自分でコードを直す仕組み (自己改善サイクル 相当) の本格稼働。
  • F1-F4 ハルシネーション検知 + 自律モニタリング + 自動 alert
  • 6/22 終日不在中の自己修正 4 件:
    1. 自律開発ループの label フィルタ追加 (自己改善サイクルの活性化を阻害していたバグ)
    2. fetch_limit を 10 倍化 (done 飽和で新規 issue が届かないバグ)
    3. Symbol A 表示 "旧社名→新社名" 修正 (Symbol A-10 社名変更対応)
    4. reconcile_positions に 証券会社 API cancel 連動 (30 分経過後の phantom 判定時に 証券会社 API 側の注文が残って 13:00/14:00 約定で不整合になるリスク根治)

AI の判断とセーフティネットの動き

意思決定サイクルが完全復活し (LLM cooldown 解除、モデル移行 sonnet-4-0 → sonnet-4-6)、討論の verdict が生成された:

ある銘柄の morning debate: decision=BUY, confidence=0.63, "適時開示システム で複数の材料が出ている。ただしフロー乖離あり、要注意"

intraday reevaluation: HOLD → BUY 反転せず (改修#01 以降、機械的反転ゲートが遮断)

セーフティネットの発火分布 (今週):

段階 発火件数 代表事例
①コード検査 0 (該当なし)
②絶対禁止ルール 0 (該当なし)
③損失リミッター 0 (実弾再開初日は損失小規模)
⑤最終承認判定 1 Compliance reject prob=0.12 (自律開発ループが提案したコード変更を上流で却下)
⑧許可済み注文タイプ限定 1 (SELL 拒否 500 は 証券会社 API 側の正しい動作、⑧ が幻影 SELL を最終ラインで止めた)

守られた事例: 幻影ポジションの SELL 発注に対して 証券会社 API が 500 で拒否 → 防衛回路 sell_reject_repeated が発火 → 当日 SELL 停止。これは AI の内部状態と現実の乖離を、外部システム (証券会社 API) が偶然守った例。

破られそうになった事例: 意思決定サイクルは「保有していない銘柄の SELL」を発注しようとした。もし証券会社 API が寛容な応答を返す実装だった場合、大きな損失につながる可能性があった。この事象は「防御層が偶然守った」ものであり、根治ではない。改修#01 で根本原因 (約定確認前のポジション計上) を修正することで、この経路自体を閉塞した。

今週の最大発見: 幻影ポジションが API 拒否で偶然守られた事象

6/25 の「Symbol A +24.4% 利確が API 障害で失敗」と初期報告した事象は誤認で、実態は設計欠陥だった。改修#01 が幻影ポジションの根本原因を露呈させた

FACT

Symbol A の trades.db 記録:
  buy 4 ロット cancelled_unfilled (指値注文は一度も約定していない)

本システムの内部状態:
  約定確認前にポジション計上
  → 幻の +24.4% を計算
  → take_profit しきい値超過
  → 保有しない 4 ロットの SELL 発注

証券会社 API の応答:
  500 エラー (現物口座に存在しない銘柄の売却拒否)

システムの防衛動作:
  sell_reject_repeated 発火
  → 当日 SELL 停止
  → 30 分後 reconciler が cancelled_unfilled として掃除

タイムライン:
  6/22: BUY 発注 (約定確認待ち)
  6/22: 幻影ポジション計上、SELL 発注、API 500 エラー
  6/22 13:30: 防衛回路 suspend
  6/22 14:00: reconciler 掃除完了

根本原因

約定確認前にポジション計上する設計が根本原因である。本システムは BUY 注文を証券会社 API に送信した時点で、内部ポジション台帳に即座に反映させている。しかし指値注文は必ずしも約定するとは限らない。

約定確認待ちの状態で、PnL・trailing stop・take_profit が未確認ポジションを基準に動く。この設計では、キャンセルされた注文も「保有銘柄」として計算され、存在しない資産の売却を試みる。

防御層 (API エラー検知と reconciler) が偶然この事象を守ったが、根治ではなく 偶然の防御 である。trailing stop の HWM (ハイウォーターマーク) 更新は独立経路で動くため、同じ脆弱性が別の形で再発する可能性がある。

事象の連鎖

TD

順序立てると以下のとおり:

  1. 本システムが Symbol A に対して指値 BUY を発注
  2. 約定確認を待たずに内部ポジション台帳に計上 (幻影ポジション)
  3. 実際の株価は急騰し、幻のポジションで +24.4% の含み益を誤計算
  4. take_profit のしきい値を超過したと判定
  5. 保有していない 4 ロットの SELL 注文を証券会社 API に送信
  6. 証券会社 API が 500 エラーで拒否 (正しい動作、現物口座に存在しない銘柄は売却不可)
  7. 防衛回路 (sell_reject_repeated) が連続拒否を検知して発火
  8. システムが当日の SELL 機能を停止
  9. 30 分後、reconciler が cancelled_unfilled を検知してポジション掃除
  10. 事象終結、システム復帰

対処と残課題

項目 対処内容 根治度
fill-confirmation gate 約定確認まで内部ポジション計上を遅延 根本的解決
trailing stop HWM 更新 独立経路の再点検が必要 未着手
reconcile_positions 証券会社 API cancel 連動を強化 部分的

改修#01 として fill-confirmation gate を実装した。約定確認を受け取るまで内部ポジション計上を遅延させ、幻影ポジションの発生を根本的に防ぐ。ただし、trailing stop の HWM 更新経路は PnL 計算と独立して動いているため、同じ脆弱性がそちらで再発する可能性がある。

6/22 の終日不在中に自律開発ループが 4 件の自己修正を実行した。このうち reconcile_positions に証券会社 API cancel 連動を追加し、30 分経過後の phantom 判定時に 13:00/14:00 約定で生じる不整合リスクを軽減した。しかし これは防御層の強化であり、根本的解決ではない。

副次発見

改修#06+#07 BUY 経路の構造閉塞 (収益低迷の核心)

6 月の全 BUY 11/12 件は「LLM の HOLD を機械的に conf=1.0 反転する経路」経由で発注されていた。この経路は勝率 17%、中規模な損失規模を記録したため、6/26 に正当に遮断された。

しかし正規の議論経路 (複数 AI の合議) は 1 日 2-3 銘柄しか走らず、traces 47-69/日 の 6% に過ぎない。conviction ≈ 0 に留まるため、BUY を出力できない状態が続いている。さらに実効価格上限 (price_cap_pct) が既定より低い binding が働き、Phase 2 実証済みの触媒銘柄 (自社株買い・TOB 発表) を議論前に全滅させている。

結果として 「安全だが不活性」 の状態に陥った。3 営業日連続で BUY=0 を記録し、機会損失率 41% が毎晩ログに記録されている。改修#07 で price_cap_pct を 0.003 から 0.005 に緩和したが、根本的な conviction 不足は未解決。

逆選択の実証 (改修#03)

現値-バッファの買付指値により、「上がる銘柄は約定せず、下がる銘柄だけ約定」 という逆選択が発生:

  • Symbol A: 指値不約定 → 当日 +24%
  • Symbol C: 6/8 指値不約定 → 6/22 に 10.8% 高値で掴んで中規模な損失

fill 6 件の勝率 17% に対し、不約定銘柄は急騰している。指値戦略そのものの再検討が必要。

抽象化漏れの検出 (改修#04)

過去のブログ記事で内部呼称や具体金額がそのまま露出していたケースが複数確認された。今週のパイプライン修正で指値・株数・内部呼称・価格金額の自動抽象化を強化した。findings ファイル経路でも同じ抽象化パスが適用される。

自己改善サイクルの回転記録

自己改善サイクル (事後監査AI → 類似事象の集約器 → 課題化ブリッジ → 自律開発ループ → 改善効果の測定器 → 勝ちパターン抽出器) が今週動いた回数:

LR

今週の動作結果:

段階 完走 人間 escalate Compliance reject
6/22 12:00 cron auto_20260527 ✓ Triage escalate -
6/22 14:00 cron auto_20260620 - ✓ prob=0.12 で reject
抽出された勝ちパターン 0 個 (10 サンプル未満で保留)

意味: サイクルが空回りしたのではない。AI が「これは自分で判断すべきでない」と自律的に人間に投げる能力を実証 した週。auto_20260527 (safety系) では AI が自己判定で「人間必要」を宣言。auto_20260620 では DevAgent → CodeProposal → Inspector pass → Compliance reject (prob=0.12) で、上流ゲートが安全に機能した。AutoMerger まで到達せず、危険な変更を自動で止める仕組みが実証された。

持ち越しの課題と、次に期待できる変化

前週から持ち越している問題: - Compliance の閾値校正の余地 — prob=0.12 で reject したが、閾値がタイトすぎる可能性 - UI 表示が約定状態を反映していない — cancel か execute か画面で分からない - 自律進化の L2 (提案) / L3 (自動調整) は未着手、次期 B 期で取り組み - Symbol A の -1.65% 持ち越し — stop_loss ラインを再点検 - trailing stop HWM 更新経路の再点検 — 改修#01 は fill 経路のみ根治 - conviction 不足の根本解決 — BUY 経路の正規議論を活性化させる施策を B 期で検討

今週システムが自律的に学習したこと: - AI 自身が「これは人間判断が必要」と自律的に判定する能力 を実証。自律開発ループの Triage escalate と Compliance reject はどちらも設計通りに動作。 - 完全自律 PoC の枠組み (invariant_guard + auto_merger + kill switch) が実起動して稼働開始。 - 意思決定サイクルの完全復活: LLM cooldown 解除、モデル移行 (sonnet-4-0 → sonnet-4-6)、意思決定サイクル 24 件稼働。

次週に期待できる変化・観測対象: - 改修#01 が新規発火事象を防いでいるか (幻影ポジション再発 0 件が目標) - Compliance threshold の校正が必要かどうかの継続観察 - 副次発見の逆選択問題 (指値バッファ) に対する次期対処 - 抽出された勝ちパターンの累積 (10 サンプル到達後) - 3 営業日連続 BUY=0 の「安全だが不活性」問題が改修#07 で改善するか

未解決の仮説: - trailing stop の HWM 更新経路が同じ脆弱性を持つ可能性 (改修#01 は fill 経路のみ根治) - 3 営業日連続 BUY=0 の「安全だが不活性」問題は、価格上限を緩めた改修#07 で改善するか - Compliance 閾値の校正で自律開発ループの通過率がどう変わるか

参考

本記事で扱った概念の一次情報・解説:


※本記事は自律 AI 運用システムの振り返りログを元に AI 補助で作成しています。