Education

Seasonality Analysis in Indian Markets: What the Studies Show and What They Hide

Seasonality analysis measures average returns by calendar period. In Indian markets the patterns are real in the sample but fragile out of it, and the data-mining risk is severe.

Seasonality analysis means grouping historical market returns by calendar period, month, weekday, week of the month, or the days around a holiday or event, and comparing the averages. In Indian markets, as everywhere else, such studies do produce patterns. The honest summary is that the patterns are real in the sample they were measured on, weak relative to their own variability, and extremely easy to manufacture by accident.

That last point is the one that matters, and it is the reason this article spends more space on the method’s failure mode than on the patterns themselves.

What the analysis actually computes

The mechanics are simple, which is part of the problem.

Take a return series, usually a broad index or a single stock. Choose a calendar bucket: the twelve months, the five weekdays, the first half versus the second half of each month, the sessions surrounding a budget announcement or a long weekend. Assign every historical observation to its bucket. Then compute, per bucket, some combination of average return, median return, the share of periods that were positive, and the dispersion of outcomes.

The output is normally a table or a bar chart: twelve bars, one per month, showing average return. Sometimes a “seasonality strength” figure is added, showing how often the bucket was positive.

A few construction choices quietly decide the answer:

  • Price index or total return index. Dividends are not paid evenly through the year, so a price only series will systematically understate months in which companies tend to go ex-dividend. The choice materially changes a monthly seasonality table.
  • The sample window. Where you start and stop changes every average. A window that includes a crisis year assigns that crash to one particular month, and with a small sample that one event can define the bucket.
  • Arithmetic versus compounded averaging. Averaging monthly returns and compounding them give different pictures, especially when dispersion is high.
  • Calendar alignment. India’s fiscal year, quarterly results calendar, and festival calendar do not line up with the Gregorian months. A pattern attributed to a month may really be an artefact of when results are reported or when a moveable festival fell that year.

How the results are usually read

The standard reading is comparative: which buckets have averaged higher, which lower, and how consistent has each been. A well constructed presentation shows not only the average but the spread and the count of observations, because those decide whether the average means anything.

A more defensible use is descriptive rather than predictive. Knowing that a particular part of the year has historically carried wider dispersion is genuinely useful context for planning, because it speaks to when the range of outcomes has been wide. That is a statement about historical variability, not a statement about what will happen next.

The least defensible use, and unfortunately the most common one, is to take a bucket average and treat it as an expected return for the coming instance of that bucket. Everything in the next section explains why that step does not follow.

What it does not tell you

Seasonality is, alongside market breadth, the most over-read category in market data. It produces clean charts, it is easy to narrate, and it flatters the reader with a sense of pattern recognition. Here is what a seasonality table cannot support.

The sample is far smaller than it looks. A chart built on twenty five years of daily data feels like it rests on thousands of observations. For a monthly seasonality claim it does not. Each January is one observation, so twenty five years gives twenty five independent samples of January. Monthly returns are volatile, and an average of twenty five noisy numbers has a wide margin of error around it. In most published seasonality tables, the difference between the “best” and “worst” month is comfortably inside the range you would expect from random variation alone.

The data-mining risk is the central problem, and it is not a footnote. This deserves naming plainly. Seasonality analysis is a search over a large space of calendar slices: twelve months, five weekdays, roughly fifty weeks, halves of months, days before and after holidays, expiry weeks, budget windows, and every combination of those with sub-universes such as sectors, size buckets, and individual stocks. Search a space that large and some slices will look striking purely by chance, with no underlying cause at all. If a hundred candidate patterns are tested and only the strongest is written up, the reported pattern is a selection artefact. Nothing about the chart reveals this, because the failed tests are invisible. The reader sees one impressive result and has no way to know it was drawn from a hat containing hundreds. This is the same machinery as overfitting in backtesting, applied to the calendar rather than to parameters, and it is if anything easier to fall into because the calendar buckets feel like natural categories rather than tuned parameters.

Publication tends to erode the effect. Several well documented calendar effects in global markets weakened, disappeared, or reversed after they were widely published. Whether the cause is participants acting on them or the original effect having been noise in the first place, the practical implication is the same: a pattern’s presence in a historical study is weak evidence that it will persist.

Averages hide the distribution you actually live through. A bucket with a positive average may contain a majority of small negative outcomes and a couple of very large positive ones. The average is a poor summary of what any single instance of that period looked like. Any serious seasonality table shows the dispersion and the hit rate next to the mean, and many popular ones do not.

Overlapping causes are not separated. A calendar bucket bundles together the results season, dividend timing, index rebalancing, fiscal year end flows, and global events that happened to fall in that window. Attributing the bucket’s average to “seasonality” assigns a single label to a mixture of unrelated mechanisms, most of which are not calendar driven at all.

Constituent history corrupts long studies. A seasonality study on a stock universe over decades needs to know which companies were actually listed and investable on each past date. Rebuilding from today’s index membership drops everything that failed, which is the survivorship bias problem again. It systematically improves the historical averages in every bucket.

It says nothing about any company. Seasonality is a calendar aggregate. It carries no information about a business, its earnings, or its valuation. A genuine operating seasonality, such as a business that sells most of its product in one quarter, is a completely different subject and is read from the company’s own filings, not from a returns calendar.

Handling it honestly

If seasonality work is going to be done, a few disciplines separate research from decoration.

  • State the number of independent observations per bucket, prominently. If it is under thirty, say so.
  • Report dispersion and hit rate alongside the average. An average without a spread is not a result.
  • Declare how many patterns were tested, not just the one being shown. This single habit removes most of the data-mining problem, because a reader can then discount for the search.
  • Test the pattern on a window that was not used to find it. In-sample versus out-of-sample testing is the minimum honest check, and most seasonality claims fail it.
  • Ask what mechanism would produce the effect, and whether that mechanism still exists. A pattern with no plausible cause is a coincidence until proven otherwise.
  • Account for costs. Any calendar rule implies trading, and trading has transaction costs that routinely exceed the size of a reported seasonal edge.

Used with those guardrails, seasonality analysis is a reasonable way to describe how historical variability has been distributed through the year. Used without them, it is a machine for generating confident claims out of noise.

This article is educational. Altys Labs is not a registered research analyst or investment adviser, and nothing here is investment advice or a recommendation to buy, sell, or hold any security.

Frequently asked questions

What is seasonality analysis in stock markets?

It is the practice of grouping historical returns by a calendar unit, such as month, weekday, or position within the year, and comparing the averages. The output is a claim like 'this month has averaged higher returns than that one'. It is a description of a past sample, not a property of the market.

Are seasonal patterns in Indian markets reliable?

Most reported patterns rest on a small number of independent observations. Twenty five years of data gives you only twenty five samples of any given month. Averages built on that few observations are statistically noisy, and many well known seasonal effects have weakened or reversed after they were published.

What is data mining in the context of seasonality?

It is the practice of searching many calendar slices until one looks impressive, then presenting only the winner. If you test enough combinations of month, weekday, half-month, and holiday window, some will appear strong purely by chance. The published pattern is then a selection artefact rather than a discovery.