संसाधन लोड हो रहा है... लोड करना...

पेन-बाय-पेन लेनदेन पर आधारित उच्च आवृत्ति पुनरावृत्ति प्रणाली और के-लाइन पुनरावृत्ति के दोष

लेखक:घास, बनाया गयाः 2020-06-04 16:48:02, अद्यतनः 2024-12-10 20:32:01

img

मैं हूँबिआन के लिए एक हेजिंग रणनीति हैइसके साथ ही एक रीट्रेसिंग इंजन भी जारी किया गया था। और पहली रिपोर्ट एक घंटे के लाइन रीट्रेसिंग पर आधारित थी, जिसने रणनीति की प्रभावशीलता को सत्यापित किया था। लेकिन वास्तविक सार्वजनिक रणनीति के लिए 1s की नींद का समय, एक काफी उच्च आवृत्ति वाली रणनीति थी, जो स्पष्ट रूप से घंटे के लाइन रीट्रेसिंग के साथ सटीक परिणाम नहीं दे सकती थी। बाद में जोड़ा गया था।मिनट लाइन पुनरावृत्तिनतीजतन, पुनरावृत्ति लाभ में बहुत सुधार हुआ है, लेकिन यह निर्धारित नहीं किया जा सकता है कि सेकंड स्तर पर किस पैरामीटर का उपयोग किया जाना चाहिए, और पूरी रणनीति की समझ बहुत स्पष्ट नहीं है; मुख्य रूप से के-लाइन आधारित पुनरावृत्ति के महत्वपूर्ण नुकसान के कारण।

के-लाइन पुनर्मूल्यांकन के आधार पर प्रश्न

सबसे पहले, ऐतिहासिक के-लाइन क्या है? एक के-लाइन डेटा में चार कीमतें, दो शुरुआती समय और अंतराल लेनदेन शामिल हैं। अधिकांश क्वांटिफाइंग प्लेटफॉर्म और ढांचे के-लाइन रीट्रेसिंग पर आधारित हैं, एफएमजेड क्वांटिफाइंग प्लेटफॉर्म भी टिक-स्तरीय रीट्रेसिंग प्रदान करता है। के-लाइन रीट्रेसिंग की गति तेज है और ज्यादातर मामलों में कोई समस्या नहीं है, लेकिन इसमें बहुत गंभीर खामियां भी हैं, विशेष रूप से बहु-प्रजाति रीट्रेसिंग रणनीति और उच्च-आवृत्ति रणनीति, जो सही निष्कर्ष निकालने में लगभग असमर्थ हैं।

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

कल्पना कीजिए कि दो किस्मों के सूट को मिनट की रेखा पर वापस ले लिया जाता है, जिनकी कीमतें आमतौर पर 10 डॉलर होती हैं, और अब यह पता चला है कि 10:01 बजे, ए कॉन्ट्रैक्ट का समापन मूल्य 100 है, बी कॉन्ट्रैक्ट 112 है, और इसका समापन मूल्य 12 डॉलर है, इसलिए रणनीति ने हेजिंग शुरू कर दी है, और किसी समय मूल्य अंतर वापस आ गया है, और रणनीति ने 2 डॉलर का रिटर्न लाभ कमाया है।

और वास्तविक स्थिति में यह हो सकता है कि 10: 00:45 पर, A अनुबंध ने 100 डॉलर का लेनदेन किया, जिसके बाद कोई लेनदेन नहीं हुआ, और B अनुबंध ने 10: 00:58 पर 112 डॉलर का लेनदेन किया, और 10: 01 पर दोनों कीमतें मौजूद नहीं हैं, इस समय लेनदेन की कीमत क्या है, और हेजिंग कितना अंतर खा सकता है? कोई नहीं जानता। एक संभावित स्थिति यह हैः 10: 00:58 पर, A अनुबंध के लिए खरीदें और बेचें 101.9-102.1 हैं, और कोई भी 2 अंतर नहीं है। यह हमारी रणनीति अनुकूलन के लिए बहुत भ्रामक हो सकता है।

इसके बाद एक तस्वीर लेने की समस्या है, वास्तविक तस्वीर लेने की कीमत पहले, समय पहले है। यदि खरीदार एक बिक्री मूल्य से अधिक है, तो वे आम तौर पर सीधे एक बिक्री मूल्य के साथ सौदा करते हैं, इसके विपरीत ऑर्डर बुक में प्रतीक्षा करते हैं। के लाइन डेटा स्पष्ट रूप से एक खरीद और बिक्री मूल्य नहीं है, यह विवरण स्तर की तस्वीर लेने का अनुकरण करने में असमर्थ है।

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

वास्तविक समय में गहराई और टिक के आधार पर पुनः परीक्षण

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

img

एक-एक करके लेन-देन किए गए आदेशों के प्रवाह पर आधारित पुनर्मूल्यांकन

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

मैंने हाल ही में 5 दिन के लिए XTZ के स्थायी अनुबंध का एक-एक लेनदेन डाउनलोड किया है।https://www.fmz.com/upload/asset/1ff487b007e1a848ead.csvयह एक बहुत ही कम लोकप्रिय प्रकार है, और 213,000 डेटा के साथ, आइए पहले डेटा की संरचना देखेंः

[['XTZ', 1590981301905, 2.905, 0.4, 'False\n'],
 ['XTZ', 1590981303044, 2.903, 3.6, 'True\n'],
 ['XTZ', 1590981303309, 2.903, 3.7, 'True\n'],
 ['XTZ', 1590981303738, 2.903, 238.1, 'True\n'],
 ['XTZ', 1590981303892, 2.904, 0.1, 'False\n'],
 ['XTZ', 1590981305250, 2.904, 0.1, 'False\n'],
 ['XTZ', 1590981305643, 2.903, 197.3, 'True\n'],

डेटा एक दो आयामी सूची है, जो लेनदेन के समय के क्रम में क्रमबद्ध है। विशिष्ट अर्थों में शामिल हैंः किस्म का नाम, लेनदेन की कीमत, लेनदेन का समय, लेनदेन की संख्या, या तो बिक्री के लिए सक्रिय लेनदेन है या नहीं। खरीदारी और बिक्री के लिए, प्रत्येक लेनदेन में खरीदार और विक्रेता शामिल हैं, यदि खरीदार बाजार निर्माता है, तो विक्रेता सक्रिय लेनदेन लेने वाला है, तो अंतिम डेटा सच है।

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

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

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

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

कोड को शूट करें

एक्सचेंज ऑब्जेक्ट्स के लिए प्रारंभिक परिचय का संदर्भ दिया जा सकता है, जो मूल रूप से अपरिवर्तित है, केवल निर्माता और टेकर शुल्क के बीच अंतर जोड़ा गया है, और पुनः परीक्षण की गति को अनुकूलित किया गया है। नीचे मुख्य रूप से शूट कोड का परिचय दिया जाएगा।

    symbol = 'XTZ'
    loop_time = 0
    intervel = 1000 #策略的休眠时间为1000ms
    init_price = data[0][2] #初始价格
    e = Exchange([symbol],initial_balance=1000000,maker_fee=maker_fee,taker_fee=taker_fee,log='') #初始化交易所
    depth = {'ask':data[0][2], 'bid':data[0][2]} #深度
    order = {'buy':{'price':0,'amount':0,'maker':False,'priority':False,'id':0},
             'sell':{'price':0,'amount':0,'maker':False,'priority':False,'id':0}} #订单
    for tick in data:
        price = int(tick[2]/tick_sizes[symbol])*tick_sizes[symbol] #成交价格
        trade_amount = tick[3] #成交数量
        time_stamp = tick[1] #成交时间戳
        if tick[4] == 'False\n':
            depth['ask'] = price
        else:
            depth['bid'] = price
        
        if depth['bid'] < order['buy']['price']:
            order['buy']['priority'] = True
        if depth['ask'] > order['sell']['price']:
            order['sell']['priority'] = True
        if price > order['buy']['price']:
            order['buy']['maker'] = True
        if price < order['sell']['price']:
            order['sell']['maker'] = True
        
        #订单网络延时也可以作为撮合条件之一,这里没考虑
        cond1 = order['buy']['priority'] and order['buy']['price'] >= price and order['buy']['amount'] > 0
        cond2 = not order['buy']['priority'] and order['buy']['price'] > price and order['buy']['amount'] > 0
        cond3 = order['sell']['priority'] and order['sell']['price'] <= price and order['sell']['amount'] > 0
        cond4 = not order['sell']['priority'] and order['sell']['price'] < price and order['sell']['amount'] > 0

        if cond1 or cond2:
            buy_price = order['buy']['price'] if order['buy']['maker'] else price
            e.Buy(symbol, buy_price, min(order['buy']['amount'],trade_amount), order['buy']['id'], order['buy']['maker'])
            order['buy']['amount'] -= min(order['buy']['amount'],trade_amount)
            e.Update(time_stamp,[symbol],{symbol:price})
        if cond3 or cond4:
            sell_price = order['sell']['price'] if order['sell']['maker'] else price
            e.Sell(symbol, sell_price, min(order['sell']['amount'],trade_amount), order['sell']['id'], order['sell']['maker'])
            order['sell']['amount'] -= min(order['sell']['amount'],trade_amount)
            e.Update(time_stamp,[symbol],{symbol:price})

        if time_stamp - loop_time > intervel:
            order = get_order(e,depth,order) #交易逻辑,这里未给出
            loop_time += int((time_stamp - loop_time)/intervel)*intervel

कुछ विवरणों पर ध्यान देंः

  • 1.当有新成交时,要先去撮合订单,再去根据最新的价格去下单。
  • 2.每个订单都有两个属性:maker——是否为maker,priority——撮合优先级,以买单为例,当买价小于卖一,标记为maker,当买价大于买一是标记为优先撮合,priority决定了价格等于买价是是否撮合,maker决定了手续费。
  • 3.订单的maker和priority是更新的,如下了一笔很大的超过盘口的买单,当出现一个价格大于买价时,此时剩余的成交量将是maker。
  • 4.策略的intervel是必须的,它可以代表行情的延时。

ग्रिड रणनीति का पुनर्मूल्यांकन

अंत में, वास्तविक परीक्षण के चरण में, हम यहां एक सबसे क्लासिक ग्रिड रणनीति का पुनरावलोकन करते हैं, यह देखने के लिए कि क्या अपेक्षित प्रभाव प्राप्त होता है। रणनीति का सिद्धांत यह है कि कीमत में 1% की वृद्धि के लिए, हम एक निश्चित मूल्य के खाली ऑर्डर रखते हैं (इसके विपरीत, कई ऑर्डर रखते हैं), खरीद और बिक्री के लिए बुलेट को पहले से लटका देते हैं। कोड जारी नहीं किया जाता है। सभी कोड को पैक करने के लिए।Grid('XTZ',100,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)फ़ंक्शन में, पैरामीटर क्रमशः हैंः लेन-देन जोड़े, मूल्य विचलन 1% के लिए होल्डिंग मूल्य, हुंगिंग की घनत्व 0.3%, नींद अंतराल एमएस, हुंगिंग की फीस, खाने की फीस।

हाल के पांच दिनों में XTZ बाजार में उतार-चढ़ाव आया है और यह अच्छी तरह से ग्रिड के अनुकूल है।img

हम पहले अलग-अलग शेयरों के आकार के लाभ पर प्रभाव को रीट्रेस करते हैं, पारंपरिक रीट्रेसिंग तंत्र द्वारा रिट्रेस किए गए लाभ निश्चित रूप से स्टॉक के बढ़ने के साथ बढ़ेंगे।

e1 = Grid('XTZ',100,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e1.account['USDT'])
e2 = Grid('XTZ',1000,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e2.account['USDT'])
e3 = Grid('XTZ',10000,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e3.account['USDT'])
e4 = Grid('XTZ',100000,0.3,1000,maker_fee=-0.00002,taker_fee=0.0003)
print(e4.account['USDT'])

कुल मिलाकर चार सेटों का पुनर्मूल्यांकन किया गया, जिनमें से प्रत्येक के लिए भंडारण मूल्य 100, 1000, 10000, 100000, और कुल पुनः उपयोग समय 1.3s था। परिणाम इस प्रकार थेः

{'realised_profit': 28.470993031132966, 'margin': 0.7982662957624465, 'unrealised_profit': 0.0104554474048441, 'total': 10000028.481448, 'leverage': 0.0, 'fee': -0.3430967859046398, 'maker_fee': -0.36980249726699727, 'taker_fee': 0.026705711362357405}
{'realised_profit': 275.63148945320177, 'margin': 14.346335829979132, 'unrealised_profit': 4.4382117331794045e-14, 'total': 10000275.631489, 'leverage': 0.0, 'fee': -3.3102045933457784, 'maker_fee': -3.5800688964477048, 'taker_fee': 0.2698643031019274}
{'realised_profit': 2693.8701498889504, 'margin': 67.70120400534114, 'unrealised_profit': 0.5735269329348516, 'total': 10002694.443677, 'leverage': 0.0001, 'fee': -33.984021415250744, 'maker_fee': -34.879233866850974, 'taker_fee': 0.8952124516001403}
{'realised_profit': 22610.231198585603, 'margin': 983.3853688758861, 'unrealised_profit': -20.529965947304365, 'total': 10022589.701233, 'leverage': 0.002, 'fee': -200.87094000385412, 'maker_fee': -261.5849078470078, 'taker_fee': 60.71396784315319}

यह देखा जा सकता है कि अंततः लाभ क्रमशः 28.4%, 27.5%, 26.9%, 22.6% के लिए प्राप्त किया गया है। यह भी वास्तविक स्थिति के अनुरूप है, स्टॉक का मूल्य जितना बड़ा होगा, सूचीबद्ध मूल्य उतना ही बड़ा होगा, आंशिक लेनदेन की स्थिति जितनी अधिक हो सकती है, अंततः प्राप्त आय सूचीबद्ध मात्रा के सापेक्ष भी कम होगी। नीचे दी गई रेखाचित्र क्रमशः 100 और 10000 के लिए सापेक्ष आय का तुलना हैःimg

हम अलग-अलग मापदंडों के परिणामों को भी रीट्रेस कर सकते हैं, जैसे कि रिट्रेसिंग लाभ पर, जैसे कि हैंगिंग घनत्व, नींद का समय, प्रसंस्करण शुल्क, आदि। उदाहरण के लिए, नींद का समय 100ms में बदल दिया गया है, जबकि नींद का समय 1000ms में बदल गया है, लाभ को देखने के लिए। रीट्रेस के परिणाम इस प्रकार हैंः

{'realised_profit': 29.079440803790423, 'margin': 0.7982662957624695, 'unrealised_profit': 0.0104554474048441, 'total': 10000029.089896, 'leverage': 0.0, 'fee': -0.3703702128662524, 'maker_fee': -0.37938946377435134, 'taker_fee': 0.009019250908098965}

राजस्व में कुछ सुधार हुआ है, क्योंकि रणनीति केवल एक सेट ऑर्डर लटका देती है, कुछ ऑर्डर बदलते समय के कारण अस्थिर हो जाते हैं, और कम नींद का समय इस समस्या को बेहतर बनाता है। यह भी बताता है कि नेट रणनीति के लिए कई सेट ऑर्डर लटकाने का महत्व है।

सारांश

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


संबंधित

अधिक

संभवतःरणनीतिक सिद्धांत है कि कीमत में 1% की वृद्धि। कितना समय लग सकता है 1% की वृद्धि के लिए?

संभवतःरणनीतिक सिद्धांत है कि कीमत में 1% की वृद्धि। -------------------- कितना समय लग सकता है 1% की वृद्धि के लिए?

उपदेशसभी सूचकांक GB पर हैं।

डसाइडासीयह कितना बड़ा डेटा है, क्या वेबसाइट इसे स्वीकार करती है?

घास/upload/asset/1ff487b007e1a848ead.csv

घासयह एक अच्छा तरीका है, लेकिन गहराई से डेटा के लिए बहुत अधिक है।

घासयह एक दिन में 1M-20M है, जो कि वास्तविक डिस्क स्तर के मुकाबले बहुत कम है, व्यापार की व्यस्तता को देखते हुए