گزشتہ مضمون میںhttps://www.fmz.com/digest-topic/4187ہم نے تجارت کی حکمت عملی کو جوڑنے کا تعارف کرایا اور دکھایا کہ کس طرح ڈیٹا اور ریاضیاتی تجزیہ کا استعمال کرتے ہوئے تجارتی حکمت عملی کو تخلیق اور خود کار طریقے سے بنایا جاسکتا ہے۔
کثیر خالی متوازن منافع کی حکمت عملی ایک باسکٹ ٹریڈنگ اشارے پر لاگو ہونے والی جوڑی ٹریڈنگ کی حکمت عملی کی ایک قدرتی توسیع ہے۔ یہ خاص طور پر مختلف قسم کے اور باہمی طور پر منسلک ٹریڈنگ مارکیٹوں جیسے ڈیجیٹل کرنسی مارکیٹوں اور اجناس کے مستقبل کی مارکیٹوں میں لاگو ہوتا ہے۔
کثیر مقصود متوازن حکمت عملی میں ایک ہی وقت میں کثیر اور خالی ٹوکری کے اشارے کی تجارت کی جاتی ہے۔ اس طرح کے تجارت کی طرح ، اس بات کا تعین کیا جاتا ہے کہ کس قسم کے سرمایہ کاری کے اشارے کی قیمت سستی ہے اور کس قسم کے سرمایہ کاری کے اشارے کی قیمت مہنگی ہے۔ اس کے برعکس ، کثیر مقصود متوازن حکمت عملی تمام سرمایہ کاری کے اشارے کو ایک منتخب اسٹاک پول میں صف بندی کرتی ہے تاکہ یہ معلوم کیا جاسکے کہ کون سے سرمایہ کاری کے اشارے نسبتا cheap سستے یا مہنگے ہیں۔ اس کے بعد ، یہ کثیر مقصود سے پہلے n سرمایہ کاری کے اشارے کی درجہ بندی پر مبنی ہے ، اور اسی طرح کی رقم کے لئے کثیر مقصود کے نیچے n سرمایہ کاری کے اشارے کو خالی کرتا ہے۔
کیا آپ کو یاد ہے کہ ہم نے پہلے کہا تھا کہ جوڑے کی تجارت ایک مارکیٹ غیر جانبدار حکمت عملی ہے؟ اسی طرح کثیر خالی توازن کے حقوق اور فوائد کی حکمت عملی بھی ہے کیونکہ کثیر اور خالی پوزیشنوں کی مساوات اس بات کا یقین کرتی ہے کہ حکمت عملی مارکیٹ میں غیر جانبدار رہے گی (مارکیٹ کی اتار چڑھاؤ سے متاثر نہیں ہوگی) ۔ یہ حکمت عملی بھی شماریاتی طور پر مستحکم ہے۔ سرمایہ کاری کے اشارے پر درجہ بندی کرکے اور متعدد پوزیشنوں کو تھامنے سے ، آپ اپنے درجہ بندی کے ماڈل پر ایک بار کی بجائے متعدد تجارتیں کرسکتے ہیں۔ آپ محض اپنے درجہ بندی کے معیار پر شرط لگاتے ہیں۔
درجہ بندی کا نظام ایک ایسا ماڈل ہے جس کے تحت ہر سرمایہ کاری کے اشارے کو ترجیح دی جاسکتی ہے۔ اس میں عوامل ہو سکتے ہیں قدر کے عوامل، تکنیکی اشارے، قیمتوں کا تعین کرنے والے ماڈل یا ان سب کے مجموعے۔ مثال کے طور پر، آپ ٹرینڈ ٹریک کرنے والے سرمایہ کاری کے اشارے کی ایک سیریز کو درجہ بندی کرنے کے لئے موشن اشارے استعمال کرسکتے ہیں: سب سے زیادہ رفتار کے ساتھ سرمایہ کاری کے اشارے کے ساتھ توقع کی جاتی ہے کہ وہ اچھی کارکردگی کا مظاہرہ کرتے رہیں اور سب سے زیادہ درجہ بندی کریں؛ سب سے کم موشن والے سرمایہ کاری کا بدترین کارکردگی کا مظاہرہ اور سب سے کم منافع ہے۔
اس حکمت عملی کی کامیابی تقریباً مکمل طور پر اس درجہ بندی کے نظام پر منحصر ہے جو آپ استعمال کرتے ہیں، یعنی آپ کا درجہ بندی کا نظام اعلی کارکردگی والے سرمایہ کاروں کو کم کارکردگی والے سرمایہ کاروں سے الگ کر سکتا ہے تاکہ زیادہ خالی سرمایہ کاروں کی حکمت عملی کی واپسی کو بہتر طور پر حاصل کیا جا سکے۔ اس لیے درجہ بندی کا نظام بنانا بہت ضروری ہے۔
ایک بار جب ہم درجہ بندی کا نظام طے کر لیتے ہیں تو ، ہم واضح طور پر اس سے فائدہ اٹھانے کی امید کرتے ہیں۔ ہم ایسا کرتے ہیں تاکہ زیادہ سے زیادہ درجہ بندی والے سرمایہ کاروں کو ایک ہی مقدار میں سرمایہ کاری کی جا سکے اور درجہ بندی کے نچلے حصے میں خالی سرمایہ کاری کی جا سکے۔ اس سے یہ یقینی بنتا ہے کہ حکمت عملی صرف درجہ بندی کی کیفیت کے مطابق تناسب سے پیسہ کمائے گی اور یہ "مارکیٹ غیر جانبدار" ہوگی۔
فرض کریں کہ آپ تمام سرمایہ کاری کے اشارے m پر درجہ بندی کر رہے ہیں ، $ n کی سرمایہ کاری کر رہے ہیں ، اور آپ کو مجموعی طور پر 2p ((جس میں m> 2p) پوزیشنیں رکھنے کی خواہش ہے۔ اگر درجہ بندی کے اشارے 1 میں بدترین کارکردگی کا مظاہرہ کرنے کی توقع کی جاتی ہے تو ، درجہ بندی کے اشارے m میں بہترین کارکردگی کا مظاہرہ کرنے کی توقع ہے:
آپ سرمایہ کاری کے اشارے کو ترتیب دیں گے، جیسے: 1،...، p، اور 2 / 2p ڈالر کی سرمایہ کاری کے اشارے کو خالی کریں گے.
آپ سرمایہ کاری کے نشان کو ترتیب دیں گے: m-p...، اس طرح کی جگہ میں m، اور آپ کو ایک سرمایہ کاری کے نشان کو n / 2p ڈالر سے زیادہ بنانے کے لئے.
** نوٹ: ** چونکہ قیمتوں میں اضافے کی وجہ سے سرمایہ کاری کی قیمتیں ہمیشہ n / 2p کو یکساں طور پر تقسیم نہیں کرتی ہیں ، اور کچھ سرمایہ کاری کی قیمتوں کو پوری تعداد میں خریدنا ضروری ہے ، لہذا کچھ ناقص الگورتھم ہوں گے ، اور الگورتھم کو اس تعداد کے قریب جتنا ممکن ہو سکے قریب آنا چاہئے۔ n = 100000 اور p = 500 پر چلنے والی حکمت عملی کے ل we ، ہم دیکھتے ہیں:
n/2p = 100000/1000 = 100
یہ قیمتوں کے 100 سے زیادہ پوائنٹس کے ساتھ ایک بہت بڑا مسئلہ بناتا ہے (جیسے کہ اجناس کے مستقبل کے بازار) کیونکہ آپ پوائنٹس کی قیمت پر پوزیشن نہیں کھول سکتے ہیں (ڈیجیٹل کرنسی مارکیٹ میں کوئی مسئلہ نہیں ہے) ۔ ہم پوائنٹس کی قیمتوں میں کمی یا سرمایہ میں اضافہ کرکے اس صورتحال کو کم کرتے ہیں۔
سب سے پہلے، کام کو ہموار کرنے کے لئے، ہمیں اپنے تحقیق کے ماحول کی تعمیر کرنے کی ضرورت ہے، اور اس مضمون میں ہم انوینٹرز کو کیوٹیفیکیشن پلیٹ فارم کا استعمال کرتے ہیں.FMZ.COMاس کے علاوہ ، اس کے پاس ایک ایپلی کیشن ہے جس کا نام ڈوکر ہے۔ اس کے علاوہ ، اس کے پاس ایک ایپلی کیشن ہے جس کا نام ڈوکر ہے۔ اس کے علاوہ ، اس کے پاس ایک ایپلی کیشن ہے جس کا نام ڈوکر ہے۔
ڈوکر سسٹم کو مینیجر سسٹم کہا جاتا ہے۔
اس کے علاوہ ، آپ کو یہ بھی جاننے کی ضرورت ہے کہ کس طرح ہاسٹلروں اور روبوٹ کو تعینات کرنا ہے۔https://www.fmz.com/bbs-topic/4140
اگر آپ اپنے کلاؤڈ کمپیوٹنگ سرورز کی تعیناتی کے لئے میزبان خریدنا چاہتے ہیں تو ، آپ کو اس مضمون کا حوالہ دینا چاہئے:https://www.fmz.com/bbs-topic/2848
ایک بار جب ہم نے کلاؤڈ سروسز اور مینیجر سسٹم کو کامیابی کے ساتھ تعینات کرلیا ہے، تو اگلا مرحلہ یہ ہے کہ ہم اب تک کی سب سے بڑی Python ٹیمپلیٹ: Anaconda کو انسٹال کریں.
تمام متعلقہ پروگرام کے ماحول (تبعیت لائبریری، ورژن مینجمنٹ وغیرہ) کو لاگو کرنے کے لئے سب سے آسان طریقہ Anaconda کا استعمال کرنا ہے۔ یہ ایک پیکڈ پیٹن ڈیٹا سائنس ماحولیاتی نظام اور انحصار لائبریری مینیجر ہے۔
Anaconda انسٹال کرنے کے لئے، براہ کرم Anaconda کی سرکاری گائیڈ دیکھیں:https://www.anaconda.com/distribution/
本文还将用到numpy和pandas这两个目前在Python科学计算方面十分流行且重要的库.
مندرجہ بالا بنیادی کام بھی میرے پچھلے مضمون میں حوالہ دیتے ہیں، جہاں میں نے Anaconda ماحول اور دونوں لائبریریوں، numpy اور pandas کو ترتیب دینے کے بارے میں بات کی تھی، تفصیلات کے لئے ملاحظہ کریں:https://www.fmz.com/digest-topic/4169
ہم بے ترتیب سرمایہ کاری کے اشارے اور بے ترتیب عوامل پیدا کرتے ہیں اور ان پر درجہ بندی کرتے ہیں۔ آئیے فرض کریں کہ ہماری مستقبل کی واپسی دراصل ان عوامل کی قیمتوں پر منحصر ہے۔
import numpy as np
import statsmodels.api as sm
import scipy.stats as stats
import scipy
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
## PROBLEM SETUP ##
# Generate stocks and a random factor value for them
stock_names = ['stock ' + str(x) for x in range(10000)]
current_factor_values = np.random.normal(0, 1, 10000)
# Generate future returns for these are dependent on our factor values
future_returns = current_factor_values + np.random.normal(0, 1, 10000)
# Put both the factor values and returns into one dataframe
data = pd.DataFrame(index = stock_names, columns=['Factor Value','Returns'])
data['Factor Value'] = current_factor_values
data['Returns'] = future_returns
# Take a look
data.head(10)
اب جب کہ ہمارے پاس فیکٹر ویلیو اور ریٹرن ہے، ہم دیکھ سکتے ہیں کہ اگر ہم سرمایہ کاری کے اشارے کو فیکٹر ویلیو کے لحاظ سے درجہ بندی کرتے ہیں تو کیا ہوتا ہے، پھر زیادہ اور خالی پوزیشنیں کھولی جاتی ہیں۔
# Rank stocks
ranked_data = data.sort_values('Factor Value')
# Compute the returns of each basket with a basket size 500, so total (10000/500) baskets
number_of_baskets = int(10000/500)
basket_returns = np.zeros(number_of_baskets)
for i in range(number_of_baskets):
start = i * 500
end = i * 500 + 500
basket_returns[i] = ranked_data[start:end]['Returns'].mean()
# Plot the returns of each basket
plt.figure(figsize=(15,7))
plt.bar(range(number_of_baskets), basket_returns)
plt.ylabel('Returns')
plt.xlabel('Basket')
plt.legend(['Returns of Each Basket'])
plt.show()
ہماری حکمت عملی ایک باسکٹ انویسٹمنٹ کے پول میں سب سے اوپر کی پوزیشن حاصل کرنے کی ہے؛ 10th کی پوزیشن حاصل کرنے کے لئے؛ اس حکمت عملی کے فوائد یہ ہیں:
basket_returns[number_of_baskets-1] - basket_returns[0]
اس کا نتیجہ ہے: 4.172
ہم نے اپنی رینکنگ ماڈل پر پیسہ لگایا تاکہ وہ کم کارکردگی کا مظاہرہ کرنے والے سرمایہ کاروں سے اعلی کارکردگی کا مظاہرہ کرنے والے سرمایہ کاروں کو الگ کرسکیں۔
درجے کی حکمت عملی کا جائزہ لینے کے طریقوں کے بارے میں بات کریں گے۔ درجہ بندی پر مبنی سود کمانے کا فائدہ یہ ہے کہ یہ مارکیٹ کی بے ضابطگی سے متاثر نہیں ہوتا ہے ، بلکہ اس کا فائدہ اٹھایا جاسکتا ہے۔
ہم اسٹینڈرڈ 500 میں مختلف صنعتوں کے 32 اسٹاک کے اعداد و شمار کو لوڈ کرتے ہیں اور ان کی درجہ بندی کرنے کی کوشش کرتے ہیں۔
from backtester.dataSource.yahoo_data_source import YahooStockDataSource
from datetime import datetime
startDateStr = '2010/01/01'
endDateStr = '2017/12/31'
cachedFolderName = '/Users/chandinijain/Auquan/yahooData/'
dataSetId = 'testLongShortTrading'
instrumentIds = ['ABT','AKS','AMGN','AMD','AXP','BK','BSX',
'CMCSA','CVS','DIS','EA','EOG','GLW','HAL',
'HD','LOW','KO','LLY','MCD','MET','NEM',
'PEP','PG','M','SWN','T','TGT',
'TWX','TXN','USB','VZ','WFC']
ds = YahooStockDataSource(cachedFolderName=cachedFolderName,
dataSetId=dataSetId,
instrumentIds=instrumentIds,
startDateStr=startDateStr,
endDateStr=endDateStr,
event='history')
price = 'adjClose'
آئیے ایک ماہ کے وقت کے دوران معیاری رفتار کے اشارے کے ساتھ درجہ بندی کی بنیاد پر.
## Define normalized momentum
def momentum(dataDf, period):
return dataDf.sub(dataDf.shift(period), fill_value=0) / dataDf.iloc[-1]
## Load relevant prices in a dataframe
data = ds.getBookDataByFeature()[‘Adj Close’]
#Let's load momentum score and returns into separate dataframes
index = data.index
mscores = pd.DataFrame(index=index,columns=assetList)
mscores = momentum(data, 30)
returns = pd.DataFrame(index=index,columns=assetList)
day = 30
اب ہم اپنے اسٹاک کے رویے کا تجزیہ کریں گے اور دیکھیں گے کہ ہمارے اسٹاک مارکیٹ میں ہمارے منتخب کردہ درجہ بندی کے عوامل میں کس طرح کام کرتے ہیں۔
اسٹاک کا رویہ
ہم دیکھتے ہیں کہ ہمارے منتخب کردہ باسکٹ اسٹاک ہمارے درجہ بندی کے ماڈل میں کس طرح کام کرتے ہیں۔ اس کے لئے ، آئیے ہم تمام اسٹاک کی ایک ہفتہ طویل مدتی واپسی کا حساب لگائیں۔ پھر ہم ہر اسٹاک کے 1 ہفتہ پہلے کی واپسی کے ساتھ پچھلے 30 دن کی حرکیات کے ساتھ تعلقات دیکھ سکتے ہیں۔ مثبت متعلقہ اسٹاک رجحان کی پیروی کرتے ہیں اور منفی متعلقہ اسٹاک اوسط واپسی کرتے ہیں۔
# Calculate Forward returns
forward_return_day = 5
returns = data.shift(-forward_return_day)/data -1
returns.dropna(inplace = True)
# Calculate correlations between momentum and returns
correlations = pd.DataFrame(index = returns.columns, columns = [‘Scores’, ‘pvalues’])
mscores = mscores[mscores.index.isin(returns.index)]
for i in correlations.index:
score, pvalue = stats.spearmanr(mscores[i], returns[i])
correlations[‘pvalues’].loc[i] = pvalue
correlations[‘Scores’].loc[i] = score
correlations.dropna(inplace = True)
correlations.sort_values(‘Scores’, inplace=True)
l = correlations.index.size
plt.figure(figsize=(15,7))
plt.bar(range(1,1+l),correlations[‘Scores’])
plt.xlabel(‘Stocks’)
plt.xlim((1, l+1))
plt.xticks(range(1,1+l), correlations.index)
plt.legend([‘Correlation over All Data’])
plt.ylabel(‘Correlation between %s day Momentum Scores and %s-day forward returns by Stock’%(day,forward_return_day));
plt.show()
ہمارے تمام اسٹاک کسی نہ کسی حد تک یکساں واپسی کرتے ہیں! (ظاہر ہے کہ ہمارے منتخب کردہ کائنات کا کام اسی طرح ہوتا ہے) اس سے ہمیں پتہ چلتا ہے کہ اگر اسٹاک کی رفتار تجزیہ میں درجہ بندی بہت زیادہ ہے تو ، ہمیں اس کی توقع کرنی چاہئے کہ وہ اگلے ہفتے خراب کارکردگی کا مظاہرہ کرے گا۔
اگلا، ہمیں اپنے درجہ بندی کے سکور اور مجموعی طور پر مارکیٹ کے آگے کی واپسی کے درمیان تعلق کو دیکھنے کی ضرورت ہے، یعنی توقع کی واپسی کی شرح کا اندازہ ہمارے درجہ بندی کے عوامل کے ساتھ کیا تعلق ہے، کیا اعلی متعلقہ درجہ بندی خراب رشتہ دار واپسی کا اندازہ کرتی ہے، یا اس کے برعکس؟
اس کے لیے ہم نے تمام اسٹاک کی 30 دن کی حرکیات اور ایک ہفتہ دور کی واپسی کے درمیان روزانہ کی وابستگی کا حساب لگایا ہے۔
correl_scores = pd.DataFrame(index = returns.index.intersection(mscores.index), columns = [‘Scores’, ‘pvalues’])
for i in correl_scores.index:
score, pvalue = stats.spearmanr(mscores.loc[i], returns.loc[i])
correl_scores[‘pvalues’].loc[i] = pvalue
correl_scores[‘Scores’].loc[i] = score
correl_scores.dropna(inplace = True)
l = correl_scores.index.size
plt.figure(figsize=(15,7))
plt.bar(range(1,1+l),correl_scores[‘Scores’])
plt.hlines(np.mean(correl_scores[‘Scores’]), 1,l+1, colors=’r’, linestyles=’dashed’)
plt.xlabel(‘Day’)
plt.xlim((1, l+1))
plt.legend([‘Mean Correlation over All Data’, ‘Daily Rank Correlation’])
plt.ylabel(‘Rank correlation between %s day Momentum Scores and %s-day forward returns’%(day,forward_return_day));
plt.show()
روزمرہ کی متعلقہ کارکردگی بہت شور مچاتی ہے ، لیکن بہت ہلکی (یہ توقع کی جاتی ہے ، کیونکہ ہم نے کہا ہے کہ تمام اسٹاک میں برابر واپسی ہوگی) ۔ ہم ایک ماہ پہلے کی اوسط ماہانہ متعلقہ کارکردگی کو بھی دیکھیں گے۔
monthly_mean_correl =correl_scores['Scores'].astype(float).resample('M').mean()
plt.figure(figsize=(15,7))
plt.bar(range(1,len(monthly_mean_correl)+1), monthly_mean_correl)
plt.hlines(np.mean(monthly_mean_correl), 1,len(monthly_mean_correl)+1, colors='r', linestyles='dashed')
plt.xlabel('Month')
plt.xlim((1, len(monthly_mean_correl)+1))
plt.legend(['Mean Correlation over All Data', 'Monthly Rank Correlation'])
plt.ylabel('Rank correlation between %s day Momentum Scores and %s-day forward returns'%(day,forward_return_day));
plt.show()
ہم دیکھ سکتے ہیں کہ اوسطا تعلق ایک بار پھر قدرے منفی ہے، لیکن ہر مہینے میں بہت زیادہ مختلف ہوتا ہے۔
ہم نے اپنے درجہ بندی سے ایک باسکٹ اسٹاک کی واپسی کا حساب لگایا ہے۔ اگر ہم تمام اسٹاک کو درجہ بندی کرتے ہیں اور انہیں این این گروپوں میں تقسیم کرتے ہیں تو ہر گروپ کی اوسط واپسی کیا ہوگی؟
پہلا مرحلہ ایک فنکشن بنانا ہے جو ہر مہینے میں دی گئی ہر ٹوکری کے لئے اوسط واپسی اور درجہ بندی کے عوامل دے گا۔
def compute_basket_returns(factor, forward_returns, number_of_baskets, index):
data = pd.concat([factor.loc[index],forward_returns.loc[index]], axis=1)
# Rank the equities on the factor values
data.columns = ['Factor Value', 'Forward Returns']
data.sort_values('Factor Value', inplace=True)
# How many equities per basket
equities_per_basket = np.floor(len(data.index) / number_of_baskets)
basket_returns = np.zeros(number_of_baskets)
# Compute the returns of each basket
for i in range(number_of_baskets):
start = i * equities_per_basket
if i == number_of_baskets - 1:
# Handle having a few extra in the last basket when our number of equities doesn't divide well
end = len(data.index) - 1
else:
end = i * equities_per_basket + equities_per_basket
# Actually compute the mean returns for each basket
#s = data.index.iloc[start]
#e = data.index.iloc[end]
basket_returns[i] = data.iloc[int(start):int(end)]['Forward Returns'].mean()
return basket_returns
ہم اس سکور کے مطابق اسٹاک کی درجہ بندی کرتے وقت ہر ٹوکری کی اوسط واپسی کا حساب لگاتے ہیں۔ اس سے ہمیں ان کے تعلقات کو طویل عرصے تک سمجھنے میں مدد ملنی چاہئے۔
number_of_baskets = 8
mean_basket_returns = np.zeros(number_of_baskets)
resampled_scores = mscores.astype(float).resample('2D').last()
resampled_prices = data.astype(float).resample('2D').last()
resampled_scores.dropna(inplace=True)
resampled_prices.dropna(inplace=True)
forward_returns = resampled_prices.shift(-1)/resampled_prices -1
forward_returns.dropna(inplace = True)
for m in forward_returns.index.intersection(resampled_scores.index):
basket_returns = compute_basket_returns(resampled_scores, forward_returns, number_of_baskets, m)
mean_basket_returns += basket_returns
mean_basket_returns /= l
print(mean_basket_returns)
# Plot the returns of each basket
plt.figure(figsize=(15,7))
plt.bar(range(number_of_baskets), mean_basket_returns)
plt.ylabel('Returns')
plt.xlabel('Basket')
plt.legend(['Returns of Each Basket'])
plt.show()
اس کے علاوہ ، ہم نے ایک بار پھر اس بات کا یقین کرلیا ہے کہ ہم اعلی کارکردگی اور کم کارکردگی کو الگ کر سکتے ہیں۔
یقیناً یہ صرف اوسط ہیں۔ یہ سمجھنے کے لیے کہ یہ کتنا متفق ہے اور ہم تجارت کرنے کے لیے تیار ہیں یا نہیں، ہمیں وقت کے ساتھ ساتھ اس کے بارے میں سوچنے کے طریقے اور رویے کو تبدیل کرنا چاہیے۔ اگلا، ہم ان کے پہلے دو سالوں کے ماہانہ سود کے فرق (کیج) کو دیکھیں گے۔ ہم مزید تبدیلیاں دیکھ سکتے ہیں اور مزید تجزیہ کر سکتے ہیں تاکہ یہ معلوم کیا جا سکے کہ کیا یہ ڈائنامک اسکور تجارت کے قابل ہے۔
total_months = mscores.resample('M').last().index
months_to_plot = 24
monthly_index = total_months[:months_to_plot+1]
mean_basket_returns = np.zeros(number_of_baskets)
strategy_returns = pd.Series(index = monthly_index)
f, axarr = plt.subplots(1+int(monthly_index.size/6), 6,figsize=(18, 15))
for month in range(1, monthly_index.size):
temp_returns = forward_returns.loc[monthly_index[month-1]:monthly_index[month]]
temp_scores = resampled_scores.loc[monthly_index[month-1]:monthly_index[month]]
for m in temp_returns.index.intersection(temp_scores.index):
basket_returns = compute_basket_returns(temp_scores, temp_returns, number_of_baskets, m)
mean_basket_returns += basket_returns
strategy_returns[monthly_index[month-1]] = mean_basket_returns[ number_of_baskets-1] - mean_basket_returns[0]
mean_basket_returns /= temp_returns.index.intersection(temp_scores.index).size
r = int(np.floor((month-1) / 6))
c = (month-1) % 6
axarr[r, c].bar(range(number_of_baskets), mean_basket_returns)
axarr[r, c].xaxis.set_visible(False)
axarr[r, c].set_title('Month ' + str(month))
plt.show()
plt.figure(figsize=(15,7))
plt.plot(strategy_returns)
plt.ylabel(‘Returns’)
plt.xlabel(‘Month’)
plt.plot(strategy_returns.cumsum())
plt.legend([‘Monthly Strategy Returns’,’Cumulative Strategy Returns’])
plt.show()
آخر میں، اگر ہم آخری ٹوکری کو اور ہر مہینے پہلی ٹوکری کو خالی کرتے ہیں، تو آئیے واپسی پر نظر ڈالتے ہیں (یہ فرض کرتے ہوئے کہ ہر سیکیورٹی کے لئے سرمایہ کی تقسیم برابر ہے)
total_return = strategy_returns.sum()
ann_return = 100*((1 + total_return)**(12.0 /float(strategy_returns.index.size))-1)
print('Annual Returns: %.2f%%'%ann_return)
سالانہ واپسی کی شرح: 5.03٪
ہم دیکھتے ہیں کہ ہمارے پاس ایک بہت کمزور درجہ بندی کا نظام ہے جو صرف اعلی کارکردگی کا مظاہرہ کرنے والے اسٹاک کو کم کارکردگی کا مظاہرہ کرنے والے اسٹاک سے تھوڑا سا الگ کرتا ہے۔ اس کے علاوہ ، یہ درجہ بندی کا نظام مستقل نہیں ہے اور ہر ماہ بہت زیادہ مختلف ہوتا ہے۔
ایک کثیر الاضلاع متوازن مفاد کی حکمت عملی کو لاگو کرنے کے لئے، آپ کو صرف درجہ بندی کا طریقہ کار کا تعین کرنے کی ضرورت ہے۔ اس کے بعد سب کچھ مکینیکل ہے۔ ایک بار جب آپ کے پاس کثیر الاضلاع متوازن مفاد کی حکمت عملی ہے، تو آپ مختلف درجہ بندی کے عوامل کو تبدیل کرسکتے ہیں، اور کچھ بھی نہیں بہت زیادہ تبدیلی کے بغیر. یہ ایک بہت ہی آسان طریقہ ہے جو آپ کو اپنے خیالات کو جلدی سے تبدیل کرنے کے بغیر ہر بار پورے کوڈ کو ایڈجسٹ کرنے کی فکر کرنے کی ضرورت نہیں ہے.
درجہ بندی کا نظام تقریبا کسی بھی ماڈل سے بھی آسکتا ہے۔ یہ ضروری نہیں کہ یہ قدر پر مبنی فیکٹر ماڈل ہو ، یہ ایک مشین لرننگ تکنیک ہوسکتی ہے جو ایک ماہ قبل واپسی کی پیش گوئی کرسکتی ہے اور اس درجہ بندی کے مطابق درجہ بندی کرسکتی ہے۔
درجہ بندی کی حکمت عملی میں ایک بہت ہی اہم حصہ ہے۔ ایک اچھا درجہ بندی کا انتخاب ایک منظم عمل ہے اور اس کا کوئی آسان جواب نہیں ہے۔
ایک اچھا نقطہ آغاز یہ ہے کہ آپ موجودہ معروف ٹیکنالوجیز کا انتخاب کریں اور دیکھیں کہ کیا آپ ان میں تھوڑا سا ترمیم کر سکتے ہیں تاکہ زیادہ منافع حاصل کیا جاسکے۔ ہم یہاں چند نقطہ آغاز پر بات کریں گے:
کلوننگ اور ایڈجسٹمنٹعام طور پر ، عوامی عوامل کے پاس تجارتی سگنل نہیں ہوں گے کیونکہ وہ مارکیٹ سے مکمل طور پر فائدہ اٹھاتے ہیں۔ تاہم ، بعض اوقات وہ آپ کو صحیح سمت کی طرف رہنمائی کرتے ہیں۔
قیمتوں کا تعین کا ماڈل: مستقبل کی واپسی کی پیشن گوئی کرنے والا کوئی بھی ماڈل ایک عنصر ہوسکتا ہے ، جس میں ممکنہ طور پر آپ کے ایک ٹوکری کے تجارتی اشارے کی درجہ بندی کے لئے استعمال کیا جاسکتا ہے۔ آپ کسی بھی پیچیدہ قیمتوں کا ماڈل لے سکتے ہیں اور اسے درجہ بندی کے نظام میں تبدیل کرسکتے ہیں۔
قیمت پر مبنی عوامل (تکنیکی اشارے): قیمت پر مبنی عوامل ، جیسے کہ ہم آج بات کر رہے ہیں ، ہر حقوق کے لئے تاریخی قیمتوں کے بارے میں معلومات حاصل کرتے ہیں اور اس کا استعمال کرتے ہوئے عوامل کی قیمت پیدا کرتے ہیں۔ مثال کے طور پر ، یہ چلتی اوسط اشارے ، متحرک اشارے یا اتار چڑھاؤ کی شرح اشارے ہوسکتے ہیں۔
واپسی اور رفتاریہ قابل ذکر ہے کہ: کچھ عوامل یہ سمجھتے ہیں کہ قیمت ایک بار ایک سمت میں چلتی ہے اور اسی طرح جاری رہے گی۔ کچھ عوامل بالکل اس کے برعکس ہیں۔ یہ دونوں مختلف وقت کی حدوں اور اثاثوں کے بارے میں موثر ماڈل ہیں ، اور یہ ضروری ہے کہ بنیادی رویے کو جانچنا اہم ہو کہ آیا یہ تحریک پر مبنی ہے یا رجعت پر مبنی ہے۔
بنیادی عوامل (قیمت پر مبنی): یہ بنیادی اقدار کا ایک مجموعہ استعمال کرتا ہے ، جیسے پیئ ، منافع وغیرہ۔ بنیادی اقدار میں کمپنی کے حقیقی دنیا کے حقائق سے متعلق معلومات شامل ہیں ، لہذا بہت سے طریقوں سے قیمت سے زیادہ طاقتور ہوسکتے ہیں۔
آخر میں، ترقی کی پیش گوئی کرنے والے عوامل ایک ہتھیاروں کی دوڑ ہے، آپ ایک قدم آگے رہنے کی کوشش کر رہے ہیں۔ عوامل مارکیٹ سے فائدہ اٹھاتے ہیں اور ان کی زندگی کا دورانیہ ہوتا ہے، لہذا آپ کو یہ معلوم کرنے کے لئے مسلسل کام کرنا ہوگا کہ آپ کے عوامل نے کس حد تک کمی کا سامنا کیا ہے اور ان کی جگہ کون سے نئے عوامل استعمال کیے جاسکتے ہیں۔
ہر درجہ بندی کا نظام تھوڑا سا مختلف وقت کی حد میں واپسی کی پیش گوئی کرتا ہے۔ قیمت پر مبنی اوسط واپسی کا اندازہ چند دنوں میں کیا جاسکتا ہے ، جبکہ قیمت پر مبنی فیکٹر ماڈل کئی مہینوں میں پیش گوئی کرسکتا ہے۔ ماڈل کی پیش گوئی کرنے کے لئے وقت کی حد کا تعین کرنا بہت ضروری ہے ، اور حکمت عملی پر عمل درآمد سے پہلے اس کی شماریاتی توثیق کریں۔ آپ یقینا overly زیادہ فٹ نہیں ہونا چاہتے ہیں ، اور آپ کو لازمی طور پر کسی دوسرے فریکوئنسی پر بے ترتیب طور پر بہتر تلاش کرنا پڑے گا۔ ایک بار جب درجہ بندی کے نظام کی پیش گوئی کی مدت کا تعین ہوجائے تو ، اپنے ماڈل سے زیادہ سے زیادہ فائدہ اٹھانے کے ل approximately اس فریکوئنسی پر دوبارہ توازن کرنے کی کوشش کریں۔
ہر حکمت عملی میں کم سے کم اور زیادہ سے زیادہ سرمایہ کی گنجائش ہوتی ہے ، اور کم سے کم حد عام طور پر ٹرانزیکشن لاگت سے طے ہوتی ہے۔
بہت زیادہ اسٹاک کی تجارت کرنے سے تجارتی اخراجات زیادہ ہوجائیں گے۔ فرض کریں کہ آپ 1000 اسٹاک خریدنا چاہتے ہیں ، پھر ہر بار دوبارہ توازن کرنے پر کئی ہزار ڈالر کی لاگت آئے گی۔ آپ کی سرمایہ کی بنیاد کافی اونچی ہونی چاہئے تاکہ آپ کی حکمت عملی کے منافع کا ایک چھوٹا سا حصہ آپ کی حکمت عملی سے حاصل ہو۔ مثال کے طور پر ، اگر آپ کی سرمایہ کاری 100،000 ڈالر ہے اور آپ کی حکمت عملی ہر ماہ 1٪ ((1000 ڈالر) کماتی ہے تو ، ان تمام منافع کو تجارتی اخراجات میں شامل کیا جائے گا۔ آپ کو اس حکمت عملی کو 1000 سے زیادہ حصص سے زیادہ منافع بخش بنانے کے لئے لاکھوں ڈالر کی سرمایہ کاری کرنے کی ضرورت ہے۔
کم سے کم اثاثوں کی حد ، جو بنیادی طور پر تجارت کی جانے والی اسٹاک کی تعداد پر منحصر ہے۔ تاہم ، زیادہ سے زیادہ صلاحیت بھی بہت زیادہ ہے ، اور کثیر خالی توازن کے حصول کی حکمت عملی میں سیکڑوں لاکھوں ڈالر کی تجارت کی جاسکتی ہے اور اس سے فائدہ نہیں ہوتا ہے۔ یہ سچ ہے ، کیونکہ اس حکمت عملی میں نسبتا rarely کثرت سے rebalancing ہوتا ہے۔ مجموعی اثاثوں کی تعداد تجارت کی جانے والی اسٹاک کی تعداد کے علاوہ ، ہر اسٹاک کی ڈالر کی قیمت بہت کم ہوگی ، اور آپ کو اس بات کا خدشہ نہیں ہونا چاہئے کہ آپ کی تجارت کی مقدار مارکیٹ کو متاثر کرے گی۔ فرض کریں کہ آپ 1000 اسٹاک ، یعنی ،100،000،000 ڈالر کی تجارت کرتے ہیں۔ اگر آپ ہر ماہ پورے پورٹ فولیو کو rebalance کرتے ہیں تو ، ہر اسٹاک میں ہر ماہ صرف 100،000 ڈالر ہوتے ہیں ، جو زیادہ تر تجارت شدہ سیکیورٹیز کے لئے کافی نہیں ہوتا ہے تاکہ وہ مارکیٹ کا ایک اہم حصہ بن سکے۔