高頻度MMbotの開発で得た知見をスケールさせるためのbotアイデアを8つまとめました。
高頻度MMの知見は以下の戦略にもシナジーがある。8月は開発をスケールさせていく。
・クロス CEX/DEX arb
・perp‐spot “ベーシス”/Funding arb
・清算スナイプ & 部分清算ループ
・オプション ガンマスキャルピング & ボラMM
・統計アービトラージ(ペア/PCAモデル)
・MEV サンド/バックラン— よだか(夜鷹/yodaka) (@yodakablog) July 25, 2025
今回の記事では以下の4つの拡張戦略と実装プランを扱います。
・クロス CEX/DEX アービトラージ
・RFQ/ブロック向けマーケットメイク
・Perp-Spot ベーシス & Funding アービトラージ
・清算スナイピング
クロス CEX/DEX アービトラージ ― 実装ガイド
ゴール:板読み MM で培った “サブ秒レイテンシ・在庫制御” をそのまま流用し、
価格差 ≧ (取引手数料 + ガス + 出金手数料) を検知した瞬間に 同時約定 で抜く PoC を2 週間で構築する
1. 全体アーキテクチャ
┌──────────────────────────────┐
│  Liquidity Snapshot Service  │  ← WebSocket / REST
└───────────────▲──────────────┘
                │ best_bid / best_ask / depth
┌───────────────┴──────────────┐
│ Dynamic Edge Calculator      │  ← 手数料・ガス・Withdraw 推定
└───────────────▲──────────────┘
                │ edge ≥ 0 ?
┌───────────────┴──────────────┐
│ Order-Router / Tx Coordinator│  ← atomic swap or risk-skew
└───────────────▲──────────────┘
                │ fills / rejects
┌───────────────┴──────────────┐
│ Inventory / Risk Engine      │  ← hot-wallet balances
└──────────────────────────────┘
- Liquidity Snapshot
- 既存 MM の order-book collector を拡張:複数 CEX REST+WebSocket、複数 DEX SDK (e.g. 0x, Uniswap routers)。
 
- Edge Calculator
- edge = (sell_px – buy_px) – fees_buy – fees_sell – gas_est – withdraw_estwundertrading.com
 
- Order-Router
- “双方向同時発注” が基本。片側 fill 失敗時は ヘッジ成行 でポジを閉じる。
 
- Inventory Engine
- Hot-wallet = 倉庫 と割り切り、exchange1_qty – exchange2_qty = net_delta を常に 0±ε に維持。
 
- Monitoring / Slack
- 未約定建付が 3 s > 0 の場合は circuit_breaker を発動しペアをクールダウン。
 
2. 優先タスクの詳細
2-1. “hot wallet ≈ ポジション” 在庫モデル
| 概念 | 実装ノート | 
|---|---|
| ウォレット=在庫 | inventory[exch] = {asset: balance}をRedisに常駐。更新は 約定WebSocket イベント+1 s毎のREST再同期。 | 
| ペア在庫リバランス | delta = inv[A] – inv[B].|delta| > rebalance_thresh なら自動 withdraw / deposit キューへ送信。 | 
| リスクキャップ | 各ペアに max_notionalを設定、Edge>0 でも超過していればスキップ。 | 
| 流動性ブロック | withdraw/bridge 中は state = locked, 該当在庫を計算対象外に。 | 
2-2. 動的エッジ計算器
def calc_edge(pair, buy_ex, sell_ex, qty):
    buy_fee   = fee_table[buy_ex](qty)
    sell_fee  = fee_table[sell_ex](qty)
    gas_cost  = gas_oracle.estimate(tx_size(pair, qty))   # DEX only
    wd_cost   = withdraw_cost[buy_ex][pair.base]          # CEX→CEX用
    edge      = sell_px - buy_px - buy_fee - sell_fee - gas_cost - wd_cost
    return edge
- fee_table:Maker/Taker, VIPティア, リベートまで動的計算 Medium
- gas_oracle:EIP-1559 (baseFee × 1.1 + tip) を RPC から取得 HyroTrader
- withdraw_cost:API or Parse HTML → 1 h毎にキャッシュ(変動が遅いため)
閾値:edge >= min_profit_pct * buy_px でトリガ。 min_profit_pct は 0.15–0.30 % が現実的。
3. Order-Router / Tx Coordinator
| ステップ | CEX↔CEX | CEX↔DEX (on-chain) | 
|---|---|---|
| 1. Pre-check | 両方の exchange_status, net_delta< cap | ガス≦上限・nonce最新 | 
| 2. Place orders | 同時に LIMIT IOC | ① CEX LIMIT IOC ② DEX swap in same block (private Tx or revert-if < min_out) | 
| 3. Fill monitor | WebSocket fill event (≤ 200 ms) | Flashbots / Bundle status | 
| 4. Fallback | 1 s後 fill 片側 ⇒ 残側 MARKET HEDGE | 同一ブロック未fill ⇒ 全Tx revert | 
| 5. Inventory update | Redis incr/decr | 同左 | 
4. 既存 MM モジュールへの差し込みポイント
| MMモジュール | 追加実装 | 
|---|---|
| PriceFeed | MultiExchangeSnapshotクラスを追加し、同じ feed.tick()インターフェースで多取引所返却 | 
| DecisionEngine | spread→edge へ置換。関数シグネチャを def decide(edge, inventory)に統一 | 
| Trader / Executor | route_order(exch, side, qty, price, order_type)を抽象化し、DEX SDK call/CEX REST call を切替 | 
| RiskManager | delta_cap,dd_capをペア単位で持ち、超過時は route_order をブロック | 
5. PoC ロードマップ(2 週間)
| Day | マイルストーン | 
|---|---|
| 1–2 | Multi-exchange adapters(REST+WS, DEX SDK) scaffolding | 
| 3–4 | Liquidity Snapshot & Edge Calculator 単体テスト - 価格差検知 ≤ 100 ms | 
| 5–6 | Order-Router with atomicity fallback(片側ヘッジ) | 
| 7 | Inventoryモデル & Redis キャッシュ、Slack 通知 | 
| 8–10 | Paper-trade / Shadow Mode(0 qty)→ Fill率 & レイテンシ測定 | 
| 11–12 | 本番 min-notional 0.1 % 資本で A/B テスト | 
| 13–14 | KPI レポート:Edge分布 / Fill成功率 / PnL vs ガス・手数料比 | 
6. リスクと拡張
| リスク | 対策 | 
|---|---|
| 送金遅延(CEX↔CEX) | Hot-wallet 在庫モデル+“すでに持っている在庫”でのみ同時発注。 | 
| 競合Botで滑り | edge_adj = raw_edge – (depth_slippage(qty))で事前補正。 | 
| DEX ガス急騰 | gas_oracle.watch()で baseFee spike 時に route を disable。 | 
| API rate-limit | 全 REST 呼び出しを backoff-async queue に統一。 | 
次段階の拡張
- Flash-loan or CEX 借入 でレバレッジ → エッジ薄でも ROI↑。
- オフチェーン solver(e.g. Cow-Protocol)接続で MEV 抑制。
- Edge Score Engineを組み、MMBot と資本を自動シフト。
一言まとめ
板読みMMの “速さ” と “在庫制御” を横展開し、
サブ秒の価格乖離をスキャン → エッジ計算 → 同時発注 → 在庫ゼロ化 のループを作る。
これが動けば 手数料+ガスを払っても“確定利益” を量産できる ― まずは最小ロットで PoC を回し、Fill率と損益を数値で検証する。
RFQ/ブロック向けマーケットメイク ― 実装ガイド
狙い:板外で飛んでくる Request-For-Quote を瞬時に値付けし、大口取引を 確実・手数料効率的 に成約させる。
コア資産:既存MMの ①高速価格計算 ②在庫スキュー制御 ③発注エンジン を再利用。
1. 対象ネットワークの整理
| ネットワーク | 取扱商品 | 接続方式 | 決済先 | 早期参入メリット | 
|---|---|---|---|---|
| Paradigm | CEX先物・オプション・パーペチュアル | WebSocket RFQ → Quote | Deribit, BinanceFut 他 | デリバティブ向け深い流動性 paradigm.co | 
| WOO X Block | CEXスポット/パーペ | REST+WS “Block Trade” | WOO X内クロス | 狭スプレッド・VIP手数料 docs.woox.io | 
| 0x RFQ | EVMチェーン現物 (ETH/L2) | HTTP /quote回答 + 署名 | オンチェーンSwap | 少額資本でも供給者登録可 0x.org | 
※PoCなら Paradigm (デリバティブ) と 0x (オンチェーン現物) の 2本立てで十分幅広い検証が可能。
日本居住の個人でも実行可能か?
結論だけ先に
- Paradigm 自体は「日本在住=即 NG」ではない。制裁対象国・US/CA 個人などが“Restricted Jurisdictions/Persons”に列挙されているが、日本は該当しない paradigm.co。
- ただし
- 機関投資家/適格投資家向け(法人・プロ向け KYC が必須)
- クリアリング先(Deribit など)が日本居住を禁止している場合、そのプロダクトは利用不可 ─ Paradigm は「清算先の国籍制限をそのまま継承する」と明言 paradigm.co。
- 日本の金融商品取引法・改正資金決済法により、個人が海外暗号資産デリバティブを扱うこと自体がグレー/NG のケースが多い(FSA の認可を受けた業者経由でないと基本的に禁止)。
 
1. Paradigm のオンボーディング要件
| 項目 | 内容 | 備考 | 
|---|---|---|
| 居住国チェック | ドロップダウンに「Japan」が存在 → 選択可 | “Restricted Jurisdictions” に日本はない paradigm.co | 
| ユーザー区分 | Business(法人) or Individual(個人だが desk admin レベルで機関取引を行う人) | いずれも KYC/AML 必須 | 
| 適格性 | <ul><li>暗号デリバティブの取引経験</li><li>十分な資産規模(EU基準で 50 万 EUR 相当以上 が目安)</li></ul> | User Agreement Art. I — Sophistication 条項 paradigm.co | 
| 禁止属性 | US Person・Canadian Person・総合制裁国居住者 | 日本人はここでは該当しない | 
2. 清算先ごとの実際の可否
| 清算先/商品 | Paradigm での扱い | 日本居住者の可否 | 根拠 | 
|---|---|---|---|
| Deribit (BTC/ETH オプション、永久先物) | 取扱い最多 | 不可:Deribit が日本を Restricted Jurisdiction に指定 support.deribit.com | Paradigm の「 venue の規制を継承」ポリシー | 
| CME(CME ClearPort) | OTC スワップ → CME 清算 | 要 FCM 経由。日本法人でも可だが 商品先物取引業 の登録や大口証拠金が必要 | FSA+CME ルール | 
| Binance系 Perp | 2023 年以降取り扱い停止 | 日本向けデリバティブは FSA 規制で不可 | |
| WOO X Block Trade | 可能 | WOO X Pro アカウントが法人なら可(2025/6 時点) | WOO X ToS | 
| 0x RFQ (オンチェーン現物) | 清算はチェーン上 | 可:スマートコントラクトへの直接呼び出し。ガス送金のみ | 日本の現物売買は合法(課税義務あり) | 
実用上は 「清算先の国籍制限 × FSA のデリバティブ規制」 がボトルネックです。
Deribit系や Bybit系デリバティブはほぼ触れず、CME系やオンチェーン現物 RFQ が現状の選択肢。
3. 日本居住者が実際に使うまでのステップ
- 法人(または個人事業主)名義で Paradigm KYC
- 登記簿・代表者パスポート・主要株主リストを提出。
 
- 対象プロダクトのクリアリング要件を確認
- 例:CME ClearPort なら国内 FCM(ABNアムロ東京支店など)との取引関係が必要。
 
- FSA への自己確認
- 商品デリバティブ扱いになる場合、「第一種金融商品取引業」登録がないと自己売買不可。実質は 「プロップは不可・投資運用業が必要」。
 
- 税務 & 会計処理
- 裁定収益は雑所得(個人) or 法人所得。オンチェーン RFQ で得た手数料も課税対象。
 
- オンチェーン清算の場合のガス管理
- ETH/GAS をホットウォレットに常時補充。
 
- コンプラ体制
- 反社チェック、疑わしい取引報告(STR)フローを準備。Paradigm から定期的にデューデリが来る。
 
4. まとめ & 実務アドバイス
- 規約上は日本は“許容国” ⇒ Paradigm の申請フォームに存在し、Restricted リスト外。
- 実戦では
- 日本 FSA の 個人向け海外デリバティブ規制
- 清算先(Deribit 等)の 自主規制で日本禁止
 が二重で効くため、使えるのはCME系 + オンチェーン現物RFQ程度。
 
- 法人格 & プロ投資家ステータス があれば、Paradigm+CME でブロック取引を行う余地はあり。
- 最終的には Paradigm オンボーディング担当と日本の外為法・金商法専門の弁護士へ確認 するのが安全(本回答は法律アドバイスではありません)。
2. システム構成
graph LR
    A(RFQ Gateway) -->|"RFQ JSON"| Q[Quote Engine]
    Q -->|"price size ttl"| G[Quote Signer]
    G -->|"signed quote"| A
    A -->|"fill or expire"| S(Settlement Orchestrator)
    S --> E[Exchange and Chain Adapter]
    E --> I[Inventory and Risk Service]
    I -->|"inventory skew"| Q
    M[Metrics and Alert] --> I
    M --> Q
| モジュール | 主責務 | 既存MMから流用 | 
|---|---|---|
| RFQ Gateway | 各ネットワークの RFQ メッセージ受信・Ack | WebSocket/RESTクライアント | 
| Quote Engine | mid ± margin + inventory_skew で秒内値付け | price_feed, spread_model | 
| Quote Signer | ネットワーク毎の署名(API key / EIP-712) | auth_utils | 
| Settlement Orchestrator | Quote成約後のブロックオーダー送信 + ヘッジ | order_router | 
| Inventory & Risk | 在庫上限監視、skewパラメータ算出 | inventory_service | 
| Metrics/Alert | Fill率・レスポンス遅延・在庫偏りをSlack通知 | monitoring_stack | 
3. Quote Engineのロジック
def build_quote(rfq: RFQ, inv: Inventory, cfg):
    mid = price_feed.mid(rfq.symbol, rfq.size)
    skew = cfg.inv_skew_coef * inv.net_delta(rfq.symbol)
    risk_margin = cfg.base_margin + cfg.vol_curve(rfq.size)
    price = mid + skew + rfq.side.sign * risk_margin
    ttl = min(cfg.max_ttl_ms, rfq.request_ttl_ms)
    return Quote(price=round_price(price, cfg.tick), size=rfq.size, ttl=ttl)
- inventory_skew_coef:在庫が+Δなら売り値を下げ/買い値を上げて自然ヘッジ。
- vol_curve:サイズ依存のマージン(例:risk_margin = k * sqrt(size))。
- 価格算出から署名返信まで < 150 ms を目標。
4. ネットワーク別実装ポイント
| 項目 | Paradigm | 0x RFQ | 
|---|---|---|
| 接続 | wss://paradigm.ws/tradingでSUB {"type":"rfq","inst":"BTC-PERP"} | 自ホスト /quoteエンドポイントをSwapAPIがポーリング | 
| 受信RFQ | JSON → {"inst":"BTC-PERP","sz":"500k","side":"BUY","ttl":500} | HTTP query string→ makerToken,takerToken,amount,txOrigin,expiry | 
| レスポンス | "type":"quote","id":...,"px":...,"sz":...,"ttl":..." | JSON {price, size, expiry, makerAddress, salt}+ EOA署名 | 
| 成約検知 | WebSocket "fill"イベント → settlement venueに block order | SwapAPIがオンチェーンTxをブロードキャスト; event logsで確認 | 
| ヘッジ | 同一CEXで反対成行 / 他CEXでミラーマーケットメイク | 片側現物なのでヘッジ不要(inventory管理のみ) | 
| 手数料 | Maker Rebate: -1bps 〜 +3bps tiers | ガス + 0x protocol fee(50–100 Gwei) | 
| 失効処理 | TTL超過 → Quote自動パージ | expiry過ぎたhashをRedis掃除 | 
5. Inventory “hot-wallet” モデル
- ウォレット=ポジション
- inv[custodian][asset] = on_exchange_balance().
- RFQ提示サイズは avail_balance – safety_buffer以内に制限。
 
- Rebalance Job
- |net_delta| > rebalance_thresholdなら- withdraw(exchangeA) → deposit(exchangeB)を自動スケジュール。
- 出金手数料も Quote Engine の risk_marginに反映。
 
- Circuit Breaker
- 在庫偏り > hard_cap、または連続未約定 n 件 ⇒ RFQ Gateway を pause 60 s。
 
6. PoC 2週間ロードマップ
| Day | Deliverable | 
|---|---|
| 1–2 | Paradigm & 0x API keys取得・テスト接続 ( pingOK) | 
| 3 | RFQ Gateway + basic logging | 
| 4–5 | Quote Engine with inventory skew → unit test ( <150 ms) | 
| 6 | Signer実装(Paradigm HMAC / 0x EIP-712) | 
| 7 | Settlement Orchestrator:CEX block order & EVM Tx stub | 
| 8–9 | Shadow Mode:Quote返答のみ、Fill率/latency計測 | 
| 10–11 | 本番 min‐notional 0.5 %資本 → Fill成功・PnL確認 | 
| 12–14 | KPIsダッシュ(fill%, avg_edge, inv_delta) + Slack alert & 回帰テスト | 
7. リスク & ガードレール
| リスク | 緩和策 | 
|---|---|
| Quote片側Fill→在庫偏り | TTL≤500 ms、fill監視 → 未Fillならcancel/hedge Auto | 
| RFQスパム | IPレート制限 & RFQ Gatewayで最小サイズ/TTLフィルタ | 
| 過度競争で利幅蒸発 | risk_margin_floorを設定しエッジ最小確保 | 
| ガス急騰(0x) | gas_oracle監視、baseFee>thresholdで Quote停止 | 
| Reg/コンプラ | 相対取引規制の国を除外 ( whitelist_countries) | 
8. KPI 例(週次レビュー用)
| 指標 | 目標値 | 
|---|---|
| Quote → Fill 率 | > 35 % | 
| Avg response time | < 120 ms | 
| Edge after fees | ≥ 0.02 % | 
| 在庫偏り | |
| RFQスパム拒否率 | > 90 %(不採算RFQを遮断) | 
TL;DR
- RFQ Gateway でネットワーク特有のRFQを受ける → Quote Engine で mid ± margin + inventory_skew を<150 msで値付け → Signer で返送。
- 成約時は Settlement Orchestrator が即ブロック注文(CEX)/オンチェーンTx(0x)を発火し、Inventory Service が在庫偏りを監視。
- Paradigm(オフチェーンデリバティブ)と 0x(オンチェーン現物)を押さえれば、「大口・板外」マーケットへの 初期シェア を小資本でも確保できる。
早期にShadow Mode→小ロット実運用→KPI計測のサイクルを回し、利幅の厚いRFQ市場で“存在感”を築きます。
Perp-Spot ベーシス & Funding アービトラージ ― 実装ガイド
目的:
- 8 h ごと に発生する Funding Fee と Perp-Spot ベーシス(価格乖離)を同時に抜き取る。
- デルタニュートラル を維持しつつ、連続ポジション維持コスト(資金調達・在庫バランス)を最小化する。
1. システム全体像
graph LR
    P(Perp Price Feed) --> C(Core Engine)
    S(Spot Price Feed) --> C
    F(Funding Oracle)  --> C
    C -->|"open / close"| R(Route Executor)
    R --> A(Exchange Adapter)
    R --> B(Exchange Adapter)
    C --> I(Inventory Service)
    I --> C
    M(Metrics & Alert) --> C
    M --> I
2. モジュール詳細
| モジュール | 主な責務 | 実装ノート | 
|---|---|---|
| Perp / Spot Price Feed | 各取引所の WebSocket best-bid/ask 取得 | 既存 MM の price_feed を複数取引所対応に拡張 | 
| Funding Oracle | 現在の funding_rate, 次回支払までの 残時間 を取得 | REST /funding_rate,/premium_indexを 1 min 毎に pull | 
| Core Engine | Edge 計算・ポジション管理・再平衡 | edge = funding_edge + basis_edge - costs | 
| Route Executor | 指値/成行を組み合わせてデルタ中立を構築 | 同一CEX が最速、なければ CEX↔DEX でヘッジ | 
| Inventory Service | 資本配分・在庫偏り監視・リバランス入出金 | hot-wallet = 在庫 モデル、MM と共通 | 
| Metrics & Alert | ROI・DD・Funding 支払タイミングを Slack 通知 | Prometheus → Grafana or loki logs | 
3. エッジ計算ロジック
# t: 秒単位 funding_edge = funding_rate * perp_price * (seconds_to_next / 28800) basis_edge = perp_price - spot_price # コンバージ狙いなら符号反転 carry_cost = borrow_rate * spot_price * (holding_sec / SEC_IN_YEAR) tx_cost = taker_fee_perp + maker_fee_spot + est_slippage edge = funding_edge + basis_edge - carry_cost - tx_cost
- funding_rate:年率ではなく 8 h 単位(Bybit, Binance 等は API で直接取得可)。
- borrow_rate:現物不足時の margin borrow or オフチェーンレポレート。
- edge ≥ min_profit_pct × spot_price でエントリ。
- exit 条件:edge < -cut_loss_pct * spot_price or max_holding_hrs 超過。
4. ポジション管理フロー(8 h サイクル想定)
- Pre-Check
- edge_calc()が正値かつ- |net_delta| < cap。
 
- Open
- Perp SHORT + 同数量 Spot LONG(or Perp LONG + Spot SHORT)
- 同一取引所に現物が無ければ cross-exchange でヘッジし在庫 Service へ登録。
 
- Hold
- Funding 受取(or 支払)ごとに PnL + funding を記録。
- basis_edgeが逆転したら delta neutr を維持しつつポジサイズを調整。
 
- Close
- 一括成行 or basis 0 接近時の指値で約定。
- inventory.rebalance()が現物差引、出金/入金をスケジュール。
 
要点:日常の MM で 1 秒〜数分おきに行っている delta hedge を 8 h 間隔に伸ばすだけ。
リアルタイム板取り合いではないため、レイテンシは 100 ms 程度でも十分。
5. 維持コスト & リスクモデル
| コスト要因 | 推定方法 | 随時更新頻度 | 
|---|---|---|
| Funding Variance | EWMA( funding_rate^2 )→ VaR風に 95 %tile | 15 min | 
| Borrow/Stake Rate | CEX API or on-chain lending pool | 15 min | 
| Inventory Borrow Fee | borrow_fee_rate * t_hold | 持ち越しごとに再計算 | 
| Tx Fee / Slippage | fee_table(exch)+depth_impact(qty) | 約定直後 | 
ポジション続投判定
exp_edge_next = funding_edge_next - borrow_fee_nextexp_edge_next > keep_thresholdなら継続、そうでなければロールオフ。
6. PoC 14 日ロードマップ
| Day | Deliverable | 
|---|---|
| 1–2 | Price feeds・Funding Oracle scaffolding(Bybit / Binance) | 
| 3–4 | Edge Calculator & backtest on last 30 d data → Param tune | 
| 5–6 | Route Executor(同一 CEX 優先、次点 CEX↔DEX) | 
| 7 | Inventory Service 共通化(MM と共有) | 
| 8–9 | Shadow Mode:size 0 オープン → Funding 受取シミュレーション | 
| 10–11 | 本番 min-notional (総資本の 1 %) → KPI計測 | 
| 12–14 | レポート自動化(edge分布, funding PnL, basis PnL, DD)+Slack alert | 
7. 監視 & KPI
| 指標 | 目標ライン | Slack Alert | 
|---|---|---|
| Δ hedge エラー | |Δ| ≤ 0.5 % notional | >1 % | 
| Funding PnL / 手数料 | ≥ 1.2× | <1.0× | 
| Basis PnL | ≥ 0 | < -0.2 % | 
| 最大 DD | < -3 % | > -3 % | 
| ROI (月次) | ≥ 4 % | < 1 % | 
実装Tips
- 同一 CEX 優先:Bybit や Binance は 現物 & Perp を同アカウントで持てる → Withdraw コスト不要。
- 跨 CEX の場合は flash-transfer 的に hot-wallet 在庫 を厚めに維持し、出金遅延リスクを緩和。
- Borrow Limit Guard:マージン枠を使う場合は API で borrowableを取得 → 枠が 10 % 未満なら新規建を停止。
- Funding Spike Detection:rolling_zscore(funding_rate, 24h)> 2 で 優先度 HIGH。
- 税務考慮:Perp の未実現 PnL と Funding Fee 課税タイミングが異なる場合、会計レイヤで仕分けを分離。
TL;DR
- Edge = Funding + Basis – Carry – 手数料 をリアルタイム計算し、正の期待値が出た瞬間だけ Perp SHORT + Spot LONG(逆も可)を建てる。
- 既存 MM の delta ヘッジロジック と 在庫管理 を “8 h ペース” に緩めるだけで PoC は動く。
- 維持コストモデル(Funding 変動・Borrow Fee)を常時更新し、続投 or 差し替え を数字で判断。
 まずは Shadow → 小ロット実運用 で Funding PnL が手数料を安定的に上回るかを検証する。
清算スナイピング ― 実装ガイド
狙い:清算発火の数十〜数百ミリ秒前に「危険ポジション検知 → Tx 発火」し、
Liquidator Incentive(清算ボーナス)+ Price Impact α を獲得する。
対象は Hyperliquid‐style on-chain perpetual DEX を想定(EVM L2 同系でも同手法)。
1. システム全体アーキテクチャ
graph LR
    B(BBO and L2 Feed) --> D(Detector)
    O(OI Change Feed)  --> D
    P(Price Oracle)    --> D
    D -->|"liquidation signal"| Q(Quote Builder)
    Q -->|"tx params"| X(Tx Dispatch)
    X -->|"bundle"| H(Builder Relay)
    H --> N(Node RPC)
    N --> G(Gas Monitor)
    G --> D
    I(Inventory and Profit) --> D
    I --> M(Metrics)
    M --> X
2. データ・シグナルレイヤ
| ソース | 更新間隔 | 使う特徴量 | 
|---|---|---|
| BBO / L2 Orderbook | 100 ms WS | best_bid,best_ask,depth_Δ,spread_Δ | 
| Open Interest / Position Feed | 500 ms REST or gRPC | OI_Δ,pos_size,liq_px | 
| On-chain Price Oracle | 2 s | mark_px,index_px | 
| Gas Monitor | 500 ms | baseFee,pendingBlockTxs | 
3. Liquidation Detectorアルゴリズム
def detect_liq(r):
    # r = realtime snapshot dict
    # 1) price crosses liq price within Δ%
    cross = r['best_ask'] <= r['liq_px'] * (1 + cfg.cross_tol)
    # 2) OI shrink or spike in bankrupt events
    oi_drop = r['OI_now'] < r['OI_prev'] * (1 - cfg.oi_tol)
    # 3) L2 depth vacuum (thin layer)
    depth_vac = r['depth_bid_lvl1'] < cfg.depth_thresh
    # α score
    score = cfg.w1*cross + cfg.w2*oi_drop + cfg.w3*depth_vac
    return score > cfg.score_cut, score
- cross_tol: 0.2-0.4 %
- 重み w1>w2>w3(価格優先)
- 検知〜Tx 構築で ≤ 50 ms を目標。
4. Tx Dispatch & Builder Private Tx
- Quote Builder
- liquidate(account, max_pos)か- take_ask(size)の calldataを生成。
- gas_limit= シミュレーション (- eth_estimateGas) + 15 %.
 
- Builder Relay(Flashbots / Titan)
- bundle = [tx], target block =- pending_block_number + 1.
- send_bundle(bundle)→ returns bundle hash +- bundle_price。
- フォールバック:builder不応答 100 ms → eth_sendRawTransaction.
 
- Gas オプティマイザ
- baseFeespike >- cfg.max_base⇒ Tx skip。
- priorityFee=- cfg.tip_coef * sqrt(pending_txs)(動的)。
 
- μs レイテンシ短縮 Tips
- IPC でローカル geth --http=false --ipcdisable=falseに直送。
- TLS offload:builder エンドポイントへ持続コネクション。
- CPU pinning:Detector → Quote → Dispatch を同 NUMA node 上に。
 
- IPC でローカル 
5. Inventory & Profit Accounting
| 項目 | 処理 | 
|---|---|
| Liquidation reward | on-chain log Liquidate(account, size, reward)を decode | 
| PnL α | fill_px - mark_px_pre×size | 
| Gas cost | gas_used × effective_gas_price | 
| Net PnL | reward + alpha - gas(Slack に即送信) | 
| Cashflow guard | 連続 5 回 Net < 0 → Detector pause 10 min | 
6. ガストークン在庫管理
- Wallet Manager
- eth_balance<- 3 × avg_bundle_cost⇒- swap(USDC→ETH)via 0x API。
 
- Prefund Queue
- Pre-sign prefund_tx(nonce+1) を mempool監視で自動送信、ガス不足リスクを 0 に。
 
- Pre-sign 
- Alert
- ETH 残高 < min_balance⇒ Slack mention。
 
- ETH 残高 < 
7. KPI と監視
| KPI | 目標 | Alert | 
|---|---|---|
| Hit rate | ≥ 45 % | < 30 % | 
| Avg Net α / trade | ≥ gas×1.5 | < gas | 
| Bundle inclusion delay | 1 block | > 2 blocks | 
| Failed bundle rate | < 10 % | > 25 % | 
| Max DD (rolling 7d) | < -5 % | ≥ -5 % | 
Slack 通知フォーマット例
[Liq-Bot] ✅ profit 0.014 ETH | α 0.009 | reward 0.006 | gas 0.001 [Liq-Bot] ⚠️ hit_rate 28 %(24h) < target
8. PoC 2 週間ロードマップ
| Day | Milestone | 
|---|---|
| 1–2 | L2/BBO/OI WebSocket collectors & local node setup | 
| 3–4 | Detector prototype + replay test (past 7 d data) | 
| 5–6 | Quote Builder + Tx simulation ( eth_call) | 
| 7 | Builder relay integration, bundle success ≥ 80 % | 
| 8–9 | Shadow mode: 0 size liquidate call → inclusion latency計測 | 
| 10–11 | Mainnet pilot (0.1 % capital), KPI logging | 
| 12–14 | Gas optimizer fine-tune, DD guard, auto-prefund, full Slack stack | 
9. リスクとガードレール
| リスク | 対策 | 
|---|---|
| Bundle Frontrun | sim_tx_hashチェック、他Tx一致ならガス上乗せ or skip | 
| Gas spike | BaseFee watchdog, profit simulation before send | 
| Account liquidation disabled | Call revert → auto-blacklist address 24 h | 
| Regulatory / Terms | 取引所 ToS で liquidator role OK か確認 → API key 専用口座 | 
TL;DR
- Detector が price cross + OI drop + depth vacuum を数十 ms でスコアリング。
- Quote Builder → Builder Relay へ private bundle を投げ、競合より前に清算Txを確定。
- ガス残高オート補充と KPI 監視で 勝率 > 40 %・Net α > gas×1.5 を維持できれば成功。
 まずは Shadow → 小ロット運用で bundle inclusion latency と Net PnL を数字で確認し、
 インセンティブが期待通りに乗るか検証する
