आपका एंट्री सिग्नल शायद आपके बैकटेस्ट की सबसे कम मायने रखने वाली चीज़ है। मैं एक औसत दर्जे का मोमेंटम नियम ले सकता हूँ, हर एंट्री और एग्ज़िट टाइमस्टैम्प को जस का तस रख सकता हूँ, सिर्फ़ यह तय करने वाला फ़ंक्शन बदल सकता हूँ कि कितने कॉन्ट्रैक्ट रखने हैं, और नेट Sharpe को 0.41 से 0.71 तक तथा अधिकतम ड्रॉडाउन को 31% से 13% तक ले जा सकता हूँ। वही ट्रेड। वही फ़िल। अलग रणनीति।
यह दावा लोगों को खटकता है, और खटकना भी चाहिए, क्योंकि इसका मतलब है कि लुकबैक और फ़िल्टर थ्रेशहोल्ड ट्यून करने में बिताया गया ज़्यादातर समय छोटे हिस्से पर खर्च हो रहा है। तो पहले मैं असली रन दिखाता हूँ, फिर आलोचकों की बात भी मानता हूँ, क्योंकि इस तर्क का एक रूप ग़लत है और यह समझना ज़रूरी है कि मैं कौन-सा रूप पेश कर रहा हूँ।
एक सिग्नल, उसे होल्ड करने के 6 तरीके
सिग्नल: Binance USDⓈ-M पर ETHUSDT परपेचुअल, 1-घंटे के बार, 12-घंटे का EMA 96-घंटे के EMA से ऊपर हो तो लॉन्ग, वरना फ़्लैट, कोई शॉर्ट नहीं। जुलाई 2022 से जून 2026 तक। 431 राउंड ट्रिप। दोनों तरफ़ taker फ़ीस 5.0 bps, हर 8 घंटे में वास्तविक पोज़िशन के आधार पर फ़ंडिंग दी या ली गई, स्लिपेज को टॉप-ऑफ़-बुक डेप्थ के आधार पर मॉडल किया गया। यह जान-बूझकर एक उबाऊ सिग्नल है — मैंने इसे इसलिए चुना क्योंकि कोई इसका बचाव नहीं करेगा, जिससे यह साफ़-सुथरी टेस्ट सतह बन जाता है।
नीचे की हर पंक्ति में एंट्री और एग्ज़िट बार के टाइमस्टैम्प एक जैसे हैं। फ़र्क सिर्फ़ साइज़िंग फ़ंक्शन का है।
| साइज़िंग नियम | नेट Sharpe | अधिकतम DD | सालाना ट्रेडेड नॉशनल (× औसत पोज़िशन) | ग्रॉस PnL का लागत के रूप में हिस्सा | पीक लेवरेज |
|---|---|---|---|---|---|
| फ़िक्स्ड $10k नॉशनल | 0.41 | 18.2% | 246× | 14% | 1.0× |
| फ़िक्स्ड फ़्रैक्शन, इक्विटी का 100% | 0.44 | 30.8% | 251× | 15% | 1.0× |
| 20-दिन की वास्तविक वोलैटिलिटी का व्युत्क्रम | 0.68 | 14.1% | 690× | 29% | 4.4× |
| 20% वार्षिकीकृत वोलैटिलिटी लक्ष्य, हर घंटे रीबैलेंस, बिना कैप | 0.71 | 12.9% | 1,180× | 41% | 6.3× |
| 20% वोलैटिलिटी लक्ष्य, 20% नो-ट्रेड बैंड, 3× लेवरेज कैप | 0.66 | 15.3% | 402× | 19% | 3.0× |
| 60-दिन के रोलिंग माध्य/वैरिएंस पर हाफ-Kelly | 0.52 | 24.6% | 830× | 33% | 8.1× |
इस अंतर को देखिए। सबसे ख़राब और सबसे अच्छे नतीजे के बीच Sharpe में सापेक्ष अंतर 73% है और ड्रॉडाउन में 2.4 गुना फ़र्क। अब इस डेटासेट में ऐसा कोई एंट्री-सिग्नल पैरामीटर ढूँढ़िए जो Sharpe को 0.30 तक बदल दे और साथ ही साफ़ ओवरफ़िटिंग न हो। मैंने ढूँढ़ा है। EMA जोड़ी की अवधि पूरी संभावित ग्रिड में इसे लगभग 0.12 बदलती है, और इस बदलाव का ज़्यादातर हिस्सा ऐसा शोर है जिसे आउट ऑफ़ सैंपल बनाए रखना संभव नहीं।
इनवर्स-वोल इतना अच्छा क्यों दिखता है, और इसमें कितना असली है
इसका तंत्र रहस्यमय नहीं है। फ़िक्स्ड नॉशनल में आपकी पोज़िशन का आकार वास्तविक वोलैटिलिटी से असंबद्ध होता है, यानी हर ट्रेड का डॉलर जोखिम उस हफ़्ते की वोलैटिलिटी के अनुपात में होता है। इस अवधि में ETH की 20-दिन की वास्तविक वोलैटिलिटी वार्षिकीकृत 31% से 118% तक रही। फ़िक्स्ड-नॉशनल रन ने मार्च 2024 में जुलाई 2023 के मुकाबले 3.8× ज़्यादा डॉलर जोखिम लिया — इसलिए नहीं कि सिग्नल ज़्यादा भरोसेमंद था, बल्कि इसलिए कि बाज़ार में हलचल ज़्यादा थी। इसका लगभग पूरा ड्रॉडाउन सबसे ऊँचे वोलैटिलिटी वाले पाँचवें हिस्से में केंद्रित है। इनवर्स-वोल साइज़िंग इस जुड़ाव को हटाती है, और इसे हटाने से रिटर्न स्ट्रीम का आकार वास्तव में बेहतर होता है।
लेकिन Sharpe में हुए सुधार का एक हिस्सा मापन की कलाकारी है, और अगर आप दोनों को अलग नहीं करेंगे तो आगे चलकर ग़लत फ़ैसले करेंगे। Sharpe रिटर्न के मानक विचलन से भाग देने पर मिलता है। वोलैटिलिटी टार्गेटिंग, परिभाषा से ही, रिटर्न के मानक विचलन को स्थिर करने की प्रक्रिया है। आप सीधे हर को बेहतर बना रहे हैं। जो नियम पोज़िशन को स्केल करके पहले से अनुमानित वोलैटिलिटी को स्थिर रखता है, वह वोलैटिलिटी क्लस्टरिंग वाली लगभग किसी भी रिटर्न स्ट्रीम का Sharpe बढ़ा देगा, यहाँ तक कि बिना किसी एज वाली स्ट्रीम का भी। मैंने इसे शफ़ल किए हुए सिग्नलों पर जाँचा है: एंट्री टाइमस्टैम्प को रैंडमाइज़ करें, वोल-टार्गेट ओवरले बनाए रखें, तो शून्य-माध्य वाले आधार पर भी फ़िक्स्ड नॉशनल के मुकाबले Sharpe लगभग 0.06 बढ़ता है। थोड़ा, लेकिन शून्य नहीं, और यह पूरी तरह गणितीय तंत्र का असर है।
इसलिए जब मैं अंदरूनी तौर पर साइज़िंग नियमों की तुलना करता हूँ, तो शीट पर Sharpe कभी अकेला आँकड़ा नहीं होता। मुझे Calmar चाहिए, औसत तैनात नॉशनल की हर इकाई पर नेट PnL चाहिए, और ग्रॉस-से-नेट लागत का पूरा ब्यौरा चाहिए, क्योंकि इन तीनों को साथ देखने पर हर को बदलने की तरकीब से खेलना कहीं मुश्किल होता है।
वोल का अनुमान एक मॉडल है, और इसमें भी मॉडल जैसी लीकेज हो सकती है
अच्छा दिखने वाला साइज़िंग नतीजा झूठा निकलने का सबसे आम कारण यह है: वोलैटिलिटी का अनुमान उसी बार की जानकारी इस्तेमाल करता है जिसके लिए पोज़िशन का आकार तय किया जा रहा है। अगर आपकी वोल सीरीज़ सेंटर किए गए विंडो से निकाली गई है, या मौजूदा अधूरे बार को शामिल करने वाले रिसैंपल के बाद pandas के डिफ़ॉल्ट `rolling().std()` से निकली है, या पूरे सैंपल के मानकीकरण से निकली है, तो आपके पास लीकेज है। यह पकड़ना मुश्किल है, क्योंकि वोलैटिलिटी लगातार बनी रहती है, इसलिए किसी एक पंक्ति में लीकेज थोड़ी होती है और इक्विटी कर्व फिर भी विश्वसनीय दिखता है। बस अहम हफ़्तों में वह ज़रा ज़्यादा ही स्मूद दिखता है।
हमारे एजेंट किसी नतीजे को पेपर-ट्रेडिंग कतार में भेजने से पहले हर साइज़िंग नियम पर 4 चीज़ें जाँचते हैं:
- फ़ैसले के समय उपलब्धता। 14:00 बजे खुलने वाले बार पर इस्तेमाल किया गया साइज़ ऐसे डेटा से निकाला जा सकना चाहिए जिसका क्लोज़ टाइमस्टैम्प ≤ 13:59:59.999 हो। हम यादृच्छिक रूप से चुने गए 200 फ़ैसला बिंदुओं पर ट्रंकेट किए गए फ़्रेम से साइज़ सीरीज़ दोबारा निकालते हैं और अंतर जाँचते हैं।
- अनुमानक का लुकबैक असली पैरामीटर है। 20-दिन की वोल विंडो और 60-दिन की वोल विंडो 2 अलग रणनीतियाँ हैं। लुकबैक बाकी सबके साथ वॉक-फ़ॉरवर्ड ग्रिड में शामिल होता है, और अगर नतीजा सिर्फ़ एक विंडो अवधि पर काम करता है, तो यह उसकी नाज़ुकता के बारे में अहम जानकारी है।
- सिर्फ़ पीक लेवरेज नहीं, लेवरेज का पूरा रास्ता। ग्रॉस लेवरेज का पूरा वितरण दिखाएँ। ऊपर दिए गए बिना कैप वाले वोल-टार्गेट रन ने अपने 4% घंटे 5× से ऊपर बिताए, जो ऐसी बात है जो सारांश तालिका में कभी नहीं दिखती और पूरी तरह तय करती है कि रणनीति लागू की जा सकती है या नहीं।
- साइज़िंग की संवेदनशीलता को मज़बूती की जाँच बनाएँ। अगर वोल लक्ष्य 20% से 25% करने पर Sharpe ढह जाता है, तो रणनीति वोल-टार्गेटेड नहीं है, उसे लेवरेज के हिसाब से ट्यून किया गया है, और आपने कोई संख्या चुनकर अपना एज ढूँढ़ा है।
लेवरेज कैप जोखिम-प्रबंधन की कोई सजावटी चीज़ नहीं है, यह रणनीति की परिभाषा का हिस्सा है। पोज़िशन नॉशनल बढ़ने पर Binance के ETHUSDT टियर अधिकतम लेवरेज घटाते हैं, और मेंटेनेंस मार्जिन दर भी बढ़ती है। अगर बैकटेस्ट वोल-टार्गेट नियम को $400k नॉशनल पर 6.3× तक चलने देता है, तो वह ऐसी पोज़िशन का वर्णन कर रहा है जिसे एक्सचेंज उस मार्जिन पर होल्ड करने नहीं देगा। तालिका में कैप वाली पंक्ति की कीमत 0.05 Sharpe है, और दोनों में से वही एक किसी वास्तविक चीज़ का वर्णन करती है।
पैसा रीबैलेंसिंग में जाता है
लागत वाले कॉलम पर ध्यान दीजिए। वोल लक्ष्य के लिए हर घंटे रीबैलेंस करने से सबसे अच्छा हेडलाइन Sharpe मिला, और साथ ही ग्रॉस PnL का 41% एक्सचेंज को चला गया। 5 bps प्रति तरफ़, साथ में स्प्रेड और इम्पैक्ट जोड़कर, सालाना औसत पोज़िशन नॉशनल का 1,180× ट्रेड हुआ। इसका आसान उपाय है तय समय-सारणी के अनुसार कम बार रीबैलेंस करना। बेहतर उपाय है नो-ट्रेड बैंड: पोज़िशन का आकार तभी बदलें जब मौजूदा पोज़िशन लक्ष्य से एक तय सीमा से ज़्यादा हट जाए।
20% बैंड ने सालाना ट्रेडेड नॉशनल को 1,180× से घटाकर 402× कर दिया — 66% की कमी — और Sharpe में 0.05 की कीमत चुकाई। मैंने अब तक 8 सिग्नलों पर यह आज़माया है और नतीजे का ढर्रा बार-बार एक जैसा है: 15% से 25% के बीच के बैंड एक-तिहाई टर्नओवर पर जोखिम-नियंत्रण का ज़्यादातर फ़ायदा वापस दिलाते हैं, और 10% से कम का कोई भी बैंड बस उस मात्रा में दिखावटी सटीकता के लिए फ़ीस देना है जिसका अनुमान आप वैसे भी 20-दिन की विंडो से लगा रहे हैं। जिस संख्या का मानक त्रुटि 15% है, उसके मुकाबले आप 3 दशमलव स्थानों तक रीबैलेंस नहीं कर सकते।
फ़रवरी में हमारे पास एक रन था जिसमें एजेंट की लिखी रिपोर्ट ने Sharpe में 0.22 के सुधार का श्रेय “बेहतर एंट्री फ़िल्टर” को दिया। बदलाव साइज़िंग मॉड्यूल की एक लाइन में था। फ़िल्टर बदला ही नहीं था। अब मैं रिपोर्ट के सबसे ऊपर साइज़िंग कॉन्फ़िगरेशन का हैश छपवाता हूँ, क्योंकि एट्रिब्यूशन एक अनुशासन है और मॉडल भी किसी और की तरह करीने से गढ़ी कहानी सुनाने को तैयार रहते हैं।
पेपर ट्रेडिंग आपके साइज़िंग नियम के साथ क्या करती है
यहीं बैकटेस्ट और पेपर ट्रेडिंग के बीच का फ़ासला सबसे ज़्यादा खुलता है, और इसकी वजह मुख्यतः अंकगणित है। वोलैटिलिटी के अनुसार बदलने वाली साइज़िंग का मतलब है कि पूरे सैंपल में आपकी पोज़िशन का आकार 4 से 8 गुना तक बदलता है। इस दायरे के दोनों छोर उन एक्सचेंज सीमाओं से टकराते हैं जिन्हें बैकटेस्ट ने मॉडल ही नहीं किया।
छोटे आकार पर: स्टेप साइज़ और न्यूनतम नॉशनल। ETHUSDT perp में 0.001 का क्वांटिटी स्टेप और $5 का न्यूनतम नॉशनल है। अगर कम-वोलैटिलिटी दौर में आपकी पोज़िशन 0.0004 ETH की है, तो बैकटेस्ट उसे होल्ड करता है और पेपर ट्रेडिंग में कुछ भी होल्ड नहीं होता। यह मामूली अपवाद लगता है, जब तक आपको एहसास नहीं होता कि वोल-टार्गेट नियम अपने सबसे छोटे आकार सबसे शांत बाज़ारों में रखता है, जहाँ ट्रेंड सिग्नल में अक्सर अच्छे एंट्री मिलते हैं। बड़े आकार पर: पोज़िशन सीमाएँ, मार्जिन टियर, और यह तथ्य कि 6× पोज़िशन के लिए अलग-मार्जिन का ऐसा अनुशासन चाहिए जिसके लिए आपने लिक्विडेशन मॉडल बैकटेस्ट नहीं किया।
हमने एक ऐसा मामला पकड़ा जहाँ पेपर इक्विटी कर्व 6 हफ़्तों तक बैकटेस्ट से 3% के भीतर रहा, फिर तेज़ी से अलग हो गया। वजह थी राउंडिंग: ऑर्डर साइज़र में स्टेप तक राउंड करने के बजाय `int()` से ट्रंकेशन, जो औसतन 1.4 स्टेप वाली पोज़िशनों पर लागू हुआ। बैकटेस्ट लगातार बदल सकने वाले आकार में साइज़ तय कर रहा था और लाइव साइज़र हर छोटे ट्रेड में तय पोज़िशन का 20-30% गंवा रहा था। न कोई अजीब फ़िल मॉडल, न लेटेंसी की कहानी। बस ट्रंकेशन।
आलोचकों की बात कहाँ सही है
3 आपत्तियाँ वाजिब हैं, और मैं उन्हें दबाकर अपना दावा नहीं बेचना चाहता।
पहली और सबसे अहम बात: साइज़िंग एज का आवंटन करती है, उसे पैदा नहीं कर सकती। अगर यथार्थवादी फ़ीस और फ़ंडिंग के बाद आपके सिग्नल की ग्रॉस अपेक्षित कमाई शून्य या उससे कम है, तो तालिका का हर नियम पैसा खोएगा — चालाक नियम बस कमाई के ज़्यादा सुंदर उतार-चढ़ाव के साथ पैसा गँवाएँगे। मैंने इस अवधि में छोटा मगर सकारात्मक नेट एज रखने वाला सिग्नल चुना। −1.2 bps प्रति ट्रेड नेट वाले सिग्नल पर वही 6 नियम चलाएँ, तो क्रम वही रहता है जबकि हर अंतिम इक्विटी शुरुआती स्तर से नीचे होगी। साइज़िंग किसी चीज़ को गुणा करती है। वह चीज़ फिर भी आपके पास होनी चाहिए।
दूसरी बात, वोल टार्गेटिंग की एक वास्तविक और अच्छी तरह दर्ज विफलता है: तेज़ बिकवाली के निचले बिंदु पर यह लेवरेज घटाती है और उछाल के बाद फिर बढ़ाती है। तेज़ V आकार की चाल में फ़िक्स्ड नॉशनल जीतता है, कभी-कभी बड़े अंतर से। इक्विटी बाज़ारों में मार्च 2020 और क्रिप्टो में अगस्त 2024 की गिरावट के बाद हुई वापसी, दोनों ने सुधार के चरण में वोलैटिलिटी-आधारित साइज़िंग को नुकसान पहुँचाया। मेरी ETH की 4-वर्षीय अवधि में V आकार की तेज़ पलटवार वाली चालों के मुकाबले वोलैटिलिटी-क्लस्टर वाली लंबी, धीमी चालें ज़्यादा हैं, जिससे इनवर्स-वोल वाली पंक्तियाँ बेहतर दिखती हैं। अलग अवधि में कुछ क्रम उलट जाते हैं, और अगर मैंने 2020 की तालिका से शुरुआत की होती, तो मेरा तर्क कमज़ोर होता।
तीसरी बात, साइज़िंग नियम भी बाकी चीज़ों जितना ही ओवरफ़िट हो सकता है। मेरी तालिका में हाफ-Kelly रोलिंग अनुमानों वाला नियम इसका संकेत है: यह परिष्कृत दिखता है, सिद्धांत से प्रेरित है, और इसने दूसरा सबसे बड़ा ड्रॉडाउन दिया, क्योंकि शोर वाले रिटर्न की सीरीज़ का रोलिंग माध्य अनुमान बकवास होता है और Kelly उस पर बहुत बुरी तरह निर्भर करता है। जो भी साइज़िंग नियम अपेक्षित रिटर्न के अनुमान को इनपुट बनाता है, वह उस अनुमान की ग़लती को और बढ़ाकर अपने साथ ले जाता है। सिर्फ़ वैरिएंस के अनुमान का इस्तेमाल करने वाले नियम कहीं बेहतर व्यवहार करते हैं, क्योंकि 4 साल के प्रति-घंटे डेटा से वैरिएंस ही वह एक मोमेंट है जिसका आप सचमुच अनुमान लगा सकते हैं।
इस सब से मैं यही नतीजा रखूँगा: जब बैकटेस्ट का नतीजा आपको चौंकाए, तो सिग्नल में चतुराई ढूँढ़ने से पहले साइज़िंग मॉड्यूल जाँचें। और Sharpe रिपोर्ट करते समय उसके साथ लेवरेज का पूरा रास्ता और लागत का ब्यौरा भी दें, क्योंकि जब कोई संख्या साइज़िंग के फ़ैसले पर इतनी निर्भर हो, तो वह सिग्नल की विशेषता बिल्कुल नहीं होती।
← सभी पोस्ट
