相対波動性指数バックテスト戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-26 16:15:44
タグ:

概要

相対的変動指数 (RVI) は,相対的強度指数 (RSI) の改変版である技術指標である.市場動向と強さを決定するために過去10日間の閉値の標準偏差を計算することによって変動の方向性を測定する.

戦略の論理

この戦略の基本的な論理は

  1. 過去10日間の閉店価格の標準偏差を計算します StdDev

  2. 閉店価格の過去10日間の前日より高い部分,uを計算します.

  3. 過去10日間の終了価格の前日より低い部分を計算します. d.

  4. u,d,nU,nDの14日間の指数移動平均を計算するために指数式平滑を使用する.

  5. nU と nD の比率を計算し,その後を 100 で掛けると,不安定性指数 nRes が出ます.

  6. nResが売り場より低いときショートで,nResが売り場より高いときロングです.

  7. 購入・販売ゾーンのパラメータと逆取引はコードで設定できます.

過去10日間の上向きと下向きの変動の違いを比較することで,戦略は次の市場の動向の可能性のある方向を判断します.上向きの変動が大きいとき,それは上昇シグナルであり,下向きの変動が大きいとき,それは下向きのシグナルです.

利点分析

RVI バックテスト 戦略には以下の利点があります.

  1. 決済価格の標準偏差を使用して波動性を測定することは,価格のみよりも市場の変動情報をよりよく反映します.

  2. 計算方法は単純で明快で 分かりやすく実行できます

  3. 購入・売却のシグナルが明確で 二次的な判断は必要ありません

  4. 戦略の敏感性を調整するために,買い売りゾーンのパラメータを柔軟に設定できます.

  5. リバース・トレーディングのサポートは 異なるタイプの市場で利用できます

  6. インディケーターラインと取引ゾーンの可視化表示は直感的な取引信号を形成します.

  7. バックテストでは この戦略の有効性が確認されました

リスク分析

この戦略にはいくつかのリスクもあります:

  1. 買い/売るシグナルには誤ったシグナルがある場合,トレンドとサポート/レジスタンスの分析を組み合わせなければならない.

  2. 閉店価格の変動のみを考慮し,日中価格の動きを反映することはできません.

  3. パラメータの設定が正しくない場合,過剰な取引または低収益につながる可能性があります.

  4. ライブ取引の取引コストは最終収益に影響します.

  5. リバース・トレードモードでは損失のリスクが大きい.

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

戦略は以下の側面で最適化できます.

  1. MACD,KD などなどの誤った信号をフィルタリングするために他の技術指標と組み合わせます.

  2. ポジションサイズを動的に調整する

  3. より正確な信号のために 買い物・販売ゾーンの範囲を最適化します

  4. ストップ・ロスのメカニズムを追加し,単一の取引損失を制御します.

  5. 高波動性のある状況でポジションのサイズを減らす.

  6. 計算期間,スムージングパラメータなど,異なる指標パラメータ設定をテストする.

概要

RVIバックテスト戦略は,上下波動性を比較して市場方向を判断し,シンプルで直感的なトレンドフォロー戦略を実装する.利点は明確な論理,容易な実装,良いバックテスト結果である.適切な最適化によって改善することができる.まだライブ取引でリスク制御を必要とし,シグナルを確認するために他の指標を組み合わせる.全体的にこの戦略は定量取引のための貴重なアイデアを提供します.


/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-19 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/10/2017
// The RVI is a modified form of the relative strength index (RSI). 
// The original RSI calculation separates one-day net changes into 
// positive closes and negative closes, then smoothes the data and 
// normalizes the ratio on a scale of zero to 100 as the basis for the 
// formula. The RVI uses the same basic formula but substitutes the 
// 10-day standard deviation of the closing prices for either the up 
// close or the down close. The goal is to create an indicator that 
// measures the general direction of volatility. The volatility is 
// being measured by the 10-days standard deviation of the closing prices. 
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Relative Volatility Index", shorttitle="RVI")
Period = input(10, minval=1)
BuyZone = input(30, minval=1)
SellZone = input(70, minval=1)
reverse = input(false, title="Trade reverse")
hline(0, color=purple, linestyle=hline.style_dashed)
hline(BuyZone, color=red, linestyle=hline.style_solid)
hline(SellZone, color=green, linestyle=hline.style_solid)
xPrice = close
StdDev = stdev(xPrice, Period)
d = iff(close > close[1], 0, StdDev)
u = iff(close > close[1], StdDev, 0)
nU = (13 * nz(nU[1],0) + u) / 14
nD = (13 * nz(nD[1],0) + d) / 14
nRes = 100 * nU / (nU + nD)
pos = iff(nRes < BuyZone, -1,
	   iff(nRes > SellZone, 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=red, title="RVI")


もっと