कुछ लोग
कमोडिटी वायदा बाजार में, सिद्धांत रूप में, मई में वितरित एप्पल अनुबंध की कीमत घटाकर अक्टूबर में वितरित एप्पल अनुबंध की कीमत, परिणाम एक निश्चित मूल्य सीमा के भीतर 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),
# 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
इस रणनीति में कुल 2 चार्ट बनाए गए हैं और इन्हें एक दूसरे के साथ रखा गया है।cfgA
बाईं ओर एक वर्तमान चार्ट है, जिसमें वायदा मूल्य और स्पॉट मूल्य शामिल हैं, औरcfgB
दाईं ओर एक फैलाव चार्ट है. फिर एक चार्ट ऑब्जेक्ट बनाने के लिए एफएमजेड प्लेटफॉर्म अंतर्निहित पायथन लाइन ड्राइंग लाइब्रेरी को कॉल करें. अंत में चार्ट में डेटा वास्तविक समय में अद्यतन किया जाता है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.COM) रणनीति वर्ग, इसे नीचे दिए गए लिंक पर क्लिक करके सीधे इस्तेमाल किया जा सकता है।
https://www.fmz.com/strategy/211941
मध्यस्थता उतनी जटिल नहीं है जितनी कल्पना की जाती है। इसके लिए वित्तीय सिद्धांत के बहुत अधिक ज्ञान की आवश्यकता नहीं है, न ही इसके लिए बहुत जटिल गणितीय या सांख्यिकीय मॉडल की आवश्यकता है। मध्यस्थता अनिवार्य रूप से एक अनुचित मूल्य से उचित रिटर्न तक लाभ कमाने के लिए है। बाजार की स्थिति हर साल बदलती है। व्यापारियों के लिए, वर्तमान में ऐतिहासिक डेटा की नकल नहीं करना सबसे अच्छा है, लेकिन वर्तमान डेटा को जोड़कर अध्ययन करना कि क्या मूल्य स्प्रेड उचित है।