Skip to content
विकल्प और फ्यूचर्स की सभी गाइड
ट्रेडिंग-रूल खोज के प्रभाव की जाँच12 min read

Trading Rules के लिए White Reality Check और Hansen SPA Test

कई trading rules में से winner चुनने पर Reality Check और SPA क्या जाँचते हैं, उनकी bootstrap प्रक्रिया, मान्यताएँ और सीमाएँ समझें।

इस गाइड मेंBacktest winner को अलग से जाँचना पर्याप्त क्यों नहीं है

संक्षिप्त सारांश

White Reality Check और Hansen का Superior Predictive Ability (SPA) test पूछते हैं कि खोजे गए candidate परिवार में कम-से-कम एक trading rule, पहले से तय benchmark से चुने हुए performance measure पर बेहतर है या नहीं। दोनों यह मानते हैं कि नतीजे देखने के बाद सबसे अच्छा candidate चुना गया, लेकिन वे किसी एक rule को प्रमाणित नहीं करते और भविष्य के लाभ की गारंटी नहीं देते।

Backtest winner को अलग से जाँचना पर्याप्त क्यों नहीं है

अगर आपने sample देखने से पहले एक strategy तय की थी, तो single-comparison test एक सीमित प्रश्न का उत्तर दे सकता है। लेकिन अगर कई rules और settings आज़माकर उनके नतीजे देखे, फिर winner का significance ऐसे बताया जैसे वह शुरू से अकेला candidate था, तो खोज की प्रक्रिया गायब हो जाती है। किसी rule में वास्तविक बढ़त न होने पर भी कई noisy estimates में सबसे बड़ा मान संयोग से positive हो सकता है।

Reality Check को RC कहते हैं। Hansen का SPA test भी पूरे candidate परिवार का प्रश्न पूछता है: बताई गई candidate family में search को ध्यान में रखने के बाद, क्या कम-से-कम एक strategy के expected performance के benchmark से बेहतर होने का evidence है? परिवार में technical rules, forecast models या दूसरी strategies हो सकती हैं। White ने 2000 के paper में data-snooping का test framework दिया; Sullivan, Timmermann और White ने 1999 में इसे technical trading rules के बड़े समूह पर लागू किया। White का 2000 paper और trading rules पर 1999 का अध्ययन इस विषय के primary sources हैं। चयन तक पहुँचाने वाले alternatives शामिल होने चाहिए, केवल आखिरी winner नहीं।

Benchmark, candidate family और performance difference तय करें

मान लें k, जाँची जा रही family K के एक candidate rule को बताता है और t, rule तथा benchmark के लिए समान evaluation dates को। Return-based उदाहरण में प्रति अवधि का अंतर इस तरह परिभाषित किया जा सकता है:

d(k,t) = समय t पर candidate k का net return − benchmark का net return

Positive value candidate के पक्ष में है। Forecast accuracy की तुलना हो तो loss का क्रम उलटा रखें: benchmark loss minus candidate loss, जिससे positive value का अर्थ candidate की कम loss हो। Candidates या dates के बीच subtraction का sign न बदलें।

Candidate k के expected difference को μ(k) = E[d(k,t)] मानें। Family-wide hypotheses हैं:

H0: K के सभी k के लिए μ(k) ≤ 0 H1: K में कम-से-कम एक candidate ऐसा है जिसके लिए μ(k) > 0

H0 का अर्थ यह नहीं कि हर rule का expected difference ठीक शून्य है; benchmark से खराब candidates भी null के भीतर आते हैं। यह कई अलग-अलग independent tests नहीं, बल्कि पूरी family के अधिकतम relative performance का एक joint test है। इसलिए benchmark, dates, return definition, candidate set और performance criterion साफ होने चाहिए। यदि सवाल risk-adjusted performance का है, तो mean-return difference अकेला उस criterion को परिभाषित नहीं करता।

Reality Check पूरी family के maximum को देखता है

n evaluation periods पर candidate k के औसत अंतर को d̄(k) लिखें। Simple mean-difference setup में RC statistic है:

T_RC = K में सभी k पर sqrt(n) × d̄(k) का maximum

यह candidates में सबसे अच्छा sample result लेता है और उसकी तुलना null के तहत bootstrap distribution से करता है। Composite null के लिए White least-favorable configuration का उपयोग करते हैं: null distribution बनाते समय हर candidate का expected difference शून्य माना जाता है, जबकि negative expected difference वाले candidates भी H0 में शामिल हैं। इसलिए candidate family में बहुत से कमजोर alternatives हों तो critical value आवश्यकता से बड़ा हो सकता है।

Maximum लेना अहम है। प्रश्न यह नहीं है कि “sample winner single-rule test पास करेगा या नहीं?” प्रश्न यह है कि “घोषित family में इसी तरह खोजने पर, इतना बड़ा maximum मिलना कितना असामान्य होगा?” पहले से तय एक rule की reference distribution से बाद में चुने हुए winner को test करने पर selection step छूट जाता है। Single-test की गणना सही हो, तब भी वह post-selection प्रभाव को नहीं सुधारती।

240 काल्पनिक variants search family का आकार दिखाते हैं

केवल arithmetic के लिए मानें कि एक researcher ने 12 lookback periods, 4 entry filters और 5 exit settings आज़माईं। अगर सभी combinations जाँचे गए, तो 12 × 4 × 5 = 240 काल्पनिक trading-rule variants बनते हैं। यह combinations की गिनती है, किसी प्रकाशित अध्ययन या वास्तविक return का दावा नहीं। इससे कोई p-value या मुनाफे का परिणाम नहीं गढ़ना चाहिए।

यदि 240 नतीजे देखने के बाद सबसे अच्छा combination चुना गया, तो adjusted test को हर bootstrap sample में उसी family की खोज दोहरानी चाहिए। हर replicate में सभी variants का performance measure फिर निकालें और उनका maximum लें। फिर वास्तविक sample के maximum को bootstrap maxima के distribution से तुलना करें। हर replicate में केवल चुने हुए winner का statistic निकालना अलग प्रश्न का उत्तर होगा, क्योंकि उसमें 240 नतीजों के बीच चयन शामिल नहीं है।

Correction तभी उपयोगी है जब family का विवरण वास्तविक शोध-क्रम के अनुरूप हो। यदि किसी market, parameter, holding period या exit rule ने चयन को प्रभावित किया पर उसे candidate set से छोड़ दिया, तो उसका search effect शामिल नहीं होगा। उलट, नतीजे देखने के बाद असंबंधित alternatives जोड़ देना भी सही नहीं है। जिन candidates ने चुने गए परिणाम तक पहुँचने में भूमिका निभाई, उनका पूरा और सुरक्षित record रखें, चाहे वे जीते हों या नहीं।

अलग-अलग strategy columns नहीं, समय का पूरा vector resample करें

एक ही तारीख पर सभी rules समान market movement देखते हैं, इसलिए उनके performance differences आपस में correlated हो सकते हैं। पास-पास के समय के observations में serial dependence भी हो सकती है। Bootstrap में हर तारीख का सभी candidates वाला difference vector एक साथ resample होना चाहिए; इससे हर replicate में rules के बीच contemporaneous संबंध और समय के लगातार हिस्से बने रहते हैं। हर candidate को स्वतंत्र रूप से resample करने पर cross-rule covariance टूटता है और maximum का distribution बदलता है। अलग-अलग दिनों को बेतरतीब मिलाने से temporal dependence भी मिट सकती है।

RC और SPA में stationary bootstrap जैसी block methods उपयोग की जा सकती हैं। इसमें पास-पास के observations के block जोड़कर pseudo-series बनती है; Politis और Romano की standard construction में block lengths geometric distribution से आते हैं और उनका expected length पहले चुना जाता है। Stationary bootstrap पर उनका paper इसका primary source है। सभी strategies के लिए साझा time indices रखने से उनकी संयुक्त market-day movement सुरक्षित रहती है।

Resampling से हर series अपने आप उपयुक्त नहीं बन जाती। सैद्धांतिक नतीजों के लिए stability और पर्याप्त weak dependence जैसी regularity conditions चाहिए। Structural break या strong nonstationarity को bootstrap हटाता नहीं है। बहुत छोटा block जरूरी persistence काट सकता है, जबकि बहुत बड़ा block प्रभावी रूप से अलग हिस्सों की संख्या कम कर देता है। Method और block-length setting बताएं तथा उचित वैकल्पिक settings पर परिणाम बदलते हैं या नहीं जाँचें। Bootstrap null भी जाँची जा रही hypothesis को दर्शाए और हर replicate में maximum फिर निकाला जाए। पहले से चुनी strategy के fixed statistic का confidence interval बनाने वाला block bootstrap अपने आप family-wide search correction नहीं है। Strategy returns का block-bootstrap guide fixed statistic की uncertainty और temporal dependence पर अलग प्रश्न समझाता है।

कई रास्ते एक शिखर पर मिलते हैं; पास में तराज़ू, दो अमूर्त वितरण और समय-खंडों की पंक्तियाँ हैं, बिना किसी लिखावट के।
यह रणनीति खोज और अनिश्चितता-वितरण की तुलना का वैचारिक चित्र है; इसमें कोई परीक्षण परिणाम या वास्तविक बाजार रिटर्न नहीं दिखाया गया है।

SPA statistic को standardize करके sample-dependent null बनाता है

SPA वही family-wide null और benchmark-relative differences रखता है, लेकिन statistic और null distribution के दो हिस्से बदलता है। पहले, सूत्र हर candidate के sample mean difference को sqrt(n) से गुणा करके उसकी differential series के long-run standard deviation से scale करता है:

T_SPA = max(0, max_k [sqrt(n) × d̄(k) / ω̂(k)])

यहाँ ω̂(k), candidate k की differential series d(k,t) के long-run standard deviation का estimate है। समतुल्य रूप से, यह sqrt(n) × d̄(k) का asymptotic standard deviation है, unscaled sample mean का SD या SE नहीं। इसलिए यह denominator serial dependence समेत series की दीर्घकालीन परिवर्तनशीलता को दर्शाता है। Candidates की तुलना में इससे mean की अनिश्चितता standardize होती है; फिर भी maximum का distribution candidates के बीच covariance पर निर्भर रहता है।

दूसरे, SPA sample-dependent null distribution लेता है। इसके consistent version में, जिन candidates का sample mean काफी negative है और जो benchmark से स्पष्ट रूप से कमजोर दिखते हैं, उनके negative mean को null centering में बनाए रखा जाता है। जो candidates null boundary के पास हो सकते हैं, उन्हें zero पर center किया जाता है। इस तरह sample के evidence के अनुसार कमजोर alternatives का प्रभाव घटता है, उन्हें साधारण तौर पर हटाया नहीं जाता। नतीजा देखने के बाद अपनी पसंद से candidates निकालना उचित नहीं, क्योंकि इससे null distribution की वैधता प्रभावित हो सकती है।

Hansen के 2005 paper में ये दोनों बदलाव दिए गए हैं: studentized statistic और sample-dependent null। कुछ designs में ये power बढ़ा सकते हैं और खराब या अप्रासंगिक alternatives के असर को घटा सकते हैं, पर SPA हर परिस्थिति में RC से बेहतर नहीं होता। Hansen बताते हैं कि दोनों tests में uniform dominance नहीं है। कुछ implementations SPA के lower, consistent और upper p-value variants भी देती हैं; इसलिए इस्तेमाल किया गया version और implementation बताएं। Hansen का मूल paper statistic, centering और bootstrap details का primary source है।

Family-wide rejection यह नहीं बताता कि कौन-सा rule चुनें

Family null reject होने पर सीमित निष्कर्ष निकलता है: चुने हुए performance criterion और assumptions के तहत, बताई गई family में कम-से-कम एक candidate का expected performance benchmark से बेहतर होने का evidence है। इससे यह साबित नहीं होता कि सभी rules लाभ देते हैं, sample winner individually adjusted significance रखता है, या वही live trading में सबसे अच्छा रहेगा।

Null reject न होना भी यह साबित नहीं करता कि सभी rules बेकार या बराबर हैं। इसका अर्थ है कि इस sample और test में किसी candidate की superiority के लिए पर्याप्त family-wide evidence नहीं मिला। Sample छोटा या volatile हो सकता है, candidates के बीच अंतर कम हो सकता है, या वास्तविक edge कमजोर हो सकता है। “पर्याप्त evidence नहीं मिला” और “edge नहीं है, यह साबित हो गया” अलग निष्कर्ष हैं।

यह omnibus maximum test हर candidate को corrected rank नहीं देता और यह नहीं चुनता कि आपको कौन-सा rule इस्तेमाल करना चाहिए। Specific rules पर adjusted claims के लिए candidate-level या stepwise inference की विधि चाहिए; फिर ऐसे data पर अलग validation करें जिसने rule चुनने में मदद न की हो। Family-level rejection को investment advice या backtest के परिणाम दोहरने के दावे में न बदलें।

Criterion और candidate family परिणाम देखने से पहले तय करें

Correction केवल दी गई candidate family पर लागू होती है। Selection को प्रभावित करने वाले lookbacks, filters, markets, holding periods और exit variants दर्ज करें, असफल trials समेत। यदि कई benchmarks, return definitions या sample windows आज़माकर परिणाम देखने के बाद पसंदीदा चुना था, तो उस search को भी record करें। जो शोध-पथ दर्ज नहीं है, वह formal adjustment से बाहर रहता है।

सभी candidate returns को समान dates से align करें। Performance difference बनाने से पहले commission, bid-ask spread, slippage, financing, borrow और rollover cost की परिभाषा तय करें। Criterion भी winner देखने से पहले चुनें। Net mean return, utility score और risk-adjusted measure अलग सवाल हैं; एक के लिए बना test अपने आप दूसरे का उत्तर नहीं देता। Nested forecast comparison या recursively estimated models में parameter estimation और null distribution की assumptions अलग हो सकती हैं, इसलिए सामान्य RC/SPA recipe यांत्रिक रूप से न लगाएँ।

FDR से अंतर भी स्पष्ट रखें। False discovery rate कई individual decisions में expected false share को नियंत्रित करता है; RC और SPA benchmark के मुकाबले एक candidate family के maximum को test करते हैं। ये fixed-statistic block-bootstrap guide से भी अलग हैं: वह पहले से तय statistic की uncertainty मापता है, पूरे candidate search का maximum खुद से नहीं दोहराता। Finance में multiple testing और FDR guide दूसरी तरह के correction पर है।

परिणाम को उसकी assumptions और सीमाओं के साथ रिपोर्ट करें

उपयोगी report में benchmark, candidate family, performance criterion, date range, observation frequency, शामिल costs, bootstrap method, block length, replicate संख्या, statistic और exact p-value variant होने चाहिए। Selection से जुड़े candidate files सुरक्षित रखें ताकि कोई reviewer देख सके कि खोज की पूरी family test में है। यदि test के बाद untouched chronological holdout इस्तेमाल करें, तो उस पर rule tune करके उसे untouched कहना बंद करें।

RC या SPA का p-value घोषित family, data, statistic और assumptions पर सशर्त family-wide null का evidence है। यह किसी strategy के पैसा कमाने की probability, future return forecast या इस बात की guarantee नहीं कि costs और regime change के बाद backtest result टिकेगा। यह test look-ahead bias, survivorship, data errors, market impact या अधूरे search log को अपने आप ठीक नहीं करता। Purged time-series cross-validation guide दूसरी समस्या—training और test के बीच information leakage—को देखता है।

आम सवाल

Q1क्या SPA हमेशा Reality Check से अधिक powerful होता है?

नहीं। Hansen के बदलाव कुछ designs में power बढ़ा सकते हैं और कमजोर alternatives का असर घटा सकते हैं, लेकिन हर परिस्थिति में एक test दूसरे पर हावी नहीं होता।

Q2क्या significant SPA result बताता है कि कौन-सा trading rule इस्तेमाल करें?

नहीं। यह family-level evidence देता है कि चुने criterion पर कोई candidate benchmark को पछाड़ सकता है। यह specific rule नहीं चुनता; उसके लिए candidate-level procedure और अलग validation चाहिए।

Q3क्या backtest में हारने वाले variants को family से हटा सकता हूँ?

अगर उन variants ने final rule चुनने वाली search में भूमिका निभाई थी, तो उन्हें हटाने से सवाल बदलता है और selection effect कम आँका जा सकता है। Corrected result पढ़ने से पहले संबंधित candidate family तय करके सुरक्षित रखें।

स्रोत और आगे पढ़ें

समस्या की रिपोर्ट करें

हम इस लेख का लिंक जोड़कर ईमेल तैयार करेंगे। भेजने के बाद ही Mark को आपकी रिपोर्ट मिलेगी

त्वरित जाँच

गाइड पढ़ने के बाद 3 सवालों से खुद को जाँचें

सवाल 1 / 3

सवाल 01

कई strategy variants आज़माने के बाद family-wide test में किन candidates को शामिल करना चाहिए?

व्याख्या देखने के लिए एक उत्तर चुनें

विकल्प शब्दावली

कई ideas test करने पर एक threshold क्यों fail होता हैFinance में Multiple Testing और False Discovery RateMultiple comparisons, family-wise error, false discovery rate, Bonferroni, Holm, Benjamini–Hochberg, dependence, q-values, factor mining, backtest selection और research governance समझेंरणनीति के प्रदर्शन की अनिश्चितता मापेंट्रेडिंग रणनीति रिटर्न के लिए ब्लॉक बूटस्ट्रैप: निर्भरता में confidence intervalसमयगत निर्भरता बनाए रखते हुए पहले से तय ट्रेडिंग रणनीति के औसत रिटर्न या Sharpe ratio की अनिश्चितता block bootstrap से कैसे आँकें और इसकी सीमाएँ क्या हैं, जानें।ट्रेडिंग मॉडल सत्यापनPurged cross-validation और embargo: ट्रेडिंग मॉडल में label leakage रोकनासमझें कि overlapping forward labels वाले वित्तीय time series का validation कैसे करें, और purging व embargo, walk-forward, TimeSeriesSplit तथा CPCV से कैसे अलग हैं।ऑप्शन की कार्यप्रणालीऑप्शन असाइनमेंट क्या है?समझें कि बेचा गया ऑप्शन एक्सपायरी से पहले या उस दिन शेयर देने या खरीदने की जिम्मेदारी कैसे बना सकता हैअनुमत अनुबंध गणना जोखिम बजट के समान नहीं हैविकल्प स्थिति सीमा बनाम व्यायाम सीमा की व्याख्याजानें कि सूचीबद्ध-विकल्प स्थिति सीमाएं व्यायाम सीमाओं से कैसे भिन्न हैं, समान-पक्ष एकत्रीकरण और रिपोर्टिंग क्यों मायने रखती है, और मार्जिन या क्रय शक्ति यह क्यों नहीं दिखाती है कि किसी मात्रा की अनुमति है या नहीं