極端な値方法に基づく統計的波動性バックテスト戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-26 10:24:53
タグ:

img

概要

この戦略は,統計変動を計算するために極端値法を用い,歴史的変動とも呼ばれます.この戦略は,時間因数と組み合わせた最高価格,最低価格,閉じる価格の極端値に基づいて波動性を測定します.波動性は資産価格の変動を反映します.波動性が限界値よりも高くまたは低くなる場合,戦略は対応する長または短取引を行います.

戦略原則

  1. 特定の期間中の最高価格,最低価格,閉じる価格の極値を計算します.
  2. 統計変動を計算するために極限値法式を適用する.
    SqrTime = sqrt(253 / Length)
    Vol = ((0.6 * log(xMaxC / xMinC) * SqrTime) + (0.6 * log(xMaxH / xMinL) * SqrTime)) * 0.5
    
  3. トレーディング・シグナルを生成するために,波動性を上限と下限と比較する.
    pos = iff(nRes > TopBand, 1,  
              iff(nRes < LowBand, -1, nz(pos[1], 0)))
    
  4. トレーディング・シグナルに基づいて長または短取引を行う

利点分析

この戦略の主な利点は以下の通りです.

  1. 統計的変動指標を使用することで,市場のホットスポットと逆転の機会を効果的に把握できます.
  2. 波動性を計算する極端値方法は,極端価格に敏感ではないため,より安定して信頼性の高い結果が得られる.
  3. パラメータは,異なる変動環境での取引に適応するように調整できます.

リスク分析

この戦略の主なリスクは,

  1. 統計的変動自体も 遅れているので 市場の転換点を正確に把握することはできません
  2. 波動性指標は突然の出来事に対してゆっくり反応し,短期間の取引機会を逃す可能性があります.
  3. 間違った取引やストップロスのリスクもあります

対策と解決策

  1. 市場変化に対する感受性を高めるために,統計サイクルの適正な短縮
  2. 信号の正確性を向上させるために他の指標を使用する
  3. 単一の損失を制御するストップ損失ポイントを設定する

オプティマイゼーションの方向性

この戦略の最適化方向は:

  1. 最適なパラメータを見つけるために異なる統計期間のパラメータをテストする
  2. 波動性に基づくポジション調整のためのポジション管理モジュールを追加する
  3. 間違った取引を減らすために移動平均線のようなフィルター条件を追加します

概要

この戦略は,統計変動を計算するために極端値方法を使用し,変動異常を捕捉することによって取引信号を生成する.移動平均線のような単純な指標と比較して,市場の変動をよりよく反映し,逆転を捕捉する.一方,極端値方法アルゴリズムは結果をより安定かつ信頼性のあるものにする.パラメータ調整と最適化によって,この戦略は異なる市場状況に適応することができ,取引論理と統計的変動指標はさらなる研究と適用に値する.


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


もっと