Sell in May and Go Away नियम काम करतो का?
S&P 500च्या दोन दशकांतील हंगामी आकडेवारीत Sell in May नियम तपासा. उन्हाळ्यातील परताव्यातील फरक, प्रत्यक्ष खर्च आणि हा नियम अपुरा का ठरतो ते जाणून घ्या.
Sell in May and go away हा शेअर बाजारातील सर्वाधिक परिचित calendar rule आहे: एप्रिलअखेरीस विक्री करा, उन्हाळाभर रोख रक्कम ठेवा आणि ऑक्टोबरअखेरीस पुन्हा खरेदी करा. एप्रिल 2005च्या शेवटच्या बंद भावापासून एप्रिल 2026च्या शेवटच्या बंद भावापर्यंतच्या S&P 500 trackerच्या किमतींवर आधारित मोजमापानुसार, वर्षातील November ते April हा सहामाही कालखंड May ते October या सहामाहीपेक्षा सरासरी अधिक परतावा देतो. हा फरक प्रत्यक्षात आहे; मात्र या म्हणीवरून वाटते तितका मोठा नाही. उन्हाळ्याच्या सहामाहीतही सरासरी वाढ होते. त्यामुळे नियोजन म्हणून हा नियम अपुरा ठरतो.
नियम काय सांगतो आणि त्याची चाचणी कशी करायची
हा वाक्प्रचार लंडनमधील जुन्या प्रथेवरून आला आहे. वसंत ऋतूतील शर्यतींचे आयोजन संपल्यानंतर लोक शहराबाहेर जात आणि शरद ऋतूत परतत. आधुनिक आणि तपासता येणाऱ्या स्वरूपात हा दोन तारखांवर आधारित switching rule आहे. ऑक्टोबरच्या शेवटच्या trading dayपासून एप्रिलच्या शेवटच्या trading dayपर्यंत broad stock indexमध्ये गुंतवणूक ठेवायची. उर्वरित सहा महिन्यांत कोणतीही गुंतवणूक ठेवायची नाही.
या नियमाची चाचणी घेण्यासाठी उक्तीमध्ये नसलेल्या दोन गोष्टी आवश्यक असतात: price series आणि निश्चित window. खालील प्रत्येक आकडा SPYवर आधारित आहे. SPY हा सर्वांत जुना S&P 500 exchange traded fund आहे. त्याचे दर global_markets.delayed_stocks_minute_aggs तक्त्यातील regular-hours minute barsमधून घेतले आहेत. कालावधी एप्रिल 2005च्या अंतिम closeपासून एप्रिल 2026च्या अंतिम closeपर्यंतचा आहे. येथे एखाद्या महिन्याचा return म्हणजे त्या महिन्याच्या अंतिम regular-hours priceची मागील महिन्याच्या अंतिम priceशी केलेली तुलना; यात केवळ किंमत विचारात घेतली आहे. Dividendsसाठी पुढे स्वतंत्र विभाग आहे. मासिक returns कसे मोजले जातात यात हा फरक निकाल का बदलतो, हे स्पष्ट केले आहे.
मेमध्ये विकून बाजारापासून दूर राहणे उपयोगी ठरते का? 2005 ते 2026 मधील नोंद
प्रत्येक आकड्यामागील अचूक SQL
WITH monthly AS (
SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
argMax(close, window_start) AS month_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2005-04-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-04-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY month_start
)
SELECT toYear(apr_m.month_start) AS year,
round(100 * (toFloat64(oct_m.month_close) / toFloat64(apr_m.month_close) - 1), 2) AS may_oct_pct,
round(100 * (toFloat64(apr_next.month_close) / toFloat64(oct_m.month_close) - 1), 2) AS nov_apr_pct
FROM monthly AS apr_m
INNER JOIN monthly AS oct_m ON oct_m.month_start = addMonths(apr_m.month_start, 6)
INNER JOIN monthly AS apr_next ON apr_next.month_start = addMonths(apr_m.month_start, 12)
WHERE toMonth(apr_m.month_start) = 4
ORDER BY yearप्रत्येक बिंदू एका उन्हाळ्याची आणि त्यानंतरच्या हिवाळ्याची जोडी दाखवतो. या चार्टमध्ये 21 पूर्ण जोड्या आहेत. त्याची सुरुवात 2005 च्या उन्हाळ्यापासून होते आणि एप्रिल 2026 मध्ये संपलेल्या हिवाळ्यापर्यंत ती नोंद आहे.
बहुतेक स्वतंत्र वर्षांमध्ये या दोन रेषांचे निष्कर्ष वेगळे आहेत; मात्र सर्वात खराब वर्षात ते समान आहेत. एप्रिलअखेर ते ऑक्टोबरअखेरच्या कालावधीत 2008 उन्हाळी सहामाहीत -29.81% अशी कामगिरी नोंदली गेली. या संपूर्ण कालावधीतील ही सर्वात मोठी घसरण होती. त्यानंतरच्या हिवाळ्यात -10.03% अशी कामगिरी झाली. एप्रिलमध्ये विक्री करणारा गुंतवणूकदार मोठ्या घसरणीतून बाहेर पडला आणि नंतरच्या घसरणीच्या अंतिम टप्प्यासाठी पुन्हा बाजारात आला. कॅलेंडर आणि बाजारातील नुकसान यांचा मेळ या प्रवासाच्या केवळ अर्ध्या भागातच बसला.
2015 पासून उन्हाळ्यातील अंतर कमी झाले आहे का?
सरासरी आकडेवारीच या म्हणीचा खरा आधार आहे. तसेच, त्या सरासरी कोणत्या कालावधीवर आधारित आहेत हेही महत्त्वाचे आहे. 2015 येथे कालावधी विभागल्यास समान पद्धतीने मोजलेले, जवळपास समान लांबीचे दोन भाग मिळतात.
प्रत्येक आकड्यामागील अचूक SQL
WITH monthly AS (
SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
argMax(close, window_start) AS month_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2005-04-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-04-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY month_start
),
pairs AS (
SELECT toYear(apr_m.month_start) AS season_year,
toFloat64(oct_m.month_close) / toFloat64(apr_m.month_close) - 1 AS may_oct,
toFloat64(apr_next.month_close) / toFloat64(oct_m.month_close) - 1 AS nov_apr
FROM monthly AS apr_m
INNER JOIN monthly AS oct_m ON oct_m.month_start = addMonths(apr_m.month_start, 6)
INNER JOIN monthly AS apr_next ON apr_next.month_start = addMonths(apr_m.month_start, 12)
WHERE toMonth(apr_m.month_start) = 4
),
tagged AS (
SELECT may_oct,
nov_apr,
arrayJoin(['All seasons 2005-2025',
if(season_year <= 2014, 'First half 2005-2014', 'Second half 2015-2025')]) AS era
FROM pairs
)
SELECT era,
count() AS season_count,
round(100 * avg(may_oct), 2) AS avg_may_oct_pct,
round(100 * avg(nov_apr), 2) AS avg_nov_apr_pct,
round(100 * (avg(nov_apr) - avg(may_oct)), 2) AS winter_minus_summer_pct,
countIf(may_oct > 0) AS summers_positive
FROM tagged
GROUP BY era
ORDER BY eraसर्व 21 हंगामांचा विचार केल्यास, मे ते ऑक्टोबर या कालावधीत सरासरी 3.88% परतावा मिळाला. नोव्हेंबर ते एप्रिल या कालावधीत सरासरी 6.06% परतावा मिळाला. दोन्हींमधील फरक 2.18 टक्केवारी-अंशांचा होता. या नियमाच्या समर्थनासाठी एवढाच आधार आहे. उन्हाळ्याच्या स्तंभाकडे पाहिल्यास, त्यापैकी 16 उन्हाळे सुरुवातीपेक्षा उच्च पातळीवर संपले. त्यामुळे सरासरीप्रमाणे बाजाराबाहेर राहिल्याने तोटा टळला नाही; उलट काही नफा गमावला गेला.
दोन्ही कालखंडांचे निष्कर्ष वेगळे आहेत. आधीच्या कालखंडात फरक 4.84 टक्केवारी-अंशांचा होता, तर नंतरच्या कालखंडात तो -0.24 टक्केवारी-अंशांचा होता. लोकप्रिय मांडणीत वर्षे न सांगता फक्त फरक उद्धृत केला जातो. पण या दाव्याचा आधार कोणती वर्षे आहेत, हेच महत्त्वाचे आहे. कोणतीही हंगामी आकडेवारी ही इतिहासातील एका कालखंडाबद्दलची मांडणी असते. तो कालखंड कोणता असावा, हा निर्णय ती मांडणी करणारी व्यक्ती घेते.
हा खरोखर August आणि Septemberचा परिणाम आहे का?
सहा महिने हा फार ढोबळ मापदंड आहे. कॅलेंडरचे महिन्यांमध्ये विभाजन केल्यास उन्हाळ्यातील कालावधी संपूर्णपणे कमकुवत आहे की त्यातील एका भागामुळे संपूर्ण परिणाम दिसतो, हे स्पष्ट होते.
प्रत्येक आकड्यामागील अचूक SQL
WITH monthly AS (
SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
argMax(close, window_start) AS month_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2005-04-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-04-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY month_start
),
month_returns AS (
SELECT m1.month_start AS month_start,
100 * (toFloat64(m1.month_close) / toFloat64(m0.month_close) - 1) AS ret_pct
FROM monthly AS m1
INNER JOIN monthly AS m0 ON m0.month_start = addMonths(m1.month_start, -1)
)
SELECT formatDateTime(month_start, '%b') AS label,
count() AS readings,
round(avg(ret_pct), 2) AS avg_return_pct,
round(quantileDeterministic(0.5)(ret_pct, cityHash64(month_start)), 2) AS median_return_pct,
countIf(ret_pct > 0) AS positive_readings
FROM month_returns
GROUP BY label
ORDER BY min(toMonth(month_start))कमकुवतपणा Septemberमध्ये केंद्रित आहे. या महिन्यातील सरासरी -0.75% होती आणि 21 वर्षांपैकी 12 वर्षांत तो वाढीसह बंद झाला; त्याचा median 0.38% होता. Augustची सरासरी 0.28% होती. गुंतवणूकदाराने टाळलेल्या कालावधीच्या मध्यावर येणाऱ्या Julyची सरासरी 2.63% होती. नियमाने पुन्हा खरेदी करण्यापूर्वीचा शेवटचा महिना असलेल्या Octoberची सरासरी 0.97% होती.
या कालावधीतील परिणामाची रचना मर्यादित आहे: उन्हाळ्याच्या शेवटी एक कमकुवत टप्पा दिसतो, तर त्याच्या आसपासचे महिने कॅलेंडरमधील इतर महिन्यांसारखेच दिसतात. September टाळण्यासाठी Aprilअखेर बाहेर पडल्यास May, June, July आणि August हेही चुकतात.
या बदलाचा प्रत्यक्ष खर्च
हंगामी फरक हा एकूण आकडा आहे. एखाद्या नियमाने स्वतःच्या व्यवहारखर्चांनंतरही टिकले पाहिजे.
प्रत्येक आकड्यामागील अचूक SQL
WITH monthly AS (
SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
argMax(close, window_start) AS month_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2005-04-01')
AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-04-30')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY month_start
),
pairs AS (
SELECT toYear(apr_m.month_start) + 1 AS year,
toFloat64(oct_m.month_close) / toFloat64(apr_m.month_close) AS summer_ratio,
toFloat64(apr_next.month_close) / toFloat64(oct_m.month_close) AS winter_ratio
FROM monthly AS apr_m
INNER JOIN monthly AS oct_m ON oct_m.month_start = addMonths(apr_m.month_start, 6)
INNER JOIN monthly AS apr_next ON apr_next.month_start = addMonths(apr_m.month_start, 12)
WHERE toMonth(apr_m.month_start) = 4
)
SELECT year,
round(exp(sum(log(summer_ratio * winter_ratio)) OVER (ORDER BY year)), 2) AS buy_and_hold_growth,
round(exp(sum(log(winter_ratio)) OVER (ORDER BY year)), 2) AS winter_only_growth
FROM pairs
ORDER BY yearएप्रिलच्या अखेरीपासून प्रत्येक हंगामात गुंतवलेला $1 2005 एप्रिल 2026च्या अखेरीस $6.21 झाला. त्याच बाजारात केवळ नोव्हेंबर ते एप्रिल या कालावधीत ठेवलेला आणि उर्वरित काळ निष्क्रिय असलेला तोच $1 $3.14 झाला. दोन्ही रेषा कोणतीही कपात न केलेला केवळ किंमत-परतावा दाखवतात. त्यामुळे बदलाच्या नियमाचे चित्र अधिक अनुकूल दिसते. चार्टमध्ये पुढील बाबी समाविष्ट नाहीत.
- 21 पैकी प्रत्येक हंगामात दरवर्षी दोन व्यवहार. सध्या बहुतांश brokersकडे व्यवहाराची स्वतंत्र फी नसते. मात्र प्रत्येक round tripमध्ये भरावा लागणारा bid ask spread विनामूल्य नसतो.
- कर. करपात्र खात्यात एप्रिलमधील विक्रीमुळे नोव्हेंबरपासून जमा झालेला कोणताही नफा प्रत्यक्षात येतो. नोव्हेंबर ते एप्रिल हा holding period रचनेनुसार एका वर्षापेक्षा कमी असतो. त्यामुळे US करदात्यासाठी हा नफा short-term दराने करपात्र ठरतो.
- निष्क्रिय रोख. केवळ हिवाळ्यातील रेषेत बाजूला ठेवलेल्या पैशावर शून्य परतावा गृहीत धरला आहे. प्रत्यक्ष गुंतवणूकदार ती रक्कम कुठेतरी ठेवेल; त्यासाठी लोक वापरत असलेल्या साधनांची माहिती निष्क्रिय रोख कुठे ठेवावी येथे दिली आहे.
- Dividends, ज्यांचा पुढील पॅनेलमध्ये किंमतीच्या दृष्टीने विचार केला आहे.
प्रत्येक आकड्यामागील अचूक SQL
SELECT toYear(ex_dividend_date) AS year,
round(sumIf(cash_amount, toMonth(ex_dividend_date) >= 5 AND toMonth(ex_dividend_date) <= 10), 3) AS may_oct_dividends_usd,
round(sumIf(cash_amount, toMonth(ex_dividend_date) < 5 OR toMonth(ex_dividend_date) > 10), 3) AS nov_apr_dividends_usd
FROM global_markets.stocks_dividends
WHERE ticker = 'SPY'
AND cash_amount > 0
AND ex_dividend_date >= toDate('2005-01-01')
AND ex_dividend_date <= toDate('2025-12-31')
GROUP BY year
ORDER BY yearSPYच्या ex-dividend dates मार्च, जून, सप्टेंबर आणि डिसेंबरमध्ये येतात. त्यामुळे चारपैकी दोन dates विक्रेता बाजाराबाहेर राहतो त्या सहा महिन्यांत येतात. 2025मध्ये मे ते ऑक्टोबर या कालावधीतील ex-date असलेल्या distributionsची रक्कम प्रति शेअर $3.592 होती. उर्वरित सहा महिन्यांत ती $3.689 होती. संपूर्ण चार्टमध्ये दोन्ही स्तंभ एकमेकांच्या जवळ राहतात. वर्षातील निम्म्या कालावधीत बाजाराबाहेर राहिल्यास दरवर्षी निधीच्या उत्पन्नातील साधारण निम्मा भाग गमावला जातो; त्या महिन्यांतील किंमतबदलाचा परिणाम याशिवाय असतो. Ex-dividend date ही कोणाला dividend मिळेल हे ठरवणारी अंतिम तारीख आहे.
आणखी एक खर्च कोणत्याही स्वतंत्र नोंदीत दिसत नाही. Index returns ठरावीक समूहांमध्ये मिळतात. त्यामुळे सर्वोत्तम दिवस चुकवणे यामुळे दीर्घकालीन शिल्लकीवर काही मोजक्या अनुपस्थित सत्रांचा किती परिणाम होतो हे स्पष्ट होते. दरवर्षी सहा महिने बाजाराबाहेर राहणे म्हणजे अनेक सत्रांना मुकणे होय. बाजारात राहण्याच्या कालावधीला वेळ साधण्यापेक्षा शिस्त म्हणून पाहणाऱ्या dollar cost averagingमागेही हेच गणित आहे.
प्रसिद्ध calendar ruleकडे संशयाने पाहणे का आवश्यक आहे
बारा महिन्यांत गुंतवणुकीसाठी उपसंच निवडण्याचे 4,095 रिक्त नसलेले मार्ग असतात. त्या सर्व पर्यायांची एका किंमत-मालिकेवर तपासणी केली, तर त्यापैकी काहीतरी ठळक दिसेल. हा त्या शोधप्रक्रियेचा स्वाभाविक परिणाम आहे.
Sell in May या नियमाचा मागील आठवड्यात शोधलेल्या नियमापेक्षा एक महत्त्वाचा प्रामाणिक फायदा आहे: हा नियम या नमुन्याचा कालावधी सुरू होण्याच्या खूप आधीपासून प्रसिद्ध होता. त्यामुळे या पृष्ठावरील वर्षे जुळवून घेतलेल्या निष्कर्षाऐवजी नमुन्याबाहेरील चाचणी म्हणून वापरता येतात. या चाचणीत फरक मर्यादित दिसतो. तो मुख्यतः एका महिन्यात केंद्रित आहे. त्याच कालावधीत खरेदी करून ठेवण्याच्या धोरणापेक्षा ही switching rule मागे राहते. आधीच उपलब्ध माहितीचा पक्षपात backtest नकळत आपले उत्तर आधीच कसे शिकतो, हे स्पष्ट करते. Calendar rules हे याचे पाठ्यपुस्तकी उदाहरण आहे: परतावे माहीत झाल्यानंतर महिने निवडले जातात.
वारंवार विचारले जाणारे प्रश्न
मेमध्ये विकून दूर राहण्याची रणनीती अजूनही काम करते का?
एप्रिल 2005 ते एप्रिल 2026 या कालावधीत SPYच्या किमतींमध्ये नोव्हेंबर ते एप्रिलदरम्यानची सरासरी कामगिरी 6.06% होती, तर मे ते ऑक्टोबरदरम्यान ती 3.88% होती. त्यामुळे संपूर्ण नमुन्यात हा हंगामी फरक कायम राहतो. उन्हाळ्याच्या सहामाहीतही सरासरी वाढ झाली; 21 पैकी 16 उन्हाळी कालखंडांची समाप्ती सुरुवातीपेक्षा उच्च पातळीवर झाली.
प्रत्यक्षात कोणते महिने कमजोर असतात?
या कालावधीत कमजोरी मुख्यतः सप्टेंबरमध्ये केंद्रित होती. त्या महिन्यात सरासरी कामगिरी -0.75% होती आणि 21 पैकी 12 वर्षांत महिना वाढीसह संपला. ही रणनीती टाळत असलेल्या आणखी एका महिन्यात, म्हणजे जुलैमध्ये, याच कालावधीत सरासरी कामगिरी 2.63% होती.
मेमध्ये विकणे हे खरेदी करून ठेवण्यापेक्षा चांगले ठरते का?
या नमुन्यात नाही. एप्रिल 2005च्या अखेरीपासून सतत गुंतवलेला $1 एप्रिल 2026पर्यंत $6.21 झाला. त्याच्या तुलनेत केवळ हिवाळ्यात गुंतवणूक करणारी रणनीती $3.14वर पोहोचली. या तुलनेत व्यवहार खर्च, कर किंवा dividends यांचा समावेश नाही.
मेमध्ये विकल्यास dividendsचे काय होते?
निधीच्या ex-dividend dates उन्हाळ्यासाठी थांबत नाहीत. SPYच्या चार तिमाही ex-datesपैकी दोन मे ते ऑक्टोबर या कालावधीत येतात. एखादा धारक ex-dateला निधीत गुंतवलेला नसेल, तर त्याला ते distribution मिळत नाही.
हंगामी नमुना म्हणजे अंदाजच असतो का?
नाही. 21 हंगामांमधील ऐतिहासिक सरासरी ही निश्चित कालावधीत काय घडले ते दर्शवते. पहिल्या चार्टमध्ये दिसते त्याप्रमाणे, प्रत्येक वर्षाची कामगिरी या सरासरीभोवती मोठ्या प्रमाणात बदलते. शिवाय, कोणता कालावधी घ्यायचा हा स्वतः एक निवडलेला निकष असतो.
येथील प्रत्येक पॅनेल संलग्न SQLसह साठवलेल्या queryवर आधारित आहे. ticker बदला, कालावधी बदला आणि Strasmore terminalवर हंगामी फरक कायम राहतो का ते तपासा.