मार्केट डेटा की कोई पंक्ति पूरी तरह सटीक हो सकती है, फिर भी बैकटेस्ट के लिए बेकार सबूत साबित हो सकती है। ट्रेड हुआ था, कीमत सही है और टाइमस्टैम्प वैध है; लेकिन फ़ीड ने उसे देर से पहुँचाया हो सकता है, किसी वेंडर ने बाद में उसमें सुधार किया हो सकता है, या उद्धृत मार्केट ऐसा हो सकता है जहाँ आपकी रणनीति की पहुँच ही न हो।
यह जानने के लिए कि ऐतिहासिक डेटा पर ट्रेड किया जा सकता था या नहीं, सिर्फ़ उसके इवेंट टाइमस्टैम्प का ऑडिट करना काफ़ी नहीं है। आपको जानना होगा कि वह पंक्ति क्या बताती है, सिस्टम को कब उपलब्ध हुई, वह किस वेन्यू या इंस्ट्रूमेंट से जुड़ी है, और क्या उस कोट या ट्रेड के आधार पर आपका ऑर्डर व्यावहारिक रूप से दिया जा सकता था।
क्या बैकटेस्ट के लिए ऐतिहासिक कीमत का सही होना काफ़ी है?
नहीं। सटीकता बताती है, “स्रोत ने आखिरकार कौन-सी कीमत दर्ज की?” बैकटेस्ट को यह भी बताना होगा, “निर्णय लेते समय मेरी रणनीति क्या जान सकती थी?” और “वह क्या एक्ज़ीक्यूट कर सकती थी?” ये अलग-अलग सवाल हैं।
मान लीजिए क्रिप्टो ट्रेड 12:00:00.120 पर प्रिंट होता है, लेकिन आपके डेटा वेंडर की स्ट्रीम उसे आपके प्रोसेस तक 12:00:00.480 पर पहुँचाती है। .200 पर निर्णय लेने वाली रणनीति उस ट्रेड का उपयोग नहीं कर सकती, भले ही इवेंट टाइमस्टैम्प उसके निर्णय से पहले का हो। अगर ऐतिहासिक फ़ाइल में सिर्फ़ इवेंट टाइम सेव है, तो बैकटेस्ट चुपचाप रणनीति को ऐसी जानकारी दे सकता है जो उसके लाइव प्रोसेस को अभी मिली ही नहीं थी।
| समय या फ़ील्ड | यह क्या बताता है | न होने पर बैकटेस्ट की चूक |
|---|---|---|
| इवेंट टाइम | एक्सचेंज के अनुसार घटना कब हुई | मार्केट के समय को रणनीति की उपलब्धता समझ लेना |
| रिसीव टाइम | आपके कलेक्टर को संदेश कब मिला | देरी से आए डेटा को ऐसे इस्तेमाल करना मानो वह तुरंत आ गया हो |
| सीक्वेंस या अपडेट ID | फ़ीड क्रम में इवेंट कहाँ आता है | अपडेट गलत क्रम में लागू करना या चुपचाप छोड़ देना |
| रिविज़न टाइम | सुधारा हुआ ऐतिहासिक मान कब ज्ञात हुआ | ऐसे मान से बैकटेस्ट करना जो मूल फ़ीड में मौजूद ही नहीं था |
अगर आपके आर्काइव में रिसीव टाइम नहीं हैं, तो इस कमी को साफ़ तौर पर दर्ज करें। आप लेटेंसी की कोई धारणा लेकर जाँच कर सकते हैं, या अपने निष्कर्ष को इवेंट-टाइम रिसर्च तक सीमित रख सकते हैं। जो टाइमस्टैम्प कभी सेव ही नहीं हुए, उनसे उस समय उपलब्ध जानकारी का सटीक सेट दोबारा नहीं बनाया जा सकता।
मैं कैसे पता करूँ कि किसी कोट पर ऑर्डर एक्ज़ीक्यूट हो सकता था?
उस मार्केट से शुरुआत करें जहाँ आपका ऑर्डर पहुँचता। कई वेन्यू के बेस्ट बिड और ऑफ़र को जोड़कर दिखाया गया कोट यह साबित नहीं करता कि आपके खाते को वहाँ दिखाई गई मात्रा तक पहुँच थी, ऑर्डर पहुँचने पर कोट अब भी मौजूद था, या वेन्यू आपका ऑर्डर टाइप स्वीकार करता।
मार्केट ऑर्डर के लिए मिडपॉइंट पर फ़िल होना आम तौर पर कल्पना है। बेहतर अनुमान के लिए ऑर्डर के आकार के हिसाब से दिखाई देने वाली बुक में आगे बढ़ें, फिर फ़ीस और लेटेंसी या इम्पैक्ट की धारणा जोड़ें। अगर आपके पास सिर्फ़ टॉप-ऑफ़-बुक डेटा है, तो दावे को सीमित रखें: आप पहले स्तर का अनुमान लगा सकते हैं, लेकिन जो गहराई कभी रिकॉर्ड ही नहीं हुई, उसका अनुमान नहीं लगा सकते।
लिमिट ऑर्डर के लिए कीमत का छू जाना फ़िल होने का मतलब नहीं है। आपसे आगे लगे ऑर्डर उपलब्ध मात्रा पहले ले सकते हैं। आम स्नैपशॉट से क्यू में आपकी स्थिति आम तौर पर पता नहीं चलती, इसलिए कीमत छूने पर फ़िल मानने वाले नियम को आशावादी परिदृश्य समझें, उस समय वास्तव में क्या हुआ इसका प्रमाण नहीं।
1-minute बार बता सकता है कि कीमत का निम्न स्तर आपकी लिमिट से नीचे गया। वह यह नहीं बता सकता कि निम्न स्तर आने से पहले आपका पेंडिंग ऑर्डर वेन्यू तक पहुँचा था या नहीं, वहाँ कितना ट्रेड हुआ, या क्यू में आपसे आगे कितने ऑर्डर थे।
मार्केट डेटा आर्काइव पर भरोसा करने से पहले मुझे क्या जाँचना चाहिए?
मैं पहले साधारण बातों की जाँच करता हूँ। टूटी हुई फ़ीड पर लगाया गया परिष्कृत एक्ज़ीक्यूशन मॉडल जितनी रिसर्च बिगाड़ता है, उससे ज़्यादा खराब रिसर्च ये साधारण जाँचें पकड़ लेती हैं।
- कवरेज: क्या कोई समय-अंतराल छूटा है, इवेंट डुप्लिकेट हैं, सीक्वेंस में अंतराल हैं, या बिना स्पष्टीकरण के वॉल्यूम बार-बार शून्य हो जाता है?
- मार्केट की पहचान: क्या समय के साथ सिंबल उसी एक्सचेंज, कॉन्ट्रैक्ट, कोट करेंसी और इंस्ट्रूमेंट विनिर्देशों से जुड़ा रहता है?
- उपलब्धता: क्या इवेंट और रिसीव टाइम, दोनों सेव हैं? अगर नहीं, तो कौन-सी देरी की धारणा नतीजे की सीमा तय करती है?
- सुधार: क्या आप मूल संदेश को बाद के वेंडर बैकफ़िल या संशोधनों से अलग पहचान सकते हैं?
- इकाइयाँ: क्या कीमतों, मात्राओं, कॉन्ट्रैक्ट मल्टिप्लायर और टाइमस्टैम्प की व्याख्या एकसमान तरीके से की गई है?
यह आख़िरी जाँच शायद बहुत बुनियादी लगे। एक बार मैं सुबह भर वोलैटिलिटी रेजीम में दिख रहे बदलाव की वजह खोजता रहा, और पता चला कि फ़ीड माइग्रेशन के बाद मात्रा वाले फ़ील्ड की इकाइयाँ बदल गई थीं। चार्ट शानदार था; इकाई गलत थी।
मैं कैसे जाँचूँ कि डेटा की उपलब्धता से नतीजा बदलता है या नहीं?
रणनीति की निर्णय सीमा के आसपास एक छोटा संवेदनशीलता परीक्षण करें। इस्तेमाल योग्य डेटा को वास्तविकता के मुताबिक़ देरी से शिफ़्ट करें, सीक्वेंस की निरंतरता टूटने पर अपडेट हटाएँ, और जहाँ उपलब्ध हो वहाँ असली वेन्यू बुक के आधार पर फ़िल की तुलना करें। मूल और ख़राब किए गए, दोनों नतीजे रिपोर्ट करें। अगर थोड़ी-सी देरी से प्रभाव गायब हो जाता है, तो हो सकता है रणनीति ऐसी सूचना बढ़त पर निर्भर हो जिसे आपका डेटा संग्रह तंत्र भरोसेमंद ढंग से दे न सके।
एक ठोस उदाहरण लें: मान लीजिए सिग्नल तब सक्रिय होता है जब बेस्ट बिड 1 टिक बढ़ती है। इसे एक बार एक्सचेंज के इवेंट टाइम और दूसरी बार कलेक्टर के रिसीव टाइम के साथ रीप्ले करें। अगर इवेंट-टाइम वाले संस्करण में 40 ट्रेड होते हैं और रिसीव-टाइम वाले में 27, तो यह अंतर रणनीति के सबूत का हिस्सा है। हर रीप्ले पर प्रदर्शन भी उतना ही अहम है। कमज़ोर रीप्ले को सिर्फ़ इसलिए न छिपाएँ कि उसका डेटा कम सुंदर दिखता है।
पेपर ट्रेडिंग अगली उपयोगी जाँच है, क्योंकि इससे उसी ऑपरेटिंग पाथ में फ़ीड की देरी, पुराने कोट, सिंबल मैपिंग की गलतियाँ और वेन्यू फ़िल्टर सामने आते हैं जिसका उपयोग आपका रिसर्च सिस्टम करता है। फिर भी इससे हर लाइव क्यू या मार्केट इम्पैक्ट की नकल नहीं होगी। इस सीमा को स्पष्ट रखें।
व्यवहार में “ट्रेड करने योग्य डेटा” का क्या मतलब है?
इसका मतलब है कि बैकटेस्ट बता सके कि ऑब्ज़र्वेशन कब हुआ, रणनीति उसे कब इस्तेमाल कर सकती थी, वह किस मार्केट से आया, और माने गए फ़िल के पीछे एक्ज़ीक्यूशन का क्या सबूत है। कीमतों की साफ़ श्रृंखला सिर्फ़ शुरुआत है। रिसर्च तब भरोसेमंद बनती है जब उसकी टाइमिंग, पहुँच और फ़िल की धारणाएँ जाँच में खरी उतरें—और उन्हें कम अनुकूल मानने पर भी नतीजा समझ में आए।
← सभी पोस्ट


