597 / 736BT

Backtesting

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

Backtesting पुराने डेटा पर ट्रेडिंग के नियम आज़माता है। इससे गलतियाँ और लागत समझने में मदद मिलती है, लेकिन ऐतिहासिक लाभ अपने आप यह साबित नहीं करता कि रणनीति आगे भी काम करेगी।

Backtesting पहले से तय ट्रेडिंग नियमों को ऐतिहासिक डेटा पर लागू करके संभावित परिणाम की गणना करता है। इसमें सौदे पूरे होने के तरीके और लागत के बारे में चुनी गई मान्यताएँ शामिल होती हैं।

पीटर देखता है कि बढ़त वाले दिन के बाद कभी-कभी फिर बढ़त होती है। अनुमान के आधार पर खरीदने के बजाय वह एक नियम लिखता है और उसे पुराने भावों पर चलाता है। यही Backtesting है: अतीत पर किसी विचार की जाँच। परिणाम चुने हुए मॉडल में हुई बात बताता है, पीटर की वास्तविक कमाई नहीं। Bailey et al. समझाते हैं कि आकर्षक ऐतिहासिक नतीजे और रणनीति की भरोसेमंद जाँच में अंतर क्यों ज़रूरी है। [1]

पीटर केवल सौदे से पहले उपलब्ध जानकारी इस्तेमाल कर सकता है। यदि नियम दिन का बंद भाव लेता है, तो उसी भाव के आधार पर उसी दिन सुबह खरीद नहीं की जा सकती। QuantConnect इस गलती को Look-ahead Bias कहता है: भविष्य की जानकारी पुराने निर्णय में घुस गई। प्रकाशित आँकड़ों में प्रकाशन का समय मायने रखता है, केवल वह अवधि नहीं जिसका वे वर्णन करते हैं; बाद के संशोधन भी तब ज्ञात नहीं थे। इसलिए हमारे उदाहरण में पहले के पूरे हो चुके बंद भाव और अगली अवधि का खुलने वाला भाव लिया गया है। [2]

केवल आज तक बचे बाज़ारों या कंपनियों को चुनने से दूसरा पक्षपात पैदा होता है। QuantConnect इसे Survivorship Bias कहता है और आज के सूचकांक सदस्यों को अतीत पर लागू करने से समझाता है। Bitcoin डेटा में एक्सचेंज, सेवा में रुकावट और भाव निकालने का तरीका भी महत्त्वपूर्ण है। एक सेवा का भाव दूसरे स्थान पर मिलना ज़रूरी नहीं। गलत रिकॉर्ड सुधारे जा सकते हैं, लेकिन बदलावों का पता रहना चाहिए; असुविधाजनक गिरावटें हटाने से जाँच का सवाल ही बदल जाएगा। [2]

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

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

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

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

ईमानदार रिपोर्ट से डेटा, नियम का संस्करण, अलग-अलग सौदे, लागत और घाटे की अवधियाँ दोबारा देखी जा सकती हैं। तुलना की रणनीति के लिए भी तुलनीय मान्यताएँ चाहिए। अमेरिकी NFA भी काल्पनिक परिणामों में बाद की जानकारी के लाभ और वास्तविक आर्थिक नुकसान के अनुभव की कमी पर ध्यान दिलाता है; उसके प्रचार संबंधी नियम निर्धारित सदस्यों पर लागू होते हैं। बैकटेस्ट किसी विचार को खारिज करने या और जाँचने में मदद करता है। सही गणना भी यह साबित नहीं करती कि वह दूसरे बाज़ार या वास्तविक ट्रेडिंग में काम करेगा। [6]

उदाहरणउदाहरण · 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 का अर्थ कोई सौदा नहीं है। हम दिए गए भावों पर पूर्ण निष्पादन, कोई स्प्रेड या 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दस्तावेज़
समीक्षा की गई: स्रोत पहले · यह निवेश सलाह नहीं है