Strategi perdagangan Variance Reversion menghasilkan sinyal perdagangan dengan menghitung rasio antara opsi call dan put, juga dikenal sebagai rasio call put. Ketika rasio terbalik, ini memicu perdagangan dikombinasikan dengan aturan manajemen uang sederhana untuk mewujudkan keuntungan. Ini cocok untuk periode 30 menit NDX dan SPX. Osilasi perlu disesuaikan untuk mencerminkan titik pembalikan yang benar. Hasil backtesting yang solid menunjukkan titik pembalikan yang optimal.
Metrik inti dari strategi ini adalah rata-rata bergerak dan standar deviasi dari rasio call/put. Pertama-tama menghitung rata-rata bergerak 20 hari dari rasio call/put, kemudian menghitung standar deviasi 30 hari dari rasio. Sinyal panjang dipicu ketika rasio melintasi di atas rata-rata bergerak ditambah 1,5 standar deviasi. Sinyal pendek dipicu ketika rasio jatuh di bawah rata-rata bergerak dikurangi 1,5 standar deviasi.
Setelah pergi panjang, jika rasio bangkit kembali di atas rata-rata bergerak, tutup posisi pendek. Stop loss ditetapkan pada 1% di bawah harga masuk. Take profit ditetapkan pada 3 kali jarak stop loss dari harga masuk.
Keuntungan terbesar dari strategi ini adalah menangkap titik pembalikan sentimen ketika pasar menjadi terlalu pesimis atau bullish, menyebabkan anomali dalam rasio call / put. Perdagangan melawan anomali tersebut dapat mendapat keuntungan dari pembalikan lokal. Aturan manajemen uang secara efektif membatasi risiko dan imbalan dari perdagangan individu.
Risiko utama berasal dari penyesuaian parameter yang tidak tepat. sinyal yang terlalu sering gagal menangkap pembalikan yang signifikan. sinyal pembalikan juga dapat dipalsukan oleh pecah palsu, menyebabkan kerugian. parameter harus dioptimalkan untuk sinyal yang lebih andal.
Pertimbangkan untuk menambahkan filter untuk mengkonfirmasi sinyal pembalikan dan menghindari breakout palsu. Misalnya, hanya pertimbangkan sinyal ketika volume diperkuat. Filter tren juga dapat menghindari perdagangan kontra-tren. Parameter optimal mungkin bervariasi di berbagai pasar dan kerangka waktu. Mengintegrasikan lebih banyak faktor akan membuat strategi lebih kuat.
Strategi ini bertujuan untuk menangkap titik pembalikan pasar dengan menggunakan rasio call / put dengan aturan manajemen uang dasar. Ini dapat mendapatkan keuntungan dari pembalikan lokal tetapi menghadapi risiko pecah palsu. Mengoptimalkan parameter, menambahkan filter dan mengintegrasikan lebih banyak faktor dapat meningkatkan stabilitas dan profitabilitasnya. Secara keseluruhan, ini memberikan arah untuk pembalikan perdagangan berdasarkan sentimen pasar. Pengujian dan optimalisasi lebih lanjut diperlukan untuk aplikasi dunia nyata.
/*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)