- Cuadrado
- La estrategia Avellaneda-Stoikov de Khaled Tamim
La estrategia Avellaneda-Stoikov de Khaled Tamim
El autor:
¿ Qué pasa?, Fecha: 2024-04-30 15:54:23
Las etiquetas:
Resumen general
La estrategia de Avellaneda-Stoikov de Khaled Tamim es una estrategia comercial cuantitativa basada en el modelo de Avellaneda-Stoikov. La estrategia determina las señales de compra y venta calculando el precio medio, el precio de oferta y el precio de compra considerando los costos de transacción. La idea principal de la estrategia es comprar cuando el precio está por debajo del precio de compra por un cierto umbral y vender cuando el precio está por encima del precio de compra por un cierto umbral, capturando así el beneficio del diferencial.
Principio de la estrategia
El núcleo de esta estrategia es el modelo Avellaneda-Stoikov, que calcula los precios de oferta y demanda a través de los siguientes pasos:
- Calcule el precio medio, que es el promedio del precio actual y el precio anterior.
- Calcule el precio de oferta restando un término de la raíz cuadrada que contiene Gamma, Sigma, T y k del precio medio, y luego restando el costo de la transacción.
- Calcule el precio de compra agregando un término de la raíz cuadrada que contiene Gamma, Sigma, T y k al precio medio, y luego añadiendo el costo de la transacción.
- Generar una señal de compra cuando el precio está por debajo del precio de oferta menos el umbral M; generar una señal de venta cuando el precio está por encima del precio de compra más el umbral M.
Ventajas estratégicas
- Esta estrategia se basa en el modelo Avellaneda-Stoikov, que es una estrategia clásica de creación de mercado con una base teórica sólida.
- La estrategia tiene en cuenta el impacto de los costes de transacción, lo que la hace más realista para situaciones comerciales reales.
- Al establecer el umbral M, la sensibilidad de la estrategia puede ajustarse de forma flexible para adaptarse a los diferentes entornos de mercado.
- La lógica de la estrategia es clara y fácil de entender e implementar.
Riesgos estratégicos
- El rendimiento de la estrategia depende de la elección de parámetros como Gamma, Sigma, T, k y M. La configuración incorrecta de parámetros puede conducir a un mal rendimiento de la estrategia.
- La estrategia no tiene en cuenta el impacto de la liquidez del mercado. En casos de liquidez insuficiente, puede no ser posible operar al precio esperado.
- Esta estrategia es una estrategia de negociación de alta frecuencia que requiere una baja latencia de negociación y una alta eficiencia de ejecución, lo que dificulta su implementación.
Direcciones para la optimización de la estrategia
- Introducir algoritmos de aprendizaje automático para ajustar dinámicamente los parámetros de la estrategia para adaptarse a las diferentes condiciones del mercado.
- Combinar otros indicadores técnicos o información sobre la microestructura del mercado para mejorar la precisión de la señal.
- Optimizar el algoritmo de ejecución de operaciones para reducir los costes de transacción y mejorar los rendimientos de la estrategia.
- Considere la posibilidad de introducir un módulo de gestión de riesgos para controlar las reducciones de la estrategia y la exposición al riesgo.
Resumen de las actividades
La estrategia Avellaneda-Stoikov de Khaled Tamim es una estrategia comercial cuantitativa basada en el modelo clásico de creación de mercado. Genera señales comerciales mediante el cálculo de precios de oferta y demanda mientras se consideran los costos de transacción. Las ventajas de la estrategia se encuentran en su sólida base teórica, lógica clara y consideración de los costos de transacción. Sin embargo, el rendimiento de la estrategia depende de la selección de parámetros y requiere una alta eficiencia de ejecución.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Khaled Tamim's Avellaneda-Stoikov Strategy", overlay=true)
// Avellaneda-Stoikov model logic
avellanedaStoikov(src, gamma, sigma, T, k, M) =>
midPrice = (src + src[1]) / 2
sqrtTerm = gamma * sigma * sigma * T
// Add 0.1% fee to bid and ask quotes
fee = 0 // 0.1% fee
bidQuote = midPrice - k * sqrtTerm - (midPrice * fee)
askQuote = midPrice + k * sqrtTerm + (midPrice * fee)
longCondition = src < bidQuote - M
shortCondition = src > askQuote + M
[bidQuote, askQuote]
// Define strategy parameters
gamma = input.float(2, title="Gamma")
sigma = input.float(8, title="Sigma")
T = input.float(0.0833, title="T")
k = input.float(5, title="k")
M = input.float(0.5, title="M")
// Calculate signals
[bidQuote, askQuote] = avellanedaStoikov(close, gamma, sigma, T, k, M)
longCondition = close < bidQuote - M
shortCondition = close > askQuote + M
// Plot signals
plotshape(series=longCondition ? low : na, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition ? high : na, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Plot bid and ask prices
plot(bidQuote, title="Bid Price", color=color.blue, linewidth=1)
plot(askQuote, title="Ask Price", color=color.red, linewidth=1)
// Plot inventory level as bars in a separate graph
plot(strategy.netprofit, title="Inventory", color=color.new(color.purple, 80), style=plot.style_columns)
// Strategy logic
if (longCondition)
strategy.entry("Buy", strategy.long)
if (shortCondition)
strategy.entry("Sell", strategy.short)
Más.