Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

பங்குச் சந்தை தரவுகளில் Survivorship Bias என்றால் என்ன?

பங்குச் சந்தை தரவுகளில் நீக்கப்பட்ட நிறுவனங்கள் விடுபடுவதால் ஏற்படும் Survivorship Bias குறித்து அறியுங்கள். Backtest முடிவுகளில் இது ஏற்படுத்தும் தாக்கத்தை முழுமையாகப்

பங்குச் சந்தை தரவுகளில் உள்ள 'சர்வைவர்ஷிப் பயாஸ்' (survivorship bias) என்பது, இன்று வர்த்தகத்தில் இருக்கும் பங்குகளை மட்டுமே கொண்ட ஒரு கோப்பில் ஏற்படும் இடைவெளியாகும். நீக்கப்பட்ட (delisted), கையகப்படுத்தப்பட்ட, பெயர் மாற்றப்பட்ட அல்லது மூடப்பட்ட நிறுவனங்கள் அனைத்தும் இதில் மறைந்துவிடுகின்றன. இத்தகைய தரவுகளைக் கொண்டு செய்யப்படும் ஒரு backtest, சந்தையின் அன்றைய நிலையை பிரதிபலிக்காமல், வடிகட்டப்பட்ட ஒரு வரலாற்றையே அளவிடுகிறது. கோப்பில் உள்ள ஒவ்வொரு வரிசையும் உண்மையான விலையைக் காட்டுவதால், அதில் எந்தப் பிழையும் இருப்பது போலத் தெரியாது; ஆனால், எழுதப்படாத வரிசைகளே உண்மையான சிக்கலாகும்.

பங்குச் சந்தை தரவுகளில் சர்வைவர்ஷிப் பயாஸ் என்றால் என்ன?

"அனைத்து அமெரிக்கப் பங்குகளையும்" கொண்ட ஒரு தரவுத்தொகுப்பு எவ்வாறு உருவாக்கப்படுகிறது என்று சிந்தித்துப் பாருங்கள். ஒரு தரவு வழங்குநரிடம் குறியீடுகளின் (symbols) பட்டியலைக் கேட்டு, அந்தப் பட்டியலில் உள்ள ஒவ்வொரு பெயருக்கும் விலை வரலாற்றைப் பெறுவார்கள். அந்தப் பட்டியல் தற்போதைய நிலையை மட்டுமே அடிப்படையாகக் கொண்டது. இது "தற்போது எவை வர்த்தகம் செய்யப்படுகின்றன" என்ற கேள்விக்கு மட்டுமே பதிலளிக்கிறது. அந்தத் தரவு கோரப்படுவதற்கு முன்பே வர்த்தகம் நிறுத்தப்பட்ட அனைத்து குறியீடுகளும், அவற்றின் முழு வரலாறும் அந்தப் பதிலில் விடுபட்டுப் போகின்றன.

இந்தச் சொல் 1943-ல் ஆபிரகாம் வால்ட் (Abraham Wald) போர் விமானங்களைப் பற்றி மேற்கொண்ட ஆய்விலிருந்து உருவானது. திரும்பி வந்த விமானங்களில் துளைகள் இல்லாத இடங்களில்தான் கவசம் பொருத்தப்பட வேண்டும் என்று அவர் கூறினார்; ஏனெனில், அந்த இடங்களில் தாக்கப்பட்ட விமானங்கள் திரும்பி வரவில்லை. இன்று பட்டியலிடப்பட்டுள்ள பங்குகளைக் கொண்டு உருவாக்கப்படும் தரவுத்தளமும் அதே போன்றது. நீங்கள் பார்க்கும் மாதிரி (sample) என்பது தப்பிப்பிழைத்தவை மட்டுமே; ஒரு backtest எதை அளவிட முயல்கிறதோ, அந்த முடிவே இந்தத் தரவில் இடம்பெறுவதைத் தீர்மானிக்கிறது.

ஒவ்வொரு ஆண்டும் எத்தனை குறியீடுகள் மறைகின்றன?

முதலில் இந்த இடைவெளியின் அளவைப் பார்ப்போம். கீழே உள்ள அட்டவணை, தினசரி பங்குச் சந்தை தரவுகளில் உள்ள ஒவ்வொரு குறியீட்டையும் அதன் இறுதி வர்த்தக ஆண்டின் அடிப்படையில் வகைப்படுத்துகிறது. ஜனவரி 2026-க்கு முன்பே வர்த்தகம் நிறுத்தப்பட்ட குறியீடுகள் மட்டுமே இதில் சேர்க்கப்பட்டுள்ளன.

வினவவும்ஆண்டு வாரியாகப் பட்டியலிலிருந்து நீக்கப்பட்ட குறியீடுகள் (Symbols)
ஒவ்வொரு எண்ணின் பின்னணியில் உள்ள துல்லியமான SQL
SELECT
    toString(toYear(last_bar))  AS year,
    count()                     AS gone_dark_count,
    round(avg(bars_on_tape))    AS avg_bars_on_tape
FROM
(
    SELECT
        ticker,
        max(date) AS last_bar,
        count()   AS bars_on_tape
    FROM global_markets.stocks_daily_aggs
    WHERE date >= '2015-01-01'
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker
    HAVING max(date) >= toDate('2016-01-01')
       AND max(date) <  toDate('2026-01-01')
)
GROUP BY year
ORDER BY year
Run this yourself

2025-ல், 1283 குறியீடுகள் தங்களின் கடைசி தினசரி வர்த்தகத்தைப் பதிவு செய்துவிட்டு மீண்டும் வரவில்லை. இவை ஒரு வாரம் மட்டுமே இருந்த நிறுவனங்கள் அல்ல: அந்தத் தொகுப்பு 2015-லிருந்து சராசரியாக 999 தினசரி வர்த்தக நாட்களைக் கொண்டிருந்தது. அட்டவணையில் உள்ள 10 ஆண்டுகளில் இந்த எண்ணிக்கை மாறிக் கொண்டே இருக்கிறது, எந்த ஆண்டும் பூஜ்ஜியத்திற்கு அருகில் இல்லை. கையகப்படுத்துதல், நிதி மூடல், இணைப்பு, அல்லது பட்டியலிடல் தரநிலைகளைப் பூர்த்தி செய்யாதது போன்ற சாதாரண காரணங்களுக்காகவே குறியீடுகள் வெளியேறுகின்றன.

பத்து வரி நிரல் மூலம் பயாஸ் உருவாவதைக் கவனியுங்கள்

இதன் கணக்கீட்டை விவரிப்பதை விட, பார்ப்பது எளிது. கீழே உள்ள நிரல் இரண்டு சிறிய CSV கோப்புகளை உருவாக்குகிறது: ஒன்று தப்பிப்பிழைத்த பங்குகள் (survivors) மட்டுமே கொண்ட பட்டியல், மற்றொன்று வர்த்தகம் நிறுத்தப்பட்ட பெயர்களையும் உள்ளடக்கிய முழுமையான பட்டியல். இது ஒவ்வொரு கோப்பின் சராசரியைக் கணக்கிட்டு வித்தியாசத்தைக் காட்டுகிறது. இது Python standard library-ஐ மட்டுமே பயன்படுத்துவதால், எதையும் நிறுவத் தேவையில்லை.

python3 <<'PY'
import csv, statistics

survivors = [("AAA", 0.42), ("BBB", 0.18), ("CCC", 0.63), ("DDD", 0.07)]
delisted  = [("EEE", -1.00), ("FFF", -0.55), ("GGG", 0.31)]

def write_csv(path, rows):
    with open(path, "w", newline="") as f:
        w = csv.writer(f)
        w.writerow(["ticker", "total_return"])
        w.writerows(rows)

def mean_return(path):
    with open(path, newline="") as f:
        return statistics.mean(float(r["total_return"]) for r in csv.DictReader(f))

write_csv("survivors_only.csv", survivors)
write_csv("full_universe.csv", survivors + delisted)

a = mean_return("survivors_only.csv")
b = mean_return("full_universe.csv")
print(f"survivors only: {a:+.1%} across {len(survivors)} names")
print(f"full universe: {b:+.1%} across {len(survivors) + len(delisted)} names")
print(f"survivorship bias: {a - b:+.1%}")
PY

இந்த நிரலில் உள்ள ஏழு வருவாய் புள்ளிவிவரங்களும் கற்பனையானவை, சந்தை தரவுகள் அல்ல. இந்த நுட்பத்தை விளக்குவதற்காகவே இவை உருவாக்கப்பட்டுள்ளன. தப்பிப்பிழைத்தவை மட்டுமே கொண்ட பட்டியலின் சராசரி +32.5%, முழுமையான பட்டியலின் சராசரி +0.9%, மற்றும் அவற்றுக்கிடையேயான 31.6 புள்ளிகள் வித்தியாசமே இந்த பயாஸ் ஆகும். தப்பிப்பிழைத்தவை மட்டுமே கொண்ட கோப்பில் உள்ள எதுவும் பொய்யல்ல. அந்த நான்கு பெயர்களும் உண்மையில் குறிப்பிட்ட வருவாயைத் தந்தவைதான். ஆனால், சராசரியைக் குறைத்திருக்கக்கூடிய அந்த மூன்று பெயர்களைப் பற்றி அந்தக் கோப்பு எங்கும் குறிப்பிடவில்லை.

உண்மையான தொகுப்புகளில் அதே அளவீடு

இப்போது சந்தை தரவுகளில் இதே கணக்கீட்டைச் செய்வோம். கீழே உள்ள அட்டவணை 2016 முதல் 2022 வரை ஒவ்வொரு ஆண்டும் ஜனவரி மாதத்தில் ஒரு தொடக்கப் பட்டியலை உருவாக்குகிறது. இதில் $5-க்கு மேல் விலை மற்றும் சராசரியாக 250,000 பங்குகள் தினசரி வர்த்தகம் கொண்ட குறியீடுகள் மட்டுமே சேர்க்கப்பட்டுள்ளன. பின்னர் அவை ஒவ்வொன்றும் அதன் சமீபத்திய இறுதி விலை வரை பின்தொடரப்படுகின்றன. வர்த்தகம் நிறுத்தப்பட்ட பெயர்கள் நீக்கப்படாமல், அவற்றின் கடைசி விலையிலேயே நிலைநிறுத்தப்படுகின்றன. 'தப்பிப்பிழைத்தவை' (survivors) நெடுவரிசை தற்போது வர்த்தகத்தில் உள்ள குறியீடுகளை மட்டுமே சராசரி செய்கிறது. 'முழுமையான பட்டியல்' (full universe) நெடுவரிசை தொடக்கத்தில் இருந்த அனைவரையும் சராசரி செய்கிறது.

வினவவும்தொடக்க ஆண்டு வாரியாக, நீடித்த நிறுவனங்களின் சராசரி மற்றும் ஒட்டுமொத்தக் குழுவின் சராசரி ஒப்பீடு
ஒவ்வொரு எண்ணின் பின்னணியில் உள்ள துல்லியமான SQL
WITH
    entry AS
    (
        SELECT
            ticker,
            toYear(date)                   AS cohort_start,
            argMin(toFloat64(close), date) AS entry_close
        FROM global_markets.stocks_daily_aggs
        WHERE toMonth(date) = 1
          AND date BETWEEN '2016-01-01' AND '2022-01-31'
          AND ticker NOT IN ('SPCX')
        GROUP BY ticker, cohort_start
        HAVING argMin(toFloat64(close), date) >= 5
           AND avg(volume) >= 250000
    ),
    outcome AS
    (
        SELECT
            ticker,
            argMax(toFloat64(close), date) AS final_close,
            max(date)                      AS last_bar
        FROM global_markets.stocks_daily_aggs
        WHERE date >= '2016-01-01'
        GROUP BY ticker
    )
SELECT
    toString(e.cohort_start)                                                             AS cohort_year,
    count()                                                                              AS cohort_size,
    countIf(o.last_bar < today() - 45)                                                   AS gone_count,
    round(100 * avgIf(o.final_close / e.entry_close - 1, o.last_bar >= today() - 45), 1) AS survivors_only_pct,
    round(100 * avg(o.final_close / e.entry_close - 1), 1)                               AS full_universe_pct,
    round(100 * (avgIf(o.final_close / e.entry_close - 1, o.last_bar >= today() - 45)
                 - avg(o.final_close / e.entry_close - 1)), 1)                           AS gap_pct
FROM entry AS e
INNER JOIN outcome AS o ON o.ticker = e.ticker
GROUP BY e.cohort_start
HAVING countIf(o.last_bar >= today() - 45) > 0
ORDER BY e.cohort_start
Run this yourself

2016 தொகுப்பிற்கு, இந்தப் பக்கம் உருவாக்கப்பட்ட நேரத்தில் 2728 பெயர்களில் 968 பெயர்கள் சந்தையிலிருந்து வெளியேறியிருந்தன. தப்பிப்பிழைத்தவற்றை மட்டும் சராசரி செய்தால் 212% கிடைக்கிறது. முழு தொகுப்பையும் சராசரி செய்தால் 149.3% கிடைக்கிறது. இடைவெளி (gap) நெடுவரிசை அந்த இரண்டு அளவீடுகளுக்கு இடையே உள்ள தூரத்தைக் காட்டுகிறது: அந்தத் தொகுப்பிற்கு 62.7 புள்ளிகள், மற்றும் 2022 தொகுப்பிற்கு 9.1 புள்ளிகள். இவை வெவ்வேறு கால அளவுகளுக்கான மொத்த வருவாய் என்பதால், வரிசைகளுக்கு இடையே உள்ள நிலைகளை ஒப்பிடுவதை விட, இடைவெளி நெடுவரிசையை கீழ்நோக்கிப் படிப்பது சிறந்தது. மாதாந்திர வருவாய் எவ்வாறு அளவிடப்படுகிறது மற்றும் ஒவ்வொரு சம-எடை சராசரியின் அடிப்படையிலும் இதே 'முழுமையான பட்டியல்' என்ற கேள்வி உள்ளது.

விடுபட்ட பெயர்கள் எங்கே சென்றன?

ஒரு பங்கு நீக்கம் (delisting) என்பது தானாகவே ஒரு அழிவு அல்ல. கீழே உள்ள அட்டவணை ஜனவரி 2019-ல் இருந்த ஒரு தொடக்கப் பட்டியலை எடுத்து, அதன் பிறகு என்ன நடந்தது என்பதன் அடிப்படையில் வகைப்படுத்துகிறது.

வினவவும்ஜனவரி 2019-ல் இருந்த நிறுவனங்களின் தற்போதைய நிலை
ஒவ்வொரு எண்ணின் பின்னணியில் உள்ள துல்லியமான SQL
WITH
    entry AS
    (
        SELECT
            ticker,
            argMin(toFloat64(close), date) AS entry_close
        FROM global_markets.stocks_daily_aggs
        WHERE date BETWEEN '2019-01-01' AND '2019-01-31'
          AND ticker NOT IN ('SPCX')
        GROUP BY ticker
        HAVING argMin(toFloat64(close), date) >= 5
           AND avg(volume) >= 250000
    ),
    outcome AS
    (
        SELECT
            ticker,
            argMax(toFloat64(close), date) AS final_close,
            max(date)                      AS last_bar
        FROM global_markets.stocks_daily_aggs
        WHERE date >= '2019-01-01'
        GROUP BY ticker
    )
SELECT
    if(o.last_bar >= today() - 45,
       'Still trading',
       concat('Last bar in ', toString(toYear(o.last_bar))))            AS outcome_label,
    count()                                                             AS cohort_size,
    round(100 * avg(o.final_close / e.entry_close - 1), 1)              AS avg_return_pct,
    round(100 * countIf(o.final_close > e.entry_close) / count(), 1)    AS share_above_entry_pct
FROM entry AS e
INNER JOIN outcome AS o ON o.ticker = e.ticker
GROUP BY outcome_label
ORDER BY outcome_label
Run this yourself

Still trading குழுவில் 1954 பெயர்கள் உள்ளன, ஜனவரி 2019 தொடக்க விலையிலிருந்து சராசரியாக 139.8% வருவாய் கிடைத்துள்ளது, அதில் 72.1% பெயர்கள் தொடக்க விலையை விட அதிகமாக உள்ளன. 9 வரிசைகளைப் பார்த்தால், வெளியேற்றங்கள் கலவையாக இருப்பதைக் காணலாம். ஒரு நிறுவனம் பிரீமியத்தில் வாங்கப்படும்போது, அது வலுவான இறுதி விலையுடன் சந்தையிலிருந்து வெளியேறலாம்; அதேசமயம், நீக்க அறிவிப்பை நோக்கிச் செல்லும் நிறுவனம் பலவீனமான விலையில் வெளியேறலாம். இவை இரண்டுமே தப்பிப்பிழைத்தவை மட்டுமே கொண்ட கோப்பில் விடுபட்டுள்ளன. அவற்றை மீண்டும் சேர்த்தால் சராசரி மாறும்.

சர்வைவர்ஷிப் பயாஸ் vs லுக்-அஹெட் பயாஸ்

இவை இரண்டும் ஒன்றாகவே வகைப்படுத்தப்படுகின்றன, ஆனால் இவை backtest-ஐ வெவ்வேறு இடங்களில் சிதைக்கின்றன. லுக்-அஹெட் பயாஸ் (Look ahead bias) என்பது நேரத்தைச் சார்ந்த சிக்கல்: ஒரு தரவு யாருக்கும் தெரியாத தருணத்தில், அந்தத் தரவைச் சோதனை பயன்படுத்துகிறது (உதாரணமாக, மாதங்களுக்குப் பிறகு திருத்தப்பட்ட வருவாய் புள்ளிவிவரம்). சர்வைவர்ஷிப் பயாஸ் என்பது உறுப்பினர் சார்ந்த சிக்கல்: சோதனை வர்த்தகம் செய்யும் பட்டியல், அன்றைய நிலையில் இருந்த பட்டியல் அல்ல, இன்று இருக்கும் பட்டியல். ஒரு backtest நேரக் கணக்கீட்டில் சரியாக இருந்தாலும், பின்னோக்கிப் பார்க்கும் பார்வையில் (hindsight) உருவாக்கப்பட்ட பட்டியலை வர்த்தகம் செய்யலாம். விலை மாற்றங்களும் ஒரு சிக்கலை உருவாக்குகின்றன, ஏனெனில் பிளவு-சரிசெய்யப்பட்ட விலை வரலாறு (split adjusted price history) பிளவு தேதிக்கு முந்தைய ஒவ்வொரு பட்டையின் (bar) அளவையும் மாற்றியமைக்கிறது.

Backtest-ல் சர்வைவர்ஷிப் பயாஸை எவ்வாறு சரிசெய்வது?

  1. ஒவ்வொரு தேதியிலும் பட்டியலை மீண்டும் உருவாக்குங்கள். 'பாயிண்ட் இன் டைம்' (Point in time) உறுப்பினர் பட்டியல் என்பது, சோதனை நடக்கும் நாளில் இருந்த பதிவுகளிலிருந்து அந்த நாளுக்காக மறுசீரமைக்கப்பட்ட பட்டியலாகும். இது அப்போது வர்த்தகத்தில் இருந்த பெயர்களை உள்ளடக்கியது, பிற்காலத்தில் மறைந்த பெயர்களும் இதில் அடங்கும்.
  2. ஒரு செக்யூரிட்டி மாஸ்டரை (security master) பராமரியுங்கள். இது காலப்போக்கில் அடையாளங்காட்டிகளை (identifiers) வரைபடமாக்குகிறது: எந்தக் குறியீடு எந்த நிறுவனத்தைக் குறித்தது, இணைப்பு அல்லது பெயர் மாற்றத்திற்குப் பிறகு எது மாற்றாக வந்தது என்பதை இது காட்டும். விலை கோப்புகள் குறியீடுகளை மட்டுமே அடிப்படையாகக் கொண்டவை, நிறுவனங்களை அல்ல.
  3. நீக்கப்பட்ட பெயர்களை அவற்றின் கடைசி உண்மையான விலையில் மூடுங்கள். ஒரு பெயர் சந்தையிலிருந்து வெளியேறும்போது, அந்தப் பங்கின் நிலை சராசரியிலிருந்து மறைவதற்குப் பதிலாக, அதன் இறுதி விலையில் வெளியேற வேண்டும். நீக்குதல் என்பதுதான் மேலே உள்ள அட்டவணைகளில் இடைவெளியை உருவாக்குகிறது. ஒரு மறுஉருவாக்கம் செய்யக்கூடிய backtest (reproducible backtest) அந்த விதியை குறியீட்டில் பட்டியலின் அருகில் வைக்கிறது.
  4. நீக்கப்பட்ட குறியீடுகள் குறித்த வழங்குநரின் ஆவணங்களைப் படியுங்கள். இதை தீவிரமாக எடுத்துக்கொள்ளும் நிறுவனங்கள் ஆவணப்படுத்துகின்றன. Massive நிறுவனம் தனது tickers endpoint மூலம் நீக்கப்பட்ட குறியீடுகளை active flag-உடன் காட்டுகிறது, மேலும் குறியீடு மாற்றங்கள், நீக்கங்கள், இணைப்புகள் மற்றும் கையகப்படுத்துதல்களைத் தனி ticker events endpoint-ல் பதிவுகளாகக் கொண்டுள்ளது.
"நாங்கள் தரவை மாற்றுவதில்லை அல்லது குறியீடு மாற்றங்களை ஒரே தொகுப்புத் தொடராக இணைப்பதில்லை."
Massive அறிவுத் தளம், "Massive குறியீடு மாற்றங்களையும் கையகப்படுத்துதல்களையும் எவ்வாறு கையாளுகிறது?", ஆகஸ்ட் 2026-ல் வாசிக்கப்பட்டது.

வழங்குநரின் ஆவணங்களில் நீக்கப்பட்ட குறியீடுகள் பற்றி எதுவும் குறிப்பிடப்படவில்லை என்றால், நீங்கள் சரிபார்க்கும் வரை அந்தத் தரவிறக்கத்தை 'தப்பிப்பிழைத்தவை மட்டுமே' என்று கருதுங்கள். ஆதாரங்களுக்கிடையே கவரேஜ் பெரிதும் மாறுபடும்: இலவச பங்குச் சந்தை தரவு API-கள் குறித்த எங்கள் குறிப்புகளைப் பார்க்கவும்.

மறுசுழற்சி செய்யப்பட்ட குறியீடு சிக்கல்

ஒரு பட்டியலிடல் முடிந்த பிறகு குறியீடுகள் மீண்டும் புழக்கத்திற்கு வருகின்றன. கீழே உள்ள அட்டவணை, குறைந்தது 200 தினசரி வர்த்தகப் பட்டைகளைக் கொண்டு, குறைந்தது 250 நாட்களுக்கு அமைதியாக இருந்து, பின்னர் 2022-லிருந்து புதிய பட்டியலாகத் தோன்றிய குறியீடுகளைக் கணக்கிடுகிறது.

வினவவும்நீண்ட இடைவெளிக்குப் பிறகு புதிய வெளியீட்டாளரின் கீழ் மீண்டும் பட்டியலிடப்பட்ட குறியீடுகள்
ஒவ்வொரு எண்ணின் பின்னணியில் உள்ள துல்லியமான SQL
SELECT
    toString(toYear(relisted_on)) AS year,
    count()                       AS relisting_count,
    round(avg(dark_stretch))      AS avg_dark_stretch,
    max(dark_stretch)             AS longest_dark_stretch
FROM
(
    SELECT
        ticker,
        any(relist_date)                             AS relisted_on,
        dateDiff('day', max(date), any(relist_date)) AS dark_stretch
    FROM
    (
        SELECT
            d.ticker      AS ticker,
            d.date        AS date,
            i.relist_date AS relist_date
        FROM global_markets.stocks_daily_aggs AS d
        INNER JOIN
        (
            SELECT
                ticker,
                min(toDate(listing_date)) AS relist_date
            FROM global_markets.stocks_ipos
            WHERE toDate(listing_date) BETWEEN '2022-01-01' AND today()
              AND ticker NOT IN ('SPCX')
            GROUP BY ticker
        ) AS i ON i.ticker = d.ticker
        WHERE d.date < i.relist_date
    )
    GROUP BY ticker
    HAVING dateDiff('day', max(date), any(relist_date)) >= 250
       AND count() >= 200
)
GROUP BY year
ORDER BY year
Run this yourself

2022-ல், 16 குறியீடுகள் சராசரியாக 3247 நாட்களுக்குப் பிறகு மீண்டும் வந்தன. அந்த வரிசையில் நீண்ட அமைதியான காலம் 5734 நாட்கள். குறியீட்டை மட்டுமே அடிப்படையாகக் கொண்ட ஒரு விலை கோப்பு, ஒரு நிறுவனத்தின் வரலாற்றை மற்றொன்றின் மீது ஒட்டுகிறது, மேலும் அந்த இணைப்பு முழுமையாகச் சரியாகத் தெரிகிறது. இதைத்தான் ஒரு செக்யூரிட்டி மாஸ்டர் கண்டறியும், வெறும் குறியீடு நெடுவரிசையால் இதைக் கண்டறிய முடியாது.

தரவு குறிப்புகள் மற்றும் வரையறைகள்

ஒரு குறியீட்டின் சமீபத்திய தினசரி பட்டை (daily bar), இந்தப் பக்கம் உருவாக்கப்பட்ட நாளிலிருந்து 45 நாட்களுக்குள் இருந்தால், அது இன்னும் வர்த்தகத்தில் இருப்பதாகக் கருதப்படுகிறது. இந்த இடைவெளி, சந்தையின் தொடக்கத்தில் உள்ள ஒன்று முதல் இரண்டு நாள் தாமதத்தையும், அரிதாக வர்த்தகம் செய்யப்படும் பங்குகளைக் கையாளவும் உதவுகிறது.

வருவாய்கள் என்பது ஜனவரி தொடக்கத்திலிருந்து அந்த குறியீட்டிற்குக் கிடைக்கும் கடைசி விலை வரை உள்ள மொத்த வருவாய் ஆகும்; இதில் ஈவுத்தொகை (dividends) சேர்க்கப்படவில்லை மற்றும் ஆண்டு வருவாயாக மாற்றப்படவில்லை. முந்தைய தொகுப்புகள் கூட்டு வட்டிக்கு அதிக காலம் கொண்டிருந்ததால், வரிசைகளுக்கு இடையே நிலைகளை ஒப்பிட முடியாது. ஆனால் இரண்டு சராசரிகளுக்கு இடையே உள்ள இடைவெளியை ஒப்பிடலாம்.

தொடக்கப் பட்டியல்கள் ஜனவரி மாதத்தில் $5 அல்லது அதற்கு மேல் விலை மற்றும் சராசரியாக 250,000 பங்குகள் தினசரி வர்த்தகம் கொண்ட குறியீடுகளைக் கொண்டுள்ளன. தினசரி தரவுகளில் நிதி நிறுவனங்கள், அலகுகள் மற்றும் வாரண்டுகள் செயல்பாட்டு நிறுவனங்களுடன் சேர்ந்து வருகின்றன, அவற்றை இங்கே பிரிக்க முடியாது, எனவே ஒரு நிதி மூடல் என்பது கார்ப்பரேட் நீக்கத்துடன் சேர்த்து கணக்கிடப்படுகிறது. வழங்குநர் தரவுகளில் அடையாள முரண்பாடு உள்ள குறியீடுகள், SQL மூலம் ஒவ்வொரு அட்டவணையிலிருந்தும் நீக்கப்பட்டுள்ளன.

அடிக்கடி கேட்கப்படும் கேள்விகள் (FAQ)

பங்குச் சந்தை backtest-ல் சர்வைவர்ஷிப் பயாஸ் என்றால் என்ன?

இன்று இருக்கும் குறியீடுகளைக் கொண்டு வர்த்தகப் பட்டியல் உருவாக்கப்படும்போது ஏற்படும் பிழை இது. நீக்கப்பட்ட அல்லது கையகப்படுத்தப்பட்ட நிறுவனங்கள் சோதனையில் நுழையாததால், தற்போதைய நிலையை எட்டிய பங்குகள் மட்டுமே அந்த உத்திக்கு வழங்கப்படுகின்றன.

எனது தரவுத்தொகுப்பில் சர்வைவர்ஷிப் பயாஸ் உள்ளதா என்பதை எப்படி அறிவது?

பல ஆண்டுகளுக்கு முந்தைய தேதிக்கான உங்கள் கோப்பில் உள்ள பட்டியலை எடுத்து, ஒவ்வொரு குறியீட்டின் இறுதிப் பட்டையைச் சரிபார்க்கவும். 2016-ன் பட்டியலில் உள்ள ஒவ்வொரு பெயரும் இன்றும் விலையைப் பதிவு செய்கிறது என்றால், அந்தப் பட்டியல் தற்போதைய பட்டியலிலிருந்து உருவாக்கப்பட்டது மற்றும் இறந்த பெயர்கள் அதில் இல்லை என்று அர்த்தம்.

சர்வைவர்ஷிப் பயாஸ் எப்போதும் backtest-ஐ சிறப்பாகக் காட்டுமா?

இல்லை. இதன் திசை, பெயர்கள் சந்தையிலிருந்து எவ்வாறு வெளியேறின என்பதைப் பொறுத்தது. ஒரு கையகப்படுத்துதல் பிரீமியத்தில் முடிவடையலாம், அத்தகைய பெயர்களை நீக்குவது ஒரு தொகுப்பின் வருவாயைக் குறைவாகக் காட்டும், அதேசமயம் நீக்க அறிவிப்பை நோக்கிச் செல்லும் நீண்ட சரிவு இதற்கு நேர்மாறாகச் செய்யும். மேலே உள்ள அட்டவணைகள் உண்மையான தொகுப்புகளில் இரண்டின் நிகர விளைவையும் அளவிடுகின்றன.

'பாயிண்ட் இன் டைம்' (Point in time) பட்டியல் என்றால் என்ன?

இது சோதனையின் ஒவ்வொரு தேதியிலும், அந்தத் தேதியில் இருந்த பதிவுகளை மட்டுமே பயன்படுத்தி மறுசீரமைக்கப்பட்ட உறுப்பினர் பட்டியலாகும். இதில் அப்போது வர்த்தகம் செய்யக்கூடிய பெயர்கள் மற்றும் பிற்காலத்தில் மறைந்த பெயர்கள் அடங்கும், மேலும் அப்போது இன்னும் பட்டியலிடப்படாத பெயர்கள் தவிர்க்கப்படும்.

சர்வைவர்ஷிப் பயாஸும் லுக்-அஹெட் பயாஸும் ஒன்றா?

இல்லை. லுக்-அஹெட் பயாஸ் என்பது நேரத்தைப் பற்றியது: யாருக்கும் தெரியாத தகவலை சோதனை பயன்படுத்துகிறது. சர்வைவர்ஷிப் பயாஸ் என்பது உறுப்பினர் பற்றியது: சோதனை பின்னோக்கிப் பார்க்கும் பார்வையில் உருவாக்கப்பட்ட பட்டியலை வர்த்தகம் செய்கிறது. ஒரு backtest ஒன்றில் சரியாக இருந்து மற்றொன்றில் பிழையாக இருக்கலாம்.


இங்கே உள்ள ஒவ்வொரு அட்டவணையும் அதை உருவாக்கிய SQL-ஐக் கொண்டுள்ளது. தொடக்க மாதத்தை மாற்றவும் அல்லது பணப்புழக்க வடிகட்டியைத் தளர்த்தவும், பின்னர் உங்கள் சொந்தப் பட்டியல் விதிகளுக்கு ஏற்ப எவ்வளவு இடைவெளி நீடிக்கிறது என்பதைப் பார்க்க Strasmore டெர்மினலில் அதை இயக்கவும்.