وسائل لوڈ ہو رہے ہیں... لوڈنگ...

بیک ٹسٹنگ کے مقاصد کے لئے مسلسل فیوچر معاہدے

مصنف:نیکی, تخلیق: 2019-03-18 10:48:28, تازہ کاری:

مستقبل کے معاہدوں کا مختصر جائزہ

فیوچر ایک معاہدہ کی شکل ہے جو دو فریقوں کے مابین مستقبل میں ایک مخصوص تاریخ پر کسی بنیادی اثاثے کی مقدار کی خریداری یا فروخت کے لئے تیار کی گئی ہے۔ اس تاریخ کو ترسیل یا میعاد ختم ہونے کے طور پر جانا جاتا ہے۔ جب اس تاریخ تک پہنچ جاتا ہے تو خریدار کو معاہدے کی تشکیل کی تاریخ پر متفقہ قیمت پر جسمانی بنیادی (یا نقد مساوی) بیچنے والے کو فراہم کرنا ہوگا۔

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

مختلف تبادلے میں فیوچر معاہدوں کے لئے استعمال ہونے والے تمام علامتوں کے کوڈز کی تفصیلی فہرست سی ایس آئی ڈیٹا سائٹ: فیوچر فیکٹس شیٹ پر مل سکتی ہے۔

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

اس مضمون کا مقصد متعدد سیریز کے اس سیٹ سے معاہدوں کے مسلسل سلسلے کی تعمیر کے مختلف طریقوں کا خاکہ پیش کرنا اور ہر تکنیک سے وابستہ تجارت کو اجاگر کرنا ہے۔

ایک مسلسل مستقبل کا معاہدہ بنانا

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

عام طریقے

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

واپس/آگے (پاناما) ایڈجسٹمنٹ

یہ طریقہ متعدد معاہدوں میں فرق کو کم کرتا ہے تاکہ ہر معاہدے کو منتقل کیا جاسکے تاکہ انفرادی ترسیل ہمسایہ معاہدوں میں ہموار طریقے سے شامل ہوں۔ اس طرح ختم ہونے پر پچھلے معاہدوں میں کھولنے / بند ہونے کا مقابلہ ہوتا ہے۔

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

متناسب ایڈجسٹمنٹ

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

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

رول اوور/مستقل سیریز

اس نقطہ نظر کا جوہر یہ ہے کہ ہر معاہدے کے درمیان ہموار منتقلی کو یقینی بنانے کے لئے کئی دنوں میں ہر معاہدے کا ایک لکیری وزن والا تناسب لے کر ایک دوسرے کے بعد آنے والے معاہدوں کا ایک مسلسل معاہدہ بنایا جائے۔

مثال کے طور پر پانچ ہموار دن پر غور کریں۔ دن 1 کی قیمت ، P1 ، دور معاہدے کی قیمت (F1) کے 80٪ اور قریب معاہدے کی قیمت (N1) کے 20٪ کے برابر ہے۔ اسی طرح ، دن 2 کی قیمت P2 = 0.6 × F2 + 0.4 × N2 ہے۔ دن 5 تک ہمارے پاس P5 = 0.0 × F5 + 1.0 × N5 = N5 ہے اور معاہدہ پھر قریب کی قیمت کا تسلسل بن جاتا ہے۔ اس طرح پانچ دن کے بعد معاہدہ آسانی سے دور سے قریب منتقل ہوجاتا ہے۔

رول اوور کے طریقہ کار کا مسئلہ یہ ہے کہ اس میں پانچوں دنوں میں تجارت کی ضرورت ہوتی ہے ، جس سے لین دین کے اخراجات میں اضافہ ہوسکتا ہے۔

اس مسئلے کے لیے اور بھی کم عام طریقے ہیں لیکن ہم یہاں ان سے بچیں گے۔

پائتھون اور پانڈاس میں رول ریٹرن فارمیشن

مضمون کا باقی حصہ مستقل سلسلہ کے طریقہ کار کو نافذ کرنے پر مرکوز ہوگا کیونکہ یہ بیک ٹسٹنگ کے لئے سب سے زیادہ موزوں ہے۔ یہ حکمت عملی پائپ لائن ریسرچ کرنے کا ایک مفید طریقہ ہے۔

ہم ایک مسلسل قیمت سیریز پیدا کرنے کے لئے ڈبلیو ٹی آئی خام تیل قریب اور دور فیوچر معاہدے (علامت CL) کو جوڑنے جارہے ہیں۔ تحریر کے وقت (جنوری 2014) ، قریب معاہدہ CLF2014 (جنوری) ہے اور دور معاہدہ CLG2014 (فروری) ہے۔

مستقبل کے اعداد و شمار کو ڈاؤن لوڈ کرنے کے لئے میں نے Quandl پلگ ان کا استعمال کیا۔ اپنے سسٹم پر صحیح پائیتھون ورچوئل ماحول مرتب کرنے اور ٹرمینل میں درج ذیل ٹائپ کرکے Quandl پیکیج انسٹال کرنے کا یقین کریں۔

import datetime
import numpy as np
import pandas as pd
import Quandl

اہم کام فیوچر_ رول اوور_ ویٹس فنکشن میں کیا جاتا ہے۔ اس کے لئے شروع ہونے کی تاریخ (قریبی معاہدے کی پہلی تاریخ) ، معاہدے کے حل کی تاریخوں (میعاد ختم ہونے کی تاریخیں) ، معاہدوں کی علامتوں اور معاہدے کو رول کرنے کے دنوں کی تعداد (پنج تک ڈیفالٹ) کی ضرورت ہوتی ہے۔ ذیل میں دیئے گئے تبصرے کوڈ کی وضاحت کرتے ہیں:

def futures_rollover_weights(start_date, expiry_dates, contracts, rollover_days=5):
    """This constructs a pandas DataFrame that contains weights (between 0.0 and 1.0)
    of contract positions to hold in order to carry out a rollover of rollover_days
    prior to the expiration of the earliest contract. The matrix can then be
    'multiplied' with another DataFrame containing the settle prices of each
    contract in order to produce a continuous time series futures contract."""

    # Construct a sequence of dates beginning from the earliest contract start
    # date to the end date of the final contract
    dates = pd.date_range(start_date, expiry_dates[-1], freq='B')

    # Create the 'roll weights' DataFrame that will store the multipliers for
    # each contract (between 0.0 and 1.0)
    roll_weights = pd.DataFrame(np.zeros((len(dates), len(contracts))),
                                index=dates, columns=contracts)
    prev_date = roll_weights.index[0]

    # Loop through each contract and create the specific weightings for
    # each contract depending upon the settlement date and rollover_days
    for i, (item, ex_date) in enumerate(expiry_dates.iteritems()):
        if i < len(expiry_dates) - 1:
            roll_weights.ix[prev_date:ex_date - pd.offsets.BDay(), item] = 1
            roll_rng = pd.date_range(end=ex_date - pd.offsets.BDay(),
                                     periods=rollover_days + 1, freq='B')

            # Create a sequence of roll weights (i.e. [0.0,0.2,...,0.8,1.0]
            # and use these to adjust the weightings of each future
            decay_weights = np.linspace(0, 1, rollover_days + 1)
            roll_weights.ix[roll_rng, item] = 1 - decay_weights
            roll_weights.ix[roll_rng, expiry_dates.index[i+1]] = decay_weights
        else:
            roll_weights.ix[prev_date:, item] = 1
        prev_date = ex_date
    return roll_weights

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

if __name__ == "__main__":
    # Download the current Front and Back (near and far) futures contracts
    # for WTI Crude, traded on NYMEX, from Quandl.com. You will need to 
    # adjust the contracts to reflect your current near/far contracts 
    # depending upon the point at which you read this!
    wti_near = Quandl.get("OFDP/FUTURE_CLF2014")
    wti_far = Quandl.get("OFDP/FUTURE_CLG2014")
    wti = pd.DataFrame({'CLF2014': wti_near['Settle'],
                        'CLG2014': wti_far['Settle']}, index=wti_far.index)

    # Create the dictionary of expiry dates for each contract
    expiry_dates = pd.Series({'CLF2014': datetime.datetime(2013, 12, 19),
                              'CLG2014': datetime.datetime(2014, 2, 21)}).order()

    # Obtain the rollover weighting matrix/DataFrame
    weights = futures_rollover_weights(wti_near.index[0], expiry_dates, wti.columns)

    # Construct the continuous future of the WTI CL contracts
    wti_cts = (wti * weights).sum(1).dropna()

    # Output the merged series of contract settle prices
    wti_cts.tail(60)

پیداوار مندرجہ ذیل ہے:

2013-10-14 102.230 2013-10-15 101.240 2013-10-16 102.330 2013-10-17 100.620 2013-10-18 100.990 2013-10-21 99.760 2013-10-22 98.470 2013-10-23 97.000 2013-10-24 97.240 2013-10-25 97.950 ... ... 2013-12-24 99.220 2013-12-26 99.550 2013-12-27 100.320 2013-12-30 99.290 2013-12-31 98.420 2014-01-02 95.440 2014-01-03 93.960 2014-01-06 93.430 2014-01-07 93.670 2014-01-08 92،330 لمبائی: 60، ڈی ٹائپ: فلوٹ64

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


مزید