اتار چڑھاؤ فلٹر مارکیٹ ٹائمنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-15 12:27:47
ٹیگز:

img

جائزہ

یہ حکمت عملی تاریخی اتار چڑھاؤ پر مبنی فلٹر شامل کرکے ایک بہتر خرید اور برقرار رکھنے کی حکمت عملی کو نافذ کرتی ہے۔ فلٹر اعلی اتار چڑھاؤ والے مارکیٹ کے نظام کے دوران طویل پوزیشنوں کو بند کرتا ہے اور جب اتار چڑھاؤ کم ہوتا ہے تو طویل پوزیشنوں میں دوبارہ داخل ہوتا ہے ، تاکہ زیادہ سے زیادہ ڈراؤنڈ کو کم کیا جاسکے۔

حکمت عملی منطق

  1. پچھلے 100 دنوں میں SPY کی تاریخی اتار چڑھاؤ کا حساب لگائیں
  2. اگر موجودہ اتار چڑھاؤ پچھلے 100 دنوں کی اتار چڑھاؤ کے 95 ویں فیصد سے زیادہ ہے تو، اس ٹریڈنگ دن کو فلٹر کریں، طویل پوزیشن بند کریں
  3. اگر اتار چڑھاؤ 95 ویں فیصد سے کم ہے تو ، طویل پوزیشن درج کریں

فوائد کا تجزیہ

فلٹر کے بغیر سادہ خرید و ہولڈ کے مقابلے میں ، اس حکمت عملی نے 28 سالہ بیک ٹیسٹ کی مدت (7.95٪ بمقابلہ 9.92٪) میں سالانہ منافع میں بہتری لائی اور زیادہ سے زیادہ ڈراؤنڈ (50.79٪ بمقابلہ 31.57٪) میں نمایاں کمی واقع ہوئی۔ اس سے پتہ چلتا ہے کہ اتار چڑھاؤ فلٹر شامل کرنے سے منافع میں بہتری آسکتی ہے اور کسی حد تک خطرہ کم ہوسکتا ہے۔

خطرے کا تجزیہ

اہم خطرات اتار چڑھاؤ کے حساب کتاب کے طریقہ کار کی درستگی اور فلٹر پیرامیٹر ٹوننگ سے آتے ہیں۔ اگر اتار چڑھاؤ کا حساب کتاب غلط ہے تو فلٹر ناکام ہوجائے گا۔ اگر فلٹر پیرامیٹرز کو ناقص طور پر (بہت زیادہ قدامت پسند یا جارحانہ) ٹون کیا جاتا ہے تو ، اس سے حکمت عملی کی واپسی پر منفی اثر پڑ سکتا ہے۔ نیز ، ماضی کی کارکردگی مستقبل کے نتائج کی ضمانت نہیں دیتی ہے۔

اصلاح کی ہدایات

اضافی فلٹرز کے طور پر دیگر تصدیق کرنے والے اشارے شامل کرنے پر غور کریں ، جیسے طویل مدتی حرکت پذیر اوسط ، ADX انڈیکس وغیرہ۔ پیرامیٹر ٹوننگ بھی اہم ہے ، جیسے مختلف نظرثانی کے ادوار کی جانچ ، فلٹرنگ کی حدیں وغیرہ۔ مشین لرننگ اور ٹائم سیریز تجزیہ کی تکنیکوں کا استعمال بھی اتار چڑھاؤ کی پیش گوئی کے ماڈل کی تعمیر اور اصلاح کے لئے کیا جاسکتا ہے۔

خلاصہ

اس حکمت عملی نے ایک سادہ اتار چڑھاؤ فلٹر کے ذریعہ ایس پی وائی خرید اور ہولڈ حکمت عملی کی واپسی کو بہت بہتر بنایا اور زیادہ سے زیادہ ڈراؤنڈ کو کم کیا۔ اس سے مارکیٹ کے نظام کی نشاندہی اور اثاثوں کی الاٹمنٹ کی اہمیت ظاہر ہوتی ہے۔ ہم اتار چڑھاؤ کے ماڈل کو بہتر بنا کر اور تصدیق کرنے والے سگنل شامل کرکے اسے مزید بہتر بنا سکتے ہیں۔


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

مزید