「自分のコードを攻撃しろ」と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に入れてあります。
本記事は投資助言ではありません。詳細は免責事項をご覧ください。