Estrategia de trading dinámico adaptativo basada en retornos logarítmicos normalizados

SZI SMA LOG STD
Fecha de creación: 2024-12-27 14:39:32 Última modificación: 2024-12-27 14:39:32
Copiar: 2 Número de Visitas: 376
1
Seguir
1617
Seguidores

Estrategia de trading dinámico adaptativo basada en retornos logarítmicos normalizados

Descripción general

La estrategia es un sistema de negociación auto-adaptativo basado en el índice Shiryaev-Zhou (SZI). Identifica los estados de sobrecompra y sobreventa en el mercado mediante el cálculo de un puntaje estandarizado de la tasa de rendimiento aritmético, para capturar la oportunidad de un retorno promedio de los precios. La estrategia combina un objetivo de pérdida y ganancia dinámicos para un control preciso del riesgo.

Principio de estrategia

El núcleo de la estrategia es la construcción de indicadores estandarizados a través de las características estadísticas de rotación de la tasa de rendimiento de la armonía. Los pasos concretos son los siguientes:

  1. Cálculo de la rentabilidad de los pares para lograr el tratamiento de normalización de la rentabilidad
  2. Calculación de las medias y diferencias estándar con una ventana de 50 periodos
  3. Construir el indicador SZI: (Retorno de la rentabilidad aritmética - media rodante) / Diferencia estándar rodante
  4. Cuando el SZI está por debajo de -2,0 produce una señal múltiple, y por encima de -2,0 produce una señal vacía.
  5. Establecer un nivel de stop loss del 2% y un stop loss del 4% basado en el precio de entrada

Ventajas estratégicas

  1. Fundamento teórico sólido: basado en la hipótesis de la distribución logarítmica normal, con un buen apoyo estadístico
  2. Adaptabilidad: adaptación a los cambios en las características de la volatilidad del mercado mediante el cálculo de la ventana rodante
  3. Control de riesgo perfecto: la estrategia de stop loss porcentual permite un control preciso del riesgo de cada operación
  4. Visualización amigable: señala claramente las señales de negociación y los niveles de control de riesgo en el gráfico

Riesgo estratégico

  1. Sensibilidad de los parámetros: la elección de la longitud de la ventana de desplazamiento y el valor de umbral puede afectar significativamente el rendimiento de la estrategia
  2. Dependencia del entorno del mercado: señales falsas frecuentes que pueden producirse en mercados de tendencia
  3. Efectos de los puntos de deslizamiento: los precios reales de transacción pueden desviarse significativamente de los niveles ideales durante períodos de gran volatilidad
  4. Retardo en el cálculo: el cálculo de las estadísticas en tiempo real puede generar un cierto retraso en la señal

Dirección de optimización de la estrategia

  1. Término dinámico: se puede considerar el ajuste dinámico del nivel de señal en función de la volatilidad del mercado
  2. Múltiples períodos de tiempo: Mecanismos de confirmación de señales que introducen múltiples períodos de tiempo
  3. Filtrado de fluctuaciones: suspender la negociación o ajustar la posición durante la volatilidad extrema
  4. Confirmación de señales: incremento de tráfico, potencia y otros indicadores auxiliares para confirmar la señal
  5. Gestión de posiciones: implementación de gestión de posiciones dinámicas basadas en la volatilidad

Resumir

Se trata de una estrategia de comercio cuantitativa basada en una sólida estadística, que captura oportunidades de fluctuación de precios mediante la estandarización de los rendimientos lógicos. Las principales ventajas de la estrategia residen en su adaptabilidad y un buen control del riesgo, pero aún hay espacio para la optimización en la selección de parámetros y la adaptabilidad al entorno del mercado.

Código Fuente de la Estrategia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Jalambi Paul model", overlay=true)

// Define the length for the rolling window
window = input.int(50, title="Window Length", minval=1)
threshold = 2.0 // Fixed threshold value
risk_percentage = input.float(1.0, title="Risk Percentage per Trade", step=0.1) / 100

// Calculate the logarithmic returns
log_return = math.log(close / close[1])

// Calculate the rolling mean and standard deviation
rolling_mean = ta.sma(log_return, window)
rolling_std = ta.stdev(log_return, window)

// Calculate the Shiryaev-Zhou Index (SZI)
SZI = (log_return - rolling_mean) / rolling_std

// Generate signals based on the fixed threshold
long_signal = SZI < -threshold
short_signal = SZI > threshold

// Plot the signals on the main chart (overlay on price)
plotshape(series=long_signal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY", offset=-1)
plotshape(series=short_signal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL", offset=-1)

// Strategy logic: Buy when SZI crosses below the negative threshold, Sell when it crosses above the positive threshold
if (long_signal)
    strategy.entry("Buy", strategy.long, comment="Long Entry")
    
if (short_signal)
    strategy.entry("Sell", strategy.short, comment="Short Entry")

// Calculate the stop loss and take profit levels based on the percentage of risk
stop_loss_pct = input.float(2.0, title="Stop Loss (%)") / 100
take_profit_pct = input.float(4.0, title="Take Profit (%)") / 100

// Set the stop loss and take profit levels based on the entry price
strategy.exit("Take Profit / Stop Loss", "Buy", stop=close * (1 - stop_loss_pct), limit=close * (1 + take_profit_pct))
strategy.exit("Take Profit / Stop Loss", "Sell", stop=close * (1 + stop_loss_pct), limit=close * (1 - take_profit_pct))

// Plot the stop loss and take profit levels for visualization (optional)
plot(stop_loss_pct != 0 ? close * (1 - stop_loss_pct) : na, color=color.red, linewidth=1, title="Stop Loss Level")
plot(take_profit_pct != 0 ? close * (1 + take_profit_pct) : na, color=color.green, linewidth=1, title="Take Profit Level")