Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor · · Updated 2026-08-08

Look-Ahead Bias क्या है और इसे बैकटेस्ट में कैसे पहचानें

Look-ahead bias का अर्थ है बैकटेस्ट में भविष्य के डेटा का उपयोग करना। जानें कि कैसे same bar decisions और survivorship bias परिणामों को प्रभावित करते हैं और इनसे कैसे बचें।

लुक-अहेड बायस (Look-ahead bias) की परिभाषा

लुक-अहेड बायस का अर्थ है बैकटेस्ट में ऐसी जानकारी का उपयोग करना जो सिम्युलेटेड ट्रेड के समय किसी के पास उपलब्ध नहीं हो सकती थी। इसके कारण इक्विटी कर्व ऊपर जाता हुआ दिखता है और सांख्यिकीय परिणाम उत्कृष्ट प्रतीत होते हैं, लेकिन वास्तविक बाजार में ट्रेड निष्पादित करते ही यह रणनीति विफल हो जाती है। यह पृष्ठ इस बायस को परिभाषित करता है, इसके उत्पन्न होने वाले तीन तंत्रों का विश्लेषण करता है और वास्तविक बाजार डेटा पर प्रत्येक का मापन करता है।

बायस के तीन प्रमुख तंत्र

2025 डेटा का भविष्य में रिसाव

अक्सर बैकटेस्टिंग के दौरान, डेटासेट में ऐसी जानकारी शामिल हो जाती है जो उस समय के बाद की होती है। उदाहरण के लिए, यदि कोई मॉडल किसी कंपनी के वित्तीय परिणामों का उपयोग करता है, तो यह सुनिश्चित करना आवश्यक है कि वे परिणाम उस समय सार्वजनिक रूप से उपलब्ध थे या नहीं। यदि डेटा में भविष्य की रिपोर्टिंग शामिल है, तो परिणाम कृत्रिम रूप से बेहतर दिखेंगे।

क्लोजिंग प्राइस का गलत उपयोग

एक सामान्य त्रुटि यह है कि इंट्राडे ट्रेड के लिए उस दिन के क्लोजिंग प्राइस का उपयोग किया जाता है। एक ट्रेडर उस दिन के अंत में बंद होने वाली कीमत पर ट्रेड निष्पादित नहीं कर सकता, क्योंकि वह कीमत दिन के अंत तक ज्ञात नहीं होती। वास्तविक निष्पादन के लिए उस समय उपलब्ध bid-ask spread और तरलता को ध्यान में रखना अनिवार्य है।

सर्वाइवरशिप बायस

यह तब होता है जब बैकटेस्ट में केवल वे कंपनियां शामिल की जाती हैं जो आज भी बाजार में मौजूद हैं। जो कंपनियां दिवालिया हो गईं या डीलिस्ट हो गईं, उन्हें हटा देने से ऐतिहासिक प्रदर्शन का डेटा पक्षपाती हो जाता है। यह उन कंपनियों के प्रदर्शन को अनदेखा करता है जो विफल रहीं, जिससे रिटर्न का अनुमान वास्तविकता से कहीं अधिक ऊंचा हो जाता है।

बाजार डेटा पर प्रभाव का मापन

बाजार डेटा विश्लेषण के माध्यम से यह स्पष्ट है कि इन त्रुटियों को दूर करने के बाद प्रदर्शन में भारी गिरावट आती है। बैकटेस्टिंग में सावधानी बरतने और केवल 'पॉइंट-इन-टाइम' डेटा का उपयोग करने से ही लाइव ट्रेडिंग में सफलता की संभावना बनी रहती है।

Look-ahead bias क्या है

Backtest एक निर्णय के बारे में किया गया दावा है: इस टाइमस्टैम्प पर, इस जानकारी के साथ, नियम ने यह किया होता। यह दावा केवल तभी मान्य होता है जब नियम द्वारा पढ़ा गया प्रत्येक इनपुट उस टाइमस्टैम्प से पहले अपने अंतिम रूप में मौजूद हो। Look-ahead bias इस शर्त का कोई भी उल्लंघन है, और यह चुपचाप होता है। स्प्रेडशीट या स्क्रिप्ट में कुछ भी तब शिकायत नहीं करता जब कोई पंक्ति उस निर्णय के बाद का मान प्रदान करती है जिसे वह फीड कर रही है।

तीन उल्लंघन उन अधिकांश स्थितियों को कवर करते हैं जो व्यवहार में सामने आती हैं। एक ऐसा निर्णय जो उस प्राइस बार को पढ़ता है जिसके भीतर वह ट्रेड भी करता है। आज भी सूचीबद्ध नामों से तैयार किया गया यूनिवर्स। एक डेटा फ़ील्ड जिसे उस तारीख के बाद संशोधित किया गया था जो उस पर अंकित है।

कार्यप्रणाली एक: उस बार पर निर्णय लेना जिसे आप ट्रेड भी करते हैं

एक ऐसे नियम से शुरुआत करें जो हानिरहित लगता है। मजबूती पर खरीदें, यानी उन सत्रों में जब फंड अपने शुरुआती स्तर से ऊपर बंद होता है। यदि इसे लापरवाही से कोड किया जाए, तो टेस्ट उस सत्र के ओपन पर एंट्री करता है और क्लोज पर एग्जिट करता है, जबकि जिस शर्त पर यह स्क्रीन करता है वह उसी बार की क्लोजिंग कीमत है। ओपनिंग बेल पर किसी को भी क्लोजिंग कीमत का पता नहीं होता है।

नीचे दिया गया पैनल SPY, जो S&P 500 ट्रैकर है, पर दस कैलेंडर वर्षों में दोनों संस्करणों को चलाता है। पहला कॉलम वह है जो असंभव है। दूसरा कॉलम समान शर्त को एक सत्र पीछे रखता है, जो कि सबसे जल्दी है जब कोई फंडेड अकाउंट इस पर कार्य कर सकता है।

क्वेरीसमान-बार निर्णय बनाम एक-सत्र अंतराल: SPY, औसत सत्र लाभ, 2016-2025
वर्षसिग्नल डेज़समान बार औसत %लैग्ड औसत %गैप pp
20161400.447-0.0080.455
20171390.2450.0330.212
20181270.5740.0070.567
20191380.4260.0720.354
20201470.742-0.1650.907
20211370.4850.0390.446
20221270.979-0.0281.007
20231470.5330.0540.479
20241350.4220.0060.416
20251310.636-0.030.666
हर आंकड़े के पीछे का पूरा SQL
WITH bars AS (
    SELECT date,
           toFloat64(open) AS o,
           toFloat64(close) AS c,
           toFloat64(close) > toFloat64(open) AS up_day
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'SPY'
      AND date >= toDate('2015-12-01')
      AND date <= toDate('2025-12-31')
),
lagged AS (
    SELECT date, o, c, up_day,
           any(up_day) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prior_up
    FROM bars
)
SELECT toYear(date) AS year,
       countIf(up_day) AS signal_days,
       round(100 * avgIf(c / o - 1, up_day), 3) AS same_bar_avg_pct,
       round(100 * avgIf(c / o - 1, prior_up), 3) AS lagged_avg_pct,
       round(100 * (avgIf(c / o - 1, up_day) - avgIf(c / o - 1, prior_up)), 3) AS gap_pp
FROM lagged
WHERE date >= toDate('2016-01-01')
GROUP BY year
ORDER BY year
इसे खुद चलाएँ

यह अंतर सूक्ष्म नहीं है। 2016 में, उसी-बार वाले संस्करण ने प्रति योग्य सत्र औसतन 0.447% का रिटर्न दिया, जबकि लैग्ड संस्करण ने औसतन -0.008% का रिटर्न दिया, जो कि प्रति दिन 0.455 प्रतिशत अंकों का स्प्रेड है। 2025 में दोनों का आंकड़ा 0.636% और -0.03% रहा। एक वर्ष में लगभग 140 योग्य सत्रों के साथ, प्रति सत्र आधे प्रतिशत अंक का स्प्रेड एक ऐसे इक्विटी कर्व में बदल जाता है जिसे किसी भी लाइव अकाउंट ने कभी नहीं बनाया है।

पूरा लाभ परिभाषात्मक है। उन सत्रों का चयन करना जो अपने ओपन से ऊपर बंद हुए, और फिर उन्हीं सत्रों पर ओपन-से-क्लोज को मापना, एक ऐसी मात्रा को मापता है जिसके सकारात्मक होने की गारंटी है। नियम ने अपना फिल्टर खुद खोज लिया।

इसके विभिन्न रूप हर समय दैनिक डेटा में छिपे रहते हैं: एक मूविंग एवरेज जिसमें आज का क्लोज शामिल है और जिसका उपयोग आज ट्रेड करने के लिए किया जाता है, एक सिग्नल जिसकी गणना उन कीमतों पर की जाती है जो पहले ही एक ऐसे स्प्लिट के लिए समायोजित हो चुकी हैं जो अभी तक नहीं हुआ है, या एक इंट्राडे स्टॉप जिसे उस सत्र के हाई पर रखा गया है जो अभी तक प्रिंट नहीं हुआ है। इसका सामान्य स्वरूप यह है कि निर्णय का टाइमस्टैम्प उसके अपने किसी इनपुट से पहले आता है।

कार्यप्रणाली दो: आज के बचे हुए नामों का एक समूह

यह दूसरी कार्यप्रणाली नियम में कोई बदलाव नहीं करती है। यह केवल उन नामों की सूची को प्रभावित करती है जिन्हें नियम देख सकता है।

वर्तमान डेटा प्रदाता से टिकर सूची लें, उसे दस साल पीछे ले जाएं, और यह नमूना चुपचाप उन सभी कंपनियों को बाहर कर देता है जो इस दौरान दिवालिया हो गईं, जिनका अधिग्रहण कर लिया गया, या जिन्हें डीलिस्ट कर दिया गया। नियम को कभी भी असफल कंपनियां दिखाई ही नहीं गईं। यह पैनल उस चूक के आकार को मापता है: हर वह अमेरिकी-सूचीबद्ध नाम जिसने किसी दिए गए कैलेंडर वर्ष में कम से कम दो सौ सत्रों तक एक डॉलर से ऊपर कारोबार किया, जुलाई 2026 में उस समूह का कितना हिस्सा अभी भी कीमतों को प्रिंट कर रहा है, और पूरे समूह का औसत कैलेंडर-वर्ष रिटर्न, केवल बचे हुए नामों के औसत रिटर्न के साथ।

क्वेरीयूनिवर्स में उत्तरजीविता: प्रत्येक वर्ष ट्रेड होने वाले नाम, जुलाई 2026 तक सूचीबद्ध शेयर, और माध्य रिटर्न
वर्षनेम्स ट्रेडिंगवर्तमान लिस्टेड %माध्य रिटर्न (सभी) %माध्य रिटर्न (सर्वाइवर्स) %सर्वाइवर गैप pp
2015706352.5-5.39-5.290.09
2016700955.47.6510.853.2
2017709257.77.5111.323.81
2018724561.1-13.67-13.030.64
2019760563.414.117.042.94
2020774567.91.062.741.68
2021850669.16.8810.473.59
2022921773.5-20.26-19.950.31
2023901380.84.655.781.13
2024925787.52.242.90.66
हर आंकड़े के पीछे का पूरा SQL
WITH recent AS (
    SELECT DISTINCT ticker
    FROM global_markets.stocks_daily_aggs
    WHERE date >= toDate('2026-06-15')
      AND date <= toDate('2026-07-28')
),
per_name AS (
    SELECT toYear(date) AS year,
           ticker,
           argMin(toFloat64(close), date) AS first_close,
           argMax(toFloat64(close), date) AS last_close,
           count() AS sessions
    FROM global_markets.stocks_daily_aggs
    WHERE date >= toDate('2015-01-01')
      AND date <= toDate('2024-12-31')
      AND close > 1
    GROUP BY year, ticker
    HAVING sessions >= 200
)
SELECT year,
       uniqExact(ticker) AS names_trading,
       round(100 * uniqExactIf(ticker, ticker IN (SELECT ticker FROM recent)) / uniqExact(ticker), 1) AS still_listed_pct,
       round(100 * quantileDeterministic(0.5)(last_close / first_close - 1, cityHash64(ticker)), 2) AS median_return_all_pct,
       round(100 * quantileDeterministicIf(0.5)(last_close / first_close - 1, cityHash64(ticker), ticker IN (SELECT ticker FROM recent)), 2) AS median_return_survivors_pct,
       round(100 * (quantileDeterministicIf(0.5)(last_close / first_close - 1, cityHash64(ticker), ticker IN (SELECT ticker FROM recent))
                    - quantileDeterministic(0.5)(last_close / first_close - 1, cityHash64(ticker))), 2) AS survivor_gap_pp
FROM per_name
GROUP BY year
ORDER BY year
इसे खुद चलाएँ

7063 नामों में से जिन्होंने 2015 में मानक को पूरा किया, 52.5% जुलाई 2026 में भी कारोबार कर रहे थे। 2024 समूह के लिए यह आंकड़ा 87.5% है, जो मुख्य रूप से बीते समय का परिणाम है: 2024 के नाम के पास गायब होने के लिए दो साल थे और 2015 के नाम के पास ग्यारह साल थे।

रिटर्न कॉलम में यह पूर्वाग्रह स्पष्ट दिखता है। 2017 में औसत नाम का रिटर्न 7.51% था, जबकि औसत जीवित नाम का रिटर्न 11.32% था, जो कि 3.81 प्रतिशत अंकों का अंतर मुफ्त में मिल गया। यह अंतर चार्ट में दिखाए गए सभी 10 वर्षों में सकारात्मक है। बचे हुए नामों पर परीक्षण की गई कोई भी रणनीति एक भी निर्णय लेने से पहले ही इस पूर्वाग्रह को अपना लेती है, और जो नियम कमजोरी की पहचान करते हैं, वे औसत से अधिक पूर्वाग्रह अपनाते हैं, क्योंकि जो नाम गायब हो गए, वे अनुपातहीन रूप से उसी श्रेणी में थे।

इसका सुधार एक पॉइंट-इन-टाइम यूनिवर्स है: प्रत्येक रीबैलेंस तिथि पर नामों की सूची, जिसमें डीलिस्टिंग भी शामिल है, और डीलिस्ट की गई पोजीशन को रिकॉर्ड से हटाने के बजाय उसके अंतिम प्रिंट मूल्य पर बंद किया जाता है।

तंत्र तीन: वह डेटा जिसे उसकी दिनांक के बाद संशोधित किया गया

कीमतों पर एक बार मुहर (stamp) लग जाती है, लेकिन फंडामेंटल डेटा पर नहीं। एक तिमाही आंकड़े पर उस तिमाही के अंत की तारीख होती है, जिसे बाद में फाइलिंग द्वारा संशोधित किया जाता है। यदि कोई डेटाबेस केवल वर्तमान संस्करण को संग्रहीत करता है, तो वह मूल तारीख के सामने संशोधित आंकड़े को ही दिखाएगा। इस आंकड़े पर आधारित कोई भी नियम ऐसी जानकारी का उपयोग कर रहा होगा जिसे आने में महीनों लग गए।

यही पैटर्न उन इंडेक्स सदस्यता सूचियों में भी दिखता है जिन्हें वर्तमान घटकों के अनुसार फिर से बनाया जाता है, विश्लेषकों के अनुमानों के इतिहास में जिन्हें अंतिम आम सहमति के साथ बदल दिया जाता है, और कॉर्पोरेट कार्रवाई के समायोजन में जिन्हें पूरी मूल्य श्रृंखला में पीछे की ओर लागू किया जाता है। प्रत्येक मामले में, संग्रहीत रिकॉर्ड एक वर्तमान-काल का स्नैपशॉट होता है जिस पर भूतकाल की तारीख अंकित होती है।

इसे नियंत्रित करने के दो तरीके हैं। ऐसे स्रोत का उपयोग करें जो विंटेज (vintages) रखता हो, जिसका अर्थ है कि वह मूल्य जो प्रत्येक तारीख पर ज्ञात था, न कि वह जो अब ज्ञात है। जहाँ विंटेज उपलब्ध न हों, वहां एक ऐसी रिपोर्टिंग लैग (reporting lag) लागू करें जो वास्तविक देरी को कवर करने के लिए पर्याप्त हो। उस लैग की अवधि को एक ऐसा पैरामीटर मानें जिसका परीक्षण करना आवश्यक है, न कि कोई ऐसा विवरण जिसे केवल अनुमान से तय किया जाए।

जब भविष्य की जानकारी लीक होती है तो कर्व कैसा दिखता है

Look-ahead bias की एक पहचान है: ऐसा प्रदर्शन जो अंतर्निहित बाजार द्वारा दिए गए रिटर्न से काफी ऊपर होता है। एक उपयोगी संदर्भ बिंदु 'hindsight ceiling' है, जो किसी एक इंस्ट्रूमेंट पर एक दिन पहले की सटीक भविष्यवाणी से प्राप्त होने वाली वृद्धि है।

क्वेरीहाइंडसाइट सीलिंग: SPY बाय एंड होल्ड, सबसे बड़े लाभ वाले दिनों के बिना वही वर्ष, और सटीक एक-दिवसीय पूर्वानुमान
वर्षसत्रबाय एंड होल्ड %बिना बिग अप डेज़ %हिंडसाइट सीलिंग मल्टीपल
20162529.6-1.84.3
201725119.419.42.2
2018251-6.3-18.76.4
201925228.8224.2
202025316.2-44.927.7
20212522721.54.9
2022251-19.5-56.219.8
202325024.321.55.1
202425223.315.24.4
202525016.4-6.66.3
हर आंकड़े के पीछे का पूरा SQL
WITH bars AS (
    SELECT date,
           toFloat64(close) AS c,
           any(toFloat64(close)) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_c
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'SPY'
      AND date >= toDate('2015-12-01')
      AND date <= toDate('2025-12-31')
),
rets AS (
    SELECT toYear(date) AS year,
           c / prev_c - 1 AS r
    FROM bars
    WHERE date >= toDate('2016-01-01')
      AND prev_c > 0
)
SELECT year,
       count() AS sessions,
       round(100 * (exp(sum(log(1 + r))) - 1), 1) AS buy_and_hold_pct,
       round(100 * (exp(sumIf(log(1 + r), r < 0.02)) - 1), 1) AS without_big_up_days_pct,
       round(exp(sum(log(1 + abs(r)))), 1) AS hindsight_ceiling_multiple
FROM rets
GROUP BY year
ORDER BY year
इसे खुद चलाएँ

यह सीमा बहुत विशाल है। 2020 में, SPY पर एक दिन पहले की सटीक दूरदर्शिता ने पूंजी को 253 सत्रों में 27.7 गुना कर दिया, जबकि केवल फंड को होल्ड करने पर यह 16.2% गुना थी। दस वर्षों के सबसे शांत वर्ष, 2017 में, उसी सटीक भविष्यवाणी ने पूंजी का 2.2 गुना रिटर्न दिया।

मध्य कॉलम दिखाता है कि वह सीमा कितनी केंद्रित है। यदि उन सत्रों को हटा दिया जाए जिनमें दो प्रतिशत से अधिक की बढ़त हुई थी, तो 2020 का आंकड़ा 16.2% से बदलकर -44.9% हो जाता है। एक वर्ष में केवल मुट्ठी भर सत्रों की जानकारी का लीक होना भी बैकटेस्ट को बहुत आगे ले जाता है। एक ऐसा कर्व जिसमें गिरावट कम हो, हिट रेट उच्च हो, और जिसके सबसे अच्छे दिन बाजार के सबसे अस्थिर सत्रों में केंद्रित हों, उसकी जांच (audit) आवश्यक है।

किसी भी एकल सीमा (threshold) से अधिक महत्व कैलिब्रेशन का है। यदि कोई नियम एक दशक तक प्रति वर्ष चालीस प्रतिशत के सुचारू रिटर्न का दावा करता है, तो वह hindsight ceiling के एक बड़े हिस्से का दावा कर रहा है। ईमानदार सवाल यह है कि किस इनपुट ने उसे यह बताया कि आगे क्या होने वाला है।

बैकटेस्ट में लुक-अहेड बायस (look-ahead bias) की जांच कैसे करें

  • हर चीज़ को एक बार (bar) पीछे खिसकाएं। हर सिग्नल को एक पूर्ण अवधि बाद शिफ्ट करें और बैकटेस्ट को दोबारा चलाएं। वास्तविक एज (edges) में थोड़ी गिरावट आती है। यदि कोई खामी (leak) है, तो परिणाम अक्सर शून्य पर आ जाते हैं।
  • भविष्य में व्यवधान डालें। प्रत्येक निर्णय के टाइमस्टैम्प के बाद के डेटा को लें, उसे शोर (noise) या फेरबदल से बदलें, और निर्णय लेने वाले लॉजिक को फिर से चलाएं। हर निर्णय बिल्कुल पहले जैसा ही होना चाहिए। यदि कोई भी निर्णय बदलता है, तो इसका मतलब है कि सिस्टम ने ऐसी जानकारी का उपयोग किया है जिसे वह उस समय नहीं जान सकता था।
  • टाइमस्टैम्प को डेटा की तरह मानें। प्रत्येक इनपुट के लिए, उस क्षण को स्टोर करें जब कोई वैल्यू उपलब्ध हुई थी, और उस क्षण को भी जब वह वैल्यू घटित हुई थी। एक ऐसा जॉइन (join) जो इन दो कॉलम की तुलना नहीं करता, वह इस नियम को लागू नहीं कर सकता।
  • उस तारीख के अनुसार यूनिवर्स को फिर से बनाएं। इसमें डीलिस्ट (delisted) और अधिग्रहित (acquired) नामों को शामिल करें, उन्हें उनके अंतिम प्रिंट (last print) पर बंद करें, और सर्वाइवरशिप योगदान (survivorship contribution) को मापने के लिए दोनों यूनिवर्स पर समान नियम लागू करें।
  • सीलिंग (ceiling) के मुकाबले मापें। रणनीति के रिटर्न को उसी अवधि के लिए 'बाय एंड होल्ड' (buy and hold) आंकड़े और 'परफेक्ट-फोरसाइट' (perfect-foresight) आंकड़े के साथ रखें। सीलिंग से दूरी वह संदर्भ है जो केवल शार्प रेशियो (Sharpe ratio) नहीं दे पाता।

पोजीशन साइजिंग इन सभी प्रक्रियाओं के बाद आती है। एक बढ़ा-चढ़ाकर दिखाया गया विन रेट (win rate) गलत तरीके से बड़े बेट साइज को जन्म देता है, जहाँ केली क्राइटेरियन पोजीशन साइजिंग एक अकाउंटिंग त्रुटि को बड़े ड्राडाउन में बदल देती है। वास्तविक पूंजी लगाने से पहले यही अनुशासन लागू होता है: असली पैसे से पहले पेपर ट्रेडिंग ऑर्डर मैकेनिक्स का परीक्षण करती है, और ऑटोमेटेड स्टैक मशीन की गति पर समान जोखिम उठाते हैं, जैसा कि मल्टी एजेंट एआई ट्रेडिंग सिस्टम में बताया गया है। जो प्रभाव सावधानीपूर्वक पॉइंट-इन-टाइम टेस्टिंग के बाद भी बने रहते हैं, जैसे कि लो वोलेटिलिटी एनोमली, वे ठीक इसी कारण से महत्वपूर्ण होते हैं।

अक्सर पूछे जाने वाले प्रश्न

बैकटेस्टिंग में लुक-अहेड बायस (look-ahead bias) क्या है?

यह सिम्युलेटेड ट्रेड में ऐसे डेटा का उपयोग है जो उस समय उपलब्ध नहीं था जब ट्रेड निष्पादित किया जाना था। इसके सामान्य रूप हैं: उसी प्राइस बार पर निर्णय लेना जिसके भीतर ट्रेड निष्पादित होता है, उन कंपनियों के यूनिवर्स को स्क्रीन करना जो आज भी लिस्टेड हैं, और ऐसी वित्तीय जानकारी पढ़ना जिसे उस तारीख के बाद संशोधित किया गया था।

आप लुक-अहेड बायस का पता कैसे लगा सकते हैं?

प्रत्येक सिग्नल को एक पूर्ण अवधि के लिए लैग (lag) करें और पुनः चलाएं: डेटा लीक आमतौर पर तुरंत समाप्त हो जाता है, जबकि वास्तविक एज (edge) धीरे-धीरे कम होता है। एक अधिक मजबूत परीक्षण यह है कि प्रत्येक निर्णय टाइमस्टैम्प के बाद के सभी डेटा को नॉइज़ (noise) से बदल दिया जाए और यह पुष्टि की जाए कि प्रत्येक निर्णय अपरिवर्तित रहता है।

क्या सर्वाइवरशिप बायस (survivorship bias) और लुक-अहेड बायस एक ही हैं?

ये अलग-अलग हैं लेकिन साथ-साथ चलते हैं। सर्वाइवरशिप बायस उन नामों से बना एक सैंपल है जो टिके रहे, और यह जानना कि कौन से नाम टिके रहे, स्वयं भविष्य की जानकारी है। इसलिए, केवल सर्वाइवर वाला यूनिवर्स डेटा में स्थित एक लुक-अहेड लीक है, न कि नियम में।

लुक-अहेड बायस वाले बैकटेस्ट इतने अच्छे क्यों दिखते हैं?

लीक परिणामों की भविष्यवाणी करने के बजाय उन्हें चुनता है। ऊपर दिए गए पैनल में, सत्रों को उनके स्वयं के क्लोजिंग प्राइस पर स्क्रीन करने से 2016 में लैग किए गए संस्करण की तुलना में लगभग 0.455 प्रतिशत अंक अधिक औसत सत्र लाभ प्राप्त हुआ, जो कि एक अर्जित लाभ के बजाय परिभाषात्मक लाभ है।

पॉइंट-इन-टाइम डेटा (point-in-time data) क्या है?

पॉइंट-इन-टाइम डेटा प्रत्येक मान को उस रूप में संग्रहीत करता है जैसा वह प्रत्येक ऐतिहासिक तारीख पर ज्ञात था, जिसमें मूल आंकड़ा और बाद के सभी संशोधन शामिल हैं, साथ ही उस दिन मौजूद सिक्योरिटीज का यूनिवर्स भी शामिल है। यह वह संदर्भ है जिसकी एक बैकटेस्ट को यह दिखाने के लिए आवश्यकता होती है कि उसके इनपुट उसके निर्णयों से पहले मौजूद थे।


ऊपर दिया गया प्रत्येक आंकड़ा वास्तविक डेली बार्स पर एक संग्रहीत, वर्शन्ड क्वेरी है। किसी भी पैनल के SQL को विस्तार से देखें, या Strasmore टर्मिनल पर अपने स्वयं के नियम पर लैग टेस्ट चलाएं।

#backtesting#look-ahead bias#survivorship bias#quant#research process