बैकटेस्टिंग मात्रात्मक ट्रेडिंग और पारंपरिक ट्रेडिंग के बीच सबसे अलग स्थान है। वास्तविक बाजार डेटा के अनुसार जो इतिहास में हुआ है, सिमुलेशन रणनीति संकेत लेनदेन को जल्दी से ट्रिगर करता है और मेल खाता है, और प्रदर्शन रिपोर्ट और अन्य डेटा एक अवधि के लिए प्राप्त किए जाते हैं। घरेलू और विदेशी शेयरों, कमोडिटी वायदा, विदेशी मुद्रा और अन्य बाजारों के लिए, बैकटेस्टिंग रणनीति विकास के सबसे महत्वपूर्ण घटक हैं।
पिछले अध्यायों में, हमने मुख्यधारा की प्रोग्रामिंग भाषा की मूल बातें सीखीं, और आपको सिखाया कि कुछ सरल ट्रेडिंग रणनीतियों को लिखने के लिए इन प्रोग्रामिंग नींव का उपयोग कैसे करें। यह कहा जा सकता है कि सड़क आधी से अधिक हो गई है। हालांकि, एक बार एक रणनीति लिखी जाने के बाद, जो अभी भी वास्तविक बाजार वातावरण से लंबी दूरी पर है। इसके लिए निरंतर बैकटेस्टिंग
मात्रात्मक ट्रेडिंग तर्क के दृष्टिकोण से, एक ट्रेडिंग रणनीति वास्तव में बाजार की संज्ञानों और मान्यताओं की एक श्रृंखला पर आधारित है। बैकटेस्टिंग यह निर्धारित कर सकती है कि ये मान्यताएं स्थिर हैं या नहीं। अस्थिरता के ऐतिहासिक समय में, यह किस तरह का नुकसान ला सकता है? साथ ही इन नुकसानों के निर्णय लेने को रोकने के लिए।
इसके अतिरिक्त, मात्रात्मक व्यापार संचालन के दृष्टिकोण से, बैक टेस्टिंग रणनीति तर्क में बग का पता लगाने में मदद कर सकती है, जैसे कि भविष्य के कार्य, स्लिपिंग मूल्य, बहु-डिग्री फिटिंग, आदि। विश्वसनीय सबूत प्रदान करें कि रणनीति का उपयोग वास्तविक बाजार व्यापार के लिए किया जा सकता है।
ट्रेडिंग सिग्नल की सटीकता की जाँच करें।
यह सत्यापित करें कि व्यापारिक तर्क और आपके विचार व्यवहार्य हैं.
व्यापार प्रणाली में दोषों का पता लगाना और मूल रणनीति में सुधार करना।
तो, बैकटेस्टिंग का अर्थ है व्यापार प्रक्रिया को यथासंभव सही करना, ऐतिहासिक डेटा की वैधता की पुष्टि करना, गलत रणनीति के लिए महंगी गलतियों से बचना, हमें व्यापार रणनीतियों को फ़िल्टर करने, सुधारने और अनुकूलित करने में मदद करना।
ट्रेडिंग रणनीति बैकटेस्टिंग के दौरान स्थिर ऐतिहासिक डेटा पर आधारित है, लेकिन वास्तविक ट्रेडिंग के डेटा गतिशील हैं। उदाहरण के लिएः यदि उच्चतम मूल्य कल की समापन मूल्य से अधिक है, तो लंबी स्थिति खोलें। यह खुली स्थिति वास्तविक बाजार में स्थित है, यदि K लाइन पूरी नहीं हुई है, तो उच्चतम मूल्य गतिशील है, ट्रेडिंग संकेतों को आगे और पीछे झिलमिलाहट करने की संभावना है। बैकटेस्टिंग के दौरान, बैकटेस्टिंग इंजन स्थिर ऐतिहासिक डेटा पर आधारित है जिसे अनुकरण और संश्लेषण किया जा सकता है।
फ्यूचर फंक्शन फ्यूचर प्राइस का उपयोग करता है, जिसका अर्थ है कि वर्तमान स्थितियों को भविष्य में संशोधित किया जा सकता है, और उसी फ्यूचर फंक्शन के कारण ट्रेडिंग सिग्नल भी अस्थिर हो सकता है, जैसे कि
जैसा कि नीचे दिखाया गया हैः ज़िगज़ैग संकेतक फ़ंक्शन शिखर और घाटों के मोड़ बिंदु को इंगित करता है। यह नवीनतम वास्तविक समय की कीमत के अनुसार अपने स्वयं के मूल्य को समायोजित कर सकता है, लेकिन यदि वर्तमान मूल्य बदलता है, तो ज़िगज़ैग मोड़ फ़ंक्शन का परिणाम भी बदल जाएगा। यदि आप इस संकेतक का उपयोग ऐसे भविष्य के फ़ंक्शन के साथ करते हैं, तो वर्तमान ऑर्डर सिग्नल सेट और रखा जा सकता है, लेकिन इस सिग्नल को बाद में मात्रात्मक नहीं किया जा सकता है।
तथाकथित
एक और मामला भी है जब यदि मूल्य अंतर रणनीति द्वारा निर्धारित निश्चित मूल्य से अधिक कूदता है, तो बैकटेस्टिंग वातावरण में, ट्रेडिंग सिग्नल होगा और निष्पादित किया जा सकता है; लेकिन वास्तविक बाजार में, यह स्पष्ट रूप से निष्पादित नहीं किया जा सकता है।
पहला प्रकारः वास्तविक बाजार में, कुछ एक्सचेंजों में अधिकतम मूल्य वृद्धि और गिरावट की दैनिक सीमा होती है। हालांकि, बैकटेस्टिंग वातावरण में, आदेशों को निष्पादित करना संभव है।
दूसरा: विनिमय आदेश मिलान तंत्र, जो मूल्य प्राथमिकता और समय प्राथमिकता हैं। बाजार आदेश गहराई के कुछ किस्मों में अक्सर निष्पादन के लिए प्रतीक्षा करने वाले आदेशों की एक बड़ी संख्या होगी। वास्तविक बाजार में, आपको आदेशों का इंतजार करना होगा कि निष्पादित करने के लिए आपके प्लेसमेंट से पहले, कभी-कभी आपका आदेश कभी भी निष्पादित नहीं किया जाएगा। लेकिन बैकटेस्टिंग वातावरण में, लंबित आदेश बिना प्रतीक्षा के किसी भी कीमत पर निष्पादित किया जाएगा।
तीसराः आर्बिट्रेज रणनीतियों के लिए, बैकटेस्टिंग लाभ आमतौर पर बहुत अधिक होते हैं, क्योंकि हर बार बैकटेस्टिंग ऑपरेशन को उन सभी स्प्रेड कीमतों को पकड़ने के लिए माना जाता है। वास्तविक परिस्थितियों में, अधिकांश कीमतों को निष्पादित करना असंभव है, या कभी-कभी केवल एक दिशा या ट्रेडिंग एक्शन का एक ट्रेडिंग लक्ष्य निष्पादित किया जाता है, सामान्य तौर पर, यह लगभग निश्चित रूप से अनुकूल दिशा या ट्रेडिंग लक्ष्य पहले निष्पादित किया जाएगा, फिर आपको तुरंत ऑर्डर की विपरीत दिशा या विविधता को निष्पादित करने का प्रयास करना होगा। इतनी कम देरी के साथ भी, इस ट्रेडिंग अवसर के स्प्रेड की लागत आपको 1 या 2 मूल्य बिंदुओं से अधिक हो सकती है, जबकि पूरे स्प्रेड आर्बिट्रेज रणनीति को केवल बहुत कम मूल्य लाभ प्राप्त हुआ है। इस तरह की स्थिति को सिमुलेशन वातावरण में बैकटेस्ट करना बहुत मुश्किल है। वास्तविक लाभ बैकटेस्टिंग परिणामों से बहुत दूर हैं।
चौथाः
हर बार जब मैंने निम्नलिखित चित्र देखा, तो मेरे दिल और दिमाग दोनों को मज़ा आया। यह चित्र हमें एक सच्चा अर्थ दिखाता है, एक हास्यास्पद मॉडल, बस पर्याप्त जटिल, किसी भी डेटा के लिए पूरी तरह से अनुकूलित है।
मात्रात्मक ट्रेडिंग के लिए, बैकटेस्टिंग ऐतिहासिक डेटा पर आधारित है, लेकिन ऐतिहासिक डेटा का नमूना सीमित है। यदि ट्रेडिंग रणनीति के बहुत सारे पैरामीटर हैं, या ट्रेडिंग तर्क बहुत जटिल है, तो ट्रेडिंग रणनीति ऐतिहासिक डेटा के लिए बहुत अधिक अनुकूल होगी।
मात्रात्मक रणनीति की मॉडलिंग प्रक्रिया अनिवार्य रूप से बड़ी संख्या में प्रतीत होता है यादृच्छिक डेटा से स्थानीय गैर यादृच्छिक डेटा खोजने की प्रक्रिया है। यदि आप सांख्यिकीय ज्ञान पर भरोसा नहीं करते हैं, तो ओवरफिट के जाल में गिरना आसान है।
तो अपने आप को धोखा मत दो. यदि आप नमूने के बाहर एक बुरा प्रदर्शन डेटा पाते हैं, तो दया महसूस न करें या यह स्वीकार करने के लिए अनिच्छुक न हों कि मॉडल काम नहीं करता है, और इसे अनुकूलित करना जारी रखें जब तक कि नमूने के बाहर के डेटा भी अंदर के रूप में अच्छा प्रदर्शन नहीं करते। यह अंततः आपके वास्तविक पैसे को नुकसान पहुंचाएगा।
वॉल स्ट्रीट का एक लोकप्रिय मजाक हैः मान लीजिए कि बाजार में 1000 बंदर हैं जिन्होंने निवेश में भाग लिया। पहले वर्ष में, 500 बंदर बाजार में खो गए। दूसरे वर्ष के मध्य में, 250 बंदर बचे हैं। तीसरे वर्ष के अंत तक, 125 बंदर बचे हैं।
…
नौवें वर्ष में, आखिरी बंदर बचा था. फिर आप उसे देखते हैं, जितना अधिक आप उसे देखते हैं, उतना ही आप उसका चेहरा परिचित महसूस करते हैं. अंत में, आपने एक वित्तीय पत्रिका का कवर देखा और चिल्लाया, "अरे, क्या यह वारेन बफेट है?
हालांकि यह सिर्फ एक मजाक है, आप अभी भी इसे वास्तविक दुनिया की स्थिति के लिए मैप कर सकते हैं। उदाहरण के लिए, यदि 1000 फंड प्रबंधक हैं, 10 वर्षों के बाद, लगभग 10 फंड प्रबंधक लगातार 10 वर्षों के लिए बाजार से बेहतर प्रदर्शन करेंगे। यह यादृच्छिक भाग्य और निर्णयों के कारण हो सकता है, इन फंड प्रबंधकों
नीचे दिए गए बैकटेस्ट रिपोर्ट की तरह, अधिकांश निवेशक बाईं ओर के आंकड़े का चयन करेंगे। जिसमें बिना किसी महत्वपूर्ण रिट्रेसमेंट के बहुत ठोस प्रदर्शन है।
लेकिन कृपया प्रतीक्षा करें, जैसा कि दाईं ओर दिखाया गया है, जो वास्तविक स्थिति है। बायीं ओर की वक्र इन कई बैकटेस्टों में से केवल सबसे अच्छी है। यानी, बायीं ओर की स्थिति की तुलना में बहुत खराब प्रदर्शन हैं।
एक वास्तविक व्यापारिक वातावरण में, कीमतें हमेशा उतार-चढ़ाव करती हैं। जब आप एक व्यापारिक अवसर के बारे में आशावादी होते हैं, तो ऑर्डर देने के समय कीमत बदल सकती है। इसलिए फिसलने की समस्या, चाहे व्यक्तिपरक व्यापार में हो या मात्रात्मक व्यापार में, अपरिहार्य है।
लेकिन बैकटेस्टिंग स्थिर डेटा पर आधारित है, वास्तविक ट्रेडिंग वातावरण का अनुकरण करना मुश्किल है। उदाहरण के लिएः ऑर्डर की कीमत खरीदने के लिए 1050 है, लेकिन वास्तविक ट्रेडिंग मूल्य 1051 हो सकता है। इस घटना के लिए कई स्थितियां हैं, जैसेः चरम मूल्य आंदोलन में तरलता वैक्यूम, नेटवर्क देरी, हार्डवेयर और सॉफ्टवेयर सिस्टम देरी, सर्वर प्रतिक्रिया देरी, आदि।
बिना फिसलने के बैकटेस्ट
जैसा कि ऊपर दिखाया गया है, स्लिप के बिना एक बैकटेस्ट रिपोर्ट है, लाभ वक्र अच्छा दिखता है, लेकिन वास्तविक बाजार में बैकटेस्ट और वास्तविक ट्रेडिंग के बीच अंतर हैं। इसलिए, बैकटेस्ट के दौरान इस त्रुटि को कम करने के लिए, हमने दो स्लिप बिंदु जोड़े, खरीदने और बेचने की कीमत को बढ़ाने या कम करने के लिए।
फिसलने के साथ बैकटेस्ट
जैसा कि ऊपर दिखाया गया है, एक ही रणनीति, यदि स्लिप के 2 बिंदु के साथ जोड़ा जाता है, तो स्लिप के साथ और बिना बैकटेस्टिंग परिणाम बहुत अलग होते हैं, जिसका अर्थ है कि इस रणनीति को बेहतर बनाने या छोड़ने की आवश्यकता होती है। विशेष रूप से, अपेक्षाकृत उच्च ट्रेडिंग आवृत्ति की रणनीति, बैकटेस्टिंग के दौरान 1 ~ 2 बिंदु स्लिप जोड़ना वास्तविक ट्रेडिंग वातावरण के करीब बैकटेस्टिंग बना सकता है।
कुछ लोग पूछ सकते हैं, चूंकि मात्रात्मक ट्रेडिंग में बहुत सारी समस्याएं हो सकती हैं, तो मैं कैसे साबित कर सकता हूं कि मेरी रणनीति ठीक है? इसका उत्तर सरल है, हमें असली पैसे का उपयोग करने से पहले कुछ समय पहले इस रणनीति द्वारा सिमुलेशन ट्रेडिंग करनी चाहिए, यदि ट्रेडिंग मूल्य और ट्रेडिंग सिमुलेशन स्थिति रणनीति तर्क के साथ लगभग समान हैं, तो यह कम से कम साबित करता है कि रणनीति तर्क में कोई समस्या नहीं है।
किसी भी मामले में, एक अनुभवी ट्रेडिंग सिस्टम डेवलपर के लिए, बैकटेस्टिंग एक जरूरी चीज है। क्योंकि यह आपको बता सकता है कि क्या एक रणनीति विचार को ऐतिहासिक डेटा में मान्य किया जा सकता है। लेकिन कई बार बैकटेस्टिंग का मतलब यह नहीं है कि भविष्य लाभदायक होगा। क्योंकि बैकटेस्टिंग में बहुत सारे गड्ढे हैं, जब आप
क्या है ओवरफिट और इससे कैसे बचें?
वास्तविक जीवन में