Handelsstrategie zur Umkehrung der Varianz

Schriftsteller:ChaoZhang, Datum: 2023-10-31 14:42:13
Tags:

img

Übersicht

Die Variance-Reversion-Handelsstrategie erzeugt Handelssignale durch Berechnung des Verhältnisses zwischen Call- und Put-Optionen, auch als Call-Put-Verhältnis bekannt. Wenn sich das Verhältnis umkehrt, löst sie Trades mit einfachen Geldmanagementregeln aus, um Gewinne zu erzielen. Sie eignet sich für 30-minütige Perioden von NDX und SPX. Die Oszillation muss fein abgestimmt werden, um den richtigen Umkehrpunkt widerzuspiegeln.

Strategie Logik

Die Kernmetriken dieser Strategie sind der gleitende Durchschnitt und die Standardabweichung des Call/Put-Verhältnisses. Er berechnet zunächst den 20-tägigen gleitenden Durchschnitt des Call/Put-Verhältnisses, berechnet dann die 30-tägige Standardabweichung des Verhältnisses. Ein langes Signal wird ausgelöst, wenn das Verhältnis über den gleitenden Durchschnitt plus 1,5 Standardabweichung überschreitet. Ein kurzes Signal wird ausgelöst, wenn das Verhältnis unter den gleitenden Durchschnitt minus 1,5 Standardabweichung fällt.

Nach dem Long gehen, wenn die Ratio wieder über dem gleitenden Durchschnitt zurückfällt, schließen Sie die Short-Position. Der Stop-Loss wird auf 1% unter dem Einstiegspreis festgelegt. Der Take-Profit wird auf das 3-fache der Stop-Loss-Distanz vom Einstiegspreis festgelegt.

Analyse der Vorteile

Der größte Vorteil dieser Strategie besteht darin, Stimmungsschwankungen zu erfassen, wenn der Markt zu pessimistisch oder bullisch wird und Anomalien im Call/Put-Verhältnis verursacht.

Risikoanalyse

Das größte Risiko entsteht durch eine unsachgemäße Einstellung der Parameter. Zu häufige Signale können keine signifikanten Umkehrungen erfassen. Umkehrsignale können auch durch falsche Ausbrüche verfälscht werden, was zu Verlusten führt. Parameter sollten für zuverlässigere Signale optimiert werden.

Optimierung

Überlegen Sie, Filter hinzuzufügen, um Umkehrsignale zu bestätigen und falsche Ausbrüche zu vermeiden. Zum Beispiel sollten Sie nur Signale berücksichtigen, wenn das Volumen verstärkt wird. Trendfilter könnten auch Gegentrend-Trades vermeiden. Optimale Parameter variieren wahrscheinlich zwischen verschiedenen Märkten und Zeitrahmen. Die Integration mehrerer Faktoren wird die Strategie robuster machen.

Schlussfolgerung

Diese Strategie zielt darauf ab, Marktumkehrpunkte zu erfassen, indem die Call/Put-Ratio mit den grundlegenden Geldmanagementregeln verwendet wird. Sie kann von lokalen Umkehrungen profitieren, steht jedoch vor falschen Ausbruchrisiken. Die Optimierung von Parametern, das Hinzufügen von Filtern und die Integration mehrerer Faktoren können ihre Stabilität und Rentabilität verbessern. Insgesamt bietet sie eine Richtung für Handelsumkehrungen auf der Grundlage der Marktstimmung. Für die reale Anwendung sind weitere Tests und Optimierungen erforderlich.


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


Mehr