Estratégia quântica baseada na interceptação de regressão linear

Autora:ChaoZhang, Data: 2023-12-29 11:45:20
Tags:

img

Resumo

Esta estratégia usa técnicas de regressão linear para calcular a interceptação de regressão linear e usa-o como um sinal de negociação para construir uma estratégia de negociação quantitativa.

Princípio da estratégia

A interceptação de regressão linear indica o valor previsto de Y (geralmente o preço) quando o valor da série de tempo X é 0. Esta estratégia predefine o parâmetro Duração, toma o preço de fechamento como a sequência de origem e calcula a interceptação de regressão linear (xLRI) dos dias de Duração mais recentes.

A fórmula específica de cálculo é a seguinte:

xX = Length *(Length - 1)* 0.5
xDivisor = xX *xX - Length* Length *(Length - 1) *(2 * Length - 1) / 6  
xXY = Σ(i *Closing Price[i]), i from 0 to Length-1
xSlope = (Length *xXY - xX* Σ(Closing Price, Length))/ xDivisor 
xLRI = (Σ(Closing Price, Length) - xSlope * xX) / Length

Através de tais cálculos, a interceptação de regressão linear xLRI para os dias de comprimento mais recentes pode ser obtida.

Vantagens

Esta estratégia tem as seguintes vantagens:

  1. Usando técnicas de regressão linear, tem certas capacidades de previsão e julgamento de tendências para os preços.
  2. Menos parâmetros, modelo mais simples, fácil de compreender e implementar.
  3. Parâmetro personalizável comprimento para ajustar a flexibilidade da estratégia.

Riscos e soluções

Esta estratégia tem também alguns riscos:

  1. O ajustamento de regressão linear é meramente um ajustamento estatístico baseado em dados históricos, com capacidade limitada para prever tendências futuras de preços.
  2. Se os fundamentos da empresa sofrerem grandes alterações, os resultados do ajuste de regressão linear podem tornar-se inválidos.
  3. A configuração inadequada do parâmetro "Length" pode levar a um sobreajuste.

Contramedidas:

  1. Reduzir adequadamente o parâmetro comprimento para evitar a sobreajuste.
  2. Preste atenção às alterações nos fundamentos da empresa e interfira manualmente para fechar posições, quando necessário.
  3. Adotar o parâmetro adaptativo comprimento para ajustar dinamicamente de acordo com as condições do mercado.

Orientações de otimização

Esta estratégia pode também ser otimizada nos seguintes aspectos:

  1. Adicionar um mecanismo de stop loss para controlar perdas individuais.
  2. Combinar com outros indicadores para formar uma estratégia combinada para melhorar a estabilidade.
  3. Adicionar o módulo de otimização auto-adaptativa do parâmetro para fazer a mudança dinâmica do parâmetro de comprimento.
  4. Adicionar um módulo de controlo de posição para evitar o excesso de negociação.

Resumo

Esta estratégia constrói uma estratégia de negociação quantitativa simples baseada na interceptação de regressão linear.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 21/03/2018
// Linear Regression Intercept is one of the indicators calculated by using the 
// Linear Regression technique. Linear regression indicates the value of the Y 
// (generally the price) when the value of X (the time series) is 0. Linear 
// Regression Intercept is used along with the Linear Regression Slope to create 
// the Linear Regression Line. The Linear Regression Intercept along with the Slope 
// creates the Regression line.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Line Regression Intercept Backtest", overlay = true)
Length = input(14, minval=1)
xSeria = input(title="Source", defval=close)
reverse = input(false, title="Trade reverse")
xX = Length * (Length - 1) * 0.5
xDivisor = xX * xX - Length * Length * (Length - 1) * (2 * Length - 1) / 6
xXY = 0
for i = 0 to Length-1
	xXY := xXY + (i * xSeria[i])
xSlope = (Length * xXY - xX * sum(xSeria, Length)) / xDivisor
xLRI = (sum(xSeria, Length) - xSlope * xX) / Length
pos = iff(close > xLRI, 1,
       iff(close < xLRI, -1, nz(pos[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)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xLRI, color=blue, title="LRI")

Mais.