Vix修復線形回帰に基づく低点捕捉戦略


作成日: 2024-01-30 16:56:39 最終変更日: 2024-01-30 16:56:39
コピー: 1 クリック数: 735
1
フォロー
1617
フォロワー

Vix修復線形回帰に基づく低点捕捉戦略

概要

この戦略の核心思想は,Vixの修正指標とその線形回帰を組み合わせて,市場の低点を正確に捕捉することである.この戦略は,の修正線形回帰の低点戦略と呼ばれる.

戦略原則

  1. Wixの修正指標を計算すると,市場の低点をよりよく判断できます.
  2. 線形回帰をVix修指数に適用する.線形回帰ヒストグラムの色が緑に変化すると,Vix修線形回帰が上昇し始めることを示す,買取信号を発信できる
  3. Wix Repair Indicatorの緑色の柱と組み合わせると,購入時期をさらに確認できます.
  4. 線形回帰ヒストグラムの色が赤くなると,Vixが線形回帰を修正し,下落を開始すると,出売信号を発信する

上記のプロセスは,線形回帰を利用してVixの修正指標信号の正確性とタイミングを向上させ,偽信号の一部をフィルターして,低点を正確に捕捉します.

優位分析

  1. 策略は,線形回帰フィルタリングVix修復指標の部分的な偽信号を利用し,購入/売却の信号をより正確かつ信頼性のあるものにします.
  2. 線形回帰は,信号の感度とタイミングを高め,市場の転換点を迅速に捉えることができます.
  3. 戦略の論理はシンプルで明快で,容易に理解できる実装で,量化取引に適しています.
  4. 市場変化に対応するために,柔軟に調整できる多くの設定可能なパラメータ

リスクと解決

  1. この戦略は,個人株ではなく,市場全体の低値を判断するために使用されます.
  2. 線形回帰は偽信号を完全にフィルタリングできないので,Vix修復指標と組み合わせることでリスクが軽減される.
  3. パラメータを適正に調整し,状況の変化に適応し,失効を回避する必要があります.
  4. 他の指標と組み合わせて使用することが推奨されます.

最適化の方向

  1. 波動率指数または量能指数と組み合わせて,さらにフィルター信号を考慮することができます.
  2. 戦略を賢くするために,パラメータを自律的に最適化する方法について研究できます.
  3. 機械学習の方法を探索し,より複雑なモデルを使用してVixの修復の動きを予測できます.
  4. 偽の信号をフィルターする方法を研究するために 株の個人に似た方法を使うこともできます

要約する

この戦略は,Vixの修復指標を低点判断に活用しながら,線形回帰を導入することで,信号の質を向上させ,市場低点を効果的に捕捉することができる.戦略は,シンプルで実用的で,結果が理想的であり,主要リスクは偽信号が完全にフィルターされずに済みます.我々は,パラメータ設定を最適化し,戦略をより完善させるために信号をさらに確認する他の手段を導入することを検討する必要があります.全体的に,この戦略は,市場低点判断に新しい有効な経路を提供しており,さらなる研究に値します.

ストラテジーソースコード
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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/
// © HeWhoMustNotBeNamed

//@version=4
strategy("VixFixLinReg-Strategy", shorttitle="VixFixLinReg - Strategy",
                     overlay=false, initial_capital = 100000, 
                     default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, 
                     commission_value = 0.01)
pd = input(22, title="LookBack Period Standard Deviation High")
bbl = input(20, title="Bolinger Band Length")
mult = input(2.0    , minval=1, maxval=5, title="Bollinger Band Standard Devaition Up")
lb = input(50  , title="Look Back Period Percentile High")
ph = input(.85, title="Highest Percentile - 0.90=90%, 0.95=95%, 0.99=99%")
pl = input(1.01, title="Lowest Percentile - 1.10=90%, 1.05=95%, 1.01=99%")
hp = input(false, title="Show High Range - Based on Percentile and LookBack Period?")
sd = input(false, title="Show Standard Deviation Line?")
i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "End Time", type = input.time)
inDateRange = true
considerVIXFixClose = input(false)
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")

atrLen = input(22)
atrMult = input(5)
initialStopBar = input(5)
waitForCloseBeforeStop = input(true)
f_getStop(atrLen, atrMult)=>
    stop = strategy.position_size > 0 ? close - (atrMult * atr(atrLen)) : lowest(initialStopBar)
    stop := strategy.position_size > 0 ? max(stop,nz(stop[1], stop)) : lowest(initialStopBar)
    stop

wvf = ((highest(close, pd)-low)/(highest(close, pd)))*100

sDev = mult * stdev(wvf, bbl)
midLine = sma(wvf, bbl)
lowerBand = midLine - sDev
upperBand = midLine + sDev

rangeHigh = (highest(wvf, lb)) * ph
rangeLow = (lowest(wvf, lb)) * pl


col = wvf >= upperBand or wvf >= rangeHigh ? color.lime : color.gray

val = linreg(wvf, pd, 0)
absVal = abs(val)

linRegColor = val>val[1]? (val > 0 ? color.green : color.orange): (val > 0 ? color.lime : color.red)
plot(hp and rangeHigh ? rangeHigh : na, title="Range High Percentile", style=plot.style_line, linewidth=4, color=color.orange)
plot(hp and rangeLow ? rangeLow : na, title="Range High Percentile", style=plot.style_line, linewidth=4, color=color.orange)
plot(wvf, title="Williams Vix Fix", style=plot.style_histogram, linewidth = 4, color=col)
plot(sd and upperBand ? upperBand : na, title="Upper Band", style=plot.style_line, linewidth = 3, color=color.aqua)

plot(-absVal, title="Linear Regression", style=plot.style_histogram, linewidth=4, color=linRegColor)

vixFixState = (col == color.lime) ? 1: 0
vixFixState := strategy.position_size == 0? max(vixFixState, nz(vixFixState[1],0)) : vixFixState

longCondition = (vixFixState == 1 and linRegColor == color.lime) and inDateRange
exitLongCondition = (linRegColor == color.orange or linRegColor == color.red) and considerVIXFixClose

stop = f_getStop(atrLen, atrMult)
label_x = time+(60*60*24*1000*20) 
myLabel = label.new(x=label_x, y=0, text="Stop : "+tostring(stop), xloc=xloc.bar_time, style=label.style_none, textcolor=color.black, size=size.normal)
label.delete(myLabel[1])
strategy.entry("Long", strategy.long, when=longCondition, oca_name="oca_buy")
strategy.close("Long", when=exitLongCondition or (close < stop and waitForCloseBeforeStop and linRegColor == color.green))
strategy.exit("ExitLong", "Long", stop = stop, when=not waitForCloseBeforeStop and linRegColor == color.green)