నెలవారీ స్టాక్ రిటర్న్లు ఎలా కొలుస్తారు
నెలవారీ స్టాక్ రిటర్న్ ఏ రెండు ధరలను ఎంచుకుంటున్నారు, డివిడెండ్లు కలుపుతున్నారా, స్ప్లిట్-సర్దుబాటు చేస్తున్నారా అనే దానిపై ఆధారపడి ఉంటుంది. ప్రతి పద్ధతిని నిజమైన డేటాపై కొలుస్తారు.
ఒక స్టాక్ "జూన్లో ఏం చేసింది" అని అడిగితే వేర్వేరు మూలాల నుంచి వేర్వేరు సంఖ్యలు వస్తాయి — అవన్నీ సరైనవే. నెలవారీ స్టాక్ రిటర్న్ను నిర్వచించేది చాలామంది ఎప్పుడూ చూడని ఎంపికలు: నెల అంచులను గుర్తించే ఏ రెండు ధరలు, డివిడెండ్లు కొట్టాలా వద్దా, ధర శ్రేణిని స్ప్లిట్ల కోసం సర్దుబాటు చేశారా లేదా. ఈ పేజీ పోటీ పద్ధతులను నిజమైన టేపుపై పక్కపక్కనే అమలు చేస్తుంది, తద్వారా తేడాలు రహస్యంగా ఉండవు.
ముగింపు నుండి ముగింపు: ప్రామాణిక పద్ధతి
సూచీలను అందించేవారు, ఫండ్ ఫ్యాక్ట్ షీట్లు, మరియు చాలా కోట్ పేజీలు ఉపయోగించే పద్ధతి: నెల యొక్క రిటర్న్ గత నెల చివరి రెగ్యులర్ సెషన్ ముగింపు ధర నుండి ఈ నెల చివరి ముగింపు వరకు నడుస్తుంది. మే చివరి ముగింపు జూన్కు ప్రారంభ రేఖ. అంకగణితం ఒకే లైను — ముగింపు ధర మైనస్ ప్రారంభ ధర, ప్రారంభ ధర చే భాగహారం. ముందుగా ఒక టాయ్ వెర్షన్: మే చివరలో $50.00 వద్ద ముగిసి, జూన్ చివరలో $53.50 వద్ద ముగిసిన స్టాక్ రిటర్న్ (53.50 − 50.00) ÷ 50.00 = 0.07, లేదా 7%, నెలకు. ఈ పేజీలోని ప్రతి పద్ధతి ఆ ఒకే సూత్రంలోకి వేర్వేరు ఇన్పుట్లను అందిస్తుంది. ఇక్కడ అది నిజమైన జూన్ 2026 టేప్పై ఉంది, ప్రధాన ప్రత్యామ్నాయంతో పాటు:
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
SELECT ticker,
round(argMaxIf(cl, day, day <= '2026-05-31'), 2) AS may_final_close,
round(argMinIf(op, day, day >= '2026-06-01'), 2) AS june_first_open,
round(argMaxIf(cl, day, day <= '2026-06-30'), 2) AS june_final_close,
round(100 * (argMaxIf(cl, day, day <= '2026-06-30') - argMaxIf(cl, day, day <= '2026-05-31'))
/ argMaxIf(cl, day, day <= '2026-05-31'), 2) AS close_to_close_pct,
round(100 * (argMaxIf(cl, day, day <= '2026-06-30') - argMinIf(op, day, day >= '2026-06-01'))
/ argMinIf(op, day, day >= '2026-06-01'), 2) AS open_to_close_pct,
round(abs(100 * (argMaxIf(cl, day, day <= '2026-06-30') - argMinIf(op, day, day >= '2026-06-01'))
/ argMinIf(op, day, day >= '2026-06-01')
- 100 * (argMaxIf(cl, day, day <= '2026-06-30') - argMaxIf(cl, day, day <= '2026-05-31'))
/ argMaxIf(cl, day, day <= '2026-05-31')), 2) AS convention_gap_points
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS day,
argMinIf(toFloat64(open), window_start, rth) AS op,
argMaxIf(toFloat64(close), window_start, rth) AS cl
FROM (
SELECT ticker, window_start, open, close,
toTimeZone(window_start, 'America/New_York') >= toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 09:30:00'), 'America/New_York')
AND toTimeZone(window_start, 'America/New_York') < toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 16:00:00'), 'America/New_York') AS rth
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('NVDA', 'SPY')
AND window_start >= '2026-05-28 04:00:00'
AND window_start < '2026-07-01 08:00:00'
)
GROUP BY ticker, day
)
GROUP BY ticker
ORDER BY tickerNVDA యొక్క జూన్ -5.39% ముగింపు నుండి ముగింపు — కానీ -7.4% జూన్ మొదటి రెగ్యులర్ సెషన్ ఓపెన్ నుండి దాని చివరి ముగింపు వరకు కొలుస్తారు. ఒకే స్టాక్, ఒకే నెల, రెండు నిజాయితీగల జవాబుల మధ్య 2.01 శాతం పాయింట్లు. మొత్తం తేడా ఒక రాత్రి+వారంత్రం విండో: NVDA మే చివరలో $211.15 వద్ద ముగిసి, జూన్లో $215.73 వద్ద తెరిచింది — ఆ జంప్ ఓపెన్-టు-క్లోజ్ పద్ధతిలో "జూన్"కు చెందినది, మరియు ముగింపు నుండి ముగింపు పద్ధతిలో హద్దుకు చెందినది. SPY అదే శరీర నిర్మాణాన్ని మరింత మెత్తగా చూపిస్తుంది: -1.33% ముగింపు నుండి ముగింపు versus -1.2% ఓపెన్ నుండి ముగింపు.
ఏ సంఖ్య కూడా తప్ు కాదు. ముగింపు నుండి ముగింపు "నెల హద్దు అంతటా కొనసాగుతున్న హోల్డర్ ఏమి అనుభవించాడు?" అని సమాధానం ఇస్తుంది. ఓపెన్ నుండి ముగింపు "జూన్ ఓపెన్ వద్ద కొన్ని వ్యక్తికి నెల స్వంత ట్రేడింగ్ ఏమి అందించింది?" అని సమాధానం ఇస్తుంది. మార్కెట్ హద్దు అంతటా గ్యాప్ అయినప్పుడు అవి భిన్నంగా ఉంటాయి — మరియు రాత్రి గ్యాప్లు అసాధారణం కాదు, సాధారణం.
డివిడెండ్లు: ధార లాభం vs మొత్తం లాభం
రెండవ ఎంపిక: నెలలో స్టాక్ చెల్లించిన నగదు కూడా కౌంట్ అవుతుందా? ధార లాభం దానిని పట్టించుకోదు; మొత్తం లాభం దాన్ని తిరిగి కలుపుతుంది. చాలా ఒంటరి నెలలకు వ్యత్యాసం చిన్నదిగా ఉంటుంది — త్రైమాసిక చెల్లింపుదారు తన లాభదాయకతలో సుమారు నాలుగో వంతును త్రైమాసికానికి పంచుతాడు — కానీ అది సంవత్సరాల పాటు పేరుకుపోయి భారీ అగాధంగా మారుతుంది, మరియు 2026 జూన్ యాదృచ్చికంగా SPY చెల్లింపు నెలగా వచ్చింది:
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
WITH px AS (
SELECT argMaxIf(cl, day, day <= '2026-05-31') AS may_close,
argMaxIf(cl, day, day <= '2026-06-30') AS jun_close
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS day,
argMinIf(toFloat64(open), window_start, rth) AS op,
argMaxIf(toFloat64(close), window_start, rth) AS cl
FROM (
SELECT ticker, window_start, open, close,
toTimeZone(window_start, 'America/New_York') >= toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 09:30:00'), 'America/New_York')
AND toTimeZone(window_start, 'America/New_York') < toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 16:00:00'), 'America/New_York') AS rth
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('NVDA', 'SPY')
AND window_start >= '2026-05-28 04:00:00'
AND window_start < '2026-07-01 08:00:00'
)
GROUP BY ticker, day
)
WHERE ticker = 'SPY'
),
dv AS (
SELECT sum(cash_amount) AS div_per_share
FROM global_markets.stocks_dividends
WHERE ticker = 'SPY'
AND ex_dividend_date >= '2026-06-01'
AND ex_dividend_date <= '2026-06-30'
)
SELECT round(may_close, 2) AS may_final_close,
round(jun_close, 2) AS june_final_close,
round(div_per_share, 4) AS june_dividend_per_share,
round(100 * (jun_close - may_close) / may_close, 2) AS price_return_pct,
round(100 * div_per_share / may_close, 2) AS dividend_contribution_pct,
round(100 * ((jun_close + div_per_share) - may_close) / may_close, 2) AS total_return_pct
FROM px CROSS JOIN dvSPY యొక్క జూన్ ధార లాభం -1.33%; ఆ నెలలో ఎక్స్-డివిడెండ్ అయిన షేరుకు $1.9035 పంపిణీని కలిపితే మొత్తం లాభం -1.08%కు మెరుగవుతుంది — నగదు నుండి 0.25% తోడ్పాటు. ఇండెక్స్ కుటుంబాలు రెండు రకాలనూ ప్రచురిస్తాయి (మీరు చూసే "S&P 500" సాధారణంగా ధార సూచీ), ఫండ్ పనితీరు పేజీలు మొత్తం లాభాన్ని చూపించడం తప్పనిసరి, మరియు స్క్రీనర్లు ఈ రెండింటినీ స్వేచ్ఛగా కలుపుతాయి. డివిడెండ్ చెల్లింపుదారుని నెలపై రెండు మూలాలు కొన్ని పదోవంతుల తేడాతో భిన్నంగా ఉన్నప్పుడు, డివిడెండ్ మొదటి అనుమానితుడు — ఎక్స్-డివిడెండ్ తేదీ ఏ నెలకు చెల్లింపు చెందుతుందో నిర్ణయిస్తుంది.
ఒకే ఒక జూన్ పదోవంతు శాతం మాత్రమే. ఈ రెండు సంప్రదాయాలను వేరు చేసేది కాలవ్యవధి — ఇక్కడ అదే అంకగణితం ఐదు సంవత్సరాలకు విస్తరించబడింది:
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
argMaxIf(toFloat64(close), window_start,
toTimeZone(window_start, 'America/New_York') >= toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 09:30:00'), 'America/New_York')
AND toTimeZone(window_start, 'America/New_York') < toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 16:00:00'), 'America/New_York')) AS cl
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND ((window_start >= '2021-06-28 04:00:00' AND window_start < '2021-07-01 08:00:00')
OR (window_start >= '2026-06-26 04:00:00' AND window_start < '2026-07-01 08:00:00'))
GROUP BY day
),
px AS (
SELECT argMaxIf(cl, day, day <= '2021-06-30') AS start_close,
argMaxIf(cl, day, day <= '2026-06-30') AS end_close
FROM daily
),
dv AS (
SELECT round(sum(cash_amount), 2) AS divs_per_share,
count() AS payments
FROM global_markets.stocks_dividends
WHERE ticker = 'SPY'
AND ex_dividend_date >= '2021-07-01'
AND ex_dividend_date <= '2026-06-30'
)
SELECT round(start_close, 2) AS june_2021_close,
round(end_close, 2) AS june_2026_close,
divs_per_share AS dividends_paid_per_share,
payments AS dividend_payments,
round(100 * (end_close - start_close) / start_close, 2) AS five_year_price_return_pct,
round(100 * ((end_close + divs_per_share) - start_close) / start_close, 2) AS five_year_return_with_divs_pct,
round(100 * divs_per_share / start_close, 2) AS dividend_points_added
FROM px CROSS JOIN dvదాని 2021 జూన్ ముగింపు $428.07 నుండి దాని 2026 జూన్ ముగింపు $746.32 వరకు, SPY యొక్క ఐదేళ్ల ధార లాభం 74.35%. అదే కాలవ్యవధిలో ఇది మొత్తం $34.07 చొప్పున 20 పంపిణీలు చెల్లించింది; ఆ నగదును లెక్కించడం వల్ల ఆ సంఖ్య 82.3%కు ఎగబాకుతుంది — ఒక్క డివిడెండ్ను తిరిగి పెట్టుబడి పెట్టడానికి ముందు 7.96 పాయింట్ల వ్యత్యాసం. నిజమైన మొత్తం-లాభ సూచీ దాని ఎక్స్-తేదీన ప్రతి చెల్లింపును తిరిగి పెట్టుబడి పెడుతుంది, మరియు తిరిగి పెట్టుబడి పెట్టిన షేర్లు వ్యత్యాసాన్ని మరింత విశాలం చేస్తాయి. పరిణతి చెందిన చెల్లింపుదారుని విషయంలో, "పెద్ద తేడాలు" ఒక వాక్యవిన్యాసం కాదు; అది సంవత్సరాల త్రైమాసిక నగదు యొక్క డిఫాల్ట్ ఫలితం.
సరిచేయిన ముగింపు vs. ముడి ముగింపు: విభజన ఉరి
ఎక్కువ ఛార్ట్ సాధనాలు — Yahoo Finance, Google Finance, ఎక్కువ బ్రోకర్ యాప్లు — ఒక సరిచేయిన ముగింపును ఉటంకిస్తాయి: గత ముద్రణలను విభజనల కోసం (మరియు కొన్ని వేదికల్లో, డివిడెండ్ల కోసం కూడా) కిందికి భాగించి, కాలక్రమేణా పోల్చదగిన విధంగా మార్చిన చారిత్రక ధర శ్రేణి. మా గిడ్డంగి టేపును అది నిజంగా ముద్రించినట్టే నిల్వ చేస్తుంది. సాధారణ నెలలో ఈ రెండూ ఏకీభవిస్తాయి. స్టాక్ విభజన ఉన్న నెలలో అవి బాగా విభిన్నమైన కథలు చెబుతాయి — NVDA యొక్క 10-కోసం-1 విభజన జూన్ 10, 2024న ఆ నెలలోపు అమలైంది:
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
WITH px AS (
SELECT argMaxIf(cl, day, day <= '2024-05-31') AS may_close,
argMaxIf(cl, day, day <= '2024-06-30') AS jun_close
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
argMaxIf(toFloat64(close), window_start,
toTimeZone(window_start, 'America/New_York') >= toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 09:30:00'), 'America/New_York')
AND toTimeZone(window_start, 'America/New_York') < toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 16:00:00'), 'America/New_York')) AS cl
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'NVDA'
AND window_start >= '2024-05-29 04:00:00'
AND window_start < '2024-07-01 08:00:00'
GROUP BY day
)
),
sp AS (
SELECT split_to / split_from AS ratio
FROM global_markets.stocks_splits
WHERE ticker = 'NVDA'
AND execution_date >= '2024-06-01'
AND execution_date <= '2024-06-30'
)
SELECT round(may_close, 2) AS may_final_close_raw,
round(jun_close, 2) AS june_final_close_raw,
toInt32(ratio) AS shares_after_split_per_old_share,
round(100 * (jun_close - may_close) / may_close, 2) AS raw_price_change_pct,
round(may_close / ratio, 2) AS may_close_split_adjusted,
round(100 * (jun_close - may_close / ratio) / (may_close / ratio), 2) AS adjusted_return_pct
FROM px CROSS JOIN spముడి చదివితే, NVDA ఆ జూన్లో $1097.46 నుండి $123.41కు "పడిపోయింది" — ఒక -88.75% పతనం. అలాంటిదేమీ జరగలేదు: అమలు తేదీన పాత షేర్లో ప్రతి ఒక్కటి 10 కొత్తవి అయ్యాయి మరియు ధర సరిపోయేలా భాగించబడింది, ఫలితంగా ప్రతి హోల్డర్ యొక్క డాలర్ విలువ అదే చోట ఉంది. మే ముగింపును అదే నిష్పత్తితో భాగించండి — విభజన-సరిచేయిన ప్రాతిపదికన $109.75 — అప్పుడు జూన్ 2024 12.45%గా కొలుస్తుంది, ఒక పైకి నెల. సరిచేయిన డేటాను ఉటంకించే ఏదైనా మూలం రెండవ గణాంకానికి సమీపంలో ఉన్నదాన్ని నివేదిస్తుంది; ముడి ముద్రణలపై అనుభవశూన్య గణన మొదటి దాన్ని నివేదిస్తుంది. సరిచేయిన ముగింపు రెండు మూలాలు చారిత్రాత్మక నెలవారీ రాబడిపై బాగా విభిన్నంగా అంగీకరించకపోవడానికి ఒకే ఒక అత్యంత సాధారణ కారణం — ఒక గణాంకం ఏదైనా దిశలో అసాధ్యంగా పెద్దదిగా కనిపించినప్పుడు, ఏదైనా చేయడానికి ముందు విభజన క్యాలెండర్ను తనిఖీ చేయండి.
"క్లోజ్" అంటే ఏ క్లోజ్?
ఒప్పందాల లోపల మరో ఒక సరిహద్దు దాగి ఉంది: క్లోజింగ్ ధరే. ప్రతి ఫ్యాక్ట్ షీట్ ఉపయోగించే సంఖ్య అధికారిక క్లోజింగ్-వేలం ముద్ర — ET 4:00 గంటలకు క్లోజింగ్ వేలం ద్వారా నిర్ణయించబడిన ఏకైక ధర. కానీ వ్యాపారం గంటల తర్వాత కూడా కొనసాగుతుంది, మరియు విస్తరిత సెషన్ చివరి ముద్ర అధికారిక క్లోజ్ నుండి కొద్దిగా దూరంగా జారుకోవచ్చు:
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
SELECT round(argMaxIf(toFloat64(close), window_start, rth), 2) AS regular_session_close,
round(argMax(toFloat64(close), window_start), 2) AS last_extended_print,
round(100 * (argMax(toFloat64(close), window_start) - argMaxIf(toFloat64(close), window_start, rth))
/ argMaxIf(toFloat64(close), window_start, rth), 3) AS after_hours_drift_pct
FROM (
SELECT window_start, close,
toTimeZone(window_start, 'America/New_York') >= toDateTime('2026-06-30 09:30:00', 'America/New_York')
AND toTimeZone(window_start, 'America/New_York') < toDateTime('2026-06-30 16:00:00', 'America/New_York') AS rth
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2026-06-30 04:00:00'
AND window_start < '2026-07-01 08:00:00'
)జూన్ 30న ఈ రెండు -0.003% తేడాతో ఉన్నాయి — ఆ సాయంత్రం చిన్నది, కానీ ఒక ఆర్జింగ్స్ రాత్రి ఒకే స్టాక్లో విస్తరిత సెషన్ శాతం-స్థాయి మొత్తాలకు కదలగలదు, దానిని అధికారిక నెలవారీ రిటర్న్ తదుపరి నెలకు ఆపాదిస్తుంది. గంటల తర్వాత మరియు ప్రీమార్కెట్ ట్రేడింగ్ ఆ సరిహద్దును వివరంగా కవర్ చేస్తుంది. ఒక సంబంధిత అంచు కేసు: నెల సరిహద్దులు కొన్నిసార్లు సెలవు-తగ్గించిన సెషన్పై పడతాయి, అక్కడ సాధారణ రోజు ET 1:00 గంటలకు ముగుస్తుంది మరియు అధికారిక క్లోజ్ ముందస్తు క్లోజింగ్ వేలంలో ముద్రించబడుతుంది — మార్కెట్ సెలవు షెడ్యూల్ వాటిని జాబితా చేస్తుంది.
పన్నెండు నెలలను ఒక సంవత్సరంగా చక్రవృద్ధి చేయడం
సంవత్సరపు రిటర్న్ అనేది పన్నెండు నెలవారీ రిటర్న్ల మొత్తం కాదు — అది వాటి లబ్దం. లింకింగ్ సూత్రం: ప్రతి నెలను వృద్ధి కారకంగా (1 + రిటర్న్) మార్చి, ఆ పన్నెండు కారకాలను గుణించి, 1 తీసివేయాలి. −5% నెల తర్వాత +5% నెల వస్తే మొత్తం సున్నా అవుతుంది, కానీ చక్రవృద్ధి 0.95 × 1.05 − 1 = −0.25% అవుతుంది. జూన్ 2026తో ముగిసిన పన్నెండు నెలల్లో SPY యొక్క అసలు నెలవారీ మార్గం ఇక్కడ ఉంది:
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
argMaxIf(toFloat64(close), window_start,
toTimeZone(window_start, 'America/New_York') >= toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 09:30:00'), 'America/New_York')
AND toTimeZone(window_start, 'America/New_York') < toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 16:00:00'), 'America/New_York')) AS cl
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2025-06-24 04:00:00'
AND window_start < '2026-07-01 08:00:00'
GROUP BY day
),
monthly AS (
SELECT toStartOfMonth(day) AS month_start,
argMax(cl, day) AS month_close
FROM daily
GROUP BY month_start
),
rets AS (
SELECT month_start,
formatDateTime(month_start, '%Y-%m') AS month,
round(month_close, 2) AS month_final_close,
100 * (month_close / lagInFrame(month_close) OVER (ORDER BY month_start) - 1) AS r
FROM monthly
)
SELECT month,
month_final_close,
round(r, 2) AS simple_return_pct,
round(100 * log(1 + r / 100), 2) AS log_return_pct
FROM rets
WHERE isFinite(r)
ORDER BY month_start2025-07లోని 2.28% నుండి 2026-06లోని -1.33% వరకు పన్నెండు క్లోజ్-టు-క్లోజ్ నెలలు — చివరి వరుస మొదటి ప్యానెల్ కొలిచిన అదే SPY జూన్ 2026 గణాంకం. పన్నెండింటినీ సరిగ్గా లింక్ చేసి, శాతాలను కలపడం అనే షార్ట్కట్తో పోల్చండి:
ప్రతి సంఖ్య వెనుక ఉన్న ఖచ్చితమైన SQL
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
argMaxIf(toFloat64(close), window_start,
toTimeZone(window_start, 'America/New_York') >= toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 09:30:00'), 'America/New_York')
AND toTimeZone(window_start, 'America/New_York') < toDateTime(concat(toString(toDate(toTimeZone(window_start, 'America/New_York'))), ' 16:00:00'), 'America/New_York')) AS cl
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2025-06-24 04:00:00'
AND window_start < '2026-07-01 08:00:00'
GROUP BY day
),
monthly AS (
SELECT toStartOfMonth(day) AS month_start,
argMax(cl, day) AS month_close
FROM daily
GROUP BY month_start
),
rets AS (
SELECT month_start,
100 * (month_close / lagInFrame(month_close) OVER (ORDER BY month_start) - 1) AS r
FROM monthly
),
ends AS (
SELECT argMin(month_close, month_start) AS base_close,
argMax(month_close, month_start) AS final_close
FROM monthly
)
SELECT count() AS months_linked,
round(sum(r), 2) AS simple_sum_pct,
round(100 * (exp(sum(log(1 + r / 100))) - 1), 2) AS geometric_compound_pct,
round(100 * (any(final_close) / any(base_close) - 1), 2) AS direct_twelve_month_pct,
round(100 * (exp(sum(log(1 + r / 100))) - 1) - sum(r), 2) AS compounding_gap_points,
round(sum(100 * log(1 + r / 100)), 2) AS sum_of_monthly_log_returns_pct,
round(100 * log(any(final_close) / any(base_close)), 2) AS twelve_month_log_return_pct
FROM rets CROSS JOIN ends
WHERE isFinite(r)పన్నెండు నెలలు 19.83%కి కలుస్తాయి కానీ 20.79%కి చక్రవృద్ధి చెందుతాయి — మరియు ప్రత్యక్ష గణన, జూన్ 2025 క్లోజ్ నుండి నేరుగా జూన్ 2026 క్లోజ్కు, 20.79% ఇస్తుంది, ఇది మొత్తం కాకుండా చక్రవృద్ధి గణాంకంతో సరిపోతుంది. ఒక ప్రశాంతమైన సంవత్సరంలో ఈ అంతరం 0.96 పాయింట్లు; ఇది అస్థిరత మరియు కాలవ్యవధితో విస్తరిస్తుంది. నెలవారీ శాతాలను కలపడం ఒక సాధారణ స్ప్రెడ్షీట్ అలవాటు, మరియు ఇది నిశ్శబ్దంగా తప్పు.
చివరి రెండు నిలువు వరుసలు కలపడం కోసం నిర్మించిన సంప్రదాయాన్ని చూపిస్తున్నాయి: లాగ్ రిటర్న్, వృద్ధి కారకం యొక్క సహజ లఘువు, ln(1 + రిటర్న్). నెలవారీ లాగ్ రిటర్న్లు 18.89%కి కలుస్తాయి — ఇది 18.89% యొక్క పన్నెండు నెలల లాగ్ రిటర్న్కు సమానం, ఇదే కారణంగా విశ్లేషకులు మరియు రిస్క్ మోడల్లు వాటిని ఉపయోగిస్తాయి. చిన్న నెలలకు రెండు సంప్రదాయాలు కొద్దిగా మాత్రమే తేడా ఉంటాయి (2025-11: 0.21% సాధారణ, 0.21% లాగ్); నెల ఎంత పెద్దదో, అంత విస్తారంగా అవి విడిపోతాయి (2026-04: 10.49% సాధారణ, 9.97% లాగ్). ఫండ్ ఫ్యాక్ట్ షీట్లు సాధారణ రిటర్న్లను ఉటంకిస్తాయి; లాగ్ రిటర్న్లు పరిశోధన పత్రాలలో మరియు అస్థిరత గణితంలో ఉంటాయి.
ఏవైనా రెండు మూలాలను సరిపోల్చే చెక్లిస్ట్
ఇంకా రెండు నెలవారీ రిటర్న్ లక్షణాలు ఏకీభవించకపోతే, అవి దాదాపు ఎల్లప్పుడూ నాలుగు స్విచ్లలో ఒకదానిపై విభేదిస్తాయి:
- ఎండ్పాయింట్లు — క్లోజ్-టు-క్లోజ్ (ప్రామాణికం) లేదా ఓపెన్-టు-క్లోజ్ (ఆ నెలకు చెందిన ట్రేడింగ్). హద్దు వద్ద గ్యాప్ ఏర్పడినప్పుడు ఇవి వేరుగా ఉంటాయి.
- డివిడెండ్లు — ధర రిటర్న్ లేదా మొత్తం రిటర్న్. ఎక్స్-డివిడెండ్ తేదీ ఉన్న ఏ నెలలోనైనా ఇవి వేరుగా ఉంటాయి.
- సర్దుబాటు — ముడి ముద్రణలు లేదా సర్దుబాటు-క్లోజ్ శ్రేణి. స్ప్లిట్ ఉన్న ఏ నెలలోనైనా ఇవి భారీగా వేరుగా ఉంటాయి.
- క్లోజ్ స్వయంగా — అధికారిక వేల ముద్రణ (ప్రామాణికం) వద్దా, లేదా విస్తరించిన గంటలను కలిగి ఉండే చివరి ట్రేడ్ వద్దా.
రెండు మూలాలపై అదే స్విచ్లను అమలు చేస్తే, అసమ్మతి అదృశ్యమవుతుంది — మరియు ఫండ్-వర్సెస్-ఇండెక్స్ పోలిక కేవలం రెండు లక్షణాలు అదే నాలుగు సెట్టింగ్లపై ఉన్నప్పుడే చెల్లుబాటు అవుతుంది; ఒకదానిని వేరుగా ఉంచితే, ఆ పోలిక నిశ్శబ్దంగా పనితీరు కాకుండా స్విచ్ను కొలుస్తుంది. మా స్వంత జూన్ 2026 సారాంశం ఈ కారణంగానే తన సంప్రదాయాన్ని ముందుగానే పేర్కొంది — అక్కడి ప్రతి నెలవారీ సంఖ్య క్లోజ్-టు-క్లోజ్, అధికారిక ముద్రణలు, ధర రిటర్న్.
నెలవారీ రిటర్నుల ఎఫ్ఏక్యూ
క్లోజ్-టు-క్లోజ్ రిటర్న్ అంటే ఏమిటి?
గత సెషన్లోని చివరి రెగ్యులర్-సెషన్ క్లోజింగ్ ధర నుండి ఈ సెషన్ చివరి క్లోజింగ్ ధరకు మారిన శాతం. ఇది ఫ్యాక్ట్ షీట్లు, ఇండెక్స్ నివేదికలలో రోజువారీ, నెలవారీ, సంవత్సరపు స్టాక్ రిటర్నులకు ప్రామాణిక పద్ధతి.
ఒకే స్టాక్, ఒకే నెలకు రెండు వెబ్సైట్లు భిన్నమైన రిటర్నులు ఎందుకు చూపిస్తాయి?
దాదాపు ఎల్లప్పుడూ ఈ నాలుగు పద్ధతులలో ఒకటి: వేర్వేరు ఎండ్పాయింట్లు (క్లోజ్-టు-క్లోజ్ vs ఓపెన్-టు-క్లోజ్), డివిడెండ్లు కలుపుతారా/కలపరా, రా ధరలా vs స్ప్లిట్-సరిచేసిన ధరలా, లేదా వేరే క్లోజింగ్ ధర మూలం. NVDA యొక్క June 2026 లెక్కలు తొలి తేడా మీదే -5.39% లేదా -7.4% ఉంటాయి.
నెలవారీ రిటర్న్ లెక్కింపును స్టాక్ స్ప్లిట్ మారుస్తుందా?
మార్చకూడదు — స్ప్లిట్ షేర్ల సంఖ్యనూ ధరనూ కలిసి మారుస్తుంది, ఫలితంగా పొజిషన్ విలువ స్థిరంగా ఉంటుంది — కానీ రా ధరలపై చేసిన ఏ లెక్కింపునైనా అది పాడుచేస్తుంది. NVDA యొక్క June 2024 రా క్లోజులపై -88.75% లాగా కనిపిస్తుంది, 10-for-1 స్ప్లిట్ను సరిచేసిన తర్వాత 12.45% ఉంటుంది.
నెలవారీ స్టాక్ రిటర్నుల్లో డివిడెండ్లు ఉంటాయా?
మొత్తం రిటర్నుల్లో మాత్రమే ఉంటాయి. ధర రిటర్నుల్లో — హెడ్లైన్ S&P 500 ఇండెక్స్ స్థాయి సహా — వాటిని కలపరు. June 2026లో డివిడెండ్ SPY యొక్క నెలకు 0.25% జోడించింది, దాని ధర రిటర్న్కు, మొత్తం రిటర్న్కు మధ్య ఉన్న తేడా.
నా వ్యక్తిగత పోర్ట్ఫోలియో నెలవారీ రిటర్న్ అలాగే లెక్కించబడుతుందా?
డబ్బు లోకి/బయటకు కదిలిన తర్వాత కాదు. ఈ పేజీలో ఉన్న ఒకే ఒక సెక్యూరిటీ రిటర్నులు టైమ్-వెయిటెడ్; డిపాజిట్లు, ఉపసంహరణలు ఉన్న ఖాతాకు మనీ-వెయిటెడ్ (ఇంటర్నల్ రేట్ ఆఫ్ రిటర్న్) లెక్కింపు అవసరం, లేదంటే ఆ నగదు ప్రవాహాలు పనితీరుగా మారువేషం వేస్తాయి. ఎక్కువ మంది బ్రోకర్లు టైమ్-వెయిటెడ్ లెక్కనే నివేదిస్తారు — మీ డిపాజిట్లను సంఖ్య నుండి వేరు చేయడానికి కచ్చితంగా ఇదే పద్ధతి.
పై ప్రతి ఒక్కటి నిజమైన టేప్పై నిల్వ చేయబడిన, వెర్షన్లు ఉన్న ప్రశ్న — ఏదైనా ప్యానెల్ SQL ను విస్తరించండి, లేదా Strasmore టెర్మినల్లో ఏదైనా టికర్ నెలను ఏదైనా పద్ధతిలో కొలవండి.