Estrategia de seguimiento de la reversión de la media de dos factores

El autor:¿ Qué pasa?, Fecha: 2023-12-19 11:09:20
Las etiquetas:

img

Resumen general

Esta estrategia pertenece a la estrategia de seguimiento de reversión de la media de doble factor en el campo de la negociación cuantitativa. Integra la estrategia de reversión 123 y la estrategia del canal Keltner con dos factores, con el objetivo de descubrir señales de reversión y realizar la idea comercial de comprar bajo y vender alto.

Principio

La estrategia consiste en dos subestrategias. La primera subestrategia es la estrategia de reversión 123. Juzga si el mercado está en un punto de reversión calculando el cambio en los precios de cierre durante los dos días de negociación anteriores y combinando el indicador estocástico. Específicamente, cuando el precio de cierre aumenta durante dos días consecutivos y el indicador estocástico está por debajo de 50, se emite una señal de compra; Cuando el precio de cierre cae durante dos días consecutivos y el indicador estocástico está por encima de 50, se emite una señal de venta.

La segunda subestrategia es la estrategia de canal de Keltner. Esta estrategia calcula el promedio móvil típico del precio y el rango de volatilidad durante los últimos n días de negociación. Cuando el precio se acerca a los rieles superiores o inferiores, se emiten señales comerciales inversas. Cuando el precio está por debajo del rieles inferior, vaya corto; cuando está por encima del rieles superior, vaya largo.

Por último, al juzgar las direcciones de las señales de las dos subestrategias, la estrategia calcula la señal de posición final.

Análisis de ventajas

La mayor ventaja de esta estrategia de seguimiento de reversión media de doble factor es que puede aprovechar las oportunidades a tiempo cuando el mercado se invierte y realizar la idea comercial de comprar bajo y vender alto.

Específicamente, la configuración de parámetros del indicador estocástico en la estrategia de reversión 123 es relativamente conservadora, lo que puede filtrar eficazmente las falsas reversiones en los mercados oscilantes.

Análisis de riesgos

El principal riesgo de esta estrategia es que el momento de las señales de reversión es crucial. Si se producen continuas falsas reversiones o el momento de las señales de reversión se elige incorrectamente, llevará a no mantener una tendencia completa, lo que afectará al rendimiento final.

Además, las estrategias de dos factores tienen mayor dificultad en la selección y optimización de parámetros que las estrategias de un solo factor.

Por último, la negociación inversa en sí tiene una relación riesgo-recompensación desproporcionada. Las condiciones anormales del mercado pueden llevar fácilmente a la liquidación. Esto debe evitarse mediante un estricto stop loss.

Direcciones de optimización

De acuerdo con el análisis de riesgos anterior, la estrategia puede optimizarse en los siguientes aspectos:

  1. Prueba diferentes ajustes de los parámetros del indicador de inversión para encontrar combinaciones con mayor tolerancia a fallas y menos señales falsas
  2. Prueba valores de parámetros de diferentes longitudes de ciclo para encontrar valores que capturan las reversiones con mayor precisión
  3. Añadir un módulo de stop loss para controlar estrictamente la pérdida máxima por operación
  4. Prueba los efectos de diferentes períodos de retención para encontrar puntos de salida que coincidan mejor con la lógica de la estrategia
  5. Aumentar el número de posiciones abiertas o añadir módulos de control de posiciones para hacer más razonable la relación riesgo-beneficio

Resumen de las actividades

Como una estrategia típica de seguimiento de la reversión de la media de dos factores, al integrar las subestrategias de reversión 123 y el canal de Keltner, esta estrategia tiene como objetivo aprovechar con mayor precisión el momento de comprar bajo y vender alto en los puntos de reversión del mercado. Con la optimización adecuada de parámetros y el control de riesgos, dicha estrategia puede obtener un alfa relativamente considerable. Pero los operadores aún necesitan prestar atención a la particularidad del comercio inverso y prevenir la expansión de las pérdidas causadas por condiciones anormales del mercado.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/12/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// The Keltner Channel, a classic indicator 
// of technical analysis developed by Chester Keltner in 1960. 
// The indicator is a bit like Bollinger Bands and Envelopes.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

KeltnerChn(nPeriod) =>
    pos = 0.0
    xPrice = sma(hlc3, nPeriod)
    xMove = sma(high - low, nPeriod)
    reverse = input(false, title="Trade reverse")
    xUpper = xPrice + xMove
    xLower = xPrice - xMove
    pos := iff(close < xLower, -1,
             iff(close > xUpper, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Keltner Channel", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
nPeriod = input(title="Period", defval=10, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKeltnerChn = KeltnerChn(nPeriod)
pos = iff(posReversal123 == 1 and posKeltnerChn == 1 , 1,
	   iff(posReversal123 == -1 and posKeltnerChn == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Más.