WeCore
एल्गोरिदमिक ट्रेडिंग

बैकटेस्टिंग बनाम लाइव ट्रेडिंग: असली नतीजे अलग क्यों आते हैं

लाइव ट्रेडिंग के नतीजे बैकटेस्ट से अलग क्यों होते हैं: फिल्स, स्लिपेज, कमीशन, लेटेंसी, डेटा क्वालिटी, look-ahead bias, रेजीम बदलाव, और पहले सही तरीके से टेस्ट कैसे करें।

WeCore·प्रकाशित ·5 मिनट पढ़ने का समय

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

बैकटेस्ट असल में क्या मापता है

बैकटेस्ट किसी स्ट्रैटेजी के नियमों को हिस्टोरिकल प्राइस डेटा पर चलाता है और हिसाब लगाता है कि अगर आपने उन्हें ट्रेड किया होता तो क्या होता। उदाहरण के लिए, TradingView में Strategy Tester यह काम Pine Script में लिखी स्ट्रैटेजी के लिए करता है। नतीजा एक अनुमान है, अतीत की रिकॉर्डिंग नहीं।

समस्या यह है कि बैकटेस्ट सिर्फ वही "जानता" है जो उसके डेटा में है। अगर डेटा पांच मिनट के बार्स का है, तो उसे नहीं पता कि बार के अंदर क्या हुआ। अगर आपने कमीशन सेट नहीं किया, तो वह मान लेता है कि ट्रेडिंग मुफ्त है। अगर स्लिपेज सेट नहीं की, तो वह मान लेता है कि हर ऑर्डर ठीक उसी प्राइस पर फिल हुआ जो आप चाहते थे। इनमें से हर मान्यता नतीजे को ऊपर की ओर झुका देती है।

फिल्स और स्लिपेज

ज़्यादातर ट्रेडर्स के लिए यही अंतर का सबसे बड़ा कारण है।

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

एक काल्पनिक उदाहरण: एक स्ट्रैटेजी MNQ पर साल में 400 ट्रेड लेती है। अगर हर ट्रेड में औसतन एंट्री पर एक टिक और एग्ज़िट पर एक टिक स्लिपेज हो, तो साल में 800 टिक्स बनते हैं जो बैकटेस्ट में कभी दिखे ही नहीं। छोटे एज वाली स्ट्रैटेजी के लिए यही पूरा फर्क हो सकता है। ज़्यादा जानकारी स्लिपेज और एग्जीक्यूशन कॉस्ट में।

कमीशन, एक्सचेंज फीस और डेटा कॉस्ट

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

लेटेंसी

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

डेटा क्वालिटी और बायस

  • Look-ahead bias: कोड ऐसी जानकारी इस्तेमाल करता है जो फैसले के पल उपलब्ध नहीं थी। एक क्लासिक उदाहरण: किसी बार के क्लोज़ के आधार पर फैसला लेना लेकिन उसी बार के ओपन पर एंट्री लेना। ऊंचे टाइमफ्रेम के डेटा का लापरवाह इस्तेमाल भी यह पैदा कर सकता है।
  • रीपेंटिंग: ऐसे इंडिकेटर जो बाद में अपने हिस्टोरिकल वैल्यूज़ बदल देते हैं। चार्ट पर सिग्नल परफेक्ट दिखता है; रियल टाइम में वह दिखा और गायब हो गया।
  • Survivorship bias: मुख्य रूप से स्टॉक्स के लिए - सिर्फ उन एसेट्स पर टेस्ट करना जो आज तक बचे रहे। फ्यूचर्स में इसका समान मुद्दा कंटिन्यूअस चार्ट्स (जैसे NQ1!) हैं, जो अलग-अलग कॉन्ट्रैक्ट्स को जोड़ते हैं और रोल वाले दिनों पर नकली जंप्स बना सकते हैं।
  • गायब या गलत डेटा: गायब बार्स, गलत सेशन टाइमिंग या गलत टाइम ज़ोन।

मार्केट रेजीम में बदलाव

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

फॉरवर्ड टेस्टिंग और सिमुलेशन

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

इस चरण में क्या जांचें:

  1. क्या अलर्ट समय पर और सही फॉर्मेट में पहुंच रहे हैं?
  2. सिग्नल प्राइस और फिल प्राइस के बीच औसत दूरी कितनी है?
  3. क्या ट्रेड्स की संख्या बैकटेस्ट की उम्मीद जैसी है?
  4. क्या डुप्लीकेट या गायब ट्रेड्स, या "अनाथ" पोज़ीशन्स हैं?
  5. क्या ओपन, क्लोज़ और डेटा रिलीज़ के आसपास बर्ताव ठीक है?

हर ट्रेड को जर्नल में लिखें और उसी दौर के बैकटेस्ट से तुलना करें। जो अंतर आप मापते हैं वह कीमती है: आप उसे यथार्थवादी स्लिपेज मान्यता के रूप में वापस बैकटेस्ट में डाल सकते हैं।

वाजिब उम्मीदें

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

मुख्य बातें

  • बैकटेस्ट मान्यताओं वाला एक मॉडल है, और लगभग सभी मान्यताएं नतीजों को ऊपर की ओर झुकाती हैं।
  • स्लिपेज, लिमिट-ऑर्डर फिल्स और कमीशन अंतर के सबसे बड़े कारण हैं।
  • Look-ahead bias और रीपेंटिंग ऐसे नतीजे दे सकते हैं जो रियल टाइम में कभी हासिल नहीं हो सकते थे।
  • उसी एग्जीक्यूशन पाथ के साथ सिमुलेशन में फॉरवर्ड टेस्टिंग एक ज़रूरी कदम है।
  • असली अंतर मापें और उसे वापस अपनी टेस्टिंग में डालें।

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

स्रोत और आगे पढ़ें