Stratégie de backtesting de volatilité statistique basée sur la méthode des valeurs extrêmes


Date de création: 2023-12-26 10:24:53 Dernière modification: 2023-12-26 10:24:53
Copier: 1 Nombre de clics: 715
1
Suivre
1621
Abonnés

Stratégie de backtesting de volatilité statistique basée sur la méthode des valeurs extrêmes

Aperçu

Cette stratégie utilise la méthode de la volatilité extrême pour calculer le taux de volatilité statistique, également appelé taux de volatilité historique. Elle est basée sur les valeurs extrêmes des prix les plus élevés, les plus bas et les prix de clôture, combinées à des facteurs de temps, pour calculer le taux de volatilité statistique.

Principe de stratégie

  1. Calculer les valeurs maximales des prix maximaux, minimaux et de clôture d’une période donnée

  2. Utilisez la formule de la méthode des valeurs extrêmes pour calculer la volatilité statistique

    SqrTime = sqrt(253 / Length)  
    Vol = ((0.6 * log(xMaxC / xMinC) * SqrTime) + (0.6 * log(xMaxH / xMinL) * SqrTime)) * 0.5
    
  3. Comparaison des fluctuations avec les valeurs de marge à la hausse et à la baisse, générant un signal de transaction

    pos = iff(nRes > TopBand, 1, 
             iff(nRes < LowBand, -1, nz(pos[1], 0)))
    
  4. Faire plus ou moins en fonction des signaux de trading

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. L’utilisation d’indicateurs statistiques de volatilité permet de capturer efficacement les points chauds et les occasions de revirement du marché
  2. Calculer les fluctuations par la méthode des valeurs extrêmes, moins sensible aux prix extrêmes, plus stable et plus fiable
  3. Les transactions peuvent être adaptées à différents environnements de volatilité en ajustant les paramètres.

Analyse des risques

Les principaux risques associés à cette stratégie sont les suivants:

  1. La volatilité statistique elle-même présente un certain retard et ne permet pas de saisir avec précision les points de basculement du marché.
  2. L’indicateur de volatilité est lent à réagir aux événements soudains et risque de manquer des opportunités de trading à court terme.
  3. Il existe un certain risque de transaction erronée et un risque de perte.

Les mesures à prendre et les solutions:

  1. Réduire de manière appropriée les cycles statistiques et accroître la sensibilité aux changements du marché
  2. Combiné à d’autres indicateurs pour améliorer la précision des signaux
  3. Il y a un point d’arrêt pour contrôler les pertes individuelles

Direction d’optimisation

La stratégie est optimisée:

  1. Tester différents paramètres de cycle statistique pour trouver le paramètre optimal
  2. Ajout d’un module de gestion des positions pour ajuster les positions en fonction des fluctuations
  3. Les conditions de filtrage, combinées à des indicateurs tels que les moyennes mobiles, réduisent les erreurs de transaction

Résumer

Cette stratégie utilise la méthode de la valeur extrême pour calculer la volatilité statistique et générer un signal de transaction en capturant l’inertie de la volatilité. Par rapport à des indicateurs tels que la moyenne mobile simple, elle reflète mieux la volatilité du marché et capte les retournements.

Code source de la stratégie
/*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")