Esta estrategia emplea un enfoque de análisis cuantitativo híbrido, combinando el modelo de distribución binomial y el análisis de regresión, para identificar diferentes regímenes de mercado. La estrategia primero calcula los indicadores de promedio móvil simple (SMA) y bandas de Bollinger (BB), luego calcula la puntuación Z basada en la media y desviación estándar de los rendimientos históricos. Cuando la puntuación Z está por debajo del umbral inferior y el precio está por debajo de la banda inferior, la estrategia entra en una posición larga; cuando la puntuación Z está por encima del umbral superior y el precio está por encima de la banda superior, la estrategia cierra la posición.
El principio básico de esta estrategia es usar el puntaje Z para medir la posición de los rendimientos actuales en relación con la distribución de los rendimientos históricos. La fórmula para calcular el puntaje Z es: (Retorno actual - Retorno histórico medio) / Desviación estándar de retorno histórico. Un puntaje Z más alto indica que el rendimiento actual es más extremo y la probabilidad de sobrecompra es mayor; un puntaje Z más bajo indica que el rendimiento actual es más extremo y la probabilidad de sobreventa es mayor. Al mismo tiempo, la estrategia también incorpora el indicador de bandas de Bollinger, utilizando las rupturas de precios por encima o por debajo de ambas bandas como confirmación secundaria. La estrategia genera señales comerciales solo cuando se cumplen simultáneamente las condiciones falsas del puntaje Z y las bandas de Bollinger. Esta combinación puede reducir efectivamente la ocurrencia de señales.
La Estrategia Cuantitativa Z-Score Binomial híbrida es una estrategia de trading cuantitativa basada en principios estadísticos, que identifica oportunidades potenciales de sobrecompra y sobreventa mediante la comparación de los rendimientos actuales con la distribución de los rendimientos históricos. Además, la estrategia emplea el indicador de Bollinger Bands para confirmación secundaria, mejorando la confiabilidad de la señal. Las reglas de la estrategia son claras y fáciles de implementar y optimizar, pero también enfrenta desafíos como sensibilidad de parámetros, riesgo de tendencia, riesgo de sobreajuste, etc. En el futuro, la estrategia puede optimizarse en términos de parámetros dinámicos, filtrado de tendencias, optimización de cartera, mecanismos de stop-loss y take-profit, etc., para mejorar su adaptabilidad y robustez.
/*backtest start: 2023-05-22 00:00:00 end: 2024-05-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Estratégia Híbrida Quantitativa", overlay=true) // Definição de parâmetros sma_length = input.int(20, title="Período da SMA") threshold_high = input.float(1.5, title="Threshold Alto") threshold_low = input.float(-1.5, title="Threshold Baixo") lookback_period = input.int(252, title="Período de Retorno Histórico (dias)") // Funções auxiliares f_sma(source, length) => ta.sma(source, length) f_bollinger_band(source, length, mult) => basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) [basis + dev, basis - dev] // Cálculo dos indicadores sma = f_sma(close, sma_length) [upper_band, lower_band] = f_bollinger_band(close, sma_length, 2) // Regime de Mercado: Binomial retornos = ta.change(close, 1) media_retornos = ta.sma(retornos, lookback_period) desvio_padrao_retornos = ta.stdev(retornos, lookback_period) // Indicador de Regime: Z-Score z_score = (retornos - media_retornos) / desvio_padrao_retornos // Sinal de Compra e Venda sinal_compra = z_score < threshold_low and close < lower_band sinal_venda = z_score > threshold_high and close > upper_band // Execução de Ordem if (sinal_compra) strategy.entry("Long", strategy.long) if (sinal_venda) strategy.close("Long") // Plotagem dos Indicadores plot(sma, title="SMA", color=color.blue) plot(upper_band, title="Upper Bollinger Band", color=color.red) plot(lower_band, title="Lower Bollinger Band", color=color.green) hline(threshold_high, "Threshold Alto", color=color.red, linestyle=hline.style_dashed) hline(threshold_low, "Threshold Baixo", color=color.green, linestyle=hline.style_dashed) plot(z_score, title="Z-Score", color=color.purple)