バリアンスリバーション取引戦略

作者: リン・ハーンチャオチャン開催日:2023年10月31日 14:42:13
タグ:

img

概要

バリアンスリバーション・トレーディング戦略は,コールとプットオプションの比率,コール・プット比率としても知られる比率を計算することによって取引信号を生成する.比率が逆転すると,利益を実現するために単純なマネーマネジメントルールと組み合わせた取引を誘発する.NDXとSPXの30分間の期間に適している.正しいリバーサルポイントを反映するために振動を微調整する必要があります.堅牢なバックテスト結果は最適なリバーサルポイントを示します.

戦略の論理

この戦略のコアメトリックは,コール/パット比率の移動平均値と標準偏差である.最初にコール/パット比率の20日移動平均値を計算し,その後比率の30日標準偏差を計算する.比率が移動平均値プラス1.5標準偏差を超えると長い信号が起動する.比率が移動平均値マイナス1.5標準偏差を下回るとショート信号が起動する.

ロングした後に,比率が移動平均値以上に反転すると,ショートポジションを閉じる.ストップロスはエントリー価格より1%低く設定される.テイク・プロフィートはエントリー価格からのストップロスの3倍の距離で設定される.

利点分析

この戦略の最大の利点は,市場が過度に悲観的または上昇傾向になり,コール/プット比率に異常を引き起こすときにセンチメントの逆転点を捕捉することです.そのような異常に対して取引することは,地元の逆転から利益を得ることができます.マネーマネジメントルールは,個々の取引のリスクと報酬を効果的に制限します.

リスク分析

主なリスクは,パラメータ調節が不適切である.過度に頻繁な信号は有意な逆転を捉えることができない.逆転信号は,誤ったブレイクによって偽造され,損失を引き起こす可能性があります.より信頼性の高い信号のためにパラメータを最適化する必要があります.

最適化

逆転シグナルを確認し,偽のブレイクを避けるためにフィルターを追加することを検討してください.例えば,ボリュームが増幅するときにのみシグナルを考慮してください.トレンドフィルターはまた,反トレンド取引を回避することもできます.最適なパラメータは,異なる市場や時間枠によって異なる可能性があります.より多くの要因を統合することで,戦略がより堅牢になります.

結論

この戦略は,基本的なマネーマネジメントルールによるコール/プット比率を使用して市場の逆転点を捕捉することを目的としている. ローカル逆転から利益を得ることができるが,偽のブレイクアウトリスクに直面する. パラメータを最適化し,フィルターを追加し,より多くの要因を統合することで,その安定性と収益性を向上させることができる. 全体として,市場の感情に基づいて取引逆転への方向性を提供する. リアル世界の適用のためにさらなるテストと最適化が必要である.


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © I11L

//@version=5
strategy("I11L Long Put/Call Ratio Inversion", overlay=false, pyramiding=1, default_qty_value=10000, initial_capital=10000, default_qty_type=strategy.cash)

SL = input.float(0.01,step=0.01)
CRV = input.float(3)
TP = SL * CRV

len = input.int(30,"Lookback period in Days",step=10)
ratio_sma_lookback_len = input.int(20,step=10)
mult = input.float(1.5,"Standard Deviation Multiple")

ratio_sma = ta.sma(request.security("USI:PCC","D",close),ratio_sma_lookback_len)

median = ta.sma(ratio_sma,len)
standartDeviation = ta.stdev(ratio_sma,len)
upperDeviation = median + mult*standartDeviation
lowerDeviation = median - mult*standartDeviation


isBuy = ta.crossunder(ratio_sma, upperDeviation)// and close < buyZone
isCloseShort = (ratio_sma > median and strategy.position_size < 0)
isSL = (strategy.position_avg_price * (1.0 - SL) > low and strategy.position_size > 0) or (strategy.position_avg_price * (1.0 + SL) < high and strategy.position_size < 0)
isSell = ta.crossover(ratio_sma,lowerDeviation) 
isTP = strategy.position_avg_price * (1 + TP) < high

if(isBuy)
    strategy.entry("Long", strategy.long)

if(isCloseShort)
    strategy.exit("Close Short",limit=close)

if(isSL)
    strategy.exit("SL",limit=close)

if(isTP)
    strategy.exit("TP",limit=close)
    
plot(ratio_sma,color=color.white)
plot(median,color=color.gray)
plot(upperDeviation,color=color.rgb(0,255,0,0))
plot(lowerDeviation,color=color.rgb(255,0,0,0))

bgcolor(isBuy?color.rgb(0,255,0,90):na)
bgcolor(isSell?color.rgb(255,0,0,90):na)


もっと