「自分のコードを攻撃しろ」とAIに命じたら、実口座に入れる前に致命的バグが6件見つかった
うちの自動売買システム(経緯はこの記事)は、来週にも実口座に(といっても1万円)入れる予定です。その前に、 AI に「トークンを惜しまず、この戦略(中身はこちら)とコードを徹底的に精査し直せ」と頼みました。
AI は調査チームを4つ立ち上げました。最新の学術研究の調査、リスク管理の文献調査、 取引所の執行実務の実測、そして自分自身が書いたコードへの敵対的レビュー(red team)です。
見つかった致命的バグ(抜粋)
一番ヤバかったのは、次のバグ。
バグ1: 実口座の初日に、緊急停止の仕組みが誤作動して全売却するはずだった
システムには「30日で25%以上損したら全部売って止まる」という緊急停止の仕組み(キルスイッチ)が あります。ところが、その損益計算が口座の「生涯の入金累計」を参照する実装になっていました。 自分の口座には昔入金した30万円の履歴があるため、システムはそれを「30万円あったはずの資産が 1万円になっている。-4800%の大損失だ!」と誤認し、実口座の初日に全売却して停止するところでした。回避できてよかったです。
バグ2: 口座にある「自分の資産」と「ボットの資産」を区別していなかった
もし口座に自分が個人的に持っているビットコインを置いていたら、ボットはそれを「自分の建玉」と誤認して、勝手に売りに行く実装でした。
バグ3: 障害が起きると、通知もせず黙って死ぬ
エラー処理がなく、APIが一瞬こけただけでプログラムが静かにクラッシュし、誰にも知らせない設計でした。無人システムでは、この「静かな失敗」が一番の問題。
他にも「取引所が2月に手数料体系を変えていたのに古い前提で計算していた」 「指値注文が約定しなかった場合の追撃処理がない」など、計6件です。全部修正され、同じバグを二度と入れないためのテストも追加されました。
教訓
AI がコードを書く時代になり、「動くものを作る」のは簡単になりました。でも、「お金を扱って壊れないものを作る」のは別の仕事。今回の6件は、AI に「自分を疑え」という仕事を明示的に発注しなければ、実口座で発火するまで見つからなかったはずです。
作った本人(AI)とは別の目で攻撃させます。人間のソフトウェア開発で言うコードレビューと同じことが、AI 相手でも同じくらい効く、という話でした。 この「自分を攻撃させる」発注のやり方は、丸投げ手順の完全ガイドのコツ4に入れてあります。
本記事は投資助言ではありません。詳細は免責事項をご覧ください。