597 / 691BT

Backtesting

रणनीति का ऐतिहासिक परीक्षण

Backtesting ऐतिहासिक डेटा पर पहले से तय नियमों का अनुकरण करता है। परिणाम जानकारी उपलब्ध होने के समय, डेटा चयन, निष्पादन मॉडल और लागतों पर निर्भर करता है। ऐतिहासिक लाभ न तो वास्तव में निष्पादित सौदा है, न भविष्य के प्रतिफल की गारंटी।

Backtesting व्यापार या निर्णय नियमों का ऐतिहासिक अनुकरण है, जिसमें डेटा, समय क्रम और निष्पादन संबंधी मान्यताएँ स्पष्ट रूप से निर्धारित होती हैं। यह पिछली अवधि के नमूने में नियम का व्यवहार जाँचने देता है, लेकिन परिणाम की प्रमाणिक उपयोगिता पूरे परीक्षण के डिज़ाइन पर निर्भर करती है।

Backtesting ऐतिहासिक डेटा पर नियम दोबारा चलाता है और चुनी गई मान्यताओं के तहत मिलने वाला परिणाम गणना करता है। बेली और सहलेखक इसे एल्गोरिद्मिक रणनीति का ऐतिहासिक अनुकरण बताते हैं और साथ ही गलत खोजों के जोखिम की चेतावनी देते हैं। हमारी संपादकीय सीमा यह है कि परिणाम नियमों, डेटा और निष्पादन मॉडल के किसी खास संस्करण से जुड़ा है। यह प्रमाण नहीं है कि किसी ने वे सौदे वास्तव में किए थे। दोहराई जा सकने वाली गणना किसी गलती या अनुपयुक्त विचार को उजागर कर सकती है, लेकिन अपने आप अतीत को विश्वसनीय पूर्वानुमान में नहीं बदलती। [Bailey et al. — The Probability of Backtest Overfitting]

QuantConnect उस पूर्वाग्रह का वर्णन करता है जिसमें अनुकरण भविष्य की जानकारी इस्तेमाल करता है, जैसे प्रकाशन से पहले लेखा आँकड़े या उनमें बाद के संशोधन। हमारा अपना समय अनुबंध हर इनपुट के लिए उसकी उपलब्धता का समय माँगता है, केवल उस अवधि की तारीख नहीं जिससे वह संबंधित है। बंद हो चुकी कैंडल का संकेत, किसी अतिरिक्त मान्यता के बिना, ऐसे मूल्य पर सौदा नहीं पा सकता जो अब उपलब्ध नहीं था। हमारे उदाहरण में पिछली समापन कीमतें केवल अगली अवधि के लिए इस्तेमाल होती हैं और मॉडल उस अवधि का शुरुआती निष्पादन स्पष्ट रूप से तय करता है। [QuantConnect — Research Guide]

QuantConnect केवल अवधि के अंत तक बची प्रतिभूतियों का परीक्षण करने और आज की सूचकांक संरचना को अतीत पर लागू करने की चेतावनी देता है। हमारा व्यापक प्रश्न है कि क्या ऐतिहासिक डेटासेट उन साधनों को भी सुरक्षित रखता है जो तब उपलब्ध थे लेकिन बाद में गायब हो गए। गायब डेटा, कार्यप्रणाली में बदलाव और बाजारों का चयन दर्ज करना जरूरी है। बिटकॉइन के अनुकरण में किसी एक सेवा की कीमत को दूसरी सेवा पर उपलब्ध कीमत अपने आप नहीं माना जा सकता। साफ डेटा का अर्थ सुधारों का पता लगा पाना है, असुविधाजनक परिणाम हटा देना नहीं। [QuantConnect — Research Guide]

QuantConnect के दस्तावेज़ संकेत और ऑर्डर को उस मॉडल से अलग रखते हैं जो निष्पादन की कीमत और मात्रा निर्धारित करता है। वे वास्तविक व्यापार के आंशिक निष्पादन और तैयार मॉडलों की पूर्ण निष्पादन मान्यता के बीच अंतर भी बताते हैं। हमारी शर्त है कि बताया जाए ऑर्डर कब निष्पादित हो सकता है, अपर्याप्त तरलता पर क्या होगा और पुरानी कीमत कैसे संभाली जाएगी। ऐतिहासिक डेटा में किसी मूल्य स्तर को छूना अपने आप मनमाने आकार के ऑर्डर के लिए उपलब्ध प्रतिपक्ष साबित नहीं करता। निष्पादन मॉडल का परिणाम अनुकरण की मान्यता ही रहता है। [QuantConnect — Trade Fills: Key Concepts]

QuantConnect Slippage को अपेक्षित और वास्तविक निष्पादन कीमत के अंतर के रूप में बताता है तथा देरी, कनेक्शन और बाजार की स्थितियों का प्रभाव बताता है; विचलन अनुकूल या प्रतिकूल हो सकता है। हमारी लागत जाँच शुल्क, निष्पादन कीमत और स्थिति बनाए रखने या वित्तपोषण की संभावित अन्य लागतों को अलग करती है। निष्पादन कीमत में पहले से शामिल लागत दोबारा नहीं घटानी चाहिए। शून्य मूल्य मॉडल की विशिष्ट मान्यता है, लागत रहित बाजार का प्रमाण नहीं। बढ़ी हुई लागतों के प्रति संवेदनशीलता यह समझने में मदद करती है कि छोटा ऐतिहासिक लाभ आशावादी सेटिंग पर निर्भर तो नहीं। [QuantConnect — Slippage: Key Concepts]

TimeSeriesSplit के दस्तावेज़ समय के क्रम में विभाजन बताते हैं ताकि मॉडल भविष्य पर प्रशिक्षित होकर अतीत पर मूल्यांकित न हो। हमारी पद्धतिगत शर्त है कि परिणाम देखने से पहले नियम बनाने की अवधि और उनके बाद के सत्यापन की अवधि तय हों। विफलता के बाद यदि सत्यापन अवधि के आधार पर नियम फिर बदले जाते हैं, तो वह अवधि विकास को प्रभावित कर चुकी है। केवल कालक्रमिक विभाजन पूर्वप्रसंस्करण, अतिव्यापी लक्ष्यों या बार-बार संस्करण चुनने से होने वाला सूचना रिसाव नहीं सुलझाता। प्रक्रिया और डेटा की सीमाएँ दोनों बतानी चाहिए। [scikit-learn — TimeSeriesSplit]

बेली और सहलेखक दिखाते हैं कि उसी डेटा पर बार-बार सर्वोत्तम कॉन्फ़िगरेशन खोजने से गलत खोजों और पिछले शोर के अनुरूप ढलने का जोखिम बढ़ता है। रिपोर्ट के लिए हमारा नियम है कि प्रयासों का इतिहास दिखाएँ, केवल विजेता वक्र नहीं। इसमें पैरामीटर, अवधि और साधनों के चयन में बदलाव शामिल हैं। अनेक परीक्षणों के बाद चुने गए परिणाम की प्रमाणिक उपयोगिता पहले से निर्धारित अपरिवर्तित नियम जैसी नहीं होती। ओवरफिटिंग की प्रायिकता आँकने की उनकी विधि हमारे सरल उदाहरण में न लागू की गई है, न उसकी जगह डेटा का एकमात्र विभाजन रखा गया है। [Bailey et al. — The Probability of Backtest Overfitting]

NFA चेतावनी देता है कि काल्पनिक परिणाम वास्तविक व्यापार नहीं दर्शाते, बाद की जानकारी का लाभ उठा सकते हैं और तरलता, मूल्य फिसलन या वास्तविक नुकसान के दौरान व्यवहार का अपूर्ण मॉडल बना सकते हैं। इसलिए हमारी रिपोर्ट में डेटा और कोड के संस्करण, नियम, निष्पादन मान्यताएँ, शामिल लागतें और अनुकरण किए गए सभी सौदों की सूची सुरक्षित होनी चाहिए। कुल प्रतिफल को जोखिम का संदर्भ और समान शर्तों पर तुलना चाहिए; चुना हुआ सुंदर ग्राफ पर्याप्त नहीं है। ऐतिहासिक परीक्षण का त्रुटिहीन कार्यान्वयन भी भविष्य के बाजार में व्यवहार्यता या प्रतिफल की गारंटी नहीं देता। [NFA — Use of Promotional Material Containing Hypothetical Performance Results]

उदाहरणउदाहरण · BT

पिछली अवधि का संकेत, अगली अवधि में निष्पादन

हमारा काल्पनिक उदाहरण समान लंबाई की चार अवधियाँ A, B, C और D इस्तेमाल करता है। शुरुआती नकद ⁦1000 USD⁩ है, कोई खुली स्थिति, ऋण, जमा या निकासी नहीं है। अवधि A से पहले की दो समापन कीमतें ⁦[100, 100] USD/BTC⁩ हैं। A से D तक की शुरुआती कीमतें ⁦[101, 103, 102, 105] USD/BTC⁩ और समापन कीमतें ⁦[102, 101, 104, 103] USD/BTC⁩ हैं। पहले से तय नियम अवधि के आरंभ में ⁦1 BTC⁩ तभी खरीदता है जब अंतिम पूर्ण समापन कीमत उससे पिछली पूर्ण समापन कीमत से अधिक हो; उसी अवधि के अंत में सब बेच देता है। इसलिए संकेत ⁦[0, 1, 0, 1]⁩ हैं, जहाँ ⁦1⁩ का अर्थ सौदा और ⁦0⁩ का अर्थ निष्क्रियता है। मॉडल बताई गई शुरुआती और समापन कीमतों पर ठीक पूर्ण निष्पादन, शून्य spread और Slippage तथा प्रत्येक खरीद या बिक्री के लिए ⁦0.1 USD⁩ शुल्क के अलावा कोई अन्य लागत नहीं मानता। B में ⁦103 USD⁩ पर खरीदकर ⁦101 USD⁩ पर बेचा जाता है, D में ⁦105 USD⁩ और ⁦103 USD⁩ पर। अवधियों के सकल परिणाम ⁦[0, -2, 0, -2] USD⁩ हैं। सौदों के चार निष्पादित खरीद-बिक्री पक्षों की कुल लागत ⁦0.4 USD⁩ है और शुद्ध परिणाम ⁦[0, -2.2, 0, -2.2] USD⁩ हैं। सकल योग ⁦-4 USD⁩, शुद्ध योग ⁦-4.4 USD⁩ और अंतिम नकद ⁦995.6 USD⁩ है। ग्राफ प्रत्येक अवधि का शुद्ध योगदान दिखाता है, खाते का शेष या प्रायिकता नहीं। यह समय क्रम और लेखांकन का हाथ से जाँचा जा सकने वाला अनुकरण है, वास्तविक बाजार डेटा, अनुकूलन या भविष्य के प्रदर्शन का प्रमाण नहीं।

पूरी तस्वीर के लिए इस प्रविष्टि के साथ यह भी पढ़ें Trading Plan, Trading Journal, Slippage, Overfitting, Walk-forward Analysis. इस प्रविष्टि का उल्लेख यहाँ भी है Technical analysis, OHLCV, Timeframe, Candlestick chart.

01क्या लाभदायक बैकटेस्ट साबित करता है कि रणनीति पैसा कमाएगी?

नहीं। परिणाम खास डेटा, लागतों, निष्पादन मॉडल या सर्वोत्तम संस्करण के चयन पर निर्भर हो सकता है। समय संबंधी शुद्धता, मान्यताएँ और चयन प्रक्रिया जाँचना जरूरी है; उसके बाद भी भविष्य के प्रतिफल की गारंटी नहीं मिलती।

02क्या केवल अंतिम लाभ से शुल्क घटा देना पर्याप्त है?

केवल तब जब यह तरीका मॉडल से बिल्कुल मेल खाए और उपलब्ध पूँजी या बाद के निर्णयों को प्रभावित न करे। सामान्यतः संबंधित घटनाओं पर लागत दर्ज करना, निष्पादन कीमत और शुल्क अलग करना तथा दोहरी कटौती रोकना जरूरी होता है।

DOC · 001Bailey et al. — The Probability of Backtest Overfittingप्राथमिक स्रोत ↗DOC · 002QuantConnect — Research Guideदस्तावेज़ ↗DOC · 003QuantConnect — Trade Fills: Key Conceptsदस्तावेज़ ↗DOC · 004QuantConnect — Slippage: Key Conceptsदस्तावेज़ ↗DOC · 005scikit-learn — TimeSeriesSplitदस्तावेज़ ↗DOC · 006NFA — Use of Promotional Material Containing Hypothetical Performance Resultsदस्तावेज़ ↗
स्रोत पहले · यह निवेश सलाह नहीं है