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

Autora:ChaoZhang, Data: 2023-12-26 10:24:53
Tags:

img

Resumo

Esta estratégia usa o método de valor extremo para calcular a volatilidade estatística, também conhecida como volatilidade histórica. Ela mede a volatilidade com base nos valores extremos do preço mais alto, preço mais baixo e preço de fechamento, combinados com o fator de tempo. A volatilidade reflete a flutuação do preço do ativo. A estratégia fará negociações longas ou curtas correspondentes quando a volatilidade for maior ou menor que o limiar.

Princípio da estratégia

  1. Calcular os valores extremos do preço mais alto, preço mais baixo e preço de fechamento em um determinado período de tempo
  2. Aplicar a fórmula do método do valor extremo para calcular a volatilidade estatística
    SqrTime = sqrt(253 / Length)
    Vol = ((0.6 * log(xMaxC / xMinC) * SqrTime) + (0.6 * log(xMaxH / xMinL) * SqrTime)) * 0.5
    
  3. Comparar a volatilidade com os limiares superior e inferior para gerar sinais comerciais
    pos = iff(nRes > TopBand, 1,  
              iff(nRes < LowBand, -1, nz(pos[1], 0)))
    
  4. Fazer negociações longas ou curtas com base nos sinais de negociação

Análise das vantagens

As principais vantagens desta estratégia são:

  1. A utilização do indicador estatístico de volatilidade pode capturar eficazmente os pontos críticos do mercado e as oportunidades de reversão
  2. O método do valor extremo para o cálculo da volatilidade não é sensível aos preços extremos, resultando em resultados mais estáveis e fiáveis
  3. Os parâmetros podem ser ajustados para se adaptarem à negociação em diferentes ambientes de volatilidade

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 pode captar com precisão os pontos de virada do mercado.
  2. O indicador de volatilidade reage lentamente a eventos repentinos, possivelmente perdendo oportunidades de negociação a curto prazo
  3. Existem alguns riscos de negociações erradas e stop loss

Contramedidas e soluções:

  1. Redução adequada do ciclo estatístico para aumentar a sensibilidade às alterações do mercado
  2. Utilização de outros indicadores para melhorar a precisão do sinal
  3. Definir pontos de stop loss para controlar perdas individuais

Orientações de otimização

As orientações de otimização para esta estratégia:

  1. Teste diferentes parâmetros do período estatístico para encontrar os parâmetros ideais
  2. Adicionar um módulo de gestão de posições para ajustar as posições com base na volatilidade
  3. Adicione condições de filtro como linhas médias móveis para reduzir negócios errados

Resumo

Esta estratégia usa o método de valor extremo para calcular a volatilidade estatística e gera sinais de negociação capturando anomalias de volatilidade. Em comparação com indicadores simples como linhas médias móveis, ele reflete melhor a volatilidade do mercado e capta reversões. Enquanto isso, o algoritmo do método de valor extremo também torna os resultados mais estáveis e confiáveis. Através do ajuste e otimização de parâmetros, esta estratégia pode se adaptar a diferentes condições do mercado, e sua lógica de negociação e indicador de volatilidade estatística valem mais pesquisa e aplicação.


/*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")


Mais.