-3,016円の損失から追加した逆張りhard gate:ticket 29764139を分解する
金融AI/AIエージェント研究開発・実口座損失検証
-3,016円の損失から追加した逆張りhard gate:ticket 29764139を分解する
実口座の損失を隠さず、AIの判断だけでは止められなかった入口を、再現可能な機械ルールへ落とし込んだ記録です。
本稿は、私が開発したインジケーターと自動売買ソフト(EA)を、AIエージェントと実口座で研究・検証している開発ログです。成功だけでなく損失、見送り、障害も同じ形式で残します。検証の様子は平日24時間のトレードライブ配信でも公開しています。
最初に事実を公開する
- ticket:29764139
- 対象:GOLD_USD
- 約定価格:4341.17
- 初期hard SL:4331.63
- 確定損益:-3,016円
- AI判定:REVERSAL_ATTEMPT、confidence 65
- 配備状態:COUNTERTREND_REVERSAL_CONFIRM_V1を本番反映済み
- 自然相場でのLIVE_VALIDATION:未確認
損失額だけを見て「AIが外した」で終わらせると、次も同じ入口を通します。重要なのは、どの時間足が何を示し、AIへどの情報が渡り、EAのどのガードが不足していたかを分解することです。
入口で起きていた構造
対象時点では、PRIMARYにあたる日足とH4が候補BUY方向に対してCOUNTER_TRENDでした。SECONDARYのH1では転換を確認できず、ENTRYのM5だけがREVERSAL_BREAKを示していました。短期足の変化を上位足の本格転換と早合点しやすい組み合わせです。
Geminiはこの状態をREVERSAL_ATTEMPTとしてenterへ通しました。説明としては成立していても、実口座の外部作用へ進めるには証拠が不足していました。そこで「モデルが入ると言った」ことと「注文を許可する」ことを分離しました。
追加した機械ルール
新しいCOUNTERTREND_REVERSAL_CONFIRM_V1は、次の条件が同時に成立した場合に入口を遮断します。
- Geminiがenterを返す
- 判定がREVERSAL_ATTEMPTである
- 日足/H4の確定ダウ構造が候補方向へCOUNTER_TRENDである
- H1/M15のどちらにもWITH_TRENDまたはREVERSAL_BREAKがない
この条件では、signalを注文へ進めず、見送り理由をログへ保存します。反対に、順張り、Geminiのskip、REVERSAL_CONFIRMED、中間足で転換確認済みの候補は従来動作を維持します。AIの柔軟性を消すのではなく、証拠の薄い逆張りだけを決定論的に止めます。
変更しなかった範囲
損失が出た直後にシステム全体を触ると、原因と効果を追えなくなります。今回はSL、TP、ロット、HOLD出口、建値移動、50%から75%への追随、GOLD13、warning guardを変更していません。入口の確認不足だけを最小差分で直しました。
変更前SHAと変更後SHA、バックアップ先を保存し、VM本番Python環境と隔離環境の両方でpy_compileを通しました。対象ticketの実入力を再現したテストではBLOCKEDとなり、skip、CONTINUATION、REVERSAL_CONFIRMEDは従来どおり通過しました。
テスト結果を誇張しない
低頻度テスト4/4、spreadテスト6/6は変更前後で一致しました。既存のvalidationは変更前後とも31/41で、今回の差分による退行ではなく既存RELAX設定と旧期待値の不一致です。都合よく「全テスト合格」とは書きません。
配備前heartbeatではopen_count=0、未配送signal=0を確認し、receiver再起動後のcronはexit=0、GOLD_USDはNO_BREAKOUT、保有0件でした。ただし自然相場で同じ組み合わせが再発し、実際に入口で遮断される場面はまだ観測していません。
AIとEAの責任分界
AIエージェントは複数時間足を要約し、候補の意味と不確実性を文章化します。EAと周辺ガードは、口座状態、データ鮮度、スプレッド、重複、上位足逆行の確認不足を決定論的に検査します。説明が自然でも、注文条件が不足すれば止める設計です。
モデルのconfidence 65は、勝率65%や安全性65%を意味しません。入力された文脈に対する自己評価に過ぎないため、実口座の許可条件として単独利用しません。特に逆張りでは、中間足の転換確認を別の証拠として要求します。
次の自然シグナルで確認する項目
- PRIMARY、SECONDARY、ENTRYの確定pivot列
- Geminiのaction、setup_type、basis
- hard gateの判定理由と時刻
- signal非生成、order非送信の確認
- 遮断後の最大順行と最大逆行
- 機会損失と損失回避の両方
止めた候補がその後伸びた場合も隠しません。安全側へ寄せすぎれば、有効な初動まで捨てる可能性があります。一定件数を同じ形式で集め、損失回避と機会損失を比較してから閾値を調整します。
録画を使う基準
記事へ動画を埋め込むのは、ticket、対象口座、symbol、時刻が一致する出所確認済み録画がある場合だけです。今回はDrive記録から入口条件と損失は確認できましたが、記事用動画ライブラリでticket一致を確認できるまでは、別取引の映像を流用しません。
研究としての結論
-3,016円は良い結果ではありません。しかし、上位足逆行と中間足未確認という再発条件を特定し、対象入力を再現し、最小差分のガードへ変換できました。損失を成功談へ言い換えず、未確認のLIVE_VALIDATIONを残したまま公開します。
今後は、損益だけでなく「止めるべき入口を止めたか」「止めた理由を再現できるか」「再起動や再送で二重作用がないか」を同じ重要度で追います。金融AIを実口座で育てるには、負けた日の検証密度が最も重要です。
損失検証で固定する観測順序
今後の損失記事でも、結果、入口構造、AI出力、機械ガード、注文応答、保有管理、決済、決済後状態の順序を固定します。順序を毎回変えると、勝った日は入口を強調し、負けた日は決済だけを強調するような都合のよい説明が入り込みます。観測項目を先に決めることで、成功と失敗を同じ物差しに載せます。
また、コード変更の前後で同じfixtureを実行し、対象ticketだけでなく順張り、skip、中間足確認済みの候補が変わっていないかを確認します。一件の再現テストだけを通して本番へ出すと、別の正常経路を壊す危険があるためです。
価格乖離ガードは別課題として残す
今回の修正は上位足逆行時の転換確認に限定しました。MT4成行約定時にsignal価格からどれだけ乖離したら止めるかという課題は、現行EA正本と勝ち取引への影響を比較してから扱います。複数の安全策を同時に入れ、どれが損益や約定率へ影響したか分からなくなる変更は避けます。
乖離ガードを検討する際は、signal生成時刻、EA受信時刻、注文送信時刻、約定価格、スプレッド、slippage、相場急変の有無を同じticketで記録します。平均だけでなく上位百分位と最大値を見て、通常変動を誤遮断しない閾値を決めます。
公開後の訂正方針
後からログの読み違い、ticket対応の誤り、数値差が見つかった場合は、黙って文章を差し替えません。訂正箇所、根拠、修正日時を残し、どの時点の情報で判断したかを追える形にします。AI研究開発の記事自体も監査可能な記録として扱います。
本稿は研究開発・実口座検証ログであり、利益や将来の性能を保証するものではありません。