ایک دن کی تجارت کی حکمت عملی جس میں SPY اور IWM کے درمیان اوسط واپسی کا استعمال کیا جاتا ہے

مصنف:نیکی, تخلیق: 2019-07-01 11:47:08, تازہ کاری: 2023-10-26 20:07:32

img

اس مضمون میں ، ہم ایک دن کی تجارت کی حکمت عملی مرتب کریں گے۔ یہ کلاسیکی ٹریڈنگ کے تصور کا استعمال کرے گا ، جو کہ پیسے کے برابر واپسی کے ساتھ تجارت کرتا ہے۔ اس مثال میں ، ہم دو تجارت شدہ کھلی انڈیکس فنڈز (ETFs) ، SPY اور IWM کا استعمال کریں گے ، جو نیویارک اسٹاک ایکسچینج (NYSE) میں تجارت کرتے ہیں اور امریکی اسٹاک مارکیٹ کے اشاریہ جات کی نمائندگی کرنے کی کوشش کرتے ہیں ، جو کہ پیسے S&P 500 اور پیسے Russell 2000 ہیں۔ "

یہ حکمت عملی ایک سے زیادہ ای ٹی ایف بنانے اور ایک اور ای ٹی ایف کو خالی کرنے کے ذریعہ منافع کا فرق پیدا کرتی ہے۔ کثیر خالی تناسب کو بہت سارے طریقوں سے بیان کیا جاسکتا ہے ، جیسے شماریاتی طور پر ہم آہنگ وقت کی ترتیب کا استعمال کرتے ہوئے۔ اس منظر نامے میں ، ہم رولنگ لکیری واپسی کے ذریعہ ایس پی وائی اور آئی ڈبلیو ایم کے مابین ہیجنگ تناسب کا حساب لگائیں گے۔ اس سے ہمیں ایس پی وائی اور آئی ڈبلیو ایم کے مابین منافع کا فرق پیدا کرنے کی اجازت ملے گی ، جسے زیڈ اسکور کے طور پر معیاری بنایا گیا ہے۔ جب زیڈ اسکور کسی حد سے تجاوز کرتا ہے تو ، تجارتی سگنل پیدا ہوتا ہے ، کیونکہ ہمیں یقین ہے کہ منافع کا فرق اوسط تک واپس آجائے گا۔

اس حکمت عملی کا بنیادی اصول یہ ہے کہ ایس پی وائی اور آئی ڈبلیو ایم تقریبا ایک ہی مارکیٹ کی صورت حال کی نمائندگی کرتے ہیں ، یعنی بڑی اور چھوٹی امریکی کمپنیوں کے ایک گروپ کی اسٹاک کی کارکردگی۔ یہ فرض کیا جاتا ہے کہ اگر قیمتوں میں گرنے والی قیمتوں میں گرنے والی قیمتوں میں گرنے والی قیمتوں میں گرنے والی قیمتوں میں گرنے والی قیمتوں میں گرنے والی قیمتوں میں گرنے والی قیمتوں میں گرنے والی قیمتوں میں گرنے والی قیمتوں میں گرنے والی قیمتوں میں گرنے والی قیمتوں میں اضافہ ہوتا ہے۔

حکمت عملی

اس حکمت عملی کو مندرجہ ذیل مراحل پر عمل کیا گیا ہے:

اعداد و شمار - اپریل 2007 سے فروری 2014 تک ، SPY اور IWM کے لئے 1 منٹ کے تاروں کا گراف۔

پروسیسنگ - اعداد و شمار کو درست طریقے سے سیدھ کریں اور ایک دوسرے سے محروم ہونے والی k سٹرنگوں کو حذف کریں۔

فرق - دو ETFs کے درمیان ہیجنگ کا تناسب رولنگ لکیری regression کا استعمال کرتے ہوئے حساب لگایا جاتا ہے۔ یہ ایک regression ونڈو کا استعمال کرتے ہوئے regression coefficient β کے طور پر بیان کیا گیا ہے، جس میں regression ونڈو 1 جڑ k لائن کو آگے بڑھاتا ہے اور regression coefficient دوبارہ حساب لگاتا ہے۔ لہذا، ہیجنگ کا تناسب βi، جڑ K لائن کو bi-1-k سے bi-1 تک کراسنگ پوائنٹ کا حساب لگایا جاتا ہے تاکہ k لائن کو واپس کیا جاسکے۔

Z-Score - معیاری منافع کی قدر کا حساب عام طریقے سے لگایا جاتا ہے۔ اس کا مطلب ہے کہ منافع کی اوسط قیمت کو کم کرکے منافع کی معیاری خرابی کو الگ کرکے نمونہ۔ اس کی وجہ یہ ہے کہ اس حد کے پیرامیٹر کو سمجھنا آسان ہے ، کیونکہ Z-Score ایک جہتی مقدار ہے۔ میں نے حساب کتاب میں عمودی طور پر پیش نظر انحراف کو متعارف کرایا ہے تاکہ یہ ظاہر کیا جاسکے کہ یہ کتنا ٹھیک ہوسکتا ہے۔ کوشش کریں!

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

شاید حکمت عملی کو گہرائی سے سمجھنے کا بہترین طریقہ یہ ہے کہ اسے عملی طور پر نافذ کیا جائے۔ مندرجہ ذیل حصے میں اس یکساں واپسی کی حکمت عملی کو نافذ کرنے کے لئے استعمال ہونے والے مکمل پائتن کوڈ (ایک فائل) کی تفصیلات دی گئی ہیں۔ میں نے آپ کی بہتر تفہیم میں مدد کے لئے تفصیلی کوڈ کے تبصرے شامل کیے ہیں۔

پائیتھون کا نفاذ

جیسا کہ تمام پیتھون / پانڈاس سبق کے ساتھ ہوتا ہے ، اس کو اس سبق میں بیان کردہ پیتھون ماحول کے مطابق ترتیب دیا جانا چاہئے۔ ترتیب مکمل ہونے کے بعد ، پہلا کام ضروری پیتھون لائبریریوں کو درآمد کرنا ہے۔ یہ میٹ پلٹلب اور پانڈاس استعمال کرنے کے لئے ضروری ہے۔

میں نے اپنی لائبریری کے مخصوص ورژن استعمال کیے ہیں:

پائیتھون - 2.7.3 NumPy - 1.8.0 پانڈا - 0.12.0 میٹ پلٹلب - 1.1.0

ہم ان لائبریریوں کو آگے بڑھانے اور ان کو درآمد کرنے کی کوشش کرتے ہیں:

# mr_spy_iwm.py

import matplotlib.pyplot as plt
import numpy as np
import os, os.path
import pandas as pd

مندرجہ ذیل فنکشن create_pairs_dataframe دو اندرونی k لائنوں والے CSV فائلوں کو درآمد کرتا ہے جن میں دو علامتیں ہیں۔ ہماری مثال میں ، یہ SPY اور IWM ہوگا۔ پھر یہ ایک علیحدہ جڑی بوٹی ڈیٹا بیس جڑی بوٹی بناتا ہے ، یہ جڑی بوٹی ڈیٹا بیس جڑی بوٹی دونوں اصل فائلوں کی اشاریہ جات کا استعمال کرے گی۔ کھوئے ہوئے لین دین اور غلطیوں کی وجہ سے ، ان کے ٹائم فریم مختلف ہوسکتے ہیں۔ یہ ڈیٹا بیس جیسے ڈیٹا بیس کا استعمال کرنے کا ایک اہم فائدہ ہے۔ ہم نمونہ جڑی بوٹی کوڈ کو بہت موثر انداز میں سنبھالتے ہیں۔

# mr_spy_iwm.py
def create_pairs_dataframe(datadir, symbols):
    """Creates a pandas DataFrame containing the closing price
    of a pair of symbols based on CSV files containing a datetime
    stamp and OHLCV data."""
 
    # Open the individual CSV files and read into pandas DataFrames
    print "Importing CSV data..."
    sym1 = pd.io.parsers.read_csv(os.path.join(datadir, '%s.csv' % symbols[0]),
                                  header=0, index_col=0, 
                                  names=['datetime','open','high','low','close','volume','na'])
    sym2 = pd.io.parsers.read_csv(os.path.join(datadir, '%s.csv' % symbols[1]),
                                  header=0, index_col=0, 
                                  names=['datetime','open','high','low','close','volume','na'])
 
    # Create a pandas DataFrame with the close prices of each symbol
    # correctly aligned and dropping missing entries
    print "Constructing dual matrix for %s and %s..." % symbols    
    pairs = pd.DataFrame(index=sym1.index)
    pairs['%s_close' % symbols[0].lower()] = sym1['close']
    pairs['%s_close' % symbols[1].lower()] = sym2['close']
    pairs = pairs.dropna()
    return pairs

اگلا مرحلہ SPY اور IWM کے مابین لکیری رجعت کا عمل ہے۔ اس منظر میں ، IWM پیش گوئی کرنے والا ((x) ہے ، اور SPY جواب دینے والا ((y) ہے) ۔ میں نے 100 کلو لائنوں کی ڈیفالٹ رجعت ونڈو مرتب کی ہے۔ جیسا کہ اوپر بیان کیا گیا ہے ، یہ پالیسی کی ایک پیرامیٹر ہے۔ تاکہ پالیسی کو مستحکم سمجھا جاسکے ، ہم مثالی طور پر ایک واپسی کی رپورٹ دیکھنا چاہتے ہیں جس میں رجعت کے دورانیے میں عمودی فعل کی حالت ((x) یا دیگر کارکردگی کی پیمائش کا مظاہرہ کیا جائے۔ لہذا ، کوڈ کے بعد کے مرحلے میں ، ہم حساسیت کا تجزیہ کریں گے جس میں تبدیلی کی حد کے اندر نظر ثانی کی مدت ہے۔

جب ہم SPY-IWM کے لکیری رجعت کے ماڈل میں رولنگ بیٹا فیکٹر کا حساب لگاتے ہیں ، تو ہم اسے ڈیٹا فریم میں جوڑ دیتے ہیں اور خالی لائنوں کو ہٹاتے ہیں۔ اس سے پہلی سیٹ K لائن تیار ہوجاتی ہے ، جو ریگولیٹری لمبائی کے برابر ہے جس میں تراشنے کی پیمائش ہوتی ہے۔ پھر ، ہم دو ETFs کے فوائد تخلیق کرتے ہیں ، جو SPY کی یونٹ اور IWM کی -i یونٹ ہیں۔ ظاہر ہے ، یہ حقیقت پسندانہ نہیں ہے ، کیونکہ ہم IWM کی ایک چھوٹی سی مقدار کو استعمال کر رہے ہیں ، جو عملی نفاذ میں ناممکن ہے۔

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

# mr_spy_iwm.py
 
def calculate_spread_zscore(pairs, symbols, lookback=100):
    """Creates a hedge ratio between the two symbols by calculating
    a rolling linear regression with a defined lookback period. This
    is then used to create a z-score of the 'spread' between the two
    symbols based on a linear combination of the two."""
     
    # Use the pandas Ordinary Least Squares method to fit a rolling
    # linear regression between the two closing price time series
    print "Fitting the rolling Linear Regression..."
    model = pd.ols(y=pairs['%s_close' % symbols[0].lower()], 
                   x=pairs['%s_close' % symbols[1].lower()],
                   window=lookback)
 
    # Construct the hedge ratio and eliminate the first 
    # lookback-length empty/NaN period
    pairs['hedge_ratio'] = model.beta['x']
    pairs = pairs.dropna()
 
    # Create the spread and then a z-score of the spread
    print "Creating the spread/zscore columns..."
    pairs['spread'] = pairs['spy_close'] - pairs['hedge_ratio']*pairs['iwm_close']
    pairs['zscore'] = (pairs['spread'] - np.mean(pairs['spread']))/np.std(pairs['spread'])
    return pairs

create_long_short_market_signals میں ، تجارتی سگنل تخلیق کریں۔ یہ ایک z-score کی قیمت کی طرف سے حساب کیا جاتا ہے جس کی قیمت ایک حد سے زیادہ ہے۔ جب z-score کی مطلق قیمت ایک اور (چھوٹے پیمانے پر) حد سے کم یا برابر ہو تو ، ایک بریک سگنل دیا جاتا ہے۔

اس صورت حال کو حاصل کرنے کے لئے ، ہر k لائن کے لئے تجارتی حکمت عملی کا تعین کرنا ضروری ہے کہ کھلے ہولڈر یا فلیش ہولڈر ہیں۔ long_market اور short_market دو متغیرات ہیں جو کثیر اور خالی ہولڈر پوزیشنوں کو ٹریک کرنے کے لئے بیان کی گئی ہیں۔ بدقسمتی سے ، ویکٹر کے طریقہ کار کے مقابلے میں ، آریائزنگ کے طریقہ کار میں پروگرام کرنا آسان ہے ، لہذا یہ بہت سست ہے۔ اگرچہ 1 منٹ کے k لائن گراف میں ہر CSV فائل میں تقریبا 700،000 ڈیٹا پوائنٹس کی ضرورت ہوتی ہے ، لیکن میرے پرانے ڈیسک ٹاپ پر یہ حساب کتاب نسبتا fast تیز ہے!

ایک پانڈا ڈیٹا فریم (یہ یقینی طور پر ایک غیر معمولی عمل ہے) کو تکرار کرنے کے لئے ، iterrows طریقہ استعمال کرنا ضروری ہے ، جو ایک تکرار جنریٹر فراہم کرتا ہے:

# mr_spy_iwm.py
 
def create_long_short_market_signals(pairs, symbols, 
                                     z_entry_threshold=2.0, 
                                     z_exit_threshold=1.0):
    """Create the entry/exit signals based on the exceeding of 
    z_enter_threshold for entering a position and falling below
    z_exit_threshold for exiting a position."""
 
    # Calculate when to be long, short and when to exit
    pairs['longs'] = (pairs['zscore'] <= -z_entry_threshold)*1.0
    pairs['shorts'] = (pairs['zscore'] >= z_entry_threshold)*1.0
    pairs['exits'] = (np.abs(pairs['zscore']) <= z_exit_threshold)*1.0
 
    # These signals are needed because we need to propagate a
    # position forward, i.e. we need to stay long if the zscore
    # threshold is less than z_entry_threshold by still greater
    # than z_exit_threshold, and vice versa for shorts.
    pairs['long_market'] = 0.0
    pairs['short_market'] = 0.0
 
    # These variables track whether to be long or short while
    # iterating through the bars
    long_market = 0
    short_market = 0
 
    # Calculates when to actually be "in" the market, i.e. to have a
    # long or short position, as well as when not to be.
    # Since this is using iterrows to loop over a dataframe, it will
    # be significantly less efficient than a vectorised operation,
    # i.e. slow!
    print "Calculating when to be in the market (long and short)..."
    for i, b in enumerate(pairs.iterrows()):
        # Calculate longs
        if b[1]['longs'] == 1.0:
            long_market = 1            
        # Calculate shorts
        if b[1]['shorts'] == 1.0:
            short_market = 1
        # Calculate exists
        if b[1]['exits'] == 1.0:
            long_market = 0
            short_market = 0
        # This directly assigns a 1 or 0 to the long_market/short_market
        # columns, such that the strategy knows when to actually stay in!
        pairs.ix[i]['long_market'] = long_market
        pairs.ix[i]['short_market'] = short_market
    return pairs

اس مرحلے میں ہم نے جوڑوں کو اپ ڈیٹ کیا ہے تاکہ وہ اصل میں زیادہ ، خالی سگنل شامل کریں ، جس سے ہمیں یہ طے کرنے میں مدد ملے کہ کیا ہمیں تجارت شروع کرنے کی ضرورت ہے۔ اب ہمیں پوزیشنوں کی مارکیٹ ویلیو کو ٹریک کرنے کے لئے ایک پورٹ فولیو بنانے کی ضرورت ہے۔ پہلی ٹاسک یہ ہے کہ ایک پوزیشن کالم بنایا جائے جس میں کثیر سگنل اور خالی سگنل کو جوڑ دیا جائے۔ اس میں ایک صف عناصر شامل ہوں گے۔ جس میں "1،0،-1" سے کثیر پوزیشن کی نمائندگی کی جائے گی ، جس میں 1 کوئی پوزیشن نہیں ہے ، اور 0 خالی پوزیشن کی نمائندگی کرتا ہے ؛ sym1 اور sym2 کالم ہر k لائن کے اختتام پر SPY اور IWM پوزیشن کی مارکیٹ ویلیو کی نمائندگی کرتے ہیں۔

ایک بار جب ای ٹی ایف کی مارکیٹ ویلیو بن جاتی ہے تو ، ہم ان کو ایک دوسرے کے ساتھ جوڑتے ہیں تاکہ ہر کٹر کے اختتام پر کل مارکیٹ ویلیو پیدا کی جاسکے۔ پھر اس کو اس شے کے pct_change طریقہ کار کے ذریعہ واپسی کی قیمت میں تبدیل کیا جاتا ہے۔ اس کے بعد کے کوڈ کی لائنوں میں غلط اندراجات (NaN اور inf عناصر) کو ہٹا دیا جاتا ہے ، اور آخر میں ، مکمل حقوق کے مفاد کی وکر کا حساب لگایا جاتا ہے۔

# mr_spy_iwm.py
 
def create_portfolio_returns(pairs, symbols):
    """Creates a portfolio pandas DataFrame which keeps track of
    the account equity and ultimately generates an equity curve.
    This can be used to generate drawdown and risk/reward ratios."""
     
    # Convenience variables for symbols
    sym1 = symbols[0].lower()
    sym2 = symbols[1].lower()
 
    # Construct the portfolio object with positions information
    # Note that minuses to keep track of shorts!
    print "Constructing a portfolio..."
    portfolio = pd.DataFrame(index=pairs.index)
    portfolio['positions'] = pairs['long_market'] - pairs['short_market']
    portfolio[sym1] = -1.0 * pairs['%s_close' % sym1] * portfolio['positions']
    portfolio[sym2] = pairs['%s_close' % sym2] * portfolio['positions']
    portfolio['total'] = portfolio[sym1] + portfolio[sym2]
 
    # Construct a percentage returns stream and eliminate all 
    # of the NaN and -inf/+inf cells
    print "Constructing the equity curve..."
    portfolio['returns'] = portfolio['total'].pct_change()
    portfolio['returns'].fillna(0.0, inplace=True)
    portfolio['returns'].replace([np.inf, -np.inf], 0.0, inplace=True)
    portfolio['returns'].replace(-1.0, 0.0, inplace=True)
 
    # Calculate the full equity curve
    portfolio['returns'] = (portfolio['returns'] + 1.0).cumprod()
    return portfolio

مرکزی فنکشن ان کو ایک ساتھ جوڑتا ہے۔ دن کے اندر CSV فائل datadir راستے میں ہے۔ براہ کرم مندرجہ ذیل کوڈ کو اپنے مخصوص ڈائرکٹری کی طرف اشارہ کرنے کے لئے یقینی بنائیں۔

اس بات کا تعین کرنے کے لئے کہ حکمت عملی تلاش کے دورانیے کے بارے میں کس طرح حساس ہے ، تلاش کے لئے کارکردگی کے اشارے کی ایک سیریز کا حساب لگانا ضروری ہے۔ میں نے پورٹ فولیو کے حتمی مجموعی منافع کا فیصد کارکردگی کے اشارے اور تلاش کے دائرے کے طور پر منتخب کیا ہے [50,200] ، جس میں 10 کا اضافہ ہوتا ہے۔ آپ ذیل میں دیئے گئے کوڈ میں دیکھ سکتے ہیں کہ پچھلے فنکشن کو اس دائرے میں شامل کیا گیا ہے for لوپ ، دیگر حدیں برقرار ہیں۔ آخری کام یہ ہے کہ matplotlib کا استعمال کرتے ہوئے تلاش کے مقابلے میں واپسیوں کا ایک لکیری گراف بنائیں:

# mr_spy_iwm.py
 
if __name__ == "__main__":
    datadir = '/your/path/to/data/'  # Change this to reflect your data path!
    symbols = ('SPY', 'IWM')
 
    lookbacks = range(50, 210, 10)
    returns = []
 
    # Adjust lookback period from 50 to 200 in increments
    # of 10 in order to produce sensitivities
    for lb in lookbacks: 
        print "Calculating lookback=%s..." % lb
        pairs = create_pairs_dataframe(datadir, symbols)
        pairs = calculate_spread_zscore(pairs, symbols, lookback=lb)
        pairs = create_long_short_market_signals(pairs, symbols, 
                                                z_entry_threshold=2.0, 
                                                z_exit_threshold=1.0)
 
        portfolio = create_portfolio_returns(pairs, symbols)
        returns.append(portfolio.ix[-1]['returns'])
 
    print "Plot the lookback-performance scatterchart..."
    plt.plot(lookbacks, returns, '-o')
    plt.show()

img

اب آپ کو lookbacks اور returns کا چارٹ نظر آئے گا۔ نوٹ کریں کہ lookback میں ایک ٹیگ کی مجموعی ٹیگ کی زیادہ سے زیادہ قیمت ہے، جو کہ 110 k strings کے برابر ہے۔ اگر ہم lookbacks اور returns کے درمیان کوئی تعلق نہیں دیکھتے ہیں تو اس کی وجہ یہ ہے کہ:

SPY-IWM لکیری رجعت سے بچاؤ کے مقابلے میں تلاش کے دورانیے کی حساسیت کا تجزیہ

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

# mr_spy_iwm.py
 
    # This is still within the main function
    print "Plotting the performance charts..."
    fig = plt.figure()
    fig.patch.set_facecolor('white')
 
    ax1 = fig.add_subplot(211,  ylabel='%s growth (%%)' % symbols[0])
    (pairs['%s_close' % symbols[0].lower()].pct_change()+1.0).cumprod().plot(ax=ax1, color='r', lw=2.)
 
    ax2 = fig.add_subplot(212, ylabel='Portfolio value growth (%%)')
    portfolio['returns'].plot(ax=ax2, lw=2.)
 
    fig.show()

مندرجہ ذیل حقوق اور فوائد کے گراف میں 100 دن کی نظرثانی کی مدت ہے:

img

SPY-IWM لکیری رجعت سے بچاؤ کے مقابلے میں تلاش کے دورانیے کی حساسیت کا تجزیہ

براہ کرم نوٹ کریں کہ مالی بحران کے دوران ، 2009 میں ایس پی وائی میں بہت زیادہ کمی واقع ہوئی تھی۔ یہ حکمت عملی اس مرحلے میں بھی ایک ہنگامہ خیز دور میں تھی۔ اس کے علاوہ ، اس بات کا نوٹ کریں کہ اس عرصے کے دوران ایس پی وائی کی مضبوط رجحاناتی نوعیت کے باعث ، جو اسٹینڈرڈ 500 انڈیکس کی عکاسی کرتی ہے ، گذشتہ سال کی کارکردگی خراب ہوگئی ہے۔

نوٹ کریں کہ جب z-score کے منافع کا حساب لگایا جاتا ہے تو ، ہمیں اب بھی زاویہ کی طرف متوجہ ہونے والے انحراف کو مدنظر رکھنا پڑتا ہے۔ اس کے علاوہ ، یہ تمام حساب کتاب بغیر کسی ٹرانزیکشن لاگت کے کیے جاتے ہیں۔ ایک بار جب ان عوامل کو مدنظر رکھا جاتا ہے تو ، یہ حکمت عملی یقینی طور پر بہت خراب کارکردگی کا مظاہرہ کرتی ہے۔ طریقہ کار کی فیس اور سلائڈ پوائنٹس فی الحال غیر یقینی ہیں۔ مزید برآں ، یہ حکمت عملی ای ٹی ایف کی ایک چھوٹی سی تعداد میں تجارت کرنے کی ہے ، جو بھی بہت غیر حقیقی ہے۔

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


متعلقہ

مزید