Estratégia de backtesting de volatilidade estatística baseada no método de valor extremo


Data de criação: 2023-12-26 10:24:53 última modificação: 2023-12-26 10:24:53
cópia: 1 Cliques: 715
1
focar em
1621
Seguidores

Estratégia de backtesting de volatilidade estatística baseada no método de valor extremo

Visão geral

Esta estratégia utiliza o método de extrema volatilidade para calcular a taxa de flutuação estatística, também conhecida como taxa de flutuação histórica. Baseia-se nos extremos dos preços mais altos, mais baixos e mais baixos e no preço de encerramento, combinado com o fator tempo, para calcular a taxa de flutuação estatística. Esta taxa de flutuação reflete a volatilidade dos preços dos ativos.

Princípio da estratégia

  1. Calcular o valor máximo do preço máximo, o preço mínimo e o preço de encerramento em um determinado período de tempo

  2. Aplicar a fórmula de extrema-valor para calcular a taxa de flutuação estatística

    SqrTime = sqrt(253 / Length)  
    Vol = ((0.6 * log(xMaxC / xMinC) * SqrTime) + (0.6 * log(xMaxH / xMinL) * SqrTime)) * 0.5
    
  3. Comparação da taxa de flutuação com o limiar de alta e baixa definido, gerando um sinal de negociação

    pos = iff(nRes > TopBand, 1, 
             iff(nRes < LowBand, -1, nz(pos[1], 0)))
    
  4. Faça mais ou menos de acordo com os sinais de negociação

Análise de vantagens

As principais vantagens desta estratégia são:

  1. O uso de indicadores de volatilidade estatística permite capturar de forma eficaz os pontos quentes e as oportunidades de reversão do mercado
  2. Calculação de volatilidade por extrema valorização, menos sensível a preços extremos, com resultados mais estáveis e confiáveis
  3. A negociação pode ser adaptada a diferentes ambientes de taxa de flutuação, ajustando os parâmetros

Análise de Riscos

Os principais riscos desta estratégia são:

  1. A própria volatilidade estatística tem um certo atraso e não consegue capturar com precisão o ponto de viragem do mercado.
  2. Indicadores de volatilidade são lentos em reagir a eventos inesperados e podem perder oportunidades de negociação de curto prazo
  3. Existe um certo risco de transação errada e risco de perda

A resposta e solução:

  1. Reduzir adequadamente os ciclos estatísticos e aumentar a sensibilidade às mudanças do mercado
  2. Combinado com outros indicadores como auxiliares para melhorar a precisão do sinal
  3. Estabelecer um ponto de parada para controlar perdas individuais

Direção de otimização

A estratégia de otimização:

  1. Testar diferentes parâmetros de ciclo estatístico para encontrar o melhor parâmetro
  2. Adição de módulo de gerenciamento de posições para ajustar as posições de acordo com a volatilidade
  3. Indicadores como as médias móveis são usados para definir condições de filtragem e reduzir erros de negociação.

Resumir

Esta estratégia utiliza o método de extrema-valor para calcular a taxa de flutuação estatística, através da captura de flutuação de fluctuação de geração de sinais de negociação. Em comparação com a média móvel simples e outros indicadores, ele é mais capaz de refletir a volatilidade do mercado, captura de reversão. Ao mesmo tempo, o algoritmo de extrema-valor também torna os resultados mais estáveis e confiáveis.

Código-fonte da estratégia
/*backtest
start: 2022-12-19 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/11/2014
// This indicator used to calculate the statistical volatility, sometime 
// called historical volatility, based on the Extreme Value Method.
// Please use this link to get more information about Volatility. 
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Statistical Volatility - Extreme Value Method ", shorttitle="Statistical Volatility Backtest")
Length = input(30, minval=1)
TopBand = input(0.005, step=0.001)
LowBand = input(0.0016, step=0.001)
reverse = input(false, title="Trade reverse")
hline(TopBand, color=red, linestyle=line)
hline(LowBand, color=green, linestyle=line)
xMaxC = highest(close, Length)
xMaxH = highest(high, Length)
xMinC = lowest(close, Length)
xMinL = lowest(low, Length)
SqrTime = sqrt(253 / Length)
Vol = ((0.6 * log(xMaxC / xMinC) * SqrTime) + (0.6 * log(xMaxH / xMinL) * SqrTime)) * 0.5
nRes = iff(Vol < 0,  0, iff(Vol > 2.99, 2.99, Vol))
pos = iff(nRes > TopBand, 1,
	   iff(nRes < LowBand, -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(nRes, color=blue, title="Statistical Volatility")