कमोडिटी "फ्यूचर्स और स्पॉट" मध्यस्थता चार्ट FMZ मौलिक आंकड़ों के आधार पर

लेखक:अच्छाई, बनाया गयाः 2020-06-17 10:59:26, अद्यतन किया गयाः 2023-11-01 20:28:10

img

सारांश

कुछ लोग आर्बिट्रेज शब्द से अपरिचित हो सकते हैं, लेकिन आर्बिट्रेज वास्तविक जीवन में बहुत आम है। उदाहरण के लिए, एक सुविधा स्टोर का मालिक थोक बाजार से 0.5 युआन में खनिज पानी की एक बोतल खरीदता है, फिर इसे स्टोर में 1 युआन में बेचता है, और अंत में 0.5 युआन का अंतर कमाता है। यह प्रक्रिया वास्तव में मध्यस्थता के समान है। वित्तीय बाजारों में मध्यस्थता इस सिद्धांत के समान है, सिवाय इसके कि मध्यस्थता के कई रूप हैं।

मध्यस्थता क्या है?

कमोडिटी वायदा बाजार में, सिद्धांत रूप में, मई में वितरित एप्पल अनुबंध की कीमत घटाकर अक्टूबर में वितरित एप्पल अनुबंध की कीमत, परिणाम एक निश्चित मूल्य सीमा के भीतर 0 के करीब या स्थिर होना चाहिए। लेकिन वास्तव में, मौसम, बाजार की आपूर्ति और मांग और अन्य कारकों के कारण, अल्पकालिक और दीर्घकालिक अनुबंधों की कीमत समय की अवधि में अलग-अलग डिग्री से प्रभावित होगी, और मूल्य अंतर भी महत्वपूर्ण रूप से उतार-चढ़ाव करेगा।

लेकिन किसी भी मामले में, मूल्य अंतर अंततः एक निश्चित मूल्य सीमा पर वापस आ जाएगा, तो यदि मूल्य अंतर इस सीमा से अधिक है, तो मई अनुबंध को छोटा बेचें, और एक ही समय में अक्टूबर अनुबंध को खरीदें, लाभ कमाने के लिए अंतर को छोटा करें; यदि मूल्य अंतर इस सीमा से कम है, तो मई अनुबंध को खरीदें, एक ही समय में अक्टूबर अनुबंध को बेचें, स्प्रेड को खरीदने का लाभ उठाएं। यह एक ही किस्म के खरीद और बिक्री के माध्यम से अंतःकालिक मध्यस्थता है लेकिन विभिन्न वितरण महीने।

अंतरिम मध्यस्थता के अलावा, क्रॉस-मार्केट मध्यस्थता जैसे कि निर्यातक देशों से सोयाबीन खरीदना जबकि आयातक देशों से सोयाबीन बेचना, या निर्यातक देशों से सोयाबीन बेचना और आयातक देशों से सोयाबीन आयात करना; अपस्ट्रीम कच्चे माल, लौह अयस्क खरीदना और डाउनस्ट्रीम तैयार धागा स्टील बेचना, या अपस्ट्रीम कच्चे माल लौह अयस्क बेचना जबकि डाउनस्ट्रीम तैयार रेबर मध्यस्थता खरीदना आदि।

फ्यूचर्स और स्पॉट आर्बिट्रेज क्या है?

यद्यपि उपरोक्त मध्यस्थता विधियां शाब्दिक रूप से मध्यस्थता हैं, वे विशुद्ध रूप से मध्यस्थता नहीं हैं। वे अनिवार्य रूप से जोखिम भरा अटकलबाजी हैं। अटकलों का यह तरीका मूल्य स्प्रेड को लंबा या छोटा खरीदकर लाभ कमाना है। हालांकि स्प्रेड अधिकांश समय के लिए स्थिर हो गया है, लेकिन बाजार की स्थिति हो सकती है कि मूल्य स्प्रेड लंबे समय तक वापस नहीं आता है।

फ्यूचर्स और स्पॉट आर्बिट्रेज का मूल सिद्धांत यह है कि एक ही वस्तु की एक ही समय पर केवल एक ही कीमत हो सकती है। वायदा वितरण समय तक पहुंचने पर एक स्थान बन जाएगा, इसलिए अनुबंध वितरण समय के करीब होने पर मूल्य वापसी मजबूर हो जाएगी। यह अंतःकालिक आर्बिट्रेज से पूरी तरह से अलग है। अंतःकालिक आर्बिट्रेज दो अलग-अलग वितरण महीनों के साथ एक अनुबंध है। जब यह समाप्त होता है, तो यह दो अलग-अलग महीनों का स्थान बन जाता है। या यह दो कीमतें हो सकती हैं।

  • स्प्रेड = फ्यूचर्स की कीमत - स्पॉट की कीमत

फ्यूचर्स और स्पॉट आर्बिट्रेज की सबसे बड़ी विशेषता यह है कि सिद्धांत रूप में कोई जोखिम नहीं है, मुख्य रूप से लाभ सीमा की गणना करने के लिए स्प्रेड की स्थिति के आधार पर। यदि स्प्रेड बहुत बड़ा है, तो आप एक ही समय में स्पॉट को लंबा और वायदा को छोटा कर सकते हैं, स्प्रेड के शून्य पर लौटने की प्रतीक्षा कर सकते हैं, आप वायदा और स्पॉट के दोनों किनारों पर स्थिति को बंद कर सकते हैं, और स्प्रेड से लाभ कमा सकते हैं। दो मुख्य तरीके हैंः डबल क्लोज पोजीशन आर्बिट्रेज और कॉन्ट्रैक्ट डिलीवरी आर्बिट्रेज।

कमोडिटी फ्यूचर्स और स्पॉट आर्बिट्रेज चैनल

सरल शब्दों में, सबसे जटिल कड़ी वस्तुओं का स्पॉट ट्रेडिंग है, जिसमें गोदाम रसीदें, कराधान आदि जैसे मुद्दों की एक श्रृंखला शामिल है। सबसे पहले, निवेश के दायरे से संबंधित एक कंपनी की आवश्यकता होती है। यदि यह एक अनुबंध वितरण मध्यस्थता वायदा खाता है, तो यह एक कॉर्पोरेट कानूनी व्यक्ति होना चाहिए। यदि डबल बंद स्थिति मध्यस्थता की आवश्यकता है, तो एक विश्वसनीय बिक्री चैनल की आवश्यकता होती है। कई ऑनलाइन स्पॉट ट्रेडिंग वेबसाइट हैं।

यह ध्यान दिया जाना चाहिए कि स्पॉट लेनदेन में आमतौर पर 17% से 20% का मूल्य वर्धित कर होता है, इसलिए यदि यह एक डबल क्लोज पोजीशन आर्बिट्रेज है, तो आपको स्पॉट खरीदने के बाद 1.2 से 1.25 बार वायदा शॉर्ट करने की आवश्यकता होती है। कॉन्ट्रैक्ट डिलीवरी आर्बिट्रेज के मामले में, आपको स्पॉट खरीदने के बाद वायदा के समान अनुपात को शॉर्ट करने की आवश्यकता होती है, और आपको लेनदेन शुल्क, परिवहन और गोदामों की लागतों पर भी विचार करने की आवश्यकता होती है। बेशक, इस सब का आधार यह है कि वर्तमान मूल्य स्प्रेड काफी बड़ा है और पर्याप्त सीमाएं हैं।

इसके अलावा, शंघाई गोल्ड एक्सचेंज पर सोने (टी + डी) के अस्तित्व के कारण, सोने की अवधि में वर्तमान मध्यस्थता न केवल सकारात्मक मध्यस्थता हो सकती है, बल्कि सोने के पट्टे के बिना रिवर्स मध्यस्थता संचालन भी हो सकता है। शंघाई गोल्ड एक्सचेंज पर स्पॉट गोल्ड (टी + डी) का स्थगित व्यापार व्यापार के लिए न केवल सुविधाजनक है, बल्कि लेनदेन और पदों की एक बड़ी मात्रा भी है, और तरलता फ्यूचर्स और स्पॉट मध्यस्थता के लिए बहुत उपयुक्त है।

स्पॉट और स्प्रेड डेटा कैसे प्राप्त करें

ऑनलाइन कई प्रकार के स्पॉट और स्प्रेड डेटा हैं, जिनमें से अधिकांश तालिकाओं के रूप में प्रस्तुत किए जाते हैं, जो स्पष्ट रूप से बाजार का विश्लेषण और न्याय करने के लिए उपयुक्त नहीं है।FMZ.COM) में अंतर्निहित कमोडिटी वायदा मौलिक डेटा है, जिसमें स्पॉट डेटा और स्प्रेड डेटा शामिल हैं। प्रत्येक किस्म के स्पॉट और स्प्रेड मूल्य प्राप्त करने के लिए केवल एक फ़ंक्शन को कॉल करने की आवश्यकता है, और 2016 से वर्तमान तक के ऐतिहासिक डेटा का समर्थन करता है।

# 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.COM), डैशबोर्ड पर क्लिक करें, और रणनीति पुस्तकालय + नई रणनीति पर क्लिक करें. ऊपरी बाएं कोने में ड्रॉप-डाउन मेनू में पायथन का चयन करें और रणनीति का नाम भरें.

चरण 1: रणनीति ढांचा लिखें

# 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मुख्य कार्य मुख्य रूप से कोर कोड निष्पादित करना है।

चरण 2: चार्ट फ़ंक्शन जोड़ना

# 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

इस रणनीति में कुल 2 चार्ट बनाए गए हैं और इन्हें एक दूसरे के साथ रखा गया है।cfgAबाईं ओर एक वर्तमान चार्ट है, जिसमें वायदा मूल्य और स्पॉट मूल्य शामिल हैं, औरcfgBदाईं ओर एक फैलाव चार्ट है. फिर एक चार्ट ऑब्जेक्ट बनाने के लिए एफएमजेड प्लेटफॉर्म अंतर्निहित पायथन लाइन ड्राइंग लाइब्रेरी को कॉल करें. अंत में चार्ट में डेटा वास्तविक समय में अद्यतन किया जाता हैonTick function.

चरण 3: डेटा प्राप्त करें

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.COM) रणनीति वर्ग, इसे नीचे दिए गए लिंक पर क्लिक करके सीधे इस्तेमाल किया जा सकता है।

https://www.fmz.com/strategy/211941

अंत

मध्यस्थता उतनी जटिल नहीं है जितनी कल्पना की जाती है। इसके लिए वित्तीय सिद्धांत के बहुत अधिक ज्ञान की आवश्यकता नहीं है, न ही इसके लिए बहुत जटिल गणितीय या सांख्यिकीय मॉडल की आवश्यकता है। मध्यस्थता अनिवार्य रूप से एक अनुचित मूल्य से उचित रिटर्न तक लाभ कमाने के लिए है। बाजार की स्थिति हर साल बदलती है। व्यापारियों के लिए, वर्तमान में ऐतिहासिक डेटा की नकल नहीं करना सबसे अच्छा है, लेकिन वर्तमान डेटा को जोड़कर अध्ययन करना कि क्या मूल्य स्प्रेड उचित है।


संबंधित

अधिक