Estrategias de Market Making — Proporcionando liquidez con Smart Money Insights

Los creadores de mercado obtienen ganancias de los diferenciales entre el precio de compra y venta al proporcionar liquidez en ambos lados. En cripto, esto es de bajo riesgo si se hace correctamente: puedes mantener un inventario mínimo al cubrirte en otro exchange, obteniendo el diferencial del spread. Smart Money API ayuda a los creadores de mercado a ajustar los spreads dinámicamente según la actividad de ballenas y anomalías en las tasas de financiamiento.

Perspectiva clave: Los creadores de mercado profesionales amplían los spreads cuando se esperan grandes órdenes (basado en cambios en las posiciones de ballenas). Reducen los spreads cuando el impulso se estanca. Las señales de Smart Money te permiten anticiparte a estos cambios.

Fundamentos del Market Making

El Spread

Compras al precio de compra, vendes al precio de venta. Tu ganancia es la diferencia:

Ganancia por transacción = Precio de venta - Precio de compra

En BTC/USDT a $42,000:

Riesgo de inventario

Si compras 1 BTC a $42,000 pero el precio cae a $41,000 antes de vender, estás en pérdida de $1,000. Los creadores de mercado sofisticados se cubren:

Python — Cobertura de inventario
# Compra en Bybit al precio de compra, inmediatamente vende en corto en Binance al precio de venta
buy_bybit(symbol="BTCUSDT", size=1, side="buy", limit_price=41978.95)
sell_binance(symbol="BTCUSDT", size=1, side="sell", limit_price=42050)
# Ganancia = 42050 - 41978.95 = 71.05 USDT, independientemente del movimiento del precio
# El riesgo es solo la ejecución: ¿qué pasa si tu orden de venta no se ejecuta?

Estrategias de Spread Dinámico

1. Market Making con Spread Fijo

El más simple: Siempre cotiza 1bp en ambos lados.

Python — Market Making con spread fijo
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. Spread Ajustado por Volatilidad

Amplía los spreads durante alta volatilidad, ajústalos durante mercados tranquilos:

Python — Market Making ajustado por volatilidad
def volatility_adjusted_mm(mid_price, returns_1h, confidence_score):
# Calcula la volatilidad de 1 hora (desviación estándar de los retornos)
vol = np.std(returns_1h)
# Spread base: 1bp
base_spread_bps = 1.0
# Multiplica por la volatilidad (escala 0-10x)
vol_multiplier = 1 + (vol * 50) # alta vol = spread más amplio
# Multiplica por la confianza (si Smart Money es ALTO, ajusta un poco)
if confidence_score > 0.65:
confidence_mult = 0.8 # ajusta un 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. Spreads Reactivos de Smart Money

Ajusta los spreads según las señales de actividad de ballenas:

Python — Market Making reactivo a ballenas
def smart_money_adjusted_spreads(symbol, mid_price):
# Obtén la confirmación de Smart Money
sm = get_smart_money_signal(symbol)
# ALTA confianza + alcista = mercado subiendo pronto
# Amplía el precio de venta (espera vender a mejor precio)
# Ajusta el precio de compra (ejecución más rápida en el lado de compra)
if sm["confidence"] == ] == "HIGH" and sm["direction"] == ] == "long"::
bid_spread = 0.8 # 0.8bp en compra (competitivo)
ask_spread = 1.4 # 1.4bp en venta (busca ejecución)
elif sm["confidence"] == ] == "VETO"::
bid_spread = 2.0 # amplio en ambos lados (incertidumbre)
ask_spread = 2.0
else:
bid_spread = 1.0 # normal simétrico
ask_spread = 1.0
return {
"bid": mid_price - (mid_price * bid_spread / 10000),
"ask": mid_price + (mid_price * ask_spread / 10000)
}

Gestión de Inventario

Inventario Objetivo

Establece un objetivo de inventario neutral (por ejemplo, 0 BTC). Si acumulas demasiado, aumenta el precio de compra (presiona para vender). Si estás demasiado corto, aumenta el precio de venta (presiona para comprar):

Python — Sesgo de inventario
def get_inventory_skew(current_inventory, target_inventory=0):
skew = current_inventory - target_inventory
# Si tienes demasiado (+1 BTC), amplía la oferta para vender
if skew > 0:
bid_adjustment = min(skew * 0.5, 2.0) # añade hasta 2bp
ask_adjustment = -min(skew * 0.5, 1.0) # ajusta hasta 1bp
# Si estás corto, amplía la demanda para comprar
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

Market Maker de Producción

Python — Sistema completo de 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. Obtén la señal de Smart Money
sm = get_smart_money_signal(self.symbol)
# 2. Ajuste de volatilidad
vol = calculate_volatility_1h(self.symbol)
# 3. Ajuste de inventario
inv_bid, inv_ask = get_inventory_skew(self.inventory)
# 4. Combina todos los factores
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)
# Promedia los precios ajustados
final_bid = np.mean([base_bid, vol_bid, sm_bid]) + inv_bid
final_ask = np.mean([base_ask, vol_ask, sm_ask]) + inv_ask
# Envía órdenes
submit_order(side="bid", price=final_bid, size=1)
submit_order(side="ask", price=final_ask, size=1)

Optimiza tu market making con señales de Smart Money

Los market makers que ajustan los spreads basándose en la actividad de ballenas y la confianza de Smart Money ven un 15-25% mejor en los precios de ejecución y reducen el riesgo de inventario.

Obtén acceso al algoritmo →