الگورتھمک ٹریڈنگ کارکردگی کی پیمائش کے لئے شارپ تناسب

مصنف:نیکی, تخلیق: 2019-03-18 13:24:11, تازہ کاری:

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

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

حکمت عملی کے موازنہ اور خطرے کی تشخیص کے یہ مسائل شارپ تناسب کے استعمال کی حوصلہ افزائی کرتے ہیں۔

شارپ تناسب کی تعریف

ولیم فورسیتھ شارپ ایک نوبل انعام یافتہ ماہر معاشیات ہیں ، جنہوں نے کیپٹل اثاثہ جات کی قیمتوں کا تعین کرنے کا ماڈل (سی اے پی ایم) بنانے میں مدد کی اور 1966 میں شارپ تناسب تیار کیا (بعد میں 1994 میں اپ ڈیٹ کیا گیا) ۔

شارپ تناسب S مندرجہ ذیل تعلق کی طرف سے مقرر کیا جاتا ہے:imgجہاں Ra اثاثہ یا حکمت عملی کی مدت کی واپسی ہے اور Rb مناسب بینچ مارک کی مدت کی واپسی ہے۔

تناسب اثاثہ یا حکمت عملی کی زیادہ منافع کی اوسط اوسط کا موازنہ ان منافع کے معیاری انحراف کے ساتھ کرتا ہے۔ اس طرح منافع کی کم اتار چڑھاؤ سے ایک زیادہ شارپ تناسب پیدا ہوگا ، جس میں ایک جیسی منافع کی پیش گوئی کی جائے گی۔

شارپ ریشو جو تجارتی حکمت عملیوں کو انجام دینے والوں کے ذریعہ اکثر حوالہ دیا جاتا ہے وہ سالانہ شارپ ہے ، جس کا حساب کتاب اس تجارتی مدت پر منحصر ہے جس کی واپسی کی پیمائش کی جاتی ہے۔ یہ فرض کرتے ہوئے کہ ایک سال میں N تجارتی ادوار ہیں ، سالانہ شارپ کا حساب مندرجہ ذیل ہے:imgنوٹ کریں کہ شارپ تناسب خود کو اس خاص مدت کی قسم کے شارپ کی بنیاد پر شمار کرنا چاہئے۔ دنوں کی تجارتی مدت پر مبنی حکمت عملی کے ل N N = 252 (کیونکہ ایک سال میں 252 تجارتی دن ہوتے ہیں ، 365 نہیں) ، اور Ra ، Rb روزانہ واپسی ہونا چاہئے۔ اسی طرح گھنٹوں کے لئے N = 252 × 6.5 = 1638 ، N = 252 × 24 = 6048 نہیں ، کیونکہ تجارتی دن میں صرف 6.5 گھنٹے ہوتے ہیں۔

بینچ مارک شامل کرنا

شارپ تناسب کے لئے مندرجہ بالا فارمولہ ایک بینچ مارک کے استعمال کا اشارہ کرتا ہے۔ ایک بینچ مارک ایک yardstick یا obstacle کے طور پر استعمال کیا جاتا ہے جس پر غور کرنے کے قابل ہونے کے لئے کسی خاص حکمت عملی پر قابو پانا ضروری ہے۔ مثال کے طور پر ، امریکی بڑے کیپ ایکویٹی کا استعمال کرتے ہوئے ایک سادہ لمبی حکمت عملی کو اوسطا S & P500 انڈیکس کو شکست دینے کی امید کرنی چاہئے ، یا کم اتار چڑھاؤ کے ل match اس سے ملنا چاہئے۔

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

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

حدود

مقداری فنانس کے اندر شارپ تناسب کے پھیلاؤ کے باوجود ، اسے کچھ حدود کا سامنا ہے۔

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

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

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

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

عملی استعمال اور مثالیں

ایک واضح سوال جو اس مضمون میں اب تک بے جواب رہا ہے وہ یہ ہے کہ ایک حکمت عملی کے لئے ایک اچھا شارپ تناسب کیا ہے؟۔ عملی طور پر ، آپ کو کسی بھی حکمت عملی کو نظرانداز کرنا چاہئے جس میں سالانہ شارپ تناسب S<1 ہے ، لین دین کے اخراجات کے بعد۔ مقداری ہیج فنڈز کسی بھی حکمت عملی کو نظرانداز کرتے ہیں جس میں شارپ تناسب S<2 ہے۔ ایک نمایاں مقداری ہیج فنڈ جس سے میں واقف ہوں وہ تحقیق کے دوران ایسی حکمت عملیوں پر بھی غور نہیں کرے گا۔ بطور خوردہ الگورتھمک تاجر ، اگر آپ شارپ تناسب S>2 حاصل کرسکتے ہیں تو آپ بہت اچھی طرح سے کر رہے ہیں۔

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

شارپ تناسب کی مثالیں

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

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

import datetime
import numpy as np
import pandas as pd
import urllib2


def get_historic_data(ticker,
                      start_date=(2000,1,1),
                      end_date=datetime.date.today().timetuple()[0:3]):
    """
    Obtains data from Yahoo Finance and adds it to a pandas DataFrame object.

    ticker: Yahoo Finance ticker symbol, e.g. "GOOG" for Google, Inc.
    start_date: Start date in (YYYY, M, D) format
    end_date: End date in (YYYY, M, D) format
    """

    # Construct the Yahoo URL with the correct integer query parameters
    # for start and end dates. Note that some parameters are zero-based!
    yahoo_url = "http://ichart.finance.yahoo.com/table.csv?s=%s&a=%s&b=%s&c=%s&d=%s&e=%s&f=%s" % \
        (ticker, start_date[1] - 1, start_date[2], start_date[0], end_date[1] - 1, end_date[2], end_date[0])
    
    # Try connecting to Yahoo Finance and obtaining the data
    # On failure, print an error message
    try:
        yf_data = urllib2.urlopen(yahoo_url).readlines()
    except Exception, e:
        print "Could not download Yahoo data: %s" % e

    # Create the (temporary) Python data structures to store
    # the historical data
    date_list = []
    hist_data = [[] for i in range(6)]

    # Format and copy the raw text data into datetime objects
    # and floating point values (still in native Python lists)
    for day in yf_data[1:]:  # Avoid the header line in the CSV
        headers = day.rstrip().split(',')
        date_list.append(datetime.datetime.strptime(headers[0],'%Y-%m-%d'))
        for i, header in enumerate(headers[1:]):
            hist_data[i].append(float(header))

    # Create a Python dictionary of the lists and then use that to
    # form a sorted Pandas DataFrame of the historical data
    hist_data = dict(zip(['open', 'high', 'low', 'close', 'volume', 'adj_close'], hist_data))
    pdf = pd.DataFrame(hist_data, index=pd.Index(date_list)).sort()

    return pdf

def annualised_sharpe(returns, N=252):
	"""
    Calculate the annualised Sharpe ratio of a returns stream 
    based on a number of trading periods, N. N defaults to 252,
    which then assumes a stream of daily returns.

    The function assumes that the returns are the excess of 
    those compared to a benchmark.
    """
    return np.sqrt(N) * returns.mean() / returns.std()

اب جب کہ ہمارے پاس یاہو فنانس سے ڈیٹا حاصل کرنے اور سالانہ شارپ تناسب کا حساب لگانے کی صلاحیت ہے ، ہم دو حصص کے لئے خرید و فروخت کی حکمت عملی آزما سکتے ہیں۔ ہم گوگل (GOOG) اور گولڈمین سیکس (GS) کا استعمال 1 جنوری 2000 سے 29 مئی 2013 تک کریں گے (جب میں نے یہ مضمون لکھا تھا!) ۔

ہم ایک اضافی مددگار فنکشن تشکیل دے سکتے ہیں جو ہمیں ایک ہی (ہارڈ کوڈ) مدت کے لئے متعدد ایکویٹیز میں شارپ خریدنے اور رکھنے کو تیزی سے دیکھنے کی اجازت دیتا ہے۔

def equity_sharpe(ticker):
    """
    Calculates the annualised Sharpe ratio based on the daily
    returns of an equity ticker symbol listed in Yahoo Finance.

    The dates have been hardcoded here for the QuantStart article 
    on Sharpe ratios.
    """

    # Obtain the equities daily historic data for the desired time period
    # and add to a pandas DataFrame
    pdf = get_historic_data(ticker, start_date=(2000,1,1), end_date=(2013,5,29))

    # Use the percentage change method to easily calculate daily returns
    pdf['daily_ret'] = pdf['adj_close'].pct_change()

    # Assume an average annual risk-free rate over the period of 5%
    pdf['excess_daily_ret'] = pdf['daily_ret'] - 0.05/252

    # Return the annualised Sharpe ratio based on the excess daily returns
    return annualised_sharpe(pdf['excess_daily_ret'])

گوگل کے لئے، خریدنے اور رکھنے کے لئے شارپ تناسب 0.7501 ہے۔ گولڈمین سیکس کے لئے یہ 0.2178 ہے:

  • equity_sharpe ((GOOG) 0.75013831274645904

  • equity_sharpe ((GS) 0.21777027767830823

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

اس طرح کی حکمت عملی کے سالانہ شارپ تناسب کا حساب لگانے کے ل we ہم ایس پی وائی کے لئے تاریخی قیمتیں حاصل کریں گے اور پچھلے اسٹاک کی طرح ہی فیصد منافع کا حساب لگائیں گے ، اس استثناء کے ساتھ کہ ہم خطرہ سے پاک بینچ مارک کا استعمال نہیں کریں گے۔ ہم روزانہ خالص منافع کا حساب لگائیں گے جس میں طویل اور مختصر منافع کے مابین فرق کو گھٹانا اور پھر 2 سے تقسیم کرنا ضروری ہے ، کیونکہ اب ہمارے پاس دوگنا تجارتی سرمایہ ہے۔ اس کے لئے پائیون / پانڈاس کوڈ یہ ہے:

def market_neutral_sharpe(ticker, benchmark):
    """
    Calculates the annualised Sharpe ratio of a market
    neutral long/short strategy inolving the long of 'ticker'
    with a corresponding short of the 'benchmark'.
    """

    # Get historic data for both a symbol/ticker and a benchmark ticker
    # The dates have been hardcoded, but you can modify them as you see fit!
    tick = get_historic_data(ticker, start_date=(2000,1,1), end_date=(2013,5,29))
    bench = get_historic_data(benchmark, start_date=(2000,1,1), end_date=(2013,5,29))
    
    # Calculate the percentage returns on each of the time series
    tick['daily_ret'] = tick['adj_close'].pct_change()
    bench['daily_ret'] = bench['adj_close'].pct_change()
    
    # Create a new DataFrame to store the strategy information
    # The net returns are (long - short)/2, since there is twice 
    # trading capital for this strategy
    strat = pd.DataFrame(index=tick.index)
    strat['net_ret'] = (tick['daily_ret'] - bench['daily_ret'])/2.0
    
    # Return the annualised Sharpe ratio for this strategy
    return annualised_sharpe(strat['net_ret'])

گوگل کے لئے طویل / مختصر مارکیٹ غیر جانبدار حکمت عملی کے لئے شارپ تناسب 0.7597 ہے۔ گولڈمین سیکس کے لئے یہ 0.2999 ہے:

  • مارکیٹ_نیٹرل_شیرپ ((GOOG، SPY) 0.75966612163452329

  • مارکیٹ_نیٹرل_شیرپ ((GS، SPY) 0.29991401047248328 اگرچہ شارپ تناسب کو الگورتھم ٹریڈنگ میں تقریبا everywhere ہر جگہ استعمال کیا جاتا ہے ، لیکن ہمیں کارکردگی اور خطرے کی دیگر پیمائش پر بھی غور کرنے کی ضرورت ہے۔ بعد کے مضامین میں ہم ڈراؤونگ پر تبادلہ خیال کریں گے اور وہ حکمت عملی چلانے یا نہ چلانے کے فیصلے کو کس طرح متاثر کرتے ہیں۔


مزید