Uma estratégia de negociação quantitativa baseada em análise de regressão linear


Data de criação: 2024-01-26 15:48:35 última modificação: 2024-01-26 15:48:35
cópia: 0 Cliques: 680
1
focar em
1617
Seguidores

Uma estratégia de negociação quantitativa baseada em análise de regressão linear

Visão geral

A estratégia de canal de regressão linear adaptativa é uma estratégia de negociação quantitativa baseada na análise de regressão linear. A estratégia forma um canal ascendente e descendente, calculando a equação de regressão linear do preço de um título em um determinado período de tempo, e usa o caminho ascendente e descendente do canal como sinal de negociação, para negociação intercalar ou acompanhamento de tendências.

Princípio da estratégia

O núcleo da estratégia de canal de regressão linear adaptativa é o cálculo de uma equação de regressão linear de preço de fechamento de um determinado número de linhas K-radical K, formando uma linha central que representa o dígito médio do preço, uma linha superior que representa o limite superior do preço e uma linha inferior que representa o limite inferior do preço. O processo de cálculo específico é o seguinte:

  1. Recolha os parâmetros de entrada para as variáveis independentes x e y da linha K definida pela raiz K da linha K. Onde x é um inteiro de 1 a longitude e y é o valor de encerramento da linha K correspondente.

  2. Coeficiente de regressão:

    • b = (∑y)/n - m(∑x)/n
    • m = [(n∑xy) - (∑x)(∑y)]/[(n∑x2) - (∑x)2]
  3. Calcule o valor de regressão linear correspondente a cada linha K para y’, diferença padrão STDDEV

  4. A linha central é a equação de regressão y’ = mx + b, com os traços ascendentes e descendentes flutuando na linha central por um intervalo de multiplicador de diferença padrão.

Com a chegada da nova linha K, o cálculo acima é atualizado, formando um canal de adaptação ascendente e descendente. De acordo com o cruzamento do canal ascendente e descendente, faça mais decolagem e pare perto da linha média.

Análise de vantagens

A estratégia de canal de regressão linear auto-adaptável tem as seguintes vantagens em comparação com a estratégia de linha média tradicional:

  1. Modelos de análise de regressão mais científicos e racionais, com maior relevância estatística do que a média

  2. Mais flexível, com um canal que se ajusta automaticamente à mudança de preço

  3. Melhor detecção e, em algumas variedades, superior à estratégia linear

  4. O teste em disco foi bem feito e funcionou de forma satisfatória em disco real.

Análise de Riscos

A estratégia tem os seguintes riscos:

  1. A volatilidade dos preços pode causar grandes prejuízos. A solução é definir o stop loss e otimizar os parâmetros.

  2. A falha de corredor leva a um mau desempenho de rastreamento. A solução é ajustar os parâmetros, em combinação com outros indicadores técnicos.

  3. A detecção parece ser boa, mas o disco rígido não é tão bom. A solução é ajustar os parâmetros e verificar.

Direção de otimização

A estratégia pode ser melhorada a partir das seguintes dimensões:

  1. Teste mais combinações de parâmetros para encontrar o melhor

  2. Combinação com outros indicadores técnicos para evitar sinais de falha quando o movimento é intenso

  3. Aumentar as estratégias de suspensão de perdas, controlar o risco de perdas e proteger o capital

  4. Adição de módulo de gerenciamento de posições para ajustar o tamanho das posições de acordo com as condições do mercado

Resumir

A estratégia de corredor de regressão linear auto-adaptável é uma estratégia de quantificação que, em geral, tem um bom desempenho. Sua base teórica é sólida, seu desempenho prático é bom, merece mais pesquisa e otimização e pode ser uma parte efetiva do sistema de negociação quantitativa. Mas também é necessário reconhecer suas limitações, evitar riscos e praticar com cautela.

Código-fonte da estratégia
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Stealthy 7 Linear Regression Channel Strategy", overlay=true)
source = open
length = input(100, minval=1)
mult1 = input(1, minval=0.001, maxval=50)
mult2 = input(1, minval=0.001, maxval=50)
DayTrader = input(title="Range Mode", type=bool, defval=false)

//Making the first least squares line
sum_x = length * (length + 1) / 2
sum_y = 0
sum_xy = 0
xyproductsum = 0
sum_xx = 0
for i = 1 to length
    sum_y := sum_y + close[i]
    sum_xy := i * close[i] + sum_xy
    sum_xx := i * i + sum_xx
m = (length*sum_xy - (sum_x * sum_y)) / (length * sum_xx - (sum_x * sum_x))
b = sum_y / length - (m * sum_x / length)

//Finding the first standard deviation from the line
difference = 0
for i = 1 to length
    y = i * m  + b
    difference := pow(abs(close[i] - y),2) + difference
STDDEV = sqrt(difference / length)

//Creating trading zones
dev = mult1 * STDDEV
dev2 = mult2 * STDDEV
upper = b + dev
lower = b - dev2
middle = b

if DayTrader == false
    if crossover(source, upper)
        strategy.entry("RGLONG", strategy.long, oca_name="RegChannel",  comment="RegLong")
    else
        strategy.cancel(id="RGLONG")

    if crossunder(source, lower)
        strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel",  comment="RegShort")
    else
        strategy.cancel(id="RGSHORT")

    if crossover(source, middle) and strategy.position_size < 0
        strategy.close_all()
    if crossunder(source,middle) and strategy.position_size > 0
        strategy.close_all()

if DayTrader == true
    if crossover(source, lower) 
        strategy.entry("RGLONG", strategy.long, oca_name="RegChannel",  comment="RegLong")
    else
        strategy.cancel(id="RGLONG")

    if crossunder(source, upper)
        strategy.entry("RGSHORT", strategy.short, oca_name="RegChannel",  comment="RegShort")
    else
        strategy.cancel(id="RGSHORT")


plot(upper, title="UpperBand", color=purple, linewidth=1, style=line)
plot(lower, title="LowerBand", color=purple, linewidth=1, style=line)
plot(middle, title="MiddleBand", color=black, linewidth=1, style=line)