आपका backtest आपको एक equity curve थमाता है। वह चढ़ती है, गिरती है, किसी आख़िरी नंबर पर ख़त्म होती है, और आपको लगता है कि यही आपकी strategy की सच्चाई है। ऐसा नहीं है। यह आपके trades की असंख्य मुमकिन तरतीबों में से बस एक तरतीब है, और जो क्रम आपको इत्तेफ़ाक़न मिल गया वह किसी कमज़ोर strategy को सजा-सँवारकर दिखा सकता है या किसी मज़बूत strategy को दफ़न कर सकता है।
Monte Carlo simulation वह तरीका है जिससे आप उस एक ख़ुशक़िस्मत (या बदक़िस्मत) क्रम से आगे देख पाते हैं। Freya का backtest engine आपके trades को एक हज़ार बार दोबारा फेंटता है और नतीजों की पूरी रेंज बताता है, उस एक नंबर समेत जो कोई अकेला backtest आपको कभी ईमानदारी से नहीं दिखा सकता: वह probability कि यह strategy आपके account को साफ़ कर देगी।
मुख्य बातें
- एक अकेला backtest आपके trades की सिर्फ़ एक तरतीब है; वही trades किसी दूसरे क्रम में मुनाफ़े पर भी ख़त्म हो सकते हैं और ruin पर भी।
- Monte Carlo आपके trades को 1000 बार दोबारा फेंटकर नतीजों का पूरा distribution बनाता है, न कि सिर्फ़ वह एक नतीजा जो असल में हुआ।
- Probability of ruin उन reorderings का हिस्सा है जहाँ account असरदार तौर पर साफ़ हो जाता है; कुछ percent भी हो तो यह ख़तरे की घंटी है।
- जिस drawdown के लिए आपको असल में तैयार रहना चाहिए वह आपके अकेले backtest का drawdown नहीं, बल्कि 95th-percentile drawdown है।
- Simulation चलाने के लिए Freya को कम से कम 10 trades चाहिए, और नतीजा deterministic होता है, इसलिए वही backtest हमेशा वही नंबर देता है।
- Monte Carlo sequence risk का stress-test करता है। यह market regime में बदलाव को model नहीं कर सकता, इसलिए इसे walk-forward validation के साथ मिलाकर इस्तेमाल करें।
अगर आपने अभी तक कोई backtest नहीं चलाया है, तो step-by-step backtesting गाइड से शुरू करें, और जिन core metrics पर यह लेख टिका है उनके लिए backtest नतीजों की व्याख्या पढ़ें।
यहाँ दिए गए dollar amounts और percentages काम के उदाहरण हैं, सिफ़ारिशें नहीं। Crypto trading में पैसा डूब सकता है। हर bot को उतने ही पैसों से चलाएँ जितने का नुक़सान आप झेल सकते हैं, और live जाने से पहले पूरा Risk Disclosure पढ़ें।
एक Equity Curve झूठ क्यों बोलती है
एक ऐसी strategy की कल्पना करें जिसमें 40 trades हैं: 24 जीत और 16 हार। आपके backtest ने इन्हें ठीक उसी क्रम में खेला जिस क्रम में market ने दिए। पर वह क्रम इत्तेफ़ाक़ था। अगर तीन सबसे बड़े नुक़सान शुरुआत के पास एक के बाद एक आ जाते, इससे पहले कि आपके account में मुनाफ़े का कुशन बनता, तो वही 40 trades account को इतना नीचे खींच सकते थे कि liquidation या ऐसा stop-out छिड़ जाता जिससे आप कभी उबर नहीं पाते। इन्हें किसी नरम क्रम में खेलें और account फिसलते हुए एक नई ऊँचाई पर पहुँच जाता है।
वही trades। वही win rate। वही औसत जीत और औसत हार। पर बचने का नतीजा बिल्कुल अलग। यही है sequence risk, और यह एक अकेली equity curve में दिखाई नहीं देता क्योंकि एक अकेली curve आपको सिर्फ़ एक sequence दिखाती है।
Monte Carlo simulation इसीलिए है, ताकि sequence risk को दिखाया जा सके।
Freya पर Monte Carlo असल में क्या करता है
Freya का engine आपके backtest से निकली trades की सूची लेता है और एक bootstrap resampling चलाता है: यह आपके trades को बेतरतीब ढंग से, replacement के साथ, एक नई तरतीब में खींचता है, फिर उस क्रम से गुज़रती एक equity curve बनाता है और दर्ज करता है कि वह कहाँ ख़त्म हुई और रास्ते में कितना नीचे गिरी। यह इसे 1000 बार दोहराता है, और इस तरह एक हज़ार मुमकिन वैकल्पिक इतिहासों का distribution बना देता है जिनसे आपकी strategy गुज़र सकती थी।
कुछ बातें जानने लायक हैं, क्योंकि यही नंबरों को भरोसेमंद बनाती हैं:
- इसे कम से कम 10 trades चाहिए। इससे कम में इतना sample ही नहीं होता कि दोबारा फेंटकर कुछ अर्थपूर्ण बनाया जा सके, इसलिए Freya कोई भ्रामक नतीजा देने के बजाय कोई Monte Carlo नतीजा नहीं देता। असल में distribution के मायने रखने के लिए आप 10 से कहीं ज़्यादा trades चाहेंगे।
- यह deterministic है। Simulation आपके अपने backtest के नतीजों से seed होता है, इसलिए वही backtest चलाने पर हर बार वही Monte Carlo नंबर मिलते हैं। बेतरतीबी दोबारा फेंटने में है, report में नहीं।
- कोई run ruin पर रुक जाता है। जैसे ही कोई simulated account ruin स्तर तक गिरता है, वह run वहीं ख़त्म हो जाता है, ठीक वैसे ही जैसे live engine ख़ाली हो चुके account को रोक देता है। Simulation किसी ऐसे account पर काल्पनिक trades चढ़ाता नहीं रहता जिसमें अब पूँजी बची ही नहीं, इसलिए drawdowns उतने में ही बँधे रहते हैं जितना असल में खोने को था।
Freya कैसे resample करता है, यह इस पर निर्भर करता है कि आपका bot positions को कैसे size करता है। Fixed sizing के साथ हर trade लगभग एक जैसी absolute रक़म जोखिम में डालता है, इसलिए engine हर trade के raw profit और loss को दोबारा फेंटता है। Compounding के साथ किसी trade का dollar नतीजा इस पर निर्भर करता है कि जब वह हुआ तब account कितना बड़ा था, इसलिए engine इसके बजाय percentage returns को दोबारा फेंटता है। किसी compounding bot के लिए raw dollars दोबारा फेंटना ऐसे नतीजे गढ़ देता जो strategy कभी पैदा ही नहीं कर सकती, इसलिए Freya जान-बूझकर resampling को आपके sizing तरीके से मिलाता है।
Monte Carlo Output को पढ़ना
काफ़ी trades वाले backtest के बाद Monte Carlo panel सभी 1000 runs का distribution बताता है। यहाँ है कि हर नंबर आपको क्या बता रहा है और उस पर कैसे कदम उठाएँ।
Probability of ruin
सबसे अहम अकेला नंबर। यह उन 1000 reorderings का percentage है जिनमें account असरदार तौर पर साफ़ हो गया, यानी वह उस balance के क़रीब एक-दसवें हिस्से तक गिर गया जिससे आपने शुरू किया था। जो strategy एक हज़ार बार दोबारा फेंटने पर एक बार भी ruin न हो, वह ढाँचागत मज़बूती दिखा रही है। जिस strategy की probability of ruin 2 से 5 percent भी हो, वह आपको बता रही है कि इन्हीं trades की एक बदक़िस्मत तरतीब आपके account को ख़त्म कर देती है, और live markets बख़ूबी आपको वह क्रम थमा सकते हैं।
किसी भी non-zero probability of ruin को live जाने से पहले हल करने वाली sizing की समस्या मानें, नज़रअंदाज़ करने वाली rounding error नहीं।
Probability of profit
इसका उल्टा अक्स: उन reorderings का percentage जो हरे में ख़त्म हुए। किसी strategy का एक अकेला backtest बेहद ख़ूबसूरत हो सकता है और फिर भी वह मान लें सिर्फ़ 60 percent reorderings में ही positive रहे, जिसका मतलब है कि दस में से चार बार कोई दूसरा sequence आपको नुक़सान थमा देता। यह जितना 100 percent के क़रीब हो, आपका नतीजा उतना ही कम इस पर निर्भर था कि trades का दोस्ताना क्रम मिल जाए।
Confidence intervals
95 percent और 99 percent confidence intervals आपको वह रेंज देते हैं जिसमें simulations के आर-पार आपकी final equity पहुँची। जिस एक नंबर पर आपका backtest ख़त्म हुआ वह इस रेंज के अंदर का एक बिंदु है, और अक्सर बीच वाला नहीं। अगर आपका backtest 95 percent interval के ऊपरी सिरे पर ख़त्म हुआ, तो आपका मुख्य नतीजा उस सबसे आशावादी किनारे के पास था जो यह strategy मुमकिन तौर पर करती है। ईमानदार उम्मीद अकेला आँकड़ा नहीं, बल्कि interval है।
Median, best case और worst case
Median final equity बीच वाला नतीजा है, जो अकेले backtest नंबर से ज़्यादा भरोसेमंद उम्मीद है क्योंकि आधी reorderings ने इससे बेहतर किया और आधी ने बदतर। Best case और worst case दोनों छोर हैं: सबसे ख़ुशक़िस्मत और सबसे बदक़िस्मत sequences जो simulation ने खींचे। इनके बीच का फ़ासला इस बात की झटपट पड़ताल है कि आपका नतीजा किस्मत पर कितना सवार है।
Median और 95th-percentile drawdown
यही जोड़ी वह जगह है जहाँ Monte Carlo अपना दाम वसूल करता है। आपके अकेले backtest ने एक maximum drawdown बताया। Monte Carlo सभी reorderings का median drawdown और 95th-percentile drawdown बताता है, यानी क़रीब-क़रीब worst case। अगर आपके backtest का drawdown 18 percent था पर 95th-percentile Monte Carlo drawdown 34 percent है, तो आपके backtest को एक नरम तरतीब मिली, और 34 percent उस तकलीफ़ के ज़्यादा क़रीब है जिसके लिए आपको असल में size और तैयार रहना चाहिए। 95th percentile के लिए योजना बनाएँ, अकेले run के लिए नहीं।
| Monte Carlo संकेत | इसका मतलब | क्या करें |
|---|---|---|
| Probability of ruin 0% से ऊपर | आपके trades की एक बदक़िस्मत तरतीब account को साफ़ कर देती है | जब तक ruin 0% न हो जाए, position size या leverage घटाएँ |
| Probability of profit ~70% से नीचे | आपका positive नतीजा किसी दोस्ताना trade क्रम पर टिका था | इस पर भरोसा करने से पहले edge चौड़ा करें या जोखिम कसें |
| 95th-pct drawdown, backtest drawdown से कहीं ऊपर | आपके अकेले backtest को एक ख़ुशक़िस्मत sequence मिला | backtest वाले नहीं, 95th-percentile drawdown के लिए size करें |
| Best और worst case के बीच बड़ा फ़ासला | नतीजा बहुत हद तक किस्मत पर निर्भर है | मुख्य आँकड़े को नहीं, median को उम्मीद मानें |
एक हल किया हुआ उदाहरण
मान लें कि दो strategies दोनों $10,000 पर एक साफ़-सुथरे +22 percent पर backtest होती हैं, $12,200 के क़रीब ख़त्म होती हुई। अकेली equity curve पर वे जुड़वाँ लगती हैं। Monte Carlo उन्हें अलग कर देता है:
- Strategy A: probability of ruin 0 percent, probability of profit 91 percent, median final equity $11,900, 95th-percentile drawdown 16 percent। तक़रीबन हर reordering बच जाती है और मुनाफ़ा कमाती है। यह एक मज़बूत edge है।
- Strategy B: probability of ruin 7 percent, probability of profit 63 percent, median final equity $10,400, 95th-percentile drawdown 41 percent। वही मुख्य नंबर, पर इसे मुट्ठी भर बड़ी जीतों ने ढोया जो इत्तेफ़ाक़न account में कुशन बन जाने के बाद आईं। उन जीतों को पहले या बाद में खिसका दें और runs का एक बड़ा हिस्सा तबाही की हद तक नीचे गिर जाता है।
अकेला backtest इन्हें अलग नहीं कर सका। Monte Carlo इस फ़र्क़ को नज़रअंदाज़ करना नामुमकिन बना देता है, और यही ठीक वह फ़र्क़ है जो एक ऐसे bot के बीच है जिसे आप भरोसे से size कर सकते हैं और एक ऐसे bot के बीच जो आख़िरकार आपको अपना worst case थमा देगा।
Monte Carlo आपको क्या नहीं बता सकता
Monte Carlo एक ख़ास जोखिम का stress test है: वह क्रम जिसमें आपके trades आते हैं। यह कोई भविष्य बताने वाली गेंद नहीं है, और इसे वैसा मानना अपने आप में एक जाल है।
- यह मान लेता है कि आपके trades नुमाइंदे हैं। आपके पास मौजूद trades को दोबारा फेंटना ऐसा trade नहीं गढ़ सकता जो strategy ने कभी किया ही नहीं। अगर कोई market regime बदल जाए और आपका edge काम करना बंद कर दे, तो पुराने trades से बना Monte Carlo पुराने, अब बेमानी नतीजों को ही दोबारा फेंटता रहेगा। उस नाकामी के लिए आपको walk-forward analysis चाहिए, जो आपके parameters को उस data पर परखता है जिस पर वे कभी fit ही नहीं किए गए थे।
- कचरा अंदर, कचरा बाहर। अगर नीचे का backtest overfitted है, तो Monte Carlo बस काल्पनिक trades को एक हज़ार काल्पनिक इतिहासों में दोबारा फेंट देता है। पहले पक्का करें कि backtest ईमानदार है, इसके लिए backtest नतीजों की व्याख्या में दिए overfitting checks इस्तेमाल करें।
- यह दोबारा फेंटता है, यह forecast नहीं करता। Live नतीजे latency, partial fills, funding और Freya की performance fee की वजह से भी किसी भी backtest से अलग होते हैं, जिनमें से किसी को भी कोई reordering model नहीं करती। उस फ़ासले के लिए backtest बनाम live नतीजे देखें।
इन तीनों tools को साथ इस्तेमाल करने पर वे उन तीन बड़े तरीक़ों को ढँक लेती हैं जिनसे एक अच्छा दिखने वाला backtest नाकाम होता है: sequence risk के लिए Monte Carlo, overfitting के लिए walk-forward, और execution की हक़ीक़त के लिए live-बनाम-backtest गाइड।
अक्सर पूछे जाने वाले सवाल
Backtest में probability of ruin क्या है?
यह आपके trades की उन simulated reorderings का percentage है जिनमें account असरदार तौर पर साफ़ हो गया, आपके शुरुआती balance के क़रीब एक-दसवें हिस्से तक गिरते हुए। Freya इसे आपके backtest के trades को 1000 बार resample करके निकालता है। शून्य से ऊपर की कोई भी value का मतलब है कि आपके अपने trades की कम से कम एक मुमकिन तरतीब आपके account को ख़त्म कर देती है, और यह size या leverage घटाने का संकेत है।
Monte Carlo के काम करने के लिए मुझे कितने trades चाहिए?
Freya simulation चलाने से पहले कम से कम 10 trades माँगता है, और इससे कम पर कोई Monte Carlo नतीजा नहीं देता। दस फ़र्श है, लक्ष्य नहीं। आपके पास जितने ज़्यादा trades होंगे, distribution और probability of ruin पर उतना ही ज़्यादा भरोसा किया जा सकता है।
Monte Carlo drawdown मेरे backtest drawdown से बदतर क्यों है?
क्योंकि आपके अकेले backtest ने trades की सिर्फ़ एक तरतीब देखी, और वह अक्सर एक क़ाबिल-ए-बर्दाश्त नरम तरतीब थी। Monte Carlo एक हज़ार तरतीबों का drawdown उजागर करता है, और 95th-percentile आँकड़ा क़रीब-क़रीब worst case है। अगर यह आपके backtest drawdown से काफ़ी गहरा है, तो आपके मुख्य नतीजे को एक ख़ुशक़िस्मत sequence मिला, और आपको 95th-percentile नंबर के लिए size करना चाहिए।
क्या वही backtest दो बार वही Monte Carlo नतीजा देगा?
हाँ। Freya का simulation आपके अपने backtest के नतीजों से seed होता है, इसलिए यह deterministic है। बिल्कुल वही backtest चलाने पर बिल्कुल वही Monte Carlo नंबर बनते हैं। दोबारा फेंटना बेतरतीब है, पर यह दोहराए जाने लायक है।
क्या 0 percent probability of ruin का मतलब है कि strategy सुरक्षित है?
नहीं। इसका मतलब है कि आपके backtested trades की एक हज़ार reorderings के आर-पार कोई भी साफ़ नहीं हुई, जो सिर्फ़ sequence risk के लिए मज़बूती का पुख़्ता संकेत है। यह किसी market regime बदलाव या किसी overfitted backtest के बारे में कुछ नहीं कहता। इसे live जाने से पहले walk-forward validation और ख़ुद backtest की एक जाँच-परख के साथ मिलाएँ।
