Strategi Masa Pasaran Berdasarkan Kemeruapan Sejarah


Tarikh penciptaan: 2024-01-15 12:27:47 Akhirnya diubah suai: 2024-01-15 12:27:47
Salin: 2 Bilangan klik: 697
1
fokus pada
1617
Pengikut

Strategi Masa Pasaran Berdasarkan Kemeruapan Sejarah

Gambaran keseluruhan

Strategi ini mewujudkan strategi membeli dan memegang versi yang lebih baik dengan menambahkan penapis berdasarkan kadar turun naik sejarah. Fungsi penapis adalah untuk menutup kedudukan membeli dan membeli pada masa turun naik pasaran yang tinggi, dan membina semula kedudukan membeli pada masa turun naik yang rendah, sehingga mengurangkan penarikan balik maksimum strategi.

Prinsip Strategi

  1. Hitung kadar turun naik SPY dalam 100 hari terakhir
  2. Jika turun naik semasa lebih tinggi daripada nilai 95 turun naik dalam 100 hari terakhir, penapis hari perdagangan dan tutup kedudukan beli
  3. Jika kadar turun naik berada di bawah 95 pips, anda boleh membuat kedudukan beli.

Analisis kelebihan

Berbanding dengan strategi membeli dan memegang yang mudah tanpa penapis, strategi ini menunjukkan peningkatan dalam kadar pulangan tahunan (7.95% vs 9.92%) dalam tempoh 28 tahun yang diperiksa, sementara jumlah maksimum yang ditarik balik menurun dengan ketara (50.79% vs 31.57%). Ini menunjukkan bahawa penambahan penapis turun naik pasaran dapat meningkatkan kadar pulangan strategi dan mengurangkan risiko.

Analisis risiko

Risiko utama strategi ini terletak pada kaedah pengiraan kadar turun naik dan ketepatan penetapan parameter penapis. Jika kadar turun naik tidak tepat, penapis akan gagal; jika penetapan parameter penapis terlalu konservatif atau terlalu radikal, ia akan memberi kesan buruk kepada hasil strategi.

Arah pengoptimuman

Anda boleh mempertimbangkan untuk memasukkan Indikator Penapis lain sebagai isyarat pengesahan, seperti purata bergerak jangka panjang, indeks CD besar ADX, dan lain-lain. Pengoptimuman penyesuaian parameter juga penting, seperti menetapkan parameter untuk menguji tempoh lookback yang berbeza, penapisan ambang, dan lain-lain. Pembelajaran mesin dan analisis siri masa juga boleh digunakan untuk membina dan mengoptimumkan model ramalan kadar turun naik.

ringkaskan

Strategi ini meningkatkan kadar pulangan strategi SPY buy and hold dengan ketara melalui penapis yang sederhana berdasarkan kadar turun naik sejarah, dan juga mengurangkan jumlah maksimum penarikan balik. Ini membuktikan pentingnya pengenalan keadaan pasaran dan penempatan aset.

Kod sumber strategi
/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
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/
// 
// @author Sunil Halai
//
// This script has been created to demonstrate the effectiveness of using market regime filters in your trading strategy, and how they can improve your returns and lower your drawdowns
//
// This strategy adds a simple filter (The historical volatility filter, which can be found on my trading profile) to a traditional buy and hold strategy of the index SPY. There are other filters
// that could also be added included a long term moving average / percentile rank filter / ADX filter etc, to improve the returns further.
//
// The filter added closes our long position during periods of volatility that exceed the 95th percentile (or in the top 5% of volatile days)
//
// Have included the back test results since 1993 which is 28 years of data at the time of writing,  Comparing  buy and hold of the SPY (S&P 500), to improved by and hold offered here.
//
// Traditional buy and hold:
//
// Return per year:     7.95   % (ex Dividends)
// Total return :       851.1  %
// Max drawdown:        50.79  %
//
// 'Modified' buy and hold (this script):
//
// Return per year:     9.92    % (ex Dividends)
// Total return:        1412.16 %
// Max drawdown:        31.57   %
//
// Feel free to use some of the market filters in my trading profile to improve and refine your strategies further, or make a copy and play around with the code yourself. This is just 
// a simple example for demo purposes.
//

//@version=4
strategy(title = "Simple way to beat the market [STRATEGY]", shorttitle = "Beat The Market [STRATEGY]", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100)


upperExtreme = input(title = "Upper percentile filter (Do not trade above this number)", type = input.integer, defval = 95)
lookbackPeriod = input(title = "Lookback period", type = input.integer, defval = 100)

annual = 365
per = timeframe.isintraday or timeframe.isdaily and timeframe.multiplier == 1 ? 1 : 7
hv = lookbackPeriod * stdev(log(close / close[1]), 10) * sqrt(annual / per)

filtered = hv >= percentile_nearest_rank(hv, 100, upperExtreme)

if(not(filtered))
    strategy.entry("LONG", strategy.long)
else
    strategy.close("LONG")