FMZ মৌলিক তথ্যের উপর ভিত্তি করে কমোডিটি "ফ্যুচার্স এবং স্পট" আর্বিট্রেজ চার্ট

লেখক:ভাল, তৈরিঃ 2020-06-17 10:59:26, আপডেটঃ 2023-11-01 20:28:10

img

সংক্ষিপ্তসার

অর্বিট্রেজ শব্দটি হয়তো কিছু লোকের কাছে অজানা, কিন্তু অর্বিট্রেজ বাস্তব জীবনে খুবই সাধারণ। উদাহরণস্বরূপ, একটি সুবিধার দোকানের মালিক পাইকারি বাজার থেকে ০.৫ ইউয়ান দামে একটি বোতল খনিজ জল কিনে নেয়, তারপর এটি ১ ইউয়ান দামে দোকানে বিক্রি করে, এবং শেষ পর্যন্ত ০.৫ ইউয়ান পার্থক্য অর্জন করে। এই প্রক্রিয়াটি আসলে সালিশের অনুরূপ। আর্থিক বাজারে সালিশ এই নীতির অনুরূপ, তবে সালিশের অনেকগুলি রূপ রয়েছে।

আর্বিট্রেজ কি?

কমোডিটি ফিউচার মার্কেটে, তত্ত্বগতভাবে, মে মাসে বিতরণ করা অ্যাপল চুক্তির মূল্য বিয়োগ করে অক্টোবরে বিতরণ করা অ্যাপল চুক্তির দাম, ফলাফলটি একটি নির্দিষ্ট মূল্য পরিসরের মধ্যে 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মৌলিক ডেটা কোড কল করার ফাংশন, এবং টাইমস্ট্যাম্প ধারণকারী অভিধান তথ্য ফেরত.

চার্ট প্রদর্শন

img img img

সম্পূর্ণ কৌশল কোড পান

# 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

শেষ

মধ্যস্থতা যেমন কল্পনা করা হয় তেমন জটিল নয়। এটি আর্থিক তত্ত্বের খুব বেশি জ্ঞানের প্রয়োজন হয় না, বা এটি খুব জটিল গাণিতিক বা পরিসংখ্যানগত মডেলগুলির প্রয়োজন হয় না। মধ্যস্থতা মূলত একটি যুক্তিসঙ্গত মূল্য থেকে যুক্তিসঙ্গত রিটার্ন পর্যন্ত লাভ অর্জন করা। বাজার পরিস্থিতি প্রতি বছর পরিবর্তিত হয়। ব্যবসায়ীদের জন্য, বর্তমানের ঐতিহাসিক তথ্য অনুলিপি না করা ভাল, তবে বর্তমান তথ্যগুলি একত্রিত করে অধ্যয়ন করা উচিত কিনা মূল্যের স্প্রেড যুক্তিসঙ্গত।


সম্পর্কিত

আরো