কমোডিটি ফিউচার মার্কেটে, তত্ত্বগতভাবে, মে মাসে বিতরণ করা অ্যাপল চুক্তির মূল্য বিয়োগ করে অক্টোবরে বিতরণ করা অ্যাপল চুক্তির দাম, ফলাফলটি একটি নির্দিষ্ট মূল্য পরিসরের মধ্যে 0 এর কাছাকাছি বা স্থিতিশীল হওয়া উচিত। তবে বাস্তবে, আবহাওয়া, বাজারের সরবরাহ এবং চাহিদা এবং অন্যান্য কারণগুলির কারণে, স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী চুক্তির দাম বিভিন্ন ডিগ্রীতে প্রভাবিত হবে সময়কালের মধ্যে, এবং দামের পার্থক্যও উল্লেখযোগ্যভাবে পরিবর্তিত হবে।
কিন্তু যে কোন ক্ষেত্রে, মূল্য পার্থক্য অবশেষে একটি নির্দিষ্ট মূল্য পরিসীমা ফিরে আসবে, তারপর যদি মূল্য পার্থক্য এই পরিসীমা চেয়ে বড়, মে চুক্তি সংক্ষিপ্ত বিক্রি, এবং একই সময়ে অক্টোবর চুক্তি দীর্ঘ কিনতে, একটি মুনাফা করতে পার্থক্য সংক্ষিপ্ত; যদি মূল্য পার্থক্য এই পরিসীমা কম হয়, দীর্ঘ মে চুক্তি কিনতে, একই সময়ে সংক্ষিপ্ত অক্টোবর চুক্তি বিক্রি, স্প্রেড দীর্ঘ কেনার মুনাফা করতে। এই ক্রয় এবং একই বৈচিত্র্য কিন্তু বিভিন্ন বিতরণ মাস বিক্রি মাধ্যমে intertemporal arbitrage হয়।
সময়সীমার মধ্যবর্তী সালিশের পাশাপাশি, ক্রস-মার্কেট সালিশ রয়েছে যেমন রপ্তানিকারক দেশ থেকে সয়াবিন কেনা এবং আমদানিকারী দেশ থেকে সয়াবিন বিক্রি করা, বা রপ্তানিকারক দেশ থেকে সয়াবিন বিক্রি করা এবং আমদানিকারী দেশ থেকে সয়াবিন আমদানি করা; পূর্ব প্রবাহের কাঁচামাল, লোহা খনি কেনা এবং নিম্ন প্রবাহের সমাপ্ত থ্রেড স্টিল বিক্রি করা, বা পূর্ব প্রবাহের কাঁচামাল লোহা খনি বিক্রি করা এবং নিম্ন প্রবাহের সমাপ্ত রিবার সালিশ কেনা ইত্যাদি।
যদিও উপরের সালিশ পদ্ধতিগুলি আক্ষরিক অর্থে
সহজভাবে বলতে গেলে, সর্বাধিক জটিল লিঙ্কটি হ'ল পণ্যগুলির স্পট ট্রেডিং, যার মধ্যে গুদাম প্রাপ্তি, কর এবং আরও অনেক কিছু জড়িত। সর্বোপরি, বিনিয়োগের সুযোগের সাথে সম্পর্কিত একটি সংস্থার প্রয়োজন। যদি এটি একটি চুক্তি বিতরণ সালিশ ফিউচার অ্যাকাউন্ট হয় তবে এটি অবশ্যই একটি কর্পোরেট আইনী ব্যক্তি হতে হবে। যদি ডাবল ক্লোজ পজিশন সালিশের প্রয়োজন হয় তবে একটি নির্ভরযোগ্য বিক্রয় চ্যানেল প্রয়োজন। অনেক অনলাইন স্পট ট্রেডিং ওয়েবসাইট রয়েছে।
এটি লক্ষ করা উচিত যে স্পট লেনদেনের সাধারণত 17% থেকে 20% এর একটি মূল্য সংযোজন কর থাকে, তাই যদি এটি একটি ডাবল ক্লোজ পজিশন আরবিট্রেজ হয় তবে আপনাকে স্পট কেনার পরে ১.২ থেকে ১.২৫ গুণ কম ফিউচারগুলি সংক্ষিপ্ত করতে হবে। চুক্তি বিতরণ আরবিট্রেজের ক্ষেত্রে, আপনাকে স্পট কেনার পরে একই অনুপাতের ফিউচারগুলি সংক্ষিপ্ত করতে হবে এবং আপনাকে লেনদেনের ফি, পরিবহন এবং গুদামগুলির ব্যয়ও বিবেচনা করতে হবে। অবশ্যই, এর সমস্তটির মূলনীতি হ'ল বর্তমান মূল্যের স্প্রেড যথেষ্ট বড় এবং পর্যাপ্ত সীমা রয়েছে।
এছাড়াও, সাংহাই গোল্ড এক্সচেঞ্জে সোনার (টি + ডি) অস্তিত্বের কারণে, সোনার সময়কালে বর্তমান সালিশ কেবল ইতিবাচক সালিশই হতে পারে না, তবে সোনার লিজিং ছাড়াই বিপরীত সালিশ অপারেশনও হতে পারে। সাংহাই গোল্ড এক্সচেঞ্জে স্পট সোনার (টি + ডি) বিলম্বিত ট্রেডিং কেবল ট্রেডিংয়ের জন্য সুবিধাজনক নয়, তবে
অনলাইনে অনেক ধরনের স্পট এবং স্প্রেড ডেটা রয়েছে, যার বেশিরভাগই টেবিলের আকারে উপস্থাপন করা হয়, যা স্পষ্টতই বিশ্লেষণ এবং বাজার বিচার করার জন্য উপযুক্ত নয়।FMZ.COM) এর অন্তর্নির্মিত কমোডিটি ফিউচার মৌলিক তথ্য রয়েছে, যার মধ্যে স্পট ডেটা এবং স্প্রেড ডেটা অন্তর্ভুক্ত রয়েছে। প্রতিটি জাতের স্পট এবং স্প্রেড মূল্য পেতে কেবল একটি ফাংশন কল করতে হবে এবং 2016 থেকে বর্তমান পর্যন্ত historicalতিহাসিক ডেটা সমর্থন করে।
# Backtest configuration
'''backtest
start: 2020-06-01 00:00:00
end: 2020-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
'''
# Strategy entry
def main():
while True:
ret = exchange.GetData("GDP") # Calling GDP data
Log(ret) # Print data
Sleep(1000 * 60 * 60 * 24 * 30)
রিটার্ন ফলাফল
{
"Quarterly": "Q1 2006",
"GDP": {
"Absolute Value (100 million yuan)": 47078.9,
"YoY Growth": 0.125
},
"primary industry": {
"Absolute Value (100 million yuan)": 3012.7,
"YoY Growth": 0.044
},
"Tertiary Industry": {
"Absolute Value (100 million yuan)": 22647.4,
"YoY Growth": 0.131
},
"Secondary industry": {
"Absolute Value (100 million yuan)": 21418.7,
"YoY Growth": 0.131
}
}
আসুন আমরা FMZ প্ল্যাটফর্মটি ব্যবহার করি এবং চার্ট আকারে স্পট মূল্য এবং স্প্রেড মূল্যগুলি পরিমাপ এবং উপলব্ধি করি। প্রথমত, নিবন্ধন করুন এবং FMZ ওয়েবসাইটে লগ ইন করুন (FMZ.COM),
# Strategy main function
def onTick():
pass
# Strategy entrance
def main():
while True: # Enter loop mode
onTick() # execution strategy main function
Sleep(1000 * 60 * 60 * 24) # Strategy sleep for one day
কৌশলগত কাঠামো দুটি ফাংশন আছে,main
ফাংশন কৌশল প্রবেশদ্বার,main
ফাংশন ট্রেডিং আগে প্রাক-প্রক্রিয়াকরণ, প্রোগ্রাম থেকে শুরু হবেmain
ফাংশন, এবং তারপর অসীম লুপ মোড লিখুন, বারবার চালানোonTick
ফাংশনonTick
মূলত মূল কোডটি বাস্তবায়ন করা।
# Global variables
# Futures and Spots chart
cfgA = {
"extension": {
"layout":'single',
"col": 6,
"height": "500px",
},
"title": {
"text": "futures and spots chart"
},
"xAxis": {
"type": "datetime"
},
"series": [{
"name": "Futures Price",
"data": [],
}, {
"name": "Spot Price",
"data": [],
}
]
}
# Spread chart
cfgB = {
"extension": {
"layout":'single',
"col": 6,
"height": "500px",
},
"title": {
"text": "Spread chart"
},
"xAxis": {
"type": "datetime"
},
"series": [{
"name": "Spread Price",
"data": [],
}]
}
chart = Chart([cfgA, cfgB]) # Create a chart object
# Strategy main function
def onTick():
chart.add(0, []) # draw chart
chart.add(1, []) # draw chart
chart.add(2, []) # draw chart
chart.update([cfgA, cfgB]) # update chart
# Strategy entrance
def main():
LogReset() # Clear the previous log information before running
chart.reset() # Clear the previous chart information before running
while True: # Enter loop mode
onTick() # execution strategy main function
Sleep(1000 * 60 * 60 * 24) # Strategy sleep for one day
এই কৌশলতে মোট ২টি চার্ট তৈরি করা হয়েছে এবং সেগুলো একসাথে সাজানো হয়েছে।cfgA
বাম দিকে একটি বর্তমান চার্ট রয়েছে, যার মধ্যে ফিউচার মূল্য এবং স্পট মূল্য অন্তর্ভুক্ত রয়েছে এবংcfgB
ডানদিকে একটি স্প্রেড চার্ট আছে। তারপর একটি চার্ট বস্তু তৈরি করতে FMZ প্ল্যাটফর্মের অন্তর্নির্মিত পাইথন লাইন অঙ্কন লাইব্রেরি কল করুন। অবশেষে চার্টের তথ্য বাস্তব সময়ে আপডেট করা হয়onTick
function.
last_spot_price = 0 # Save the last valid spot price
last_spread_price = 0 # Save the last valid spread price
def onTick():
global last_spread_price, last_spot_price # import global variables
exchange.SetContractType("i888") # Subscribe to futures varieties
futures = _C(exchange.GetRecords)[-1] # Get the latest K line data
futures_ts = futures.Time # Get the latest K-line futures timestamp
futures_price = futures.Close # Get the latest K-line closing price
spot = exchange.GetData("SPOTPRICE") # Get spot data
spot_ts = spot.Time # Get spot timestamp
if 'iron ore' in spot.Data:
spot_price = spot.Data['iron ore']
last_spot_price = spot_price
else:
spot_price = last_spot_price
spread = exchange.GetData("spread") # Get spread data
spread_ts = spread.Time # Get spread timestamp
if 'iron ore' in spread.Data:
spread_price = spread.Data['iron ore']
last_spread_price = spread_price
else:
spread_price = last_spread_price
মোট, আমরা তথ্য তিন ধরনের পেতে প্রয়োজনঃ ফিউচার মূল্য, স্পট মূল্য, এবং স্প্রেড মূল্য. ফিউচার মূল্য প্রাপ্তি সহজ.SetContractType
ফিউচার সিম্বল সরাসরি সাবস্ক্রাইব করার জন্য ফাংশন, এবং তারপর ব্যবহারGetRecords
স্পট এবং স্প্রেডের দামের জন্য আপনি পূর্বে চালু পদ্ধতিটি ব্যবহার করতে পারেন,GetData
মৌলিক ডেটা কোড কল করার ফাংশন, এবং টাইমস্ট্যাম্প ধারণকারী অভিধান তথ্য ফেরত.
# fmz@b72930603791887d7452f25f23a13bde
'''backtest
start: 2017-01-01 00:00:00
end: 2020-06-01 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
'''
# Global variables
# Futures and Spots chart
cfgA = {
"extension": {
"layout":'single',
"col": 6,
"height": "500px",
},
"title": {
"text": "futures and spots chart"
},
"xAxis": {
"type": "datetime"
},
"series": [{
"name": "Futures Price",
"data": [],
}, {
"name": "Spot Price",
"data": [],
}
]
}
# spread chart
cfgB = {
"extension": {
"layout":'single',
"col": 6,
"height": "500px",
},
"title": {
"text": "spread chart"
},
"xAxis": {
"type": "datetime"
},
"series": [{
"name": "spread Price",
"data": [],
}]
}
last_spot_price = 0 # Save the last valid spot price
last_spread_price = 0 # Save the last valid spread price
chart = Chart([cfgA, cfgB]) # Create a chart object
def onTick():
global last_spread_price, last_spot_price # import global variables
exchange.SetContractType("i888") # Subscribe to futures varieties
futures = _C(exchange.GetRecords)[-1] # Get the latest candlestick data
futures_ts = futures.Time # Get the latest K-line futures timestamp
futures_price = futures.Close # Get the latest K-line closing price
Log('Future price:', futures_ts, futures_price)
spot = exchange.GetData("SPOTPRICE") # Get spot data
spot_ts = spot.Time # Get spot timestamp
if 'iron ore' in spot.Data:
spot_price = spot.Data['iron ore']
last_spot_price = spot_price
else:
spot_price = last_spot_price
Log('Spot price:', spot_ts, spot_price)
spread = exchange.GetData("spread") # Get spread data
spread_ts = spread.Time # Get spread timestamp
if 'iron ore' in spread.Data:
spread_price = spread.Data['iron ore']
last_spread_price = spread_price
else:
spread_price = last_spread_price
Log('spread price:', spread_ts, spread_price)
chart.add(0, [futures_ts, futures_price]) # draw chart
chart.add(1, [spot_ts, spot_price]) # draw chart
chart.add(2, [spread_ts, spread_price]) # draw chart
chart.update([cfgA, cfgB]) # update chart
Log('---------')
# Strategy entrance
def main():
LogReset() # Clear the previous log information before running
chart.reset() # Clear the previous chart information before running
while True: # Enter loop mode
onTick() # execution strategy main function
Sleep(1000 * 60 * 60 * 24) # Strategy sleep for one day
সম্পূর্ণ কৌশলটি FMZ প্ল্যাটফর্মে পোস্ট করা হয়েছে (FMZ.COM) কৌশল স্কয়ার, এটি সরাসরি ব্যবহার করা যেতে পারে নীচের লিঙ্কে ক্লিক করে।
https://www.fmz.com/strategy/211941
মধ্যস্থতা যেমন কল্পনা করা হয় তেমন জটিল নয়। এটি আর্থিক তত্ত্বের খুব বেশি জ্ঞানের প্রয়োজন হয় না, বা এটি খুব জটিল গাণিতিক বা পরিসংখ্যানগত মডেলগুলির প্রয়োজন হয় না। মধ্যস্থতা মূলত একটি যুক্তিসঙ্গত মূল্য থেকে যুক্তিসঙ্গত রিটার্ন পর্যন্ত লাভ অর্জন করা। বাজার পরিস্থিতি প্রতি বছর পরিবর্তিত হয়। ব্যবসায়ীদের জন্য, বর্তমানের ঐতিহাসিক তথ্য অনুলিপি না করা ভাল, তবে বর্তমান তথ্যগুলি একত্রিত করে অধ্যয়ন করা উচিত কিনা মূল্যের স্প্রেড যুক্তিসঙ্গত।