पिछले महीने एक जनरेटेड रणनीति से ऐसा इक्विटी कर्व निकला जिसमें 63% का ड्रॉडाउन था। गहरा, बदसूरत, और फिर अगले 6 हफ़्तों में साफ़ रिकवरी — ऐसा आकार जिसे देखकर कोई शोधकर्ता आँखें सिकोड़कर तय करे कि पोज़िशन साइज़ घटा दें तो इसे झेला जा सकता है। मैंने इसे ऐसे मार्जिन इंजन से दोबारा चलाया जिसे पता है कि मेंटेनेंस मार्जिन टियर क्या होता है। ड्रॉडाउन के बीच, 41वें दिन खाता लिक्विडेट हो गया, और 41वें दिन के बाद का सब कुछ काल्पनिक था।
मेरी जानकारी में बैकटेस्ट की यह सबसे महँगी किस्म की गड़बड़ी है, क्योंकि यह आपके रिटर्न को कुछ बेसिस पॉइंट से नहीं बिगाड़ती। यह सिमुलेशन से एक ऐसी अवस्था मिटा देती है जिससे वापसी नहीं होती। जो रणनीति शून्य तक जा सकती है और जो नहीं जा सकती, वे अलग रणनीतियाँ हैं; और जो बैकटेस्ट मार्जिन जाँचता ही नहीं, वह बता नहीं सकता कि आपके पास इनमें से कौन सी है।
मैं इसे 3 तरीकों से गलत होते देखता रहता हूँ।
गलत तरीका 1: लीवरेज को ऐसा अंक मानना जिससे रिटर्न गुणा किए जाएँ
सबसे आम तरीका। आप अपने सिग्नल से रिटर्न सीरीज़ निकालते हैं, तय करते हैं कि इसे 10x पर चलाएँगे, और रिटर्न को उससे गुणा कर देते हैं। कभी-कभी तरीका थोड़ा अधिक परिष्कृत होता है — पोज़िशन साइज़ equity * leverage / price होता है — लेकिन खाते की स्थिति फिर भी बस एक ऐसा गुणक होती है जो ऊपर-नीचे होता रहता है। न मार्जिन बैलेंस, न नॉशनल सीमा, न विफलता की शर्त।
नुकसान छिपा हुआ होता है, इसीलिए समीक्षा में बच निकलता है। Sharpe स्केल से नहीं बदलता, इसलिए लीवरेज को 3x से 30x करने पर आपका मुख्य आँकड़ा जस का तस रहता है और शोधकर्ता निष्कर्ष निकालता है कि लीवरेज एक मुफ़्त डायल है, जो अस्थिरता को रिटर्न के बदले बदलता है। अधिकतम ड्रॉडाउन अंकगणित के संयोग से रैखिक रूप से बढ़ता है और 100% से नीचे रहता है, क्योंकि गुणा किए गए रिटर्न की सीरीज़ शून्य के पास पहुँचती तो है, पर उसे पार नहीं करती। -9% वाले दिन को 12 से गुणा करें तो ईमानदार संस्करण में -108% मिलता है, और भोले संस्करण में "-108%, लेकिन इक्विटी कर्व अब भी सकारात्मक है" — यह इस पर निर्भर है कि आपने चक्रवृद्धि की या जोड़ दिया। मैंने दोनों देखे हैं।
गायब बात यह है कि लीवरेज आपके रिटर्न पर लागू नहीं होता। यह आपके कोलैटरल पर लागू होता है, और कोलैटरल एक सीमित राशि है जिस पर एक्सचेंज हर सेकंड नज़र रखता है। जैसे ही यह मेंटेनेंस आवश्यकता से नीचे गिरता है, पोज़िशन आपकी नहीं रहती।
संकेत: अगर आपका सिमुलेशन किसी भी लीवरेज पर पूरा नुकसान नहीं दिखा सकता, तो वह लीवरेज का मॉडल बना ही नहीं रहा।
गलत तरीका 2: केवल लीवरेज से निकाली गई लिक्विडेशन कीमत
अगले स्तर की परिष्कृतता में लिक्विडेशन जाँच जोड़ दी जाती है, आम तौर पर कुछ इस तरह: 20x पर 5% की प्रतिकूल चाल मार्जिन मिटा देती है, इसलिए लॉन्ग को एंट्री × 0.95 पर लिक्विडेट करें। साफ़, सहज और एक साथ 4 अलग दिशाओं में गलत।
परप वेन्यू यह तय करने के लिए आपकी लीवरेज सेटिंग नहीं देखते कि आपका खेल कब खत्म हुआ। वे मेंटेनेंस मार्जिन दर देखते हैं, जो पोज़िशन नॉशनल के साथ टियर तालिका के अनुसार बढ़ती है। BTCUSDT USDⓈ-M का अनुमानित ढाँचा, जो वेन्यू में बदलाव के साथ बदलता रहता है:
| पोज़िशन नॉशनल (USDT) | मेंटेनेंस मार्जिन दर | अधिकतम लीवरेज |
|---|---|---|
| 0 – 50,000 | 0.40% | 125x |
| 50,000 – 600,000 | 0.50% | 100x |
| 600,000 – 3,000,000 | 1.00% | 50x |
| 3,000,000 – 12,000,000 | 2.50% | 20x |
| 12,000,000 – 70,000,000 | 5.00% | 10x |
इसलिए किसी आइसोलेटेड लॉन्ग में आप जितनी प्रतिकूल चाल झेल सकते हैं, वह लगभग 1/L − MMR है, 1/L नहीं। दूसरे टियर में 20x पर यह 5% − 0.5% = 4.5% है। आधा प्रतिशत सुनने में राउंडिंग जैसा लगता है। BTC के 84,000 पर यह कीमत में 420 डॉलर है, और तेज़ी वाले एक घंटे में 420 डॉलर उस विक को अलग कर सकते हैं जिसने आपको बाहर किया और उस विक को जिसने नहीं किया। हर विक एक सिक्का उछालने जैसा है और आपने हर बार बाज़ी अपने पक्ष में झुका दी है।
फिर फ़ीस आती है। एंट्री taker फ़ीस भरते ही आपके मार्जिन से कट जाती है: 500,000 नॉशनल पर 0.045% का मतलब 225 USDT, जो 25,000 के मार्जिन बैलेंस के मुकाबले है; इससे पोज़िशन के कुछ भी करने से पहले ही लिक्विडेशन कीमत बदल जाती है। Funding भी लगातार यही करती है, और लीवरेज्ड नॉशनल पर इसका असर शोधकर्ताओं की अपेक्षा से कहीं बड़ा होता है:
ऐसी पोज़िशन जो 30 दिनों तक कुछ नहीं करती — न प्रतिकूल चाल, न ट्रेड — उसका करीब पाँचवाँ हिस्सा कोलैटरल जल चुका होता है और लिक्विडेशन कीमत काफ़ी करीब आ चुकी होती है। गलत होने की तीसरी और चौथी दिशा ये हैं: पोज़िशन बढ़ाने पर टियर बदलते हैं, इसलिए जो पोज़िशन 0.5% टियर में शुरू हुई और औसत बढ़ाते-बढ़ाते 1.0% टियर में पहुँच गई, उसकी लिक्विडेशन कीमत एंट्री पर निकाली गई कीमत से बदतर होती है; और क्रॉस मार्जिन कई पोज़िशनों के बीच कोलैटरल साझा करता है, इसलिए आपके BTC लॉन्ग का बचना इस बात पर निर्भर करता है कि आपका ETH शॉर्ट क्या कर रहा है। अगर आप क्रॉस मार्जिन को स्वतंत्र आइसोलेटेड पोज़िशनों के समूह की तरह सिमुलेट कर रहे हैं, तो आपने अपने ही खाते के सहसंबंध ढाँचे को उलट दिया है।
गलत तरीका 3: गलत कीमत पर, गलत समय पर, गलत फ़िल से लिक्विडेशन तय करना
मान लें कि आपने ट्रिगर स्तर सही निकाला। अब सवाल हैं: उसे कौन सी कीमत पार करती है, आप कब जाँचते हैं, और आपका फ़िल किस कीमत पर होता है?
लिक्विडेशन मार्क प्राइस पर ट्रिगर होता है। यह कई स्पॉट वेन्यू का इंडेक्स होता है जिसमें स्मूद किया हुआ बेसिस घटक शामिल रहता है, जिसे किसी एक वेन्यू के विक का असर रोकने के लिए जानबूझकर बनाया गया है। आपका स्टॉप-लॉस, आपकी सेटिंग के आधार पर, शायद आख़िरी ट्रेड हुई कीमत पर ट्रिगर होता है। ये दोनों संख्याएँ ठीक उसी समय अलग होती हैं जब फ़र्क पड़ता है। तेज़ गिरावट के दौरान परप की आख़िरी कीमत मार्क से 1–2% नीचे, दसियों सेकंड तक जा सकती है। जो बैकटेस्ट स्टॉप और लिक्विडेशन दोनों को एक ही OHLCV लो से चलाता है, वह ऐसे वेन्यू का मॉडल बना रहा है जो मौजूद ही नहीं है।
यहाँ दोनों त्रुटियाँ मौजूद हैं और एक-दूसरे को रद्द नहीं करतीं। आख़िरी कीमत से चलाने पर आप उन विक पर लिक्विडेट होते हैं जिन्हें वेन्यू ने नज़रअंदाज़ किया। मार्क प्राइस से चलाने पर वह स्थिति छूट जाती है जिसमें मार्क खुद चला गया — किसी स्पॉट वेन्यू पर इंडेक्स का विचलन, उस कीमत पर लिक्विडेट होने का वास्तविक कारण है जो आपके ट्रेड किए परप पर कभी छपी ही नहीं।
फिर फ़िल की बात। भोले इंजन पोज़िशन को लिक्विडेशन कीमत पर बंद करके नुकसान ऐसे दर्ज करते हैं मानो वह स्टॉप हो। असल में क्या होता है: लिक्विडेशन इंजन पोज़िशन को बैंकरप्सी कीमत पर अपने हाथ में लेता है — वह स्तर जहाँ आपका मार्जिन ठीक शून्य होता है, जो ट्रिगर से भी बदतर है — और इसके ऊपर लिक्विडेशन क्लियरेंस फ़ीस लगती है, जो टियर पर निर्भर करती है और निचले टियर में नॉशनल के करीब 1% होती है। 20x पर नॉशनल का 1% आपके बचे हुए मार्जिन का 20% है। अगर इंजन बैंकरप्सी से नीचे फ़िल करता है, तो बीमा फ़ंड इस अंतर को भरता है; कुछ वेन्यू में फ़ंड खाली हो जाए तो सामाजिककृत नुकसान ऑर्डर बुक के लाभ वाले पक्ष तक पहुँचता है। आपका वास्तविक नुकसान लिक्विडेशन कीमत तक के ड्रॉडाउन जितना नहीं होता। वह उससे अधिक होता है, और यह अतिरिक्त नुकसान ठीक उन्हीं दिनों सबसे बड़ा होता है जब बुक इतनी पतली होती है कि हालात सबसे खराब बन जाते हैं।
और इंट्राबार मैकेनिक्स वाला समय का सवाल यहाँ पहले से कहीं ज़्यादा अहम है। अगर 1-minute बार में आपका take-profit और लिक्विडेशन स्तर दोनों आते हैं, तो जो बैकटेस्ट मार्जिन से पहले एग्ज़िट जाँचता है, वह खुशी-खुशी जीत दर्ज कर देगा। वेन्यू हर मार्क प्राइस अपडेट पर, लगभग हर सेकंड, बाकी किसी भी घटना से पहले मार्जिन जाँचता है।
इंजन को इसके बजाय क्या ट्रैक करना होगा
इनमें से किसी चीज़ के लिए असाधारण जटिलता नहीं चाहिए। इसके लिए स्थिति को बनाए रखना ज़रूरी है। खाता बैलेंस वाला एक ऑब्जेक्ट है, रिटर्न सीरीज़ नहीं, और हर बार में इसे उसी क्रम में अपडेट किया जाता है जिस क्रम में वेन्यू करता है:
- वॉलेट बैलेंस और अवास्तविक PnL, अलग-अलग। मार्जिन अनुपात, मेंटेनेंस मार्जिन को मार्जिन बैलेंस से भाग देने पर मिलता है, और मार्जिन बैलेंस में अवास्तविक PnL शामिल होता है। दोनों को एक मानने से घाटे वाली पोज़िशन का कोलैटरल वास्तविकता से बेहतर दिखता है।
- हर सिंबल की टियर तालिका, तारीख़ के अनुसार संस्करणबद्ध। टियर में संशोधन होते रहते हैं। 2023 का बैकटेस्ट 2026 के टियर पर चलाना एक छिपा हुआ लुक-अहेड है — आम तौर पर अनुकूल, क्योंकि समय के साथ वेन्यू ने प्रमुख कॉइनों पर ज़रूरतें ढीली की हैं।
- सिर्फ क्लाइन्स नहीं, मार्क प्राइस सीरीज़। अगर आपको मार्क प्राइस का इतिहास नहीं मिल सकता, तो नतीजों में यह साफ़ बताएँ और एक सतर्क प्रॉक्सी इस्तेमाल करें। आख़िरी कीमत को चुपचाप उसकी जगह कभी न रखें।
- बार के इवेंट क्रम में सबसे पहले मार्जिन जाँच, स्टॉप, टार्गेट, सिग्नल या रीबैलेंसिंग से पहले।
- बैंकरप्सी कीमत पर फ़िल और क्लियरेंस फ़ीस, जिसकी दर उसी टियर पंक्ति से ली जाए जहाँ से MMR लिया गया है।
- ऐसी अंतिम अवस्था जिससे वापसी नहीं होती। इक्विटी शून्य पर पहुँचते ही रन खत्म हो जाता है। न रीबेस करना, न "मान लें कि ट्रेडर और पैसा डालता है," न नई नॉशनल राशि से सीरीज़ जारी रखना।
आख़िरी बात पर सबसे ज़्यादा बहस होती है। कोई न कोई हमेशा कहता है कि असली डेस्क और कोलैटरल जमा करेगी, इसलिए सिमुलेशन खत्म करना अवास्तविक रूप से सख़्त है। हो सकता है। लेकिन "यह रणनीति तब काम करती है जब बुरी तरह फूँक देने के बाद भी आप इसमें पैसा डालते रहें" ऐसा दावा है जिसे इन्हीं शब्दों में साफ़-साफ़ कहकर, जानबूझकर परखना चाहिए। टॉप-अप को स्पष्ट इनपुट रखें, डिफ़ॉल्ट मानकर चुपके से शामिल न करें। जब आप इसे ईमानदारी से लिखते हैं, तो ज़्यादातर लोगों को पता चलता है कि उनका मतलब यह था ही नहीं।
इस सबका व्यावहारिक फ़ायदा यह है: जब आप उसी रणनीति को लाइव वेन्यू के सामने पेपर पर चलाते हैं, तो एक्सचेंज जो मार्जिन अनुपात बताता है और आपका सिम्युलेटर जो निकालता है, वे दिन भर 1 या 2 बेसिस पॉइंट के भीतर साथ-साथ चलने चाहिए। इस मेल को हर खुले पोज़िशन पर, हर मिनट, मुफ़्त में जाँचा जा सकता है। पूरे सिस्टम में यह सबसे सस्ता पैरिटी टेस्ट है और लगभग कोई इसे नहीं चलाता — और जब दोनों संख्याएँ अलग होने लगती हैं, तो एक्सचेंज सही होता है और आपके पास ऐसी गड़बड़ी होती है जिसे ड्रॉडाउन से पहले ढूँढ़ना चाहिए।
← सभी पोस्ट


