सबक › एडवांस्ड ट्रैक › बैकटेस्ट ट्रैप्स: बायस, ओवरफिटिंग और कॉस्ट्स
वर्ल्ड 10 · एडवांस्ड ट्रैक · सबक 11
बैकटेस्ट ट्रैप्स: बायस, ओवरफिटिंग और कॉस्ट्स
बैकटेस्ट (backtest) को बेवकूफ बनाना आसान है, इसलिए इसे पीकिंग (peeking), मिसिंग लॉसर्स, बहुत सारे ट्वीक्स और मिसिंग कॉस्ट्स के लिए चेक करें।
एक लाइन में
एक बैकटेस्ट एक चिकनी, ऊंची उठती इक्विटी लाइन दिखाता है। चार ट्रैप्स में से किसने इसे बढ़ा-चढ़ाकर दिखाया?
आसान भाषा में
एक बैकटेस्ट आपको जादू की तरह धोखा दे सकता है: रिजल्ट तब तक अद्भुत दिखता है जब तक आप नहीं देखते कि क्या छिपाया गया था। यह भविष्य में झांक सकता है, हारने वालों को छोड़ सकता है, इतना ट्वीक किया जा सकता है कि यह अतीत में बिल्कुल फिट हो जाए, या फीस को नजरअंदाज कर सकता है। इन चार ट्रिक्स की जांच करने से आपको असली रिजल्ट दिखता है।
सबक
लुक-अहेड बायस (look-ahead bias) उस जानकारी का उपयोग करता है जो उस समय उपलब्ध नहीं थी, और सर्वाइवरशिप बायस (survivorship bias) केवल उन एसेट्स पर टेस्ट करता है जो अभी भी मौजूद हैं, उन्हें छोड़कर जो फेल हो गए या डीलिस्ट हो गए। ओवरफिटिंग (overfitting) तब होती है जब नियमों को इतनी बार ट्यून किया जाता है कि वे पिछले नॉइज़ में फिट हो जाते हैं, जिसे डेटा स्नूपिंग (data snooping) भी कहा जाता है जब एक ही डेटा पर कई आइडियाज ट्राई किए जाते हैं। कॉस्ट्स और स्लिपेज (slippage) को नजरअंदाज करना रिजल्ट्स को बढ़ा देता है, खासकर फ्रीक्वेंट ट्रेडिंग के लिए। हर ट्रैप एक स्ट्रैटेजी को कागज पर असलियत से बेहतर दिखाता है।
एक उदाहरण
उदाहरण: एक बैकटेस्ट 500 ट्रेड्स दिखाता है जिनका औसत कॉस्ट्स से पहले +0.15R है, कुल 500 x 0.15 = 75R। कॉस्ट्स और स्लिपेज औसतन 0.12R प्रति ट्रेड हैं, तो असली एज 0.15 - 0.12 = 0.03R है और कुल घटकर 500 x 0.03 = 15R हो जाता है। टेस्ट में केवल आज के इंडेक्स के 80 स्टॉक्स का उपयोग किया गया, लेकिन जब टेस्ट शुरू हुआ तो इसमें 100 स्टॉक्स थे, तो 100 - 80 = 20 नाम, लिस्ट का पांचवां हिस्सा, छोड़ दिए गए, उनमें से कई इसलिए क्योंकि वे गिर गए और हटा दिए गए।
एक ही बात, चार लेवल पर
- एक बैकटेस्ट असलियत से बेहतर दिख सकता है अगर यह समस्याओं को छिपाता है।
- चार ट्रैप्स हैं भविष्य में झांकना, केवल सर्वाइवर्स को टेस्ट करना, बहुत ज्यादा ट्वीक करना और कॉस्ट्स को नजरअंदाज करना।
- उन स्टॉक्स पर टेस्ट करें जो हर पिछली तारीख पर इंडेक्स में थे, न कि सिर्फ आज के मेंबर्स पर, और हर कॉस्ट को शामिल करें।
- अपने ट्वीक्स को गिनें, क्योंकि एक ही डेटा पर ट्यून की गई हर अतिरिक्त सेटिंग इस संभावना को बढ़ाती है कि सबसे अच्छा वर्जन सिर्फ नॉइज़ को फिट कर रहा है, इसलिए नियम कम और सरल रखें।
- रियलिस्टिक स्लिपेज के साथ कॉस्ट्स से पहले और बाद में एक्सपेक्टेंसी रिपोर्ट करें, और केवल उन स्ट्रैटेजीज पर भरोसा करें जिनका एज कॉस्ट्स के बाद भी बचता है और उस डेटा पर पॉजिटिव रहता है जो कभी ट्यूनिंग के लिए इस्तेमाल नहीं हुआ।
ये गलतियाँ मत कीजिए
- केवल आज के इंडेक्स के स्टॉक्स पर टेस्ट करना।
- हर बार जब बैकटेस्ट निराश करे तो एक और नियम जोड़ना।
- कॉस्ट्स से पहले के रिजल्ट्स को असली के रूप में रिपोर्ट करना।
खुद को जाँचिए
सर्वाइवरशिप बायस (survivorship bias) क्या है?
केवल उन एसेट्स पर टेस्ट करना जो आज भी मौजूद हैं. फेलियर्स चुपचाप टेस्ट से गायब हो जाती हैं।
लुक-अहेड बायस (look-ahead bias) क्या है?
उस जानकारी का उपयोग करना जो उस समय उपलब्ध नहीं थी. टेस्ट भविष्य में झांकता है।
ओवरफिटिंग (overfitting) क्या है?
नियमों को इतना टाइट ट्यून करना कि वे पिछले नॉइज़ में फिट हो जाएं. यह असली पैटर्न सीखने के बजाय अतीत को याद कर लेता है।
कौन सा ट्रैप फ्रीक्वेंट ट्रेडिंग को सबसे ज्यादा नुकसान पहुंचाता है?
कॉस्ट्स और स्लिपेज को नजरअंदाज करना. ज्यादा ट्रेड्स का मतलब ज्यादा कॉस्ट्स।
कॉस्ट्स से पहले +0.15R प्रति ट्रेड और 0.12R कॉस्ट्स। कॉस्ट्स के बाद एज क्या है?
+0.03R. 0.15 माइनस 0.12 बराबर 0.03 है।
Read in English: Backtest traps: bias, overfitting and costs