Estrategia de inversión combinada de dos factores e índice de masa

El autor:¿ Qué pasa?, Fecha: 2023-12-26 12:20:57
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de comercio de reversión combinada basada en un modelo de doble factor. Integra el patrón de reversión 123 y los factores del índice de masa para lograr un efecto acumulativo para las señales de estrategia.

Estrategia lógica

123 Factor de reversión

Este factor opera basado en el patrón de precios 123. Cuando la relación de precio de cierre en los últimos dos días es bajo-alto y el indicador de Stoch está por debajo de 50, indica una reversión de fondo y va largo. Cuando la relación de precio de cierre es alto-bajo y Stoch está por encima de 50, indica una reversión superior y va corto.

Factor de índice de masa

Este factor juzga las inversiones de tendencia basadas en la expansión o contracción del rango de fluctuación de precios. A medida que el rango se expande, el índice aumenta y a medida que el rango se estrecha, el índice cae. Genera una señal de venta cuando el índice cruza por encima de un umbral y una señal de compra cuando cruza por debajo de un umbral.

La estrategia solo abre posiciones cuando los dos factores emiten señales en la misma dirección, logrando operaciones rentables al tiempo que evita señales falsas de un solo factor.

Análisis de ventajas

  • El modelo de doble factor combina patrón de precios e indicador de volatilidad para una mejor precisión de la señal
  • El patrón 123 captura extremos locales, el índice de masa captura puntos de reversión de tendencia global, fortalezas complementarias
  • Sólo tomar señales cuando dos factores están de acuerdo evita señales falsas y mejora la estabilidad

Análisis de riesgos

  • Existe la probabilidad de que ambos factores emitan señales erróneas simultáneamente, causando pérdidas
  • La tasa de fallas de las inversiones existe, se necesita establecer la pérdida de parada para controlar la baja
  • El ajuste incorrecto de los parámetros puede llevar a un sobreajuste

Los riesgos pueden reducirse mediante la ampliación del conjunto de entrenamiento, el estricto stop loss, el filtrado multifactor, etc.

Direcciones de optimización

  • Prueba más combinaciones de indicadores de precios y volatilidad
  • Añadir modelo ML para juzgar la calidad de la señal y posiciones de tamaño dinámico
  • Incorporar volumen, bandas de Bollinger, etc. para descubrir más alfa
  • Emplear la optimización de la marcha hacia adelante para la robustez

Conclusión

Esta estrategia combina dos factores, el patrón de precios y el indicador de volatilidad, para tomar señales solo cuando están de acuerdo, evitando señales falsas de un solo factor y mejorando la estabilidad.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/02/2021
// 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 Mass Index was designed to identify trend reversals by measuring 
// the narrowing and widening of the range between the high and low prices. 
// As this range widens, the Mass Index increases; as the range narrows 
// the Mass Index decreases.
// The Mass Index was developed by Donald Dorsey. 
//
// 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


MASS(Length1,Length2,Trigger) =>
    pos = 0.0
    xPrice = high - low
    xEMA = ema(xPrice, Length1)
    xSmoothXAvg = ema(xEMA, Length1)
    nRes = sum(iff(xSmoothXAvg != 0, xEMA / xSmoothXAvg, 0), Length2)
    pos := iff(nRes > Trigger, -1,
	         iff(nRes < Trigger, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & MASS Index", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- MASS Index ----")
Length1 = input(9, minval=1)
Length2 = input(25, minval=1)
Trigger = input(26.5, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMASS = MASS(Length1,Length2,Trigger)
pos = iff(posReversal123 == 1 and posMASS == 1 , 1,
	   iff(posReversal123 == -1 and posMASS == -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.