मंगलवार को 10:07 बजे, हमारे रिसर्च एजेंट ने एक इंडेक्स ETF में अल्पकालिक तेजी का सेटअप पहचाना। अंतर्निहित सिग्नल सामान्य था: कीमत अपने 20-बार औसत से ऊपर लौट आई थी, वास्तविक अस्थिरता घट रही थी, और अगले सत्र में मैक्रो से जुड़ी एक निर्धारित घोषणा थी। सुझाया गया ट्रेड लगभग दो हफ्ते में एक्सपायर होने वाला कॉल स्प्रेड था।
बैकटेस्ट को यह ट्रेड पसंद आया। पेपर रणनीति ने इसे रखा ही नहीं। जब हमने ऑर्डरों की तुलना की, तो सिग्नल के टाइमस्टैम्प मेल खाते थे और अंतर्निहित कीमतों में कुछ सेंट का ही अंतर था। कॉन्ट्रैक्ट अलग थे: बैकटेस्ट ने ऐतिहासिक चेन में सबसे अच्छा दिखने वाला शुक्रवार का एक्सपायरी कॉन्ट्रैक्ट खरीदा था; पेपर प्रक्रिया ने अगली सूचीबद्ध एक्सपायरी चुनी, जो एक हफ्ते बाद थी।
यह अंतर कैलेंडर जॉइन के कारण आया। हमने “एक्सपायरी तक के दिन” को तारीख की विशेषता मान लिया, फिर वह कॉन्ट्रैक्ट चुना जिसकी एक्सपायरी लक्ष्य तारीख के सबसे करीब थी। ऐतिहासिक डेटा में एक्सपायरी कैलेंडर में एक साप्ताहिक लिस्टिंग शामिल थी, जिसे उस तारीख के बाद जोड़ा गया था जिसकी हम जांच कर रहे थे। बैकटेस्ट ने भविष्य के एक कॉन्ट्रैक्ट का इस्तेमाल ऐसे किया, मानो यह कोई मामूली सुविधा हो।
पहले हमें टाइमज़ोन की गड़बड़ी का शक हुआ। ऑप्शंस एक्सपायरी की तारीखें ऐसी गड़बड़ियां पैदा करने के लिए खास तौर पर जानी जाती हैं: बाजार सत्र न्यूयॉर्क में खत्म होता है, एक्सचेंज टाइमस्टैम्प UTC में रखे जा सकते हैं, और पाइपलाइन में लापरवाही से कास्ट करने पर आधी रात की तारीख बदल सकती है। हमने जांच की। टाइमस्टैम्प सही थे। उस मंगलवार को कॉन्ट्रैक्ट ऐतिहासिक यूनिवर्स में था ही नहीं।
पहला सबक यही था: ऐतिहासिक ऑप्शन चेन के लिए पॉइंट-इन-टाइम लिस्टिंग यूनिवर्स चाहिए। कॉन्ट्रैक्ट की एक्सपायरी तारीख बताती है कि वह कब समाप्त होगा। इससे यह नहीं पता चलता कि वह कब सूचीबद्ध हुआ, कब ट्रेड करने योग्य बना, या उस समय आपका सिस्टम उसे चुन सकता था या नहीं।
हमने चयन के चरण को निर्णय के टाइमस्टैम्प पर उपलब्ध जानकारी के आधार पर फिर से बनाया। हर संभावित कॉन्ट्रैक्ट के लिए हमने जरूरी किया कि उसकी लिस्टिंग का टाइमस्टैम्प निर्णय से बाद का न हो, वैध कोट हमारी ताज़गी सीमा से पुराना न हो, और बाजार सत्र ऐसा हो जिसमें रणनीति ऑर्डर भेज सके। हमने रैंकिंग से पहले संभावित कॉन्ट्रैक्टों का पूरा सेट भी दर्ज किया। यह आखिरी बात अहम थी, क्योंकि पुराने बैकटेस्ट में सिर्फ विजेता बचता था; हम यह नहीं बता सकते थे कि उसने पांच पात्र कॉन्ट्रैक्टों की तुलना की थी या चुपचाप ऐसे कैलेंडर में से चुना था जो उस समय आया ही नहीं था।
इसके बाद हमने स्प्रेड की कीमत तय करने वाले कोट की जांच की। बैकटेस्ट ने हर लेग का सबसे नया कोट अलग-अलग लिया था। कॉल का आस्क 10:06:58 का था; शॉर्ट कॉल का बिड 10:04:11 का। व्यापक डेटा नीति के तहत दोनों तकनीकी रूप से ताज़ा थे, लेकिन उनके बीच बाजार बदल चुका था। अलग-अलग समय के लेगों से बना स्प्रेड मिडपॉइंट ऐसे बाजार का वर्णन कर सकता है जो कभी अस्तित्व में था ही नहीं।
हमने कोट का नियम बदलकर यह शर्त रखी कि दोनों लेगों के टाइमस्टैम्प में दो सेकंड से ज्यादा का अंतर न हो, और क्रॉस्ड या शून्य-साइज़ बाजारों को खारिज किया जाए। इससे इस्तेमाल योग्य ऐतिहासिक अवलोकनों की संख्या घटी। लेकिन बचे हुए प्राइस मार्क ज्यादा भरोसेमंद हुए। जब सिंक्रोनाइज़्ड कोट उपलब्ध नहीं था, तो हमने पुराने प्राइस से खाली जगह भरने के बजाय संभावित कॉन्ट्रैक्ट को अनुपलब्ध माना।
फिर रैंकिंग का नियम आया। एजेंट ने सबसे कम उद्धृत स्प्रेड लागत वाली एक्सपायरी चुनी थी। यह सुनने में ठीक लगता है, जब तक स्प्रेड सिर्फ एक कॉन्ट्रैक्ट का हो और कोट पुराना हो। हमने उद्देश्य स्पष्ट किया: उन कॉन्ट्रैक्टों में, जो न्यूनतम कोट-साइज़, ताज़गी और लिस्टिंग जांच पास करते हैं, निर्धारित जोखिम की प्रति इकाई अपेक्षित पेऑफ अधिकतम करना। इस उदाहरण में, सबसे नज़दीकी पात्र एक्सपायरी के दोनों लेगों के बीच उद्धृत चौड़ाई $0.42 थी, जबकि बाद की एक्सपायरी में यह चौड़ाई $0.31 थी। जो विकल्प सस्ता दिख रहा था, उसमें शॉर्ट लेग पर सिर्फ एक कॉन्ट्रैक्ट प्रदर्शित था।
| विकल्प | क्या उस समय एक्सपायरी उपलब्ध थी? | कोट की उम्र | प्रदर्शित शॉर्ट-लेग साइज़ | निर्णय |
|---|---|---|---|---|
| शुक्रवार की साप्ताहिक एक्सपायरी | नहीं | लागू नहीं | लागू नहीं | बाहर करें |
| अगला शुक्रवार | हाँ | 1.4 सेकंड | 18 कॉन्ट्रैक्ट | पात्र |
| तीसरा शुक्रवार | हाँ | 9.8 सेकंड | 1 कॉन्ट्रैक्ट | पुराना और कम गहराई वाला होने के कारण बाहर करें |
हमने इन नियमों के साथ घटना को फिर से चलाया। बैकटेस्ट ने अब पेपर प्रक्रिया वाली ही एक्सपायरी चुनी और दर्ज किया कि बाकी कॉन्ट्रैक्ट क्यों खारिज हुए। इससे स्प्रेड की एंट्री मूल ऐतिहासिक फिल से $0.11 खराब हुई। इसका मतलब यह नहीं था कि रणनीति में कोई मूल्य नहीं था; इसका मतलब था कि पुराने प्रदर्शन के आंकड़े में ऐसा ट्रेड चयन शामिल था जिसे लाइव प्रक्रिया दोहरा नहीं सकती थी।
एक छोटी-सी झंझट यह है कि एक्सचेंज के सिंबल फॉर्मेट एक्सपायरी की गड़बड़ियों को डेटा-गुणवत्ता की समस्या जैसा दिखा सकते हैं। हमें एक वेंडर का साप्ताहिक कोड मिला, जो मासिक कोड से एक अक्षर में अलग था। मैं अब भी ऑडिट लॉग में सामान्यीकृत कॉन्ट्रैक्ट कुंजी के साथ कच्चा सिंबल भी रखता हूं। यह सुंदर तरीका नहीं है, लेकिन इससे हमने साफ-सुथरे जॉइन पर जरूरत से ज्यादा जल्दी भरोसा करने से बचा है।
अगर आप ऑप्शंस बैकटेस्ट बना रहे हैं, तो हर निर्णय पर पूरा संभावित कॉन्ट्रैक्ट सेट सहेजें, साथ में हर कॉन्ट्रैक्ट की लिस्टिंग स्थिति, कोट टाइमस्टैम्प, साइज़ और खारिज किए जाने का कारण भी। फिर कॉन्ट्रैक्ट चयन को उस स्नैपशॉट का नियतात्मक फ़ंक्शन बनाएं। एक्सपायरी का चुनाव रणनीति का हिस्सा है। अगर बैकटेस्ट ऐसा कॉन्ट्रैक्ट देख सकता है जो पेपर प्रक्रिया नहीं देख सकती थी, तो सिग्नल की तुलना शुरू होने से पहले ही नतीजा बदल चुका होता है।
← सभी पोस्ट


