記事内に広告が含まれています。
AI×開発コト

米国株の自動売買システムをAIエージェント3体と作った ― ただし実注文はまだ出さない

「米国株の自動売買をAIで自作」の文字と朱色の封印の判子、自作した管理画面のスクリーンショット AI×開発

ここ数か月楽しくハマっている、米国株×AIで自分専用の自動売買システムを作ってみた!という記録です。

筆者は、資産形成のひとつとして米国株取引を細々やっているのですが、最近はAIを使った自動取引も目にすることが多くなりましたね。
ちょっと半信半疑な部分もありつつ、文明の利器を試さずに素通りするのは、それはそれで勿体ないということで、思い切って挑戦することにしました。

まず、今回の挑戦にあたって準備したのがmoomoo証券の取引口座でした。普段は別の証券会社をメインに使っているのですが、手動取引と分けて管理したいと思ったのと、APIによる取引が可能なこと、さらに、デモ口座での取引で手軽なシミュレーションにも使える点が決め手でした!

一通りの機能実装は完了していて、デモ口座での運用はすでに安定し、ほぼ放置で毎日動いています。

自作した自動売買システムの管理画面。TradingViewのチャート、状態確認、取引ジャーナルなどのパネルが並んでいる


それでも、実際のお金が動く注文は、まだ一度も出していません。正確に言うと、出せないように自分で封印してあります。

「それ意味あるの?」と思われそうですが、この封印こそが、このシステムで一番こだわった部分です。今日はその話をします。

なぜ実注文を封印したのか

自動売買の失敗談は、探せばいくらでも出てきます。バグで注文が連打された。ロジックの想定外で損切りが効かなかった。夜中に暴走していて朝気づいた。共通しているのは、壊れ方を設計する前に、儲け方を設計してしまったことだと思っています。

対象は米国株です。市場が開くのは日本時間の深夜から早朝、私が寝ている時間帯です。つまりこのシステムは、私の意識がない間に動く、文字どおりの「無人運転」です。無人運転でまず作るべきはアクセルではなくブレーキ、というのがこのプロジェクトの出発点でした。

緊急停止ボタンと自動売買ループの設定がある状態確認画面。サーバー側の自動ループが30秒間隔で無人稼働している

だから順番を逆にしました。先に「壊れない仕組み」を作り切る。実注文は、システムが信頼に足ると証明できてから解禁する。それまではデモ口座でのシミュレーション取引だけで回し続けます。

安全3原則

システム全体は、次の3つの原則の上に建っています。

原則1: 実注文は「物理的に」出せない

意志の力は当てにしない、が大前提です。「本番はまだやらない」と心に決めるのではなく、コードとして不可能にしてあります。

  • 取引ロックを解除する処理(unlock_trade)をそもそも実装していない
  • 取引パスワードをシステムのどこにも保存していない
  • 実注文の確定処理は、呼ばれても拒否(REJECTED)を返す作りで固定

深夜にテンションの上がった自分が「ちょっとだけ本番で」とやろうとしても、出せません。今後解禁するときは、手動承認・緊急停止スイッチ・操作の記録(監査ログ)とセットで、この封印を一つずつ外していく設計に敢えてしてあります。

原則2: AIに注文権限を渡さない

このシステムはAIエージェント(Claude Code・Codex・Hermes Agent)と一緒に作りました。稼働中もAI(LLM)が相場ニュースの整理やイベントリスクの評価を担当しています。

それでも、売買判断そのものはAIにやらせていません。注文を作るのは、同じ入力なら必ず同じ出力を返す、ルールベースのエンジンです。

理由はシンプルで、AIの判断は再現できないからです。「なぜこのタイミングで買った?」に答えられないシステムは、検証も改善もできません。AIには分析結果を横に置くだけの「shadowモード」で走ってもらい、ルールベースの判断との成績差を裏で記録しています。注文の生成・数量の変更・リスク設定の上書きは、AIには一切できない作りです。

原則3: デモ口座で全部やってから

デモ口座での注文でも、本番と同じ流れを回します。注文のプレビュー→確定→約定→照合。損切り・利確ラインの監視。市場時間外のブロック。緊急停止。

ここで効いてくるのが、冒頭で触れたmoomooのデモ口座です。APIからでもデモ口座の注文をそのまま扱えるので、本番と同じコード・同じ流れのままリハーサルができます。

「本番になったら追加しよう」をやると、追加した部分が未検証のまま本番に出ます。だからデモ口座の段階で、本番に必要なものを全部作って、全部動かす。デモ運用はお試しモードではなく、本番のリハーサルという位置づけです。

システムの全体像

全体はざっくりこういう構成です。

自動売買システムの全体像。データ取得、シグナル受信、リスクチェック、デモ口座での注文、監視、記録の6段階と、封印された本番口座、安全3原則
  • データ取得: moomoo証券のAPI(OpenD)経由で、株価・ローソク足・板情報・資金フローを取得。口座情報もここで管理
  • シグナル受信: TradingViewから売買の合図を受け取り、ルールベースのエンジンに渡す(画面のチャートは表示専用で、売買判断には使わない)
  • リスクチェック: 発注前の安全確認、市場時間外のブロック、保有ポジションの偏りの監視、緊急停止スイッチ
  • 注文: デモ口座での売買。注文の待ち行列と売買ループで、プレビュー→確定→約定→照合までを自動で回す
  • 監視: 監視銘柄のチェックと、手元の管理画面(TradingViewのチャート埋め込み)・Discordへの通知。Discordには口座IDやパスワード類を一切出さない設計
  • 記録: 全取引の売買日誌を自動で作成。戦略別・曜日別・相場の状況別・想定価格とのズレまで自動集計して、日次と週次のレポートを出す

取引が走るのは私が寝ている夜中なので、朝起きたらスマホのDiscordで夜間の結果を確認して、帰宅後に売買日誌を読む、という運用に落ち着いています。
ちなみにチャート周りはTradingViewのウィジェットに頼っていて、これが想像以上に優秀でした。その話はまた改めて。

AIエージェント3体と作るということ

このシステムは、設計の相談から実装、レビューまで、Claude Code・Codex・Hermes Agentの3体と作っています。役割をどう分けたか、AIの書いたコードがどんなやらかしをしたか、この規模でコストがいくらかかったか ― このあたりは話すと長いので、それぞれ別の記事で深掘りしていくつもりです。

いま動いているもの、これから書くこと

現在はデモ口座での運用が安定して回っていて、こちらが手を出さなくても、毎日売買日誌とレポートがたまっていく状態です。AIのshadow判定とルールベースの成績比較も、裏で記録が続いています。

正直なところ、そろそろ封印を解くことも考え始めています。ただ、「動いているから」は解禁の理由になりません。壊れ方を一通り試して、記録が十分にたまって、それでも大丈夫だと言い切れたときが、その日だと思っています。

このブログでは「儲かる話」はまだ書けませんが、「壊れないように作る話」と、その過程で起きた経験を記録として残していきます。moomoo APIの環境構築でハマったこと、AIエージェントのやらかし、リスク管理の実装 ― 開発ログなどなど。

実注文の封印を解く日が来たら、そのときは「なぜ解禁できると判断したか」から書くつもりです。

それでは、次回もお楽しみに!


※本記事は個人の開発記録であり、特定の金融商品の売買や投資行動を推奨するものではありません。投資の最終判断はご自身の責任でお願いします。

スポンサーリンク
KING-SHOWenをフォローする
モノコト語り

コメント