「三角裁定(トライアングルアービトラージ)」は、3つの通貨ペアを一周させて最初の通貨に戻したとき、わずかな増分が残る歪みを取る手法です。スポット中心で、ファンディング等の時系列リスクを持たないため、短時間でクローズできるのが特徴です。本稿では、CEX(板)、DEX(AMM)、ステーブルコインの3要素を横断して、式・実例・実装要点・落とし穴をまとめます。
1. 基本構造:どの積が「1」を超えるか
例として USDT→BTC→ETH→USDT
の周回を考えます。次の価格を使います:
- BTC/USDT の「買い」= 1 USDT あたり得られる BTC は
1 / P₁
(ここでP₁
は BTC のUSDT建て「売値(Ask)」)。 - ETH/BTC の「買い」= 1 BTC あたり得られる ETH は
1 / P₂
(P₂
は ETH のBTC建てAsk)。 - ETH/USDT の「売り」= 1 ETH あたり得られる USDT は
P₃
(P₃
はUSDT建て「買値(Bid)」)。
1 USDT を出発点とすると、最終的な USDT の増加率(理論値)は
F = (1 / P₁) × (1 / P₂) × P₃
です。F > 1
なら裁定チャンス。逆回り(USDT→ETH→BTC→USDT)では
F' = (1 / P₃) × P₂ × P₁
を見ます。必ず「買いはAsk、売りはBid」で判定してください(理論上のミスの大半はここ)。
2. 手数料・スリッページを差し引く
実際の期待値は
F_net = F × (1 - fee₁) × (1 - fee₂) × (1 - fee₃) × (1 - impact)
で評価します。feeᵢ
は各レッグの実効手数料(メイカー/テイカー別)、impact
は板/プールの価格影響(スリッページ)総和です。3レッグすべてを「テイカーで成行」すると手数料が重く、利益を食い潰します。最低でも一部はメイカー化、または深い板/大TVLプールを優先しましょう。
3. 数値例(CEXスポット)
ある瞬間に以下の最良気配(Ask/Bid)が出ていたとします:
- BTC/USDT Ask
P₁ = 60,000
- ETH/BTC Ask
P₂ = 0.0549
- ETH/USDT Bid
P₃ = 3,315
このとき
F = (1/60000) × (1/0.0549) × 3315 ≒ 1.0067
(+0.67%)
テイカー手数料を各0.10%とすると F × 0.999³ ≒ 1.0037
(+0.37%)。さらに約定量に対するスリッページを 0.15% 見込むと ≒ +0.22%
。0.2% 前後が現実的な目線です(サイズ・板厚で変動)。
4. Excelで瞬時に判定する
判定をシート化すれば誰でもブレずに実行できます。
- セル
A2
に BTCUSDT の Ask(P₁
)、B2
に ETHBTC の Ask(P₂
)、C2
に ETHUSDT の Bid(P₃
)。 - セル
D2
に=C2/(A2*B2)
と入力(=F)。 - 手数料・影響を
E2
に合算(例:0.003 + 0.0015
)。 - 最終判定
F_net
は=D2*(1-E2)
。1.001(+0.1%)以上で「Go」、未満はスルー等の基準を決めます。
5. DEX(AMM)での三角裁定
AMMでは価格が x·y=k
によって決まります。三角裁定は、3プール(例:USDT/BTC、BTC/ETH、ETH/USDT)を周回して F > 1
かを判定します。実務上は
アグリゲータ(ルータ)が最適分割を提案しますが、ガス代と失敗時のリバートリスクを忘れずに。ガスを含めた F_net
が 1 を超えなければ意味がありません。
6. 実装設計(ボット目線)
- データ面:WebSocket で3ペア(または3プール)の 最良Bid/Ask と サイズをサブスクライブ。DEXは見積もりAPI+ガス見積もり。
- 判定:毎ティックで
F
とF_net
を計算。買いはAsk、売りはBid、数量は全レッグで同額(USDT等価)に統一。 - 執行:同時送信(同一取引所内は OCO/リンクド注文、DEXは1トランザクションで3スワップ)を基本。CEX間を跨ぐのはレイテンシと送金遅延で非推奨。
- 在庫管理:途中で止まると在庫(BTC/ETH)が残ります。即座にスクエア化か、在庫価値に耐えるヘッジ枠を定義。
- 失敗制御:FOK(Fill or Kill)/IOCで部分約定を避ける。失敗時リトライは
n
回まで(スリッページ拡大)。 - 手数料最適化:VIP/ロールディスカウント、メイカー化、トークン払い割引の活用。
- 監査ログ:入力Tick・3価格・サイズ・F・F_net・約定ID・損益を一括保存。翌日のルール改善に必須。
7. ステーブルコイン三角(USDT/USDC/DAI等)
ステーブル同士の三角は為替変動が小さい分、手数料とガスの勝負です。CEXの手数料が低ければ日中に0.05–0.20%の薄利を大量回転できます。DEXでは同チェーン・高TVLのプールに限定し、ガスを含めた F_net
が明確にプラスのときのみ実行。
8. 典型的な落とし穴
- Bid/Askの取り違え:理論Fが1を超えても、実気配で逆になるミスが頻発。
- サイズ不足:最良気配の数量が小さいと、自分で価格を動かして利益が消えます。
- レイテンシ:判定→送信→約定の遅延で
F
が崩れる。近接サーバと軽量コードが効きます。 - 手数料軽視:0.1%×3は0.3%。薄利手法で最大のコストです。
- ガス跳ね(DEX):混雑時に見積もり外のコストが乗り赤字転落。
- 送金/承認:チェーン跨ぎや初回トークン承認で時間とコストが増大。
- 在庫残り:1レッグだけ約定→在庫が相場変動で損失化。
9. スタート手順(1万円から)
- 手数料の低いCEXを1つ決め、BTC/USDT・ETH/BTC・ETH/USDTの最良気配とサイズを常時表示。
- Excel(上記式)で
F_net
をリアルタイム評価。基準は +0.15% 以上など明文化。 - 最初は極小サイズ(例:1万円相当)で 20回の練習。手数料・スリッページの肌感を掴む。
- 勝率・期待値が安定したら、板厚に応じてサイズを段階的に引き上げる。
10. 収益管理:日次で見る3指標
- 平均F_net:実行トレードの平均増分(%)。
- 実効コスト比:{手数料+影響コスト} ÷ 粗利。50%超なら見直し。
- 約定同期率:3レッグが想定どおり同時完了した比率。92%未満は改善余地大。
11. 最低限のリスク管理ルール
- 1トレードあたりの損失許容(在庫化想定)を資本の0.2%以内。
- 価格乖離アラート:
|F-1|
が急変したら次の1本はスキップ。 - 停止条件:連続3回の在庫残り、または同期率90%割れで当日停止。
12. まとめ:小さな優位を回転で積む
三角裁定は小さな優位を大量に回転させる競技です。式は単純でも、勝敗は「気配の取り方」「手数料最適化」「実行の同期」に集約されます。まずは Excel 判定+極小サイズで、+0.15〜0.30%を日中に積み上げる感覚を体に入れてください。そこからボット化・マルチルート化・メイカー化で期待値を押し上げるのが王道です。
コメント