GaiaExGaiaEx
GaiaEx API で作るAIトレーディングボット
開発者AI & ML14 min read

GaiaEx API で作るAIトレーディングボット

シグナル生成から実行まで――完全なパイプライン

投稿を共有

3年間で利益ゼロだったボット

2021年、23歳のエンジニアがインターネットを騒がせるバックテスト結果を投稿しました。彼の作った暗号資産ボットは、2年分の過去データ上で$1,000を$4.2 million に増やしていたのです。エクイティカーブは完璧な45度の直線で上昇していました。知らない人たちがコードを譲ってくれと頼み込みました。彼は仕事を辞め、友人たちから資金を集め、実運用を始めました。

結果は、毎週例外なく損失を出しました。4か月のうちにアカウントは60%のマイナスとなり、彼はボットを停止しました。

ボットの「どこか」が壊れていたわけではありません。コードは完璧に動作していました。問題はもっと深いところにありました。バックテストは過去に完璧に適合するまで調整され尽くしていたのです――そして過去は二度と同じ形で繰り返されません。この戦略は、一般化できる何かを学んだのではなく、2019年と2020年をただ記憶していただけでした。見たことのない市場に出会った瞬間、それはどうすればいいのか分からなくなったのです。

これはAIトレーディングボットに関する最も重要な真実であり、ほとんど誰もこれを最初に語りません。ボットの良し悪しは、それを取り巻く規律の良し悪しでしかないのです。派手な部分――モデル、AI――が占める仕事はせいぜい20%です。残りの80%はデータの衛生管理、実行の配管、そしてバグやフラッシュクラッシュが眠っている間にアカウントを空にしてしまわないようにするリスク管理です。このレッスンでは、その80%を扱います。

AIトレーディングボットとは実際には何なのか

マーケティングの装飾を取り除けば、トレーディングボットとは市場を監視し、人間がボタンを押すことなく、ルールに従って注文を出すソフトウェアにすぎません。「AI」という言葉は、そのルールの一部が手書きではなくデータから学習されたものであることを意味しますが、仕事の内容は同じです――情報を、自動で、昼夜を問わず、決断に変換することです。

人々がボットに頼る理由は、正直に言えば3つあります。

  • 市場は決して閉まらない。暗号資産は24時間365日取引されています。日曜日の午前4時にBTCを見張っている人間はいませんが、ボットならできます。
  • 感情がない。ボットは底値でパニック売りをしたり、天井でFOMO買いをしたりしません。あなたが興奮していても恐怖に駆られていても、同じ計画を実行します――それこそが人間が最悪の判断を下す瞬間です。
  • 速度と一貫性。ボットは数十の資産を評価し、ミリ秒単位で反応でき、ストップロスの設定を「忘れる」こともありません。

しかし、このリストに載っていないものに注目してください――利益の保証です。ボットは、戦略をより速く、疲れることなく、感情に左右されずに実行する手段です。戦略が悪ければ、ボットはただより速く、より一貫して損失を出すだけです。自動化は、あなたが持っているエッジ――あるいは持っている欠点――を増幅させるにすぎません。

重要な洞察:トレーディングボットはエッジを見つけません――エッジを実行するだけです。知性は戦略とリスクルールの中に存在し、機械がボタンを押しているという事実の中には存在しません。「AI」は戦略の中の一つの道具であり、戦略そのものの代わりにはなりません。

ボットが実際に運用している戦略

機械学習に触れる前に、実際のボットの大多数を動かしている主力戦略を理解しておきましょう。それぞれの戦略は特定の種類の市場を前提としており――市場の性質が変わると、静かに機能しなくなります。

  • グリッドボットは、ある価格帯にわたって買い注文と売り注文の梯子を並べます。価格が振動するたびに、ボットは各段で安く買って高く売ります。横ばいで小刻みに動く市場では見事に機能しますが、強いトレンドでは災難です。価格がグリッドから外れてしまい、負けたポジションを抱え込む(あるいはそもそも動きを完全に取り逃す)ことになります。
  • DCA(ドルコスト平均法)ボットは一定間隔で固定額を買い、多くはさらに下の価格に「セーフティオーダー」を追加して平均取得価格を引き下げます。下落を拾って積み立てるには最適ですが、価格が下がり続ければ、あなたはナイフをつかみ続けることになり、平均取得価格はじわじわと悪化していきます。
  • トレンドフォロー/モメンタムボットは移動平均線のクロスのようなシグナルを使って、強さを買い、弱さを売ります。きれいなトレンドでは大勝ちしますが、レンジ相場では「切り刻まれ」、小さな損失を千回重ねて死んでいきます。
  • アービトラージボットは、同じ資産が異なる取引所で異なる価格で取引されていることを利用し、安く買って高く売ります。数式自体は単純ですが、エンジニアリングは過酷です。これは純粋な速度勝負であり、マイクロ秒、手数料、転送の遅延が、その「無リスク」な利益が本物なのか幻なのかを決めます。
  • マーケットメイキングボットはビッドとアスクの両方を提示し、流動性を提供することでスプレッドを稼ぎます。落ち着いた市場では利益が出ますが、速い市場では危険です――突然の動きは、キャンセルできる速度よりも早く、間違った側であなたを約定させてしまうことがあります。

このリストに隠れている教訓は、どの戦略も、あなたが今どういう種類の市場にいるかへの賭けにすぎないということです。グリッドボットが「良い」とか「悪い」ということはありません――レンジ相場では正しく、トレンド相場では間違っているだけです。自動トレーディングにおける最も難しい問題は、ボットを構築することではなく、その前提がもはや成り立たなくなったタイミングを知ることです。

EACH STRATEGY BETS ON A MARKET REGIME Match the bot to the market — or it quietly breaks Sideways / Range Grid · market-making Trending Trend / momentum · DCA Price gaps A B buy A → sell B Arbitrage (speed) Run a grid in a trend, or a trend bot in chop, and the same code bleeds money
オールウェザーなボットは存在しません。すべての戦略は特定の市場レジームを前提としており、そのレジームが終わるタイミングを見抜くことがスキルです。

ボットは実際にどう配線されているか

人々は「AIトレーディングボット」をまるで1本のスクリプトのように語りますが、実運用ではそれはパイプラインです。取り込み、特徴量、モデル、シグナル、実行、リスク――それぞれのパーツが、スタック全体を配線し直さずに交換可能です。このように構築するのは学問的な整理整頓のためではありません。ライブのP&Lがバックテストからずれた午前3時に、どの段が壊れたのかを知る必要があるとき、正気を保つための方法なのです。

ひとつの決定がたどる道筋を追ってみましょう。

  • 取り込み(Ingest)は、取引所からライブの市場データ――価格、取引、オーダーブック――を取り込みます。GaiaEx は注文や残高用に REST を、オーダーブックや取引用に WebSocket を公開しています。
  • 特徴量(Features)は生の数値を意味のある入力に変換します。ボラティリティ、モメンタム、ファンディング、ブックの不均衡などです。
  • モデル(Model)(ルールまたはML)は、それらの特徴量を読み込み、見解を形成します。
  • シグナル(Signal)は、その見解を具体的な注文――サイド、サイズ、価格――に変換します。
  • 実行(Execution)は注文を取引所に送り、リトライと確認を処理します。
  • リスク(Risk)はすべてを包み込みます――そして他のすべての段階に対する拒否権を持っています。

規律とは、各段階を決定論的かつログ記録可能に保つことです。すべてのシグナルにID、すべての注文にクライアントID、すべての段階にレイテンシのタイムスタンプを付けましょう。何かがうまくいかなくなったとき――必ず起こります――推測するのではなく、ログを読んで現実がどこで計画からずれたのかを正確に把握したいはずです。

AI TRADING PIPELINE Typical data path: feed → features → model → risk → exchange API Ingest Features Model Signal Exec Risk / kill Logs + metrics at every hop (latency ms, signal ID, order client id) Risk wraps execution: size caps, daily loss, correlation checks
モジュール化された段階のおかげで、取り込みやリスクを書き直すことなく、モデルや取引先を差し替えられます。

まずルール、それから機械学習

ハイプは「AIを使え」と言います。プロは言います――まずは平易な言葉で読めるルールから始めなさいと。RSIのしきい値、MACDのクロス、移動平均を上回る出来高。ルールはログに残しやすく、説明しやすく、何かが壊れたときに責任の所在を特定しやすいものです。ルールベースの戦略が儲からないなら、ニューラルネットワークがそれを救うことはありません――ただデバッグできない形で損失を出すだけです。

機械学習が活躍の場を得るのは、パターンが手書きのルールには微妙すぎる、あるいは多次元すぎる場合です。表形式の特徴量に対する勾定ブースティング木、価格データの系列に対するシーケンスモデルなどです。うまく使えば、MLは乱雑な入力からシグナルを絞り出すことができます。しかしMLにはドリフトと呼ばれる悪質な失敗モードがあります――ライブの市場が、モデルが学習したデータに徐々に似なくなっていき、パフォーマンスが静かに劣化していくのです。モデルは自信たっぷりの予測を出し続けますが、それはもう間違っているだけで、エラーは一つも投げられません。

これこそが、成熟したデスクがハイブリッドを運用する理由です。モデルは提案し、ハードコードされたルールとリスクリミットが拒否権を持ちます。AIは取引を提案することはできますが、日次損失リミットやポジションキャップを上書きすることは決してできません。機械は良い直感を持ちながらも会社を賭ける権限を持たないジュニアアナリストです。

過剰適合に気をつけましょう。過去にぴったり合うまで調整されたモデルは、多くの場合ノイズを記憶しているだけです。治療法は誠実な検証です。モデルが一度も見たことのないデータでテストする(アウトオブサンプル)こと、ウォークフォワード分析を使うこと、そして「もう一つだけパラメータを追加したい」という誘惑に抵抗することです。ある戦略が、自分が最適化したまさにその期間だけで輝くのなら、それは何も学んでいません――カンニングをしただけであり、市場がその代償を回収しにきます。

計算する価値のある特徴量

モデルは、あなたが与える入力次第でしか賢くなれません。生の価格だけでは十分でないことがほとんどです――アートとなるのは特徴量エンジニアリングです。OHLCV、オーダーブック、デリバティブのデータを、実際に情報を運ぶシグナルに変換することです。

パーペチュアルのデスクでは、重要な特徴量は終値を超えたところにあります。ファンディングは現実的で繰り返し発生するコストまたは収入であり、「勝っている」戦略をマイナスに反転させることがあります。複数の期間にわたるリターンは、複数の時間軸をまたぐモメンタムを捉えます。出来高比率は異常な活動を示すフラグとなります。オーダーブックの不均衡――ビッドとアスクの深さの比率――は、L2データを利用しているなら短期のマイクロストラクチャーシグナルになります。クロスアセットのコンテキスト(ETHがBTCに対してどう動くか)は市場全体の視点を加えます。

ある一つの規律が、アマチュアとプロを分けます。その働きに見合わない特徴量は捨てるということです。ある特徴量のパーミュテーション重要度がほぼゼロなら、あなたはノイズのためにレイテンシと過剰適合のリスクを支払っていることになります。少数の強力な特徴量のほうが、ほぼ常にキッチンシンク型のモデルに勝ります。

def engineer_features(df):
    df["log_ret"] = np.log(df["close"] / df["close"].shift(1))
    df["vol_20"] = df["log_ret"].rolling(20).std()
    df["vol_ratio"] = df["volume"] / df["volume"].rolling(20).mean()
    return df.dropna()

そして、特徴量作業における最大の禁忌に気をつけましょう。先読みバイアス(look-ahead bias)です。もし何らかの特徴量が、決定の時点では存在しなかったはずの情報――未来のバー、同一期間の終値――を誤って使っていれば、あなたのバックテストは輝かしく見え、実運用のアカウントはそうはなりません。すべての特徴量は、その瞬間に手元にあったであろうデータだけを使って計算可能でなければならず、例外はありません。

実行、署名、そして本当のお金を失わせる地味なバグ

華のない実行レイヤーこそが、資金が静かに漏れ出していく場所です。うまくやれば誰も気づきませんが、間違えれば完璧なシグナルが本物の損失に変わります。

  • 注文タイプ。価格を重視するときはリミット注文を使いましょう――あなたが受け入れる最悪の価格を自分で設定できます。マーケット注文は本当に緊急なときのために取っておき、それがスプレッドとスリッページの両方を支払うことになる点を尊重しましょう。薄い、あるいは速い市場では、それが痛烈な負担になり得ます。
  • 冪等性(idempotency)。常にクライアント注文IDを付けましょう。ネットワークはたまにつまずくもので、IDのないPOSTのリトライはあなたのポジションを2倍にしてしまうことがあります。IDがあれば、取引所は重複を認識して無視します。この一つの習慣が、カタストロフィックなバグの一つのクラス全体を防いでくれます。
  • バックオフ付きリトライ。429(レート制限)や5xx(サーバーエラー)に対しては、待ってから指数バックオフでリトライしましょう――APIを叩きすぎてバンされないようにしてください。
  • 時刻の規律。署名付きリクエストは通常、HTTPメソッド、パス、ボディ、ミリ秒のタイムスタンプを連結してHMAC署名を作ります。取引所は時刻がずれたリクエストを拒否するので、署名を行うマシンではNTPを動かしておきましょう。時計がずれていると、すべての注文が拒否されるのに、その理由が全く分からないという状況になります。

ここまでの内容は「AI」ではありません。しかし、そのすべてが、あなたのAIが1ドルでも稼げるかどうかを決めます。バックテストと実運用アカウントとのギャップは、ほとんどこのレイヤー――手数料、スリッページ、レイテンシ、エッジケース――から来ています。それこそが、次の二つの節が存在する理由です。

アルファよりリスクを先に

長く生き残るトレーダーと爆発してしまうトレーダーを分ける手順があります。リスクはすべての注文に対するゲートであり、取引後の弁明ではないということです。エンジンをチューニングする前に、ブレーキを設計しましょう。

絶対に譲れない管理項目は以下の通りです。

  • ポジションキャップ。単一銘柄へのエクスポージャーを制限しましょう――多くの場合、資産の2~5%です――そうすれば1回の取引で自分を破滅させることはできません。
  • ストップ。ATR(ボラティリティに応じて変動)または固定ティックでストップを設定し、頭の中の意図ではなく実際の注文として発注しましょう。
  • 日次損失停止。アカウントがその日に例えば3%のマイナスになったら、ボットは取引を停止します。完全に停止です。この一つのルールが、どんな巧妙なシグナルよりも多くのアカウントを救ってきました。なぜなら、バグや悪い日が引き起こす被害を頭打ちにできるからです。
  • キルスイッチ。すべての有効な注文をキャンセルし、すべてのポジションをフラットにする単一のアクションです。毎月テストしましょう。それが必要になる日は、それが壊れていることを発見する最悪の日です。

パーペチュアルの場合は、ファンディングの持続的な負担強制決済までの距離を同じゲートに組み込みましょう。価格の上では「問題ない」ポジションでも、ファンディングで出血していたり、ヒゲ一本分で強制決済に達するところに立っていたりすることがあります。

カストディもこの議論に含まれます。GaiaEx はMPCを使用しており、鍵材料を各当事者に分散させるため、ボットが攻撃者に奪われかねないファイルの中に生の秘密鍵を保持することは決してありません。また、取引権限は資金の引き出し権限とは別にスコープを設定できます――そのため、ボットが注文を出すために使うAPIキーには、プラットフォームから資金を移動する権限を決して与えてはいけません。

RISK CHECK ORDER Example: evaluate before every child order (numbers illustrative) Signal OK? Size ≤ 5% Daily P&L > −3%? Submit / Halt Perps: add funding drag and liquidation distance to the same gate Kill switch = cancel all + flat (test monthly)
リスクは取引後の弁明ではなく、すべての注文に対するゲートとして機能します。

詐欺:ボット自体が罠であるとき

ここには、光沢のあるボット広告が決して語らないリスクがあります。個人投資家向けに宣伝されている「AIトレーディングボット」の大部分は、実はトレーディングツールでは全くなく、強盗そのものであるということです。誠実な教育は、これをはっきりと名指ししなければなりません。というのも、「ボット」でお金を失う人の大半は、実際にはここで失っているからです。

パターンは繰り返されます。

  • 保証リターン型のボット。「私たちのAIは1日2%、無リスクで稼ぎます」。正当な戦略で利益を保証するものはありません。市場は定義上不確実です。安定した、負けようのない利益の約束は、ポンジスキームの約束です。
  • 過剰な権限を持つAPIキー。詐欺ボットの多くは、引き出し権限付きのAPIキーを接続するよう求めます。接続した瞬間、彼らはアカウントを空にすることができます。2025年後半、Binanceは、まさにこれを行う不正な第三者ボットに起因する、確認されたハッキング事件と5桁の損失を記録しています。
  • 不透明で監査されていないコード。ソースが非公開で、セキュリティ監査を受けていない第三者ボットは、バックドアを隠している可能性があります。コードが自分の鍵をどう扱っているかは、手遅れになるまで見えません。
  • ウォッシュトレードとボリュームファーミング型のボットは、静かに取引所の規約に違反し、あなたのアカウントを制限または停止させることがありますが、損失について何のサポートもありません。

防御策は具体的で、記憶しておく価値があります。トレーディングボットに引き出し権限を絶対に与えないこと――APIキーは取引専用にスコープしましょう。資金があなたが事前に承認したアドレスにしか出ていけないように、引き出しアドレスのホワイトリストを使いましょう。強力な2FA(認証アプリまたはハードウェアセキュリティキー、SMSは不可)を有効にしましょう。月に届くような約束をする匿名のTelegramボットより、公式で監査済みのツールを優先しましょう。そして、金融における最も古いルールを覚えておきましょう。話がうますぎるなら、それは詐欺であり、「AI」はただの衣装にすぎません。

誠実な結論:最も危険なトレーディングボットは、バグの多いボットではなく――あなたから盗むために巧妙に作られたボットです。引き出しアクセスを求める、利益を保証する、あるいはコードを隠しているボットは、証明されるまで敵対的なものとして扱いましょう。GaiaEx のMPCカストディとスコープ付き権限は、トレーディング連携が注文を出すことはできても、あなたのお金を持って逃げることは決してできないように、まさにそのために存在しています。

爆発せずにペーパーから実運用へ

戦略ができ、きれいな特徴量ができ、実行レイヤーができ、リスクゲートができました。実際の資金量でそのまま実運用に切り替えたくなる誘惑があります。やめましょう。死んだボットの墓場は、紙の上では完璧に見えたのに、準備もなく現実に出会ってしまった戦略で満ちています。

規律ある道筋は次の通りです。

  • 正確に同じコードパスでペーパートレードする。本物の資金を賭けずに、ライブの注文ロジックをライブのデータに対して少なくとも数週間動かしましょう。約定とタイムスタンプを、戦略が期待していたものと比較しましょう。ペーパーとバックテストがすでに一致していないなら、止まってその理由を突き止めてください。
  • 最小サイズで実運用に入る。最初の実運用フェーズの目的は利益ではありません――真実を測定することです。本物のスリッページ、本物の手数料、本物のレイテンシです。多くのチームは、その数字を信頼する前に、バックテストに対して30~50%のヘアカットを前提としています。
  • 実運用がモデルと一致した時だけスケールする。実際のスリッページと手数料があなたの想定と一致するとき、サイズを徐々に増やしましょう。一致しないなら、モデルはあなたに嘘をついています――資金を投じる前に修正してください。

そして、悪い日が来る前に計画を立てておきましょう。フラッシュクラッシュやAPI障害は仮説ではなく――日付が分からないだけの、既にスケジュールされたイベントです。あなたの唯一の対応策が「朝になったら気づくだろう」なら、それは対応策ではありません。取引所が対応しているなら切断時フラット化(flatten-on-disconnect)を自動化しておき、接続が切れても、あなたが眠っている間に裸のポジションが放置されないようにしましょう。

一言で言えばこの規律です。誠実にバックテストし、辛抱強くペーパートレードし、小さく実運用に入り、ゆっくりスケールし、希望ではなく――決してリスクにサイズを決めさせましょう。優れたリスク管理を伴った平凡な戦略は生き残ります。リスク管理のない優れた戦略は、いずれ生き残れません。