マーケットメイキング戦略 — Smart Moneyインサイトを用いた流動性提供
マーケットメイカーは、流動性の両側を提供することでビッドアスクスプレッドから利益を得ます。暗号資産では、正しく行えば低リスクです:別の取引所でヘッジすることで最小限の在庫を保持し、スプレッド差額を手に入れることができます。Smart Money APIは、クジラの活動や資金調達率の異常に基づいて、マーケットメイカーがスプレッドを動的に調整するのを支援します。
重要な洞察: プロのマーケットメイカーは、大きな注文が予想される場合(クジラのポジション変化に基づいて)スプレッドを広げます。勢いが停滞しているときはスプレッドを狭めます。Smart Moneyシグナルを使えば、これらの変化を先取りできます。
マーケットメイキングの基本
スプレッド
ビッド価格で買い、アスク価格で売ります。利益はその差額です:
往復取引ごとの利益 = アスク - ビッド
BTC/USDTが$42,000の場合:
- 狭いスプレッド(0.5bp):ビッド $41,978.95、アスク $42,000 → 1 BTC取引ごとに$21の利益
- 広いスプレッド(2bp):ビッド $41,916、アスク $42,000 → 1 BTC取引ごとに$84の利益
在庫リスク
1 BTCを$42,000で買ったが、売る前に価格が$41,000に暴落した場合、$1,000の損失を被ります。洗練されたマーケットメイカーはこれをヘッジします:
Python — 在庫ヘッジ
# Bybitでビッド価格で買い、Binanceでアスク価格で即座にショートする
buy_bybit(symbol="BTCUSDT", size=1, side="buy", limit_price=41978.95)
sell_binance(symbol="BTCUSDT", size=1, side="sell", limit_price=42050)
# 利益 = 42050 - 41978.95 = 71.05 USDT、価格変動に関係なく
# リスクは実行のみ:売り注文が約定しない場合はどうする?
動的スプレッド戦略
1. 固定スプレッドマーケットメイキング
最もシンプル:常に両側で1bpを提示する。
Python — 固定スプレッドMM
def fixed_spread_mm(mid_price, spread_bps=1.0):
spread = mid_price * (spread_bps / 10000)
bid = mid_price - (spread / 2)
ask = mid_price + (spread / 2)
return {"bid": bid, "ask": ask}
2. ボラティリティ調整スプレッド
高ボラティリティ時にスプレッドを広げ、穏やかな市場では狭める:
Python — ボラティリティ調整MM
def volatility_adjusted_mm(mid_price, returns_1h, confidence_score):
# 1時間のボラティリティを計算(リターンの標準偏差)
vol = np.std(returns_1h)
# 基本スプレッド:1bp
base_spread_bps = 1.0
# ボラティリティを乗算(スケール0-10倍)
vol_multiplier = 1 + (vol * 50) # 高ボラティリティ = 広いスプレッド
# 信頼度を乗算(Smart MoneyがHIGHの場合、少し狭める)
if confidence_score > 0.65:
confidence_mult = 0.8 # 20%狭める
else:
confidence_mult = 1.0
final_spread_bps = base_spread_bps * vol_multiplier * confidence_mult
spread = mid_price * (final_spread_bps / 10000)
return {
"bid": mid_price - (spread / 2),
"ask": mid_price + (spread / 2),
"spread_bps": final_spread_bps
}
3. Smart Money反応型スプレッド
クジラの活動シグナルに基づいてスプレッドを調整:
Python — クジラ反応型MM
def smart_money_adjusted_spreads(symbol, mid_price):
# Smart Money確認を取得
sm = get_smart_money_signal(symbol)
# HIGH信頼度 + 強気 = 市場がすぐに上昇する
# アスクを広げる(より良い価格で売りたい)
# ビッドを狭める(買い側でより速く約定)
if sm["confidence"] == ] == "HIGH" and sm["direction"] == ] == "long"::
bid_spread = 0.8 # ビッドで0.8bp(競争的)
ask_spread = 1.4 # アスクで1.4bp(約定を促す)
elif sm["confidence"] == ] == "VETO"::
bid_spread = 2.0 # 両側で広い(不確実性)
ask_spread = 2.0
else:
bid_spread = 1.0 # 通常の対称
ask_spread = 1.0
return {
"bid": mid_price - (mid_price * bid_spread / 10000),
"ask": mid_price + (mid_price * ask_spread / 10000)
}
在庫管理
目標在庫
中立の在庫目標を設定します(例:0 BTC)。在庫が多すぎる場合はビッドを上げ(売りを促す)、ショートしすぎている場合はアスクを上げ(買いを促す):
Python — インベントリ・スキュー
def get_inventory_skew(current_inventory, target_inventory=0):
skew = current_inventory - target_inventory
# 過剰保有時(+1 BTC)、売り注文を広げるためビッドを調整
if skew > 0:
bid_adjustment = min(skew * 0.5, 2.0) # 最大2bp追加
ask_adjustment = -min(skew * 0.5, 1.0) # 最大1bp締め
# ショート時、買い注文を広げるためアスクを調整
elif skew < 0:
ask_adjustment = min(abs(skew) * 0.5, 2.0)
bid_adjustment = -min(abs(skew) * 0.5, 1.0)
else:
bid_adjustment = 0
ask_adjustment = 0
return bid_adjustment, ask_adjustment
プロダクション・マーケットメイカー
Python — 完全MMシステム
class CryptoMarketMaker:
def __init__(self, symbol, inventory_target=0):
self.symbol = symbol
self.inventory = 0
self.inventory_target = inventory_target
def update_quotes(self, mid_price):
# 1. Smart Moneyシグナル取得
sm = get_smart_money_signal(self.symbol)
# 2. ボラティリティ調整
vol = calculate_volatility_1h(self.symbol)
# 3. インベントリ調整
inv_bid, inv_ask = get_inventory_skew(self.inventory)
# 4. 全要素を統合
base_bid, base_ask = fixed_spread_mm(mid_price, 1.0)
vol_bid, vol_ask = volatility_adjusted_mm(mid_price, [vol], sm["composite"])
sm_bid, sm_ask = smart_money_adjusted_spreads(self.symbol, mid_price)
# 調整済み価格を平均化
final_bid = np.mean([base_bid, vol_bid, sm_bid]) + inv_bid
final_ask = np.mean([base_ask, vol_ask, sm_ask]) + inv_ask
# 注文を執行
submit_order(side="bid", price=final_bid, size=1)
submit_order(side="ask", price=final_ask, size=1)
Smart Moneyシグナルでマーケットメイキングを最適化
クジラ活動とSmart Moneyの信頼度に基づきスプレッドを調整するマーケットメイカーは、約15-25%の約定価格改善とインベントリリスク低減を実現
アルゴアクセスを取得 →