How Is Monthly Seasonality Measured?
Direct Answer
Monthly seasonality is measured by computing an asset's return for each calendar month in every year of a historical dataset, then averaging those returns separately for each of the 12 months — every January's return since some starting year, every February's return, and so on. The result is 12 average returns, one per calendar month, each derived from as many observations as there are years of history.
The methodology looks simple, but it hides a real statistical trap: checking all 12 months and reporting the best-looking one is the multiple testing problem in miniature. With 12 independent buckets, random chance alone produces at least one that looks "significant" a meaningful fraction of the time, even with zero true seasonal effect. This page covers the measurement methodology, that multiple-testing exposure specifically, and a fully hypothetical worked example of the arithmetic involved.
Key Takeaways
- Each calendar month is one bucket with N observations: N years of history give N independent return observations for each of the 12 months — a 20-year dataset produces 20 observations per month, not 240.
- 12 buckets means 12 implicit tests: Checking all 12 months and reporting only the best one is a direct, small-N illustration of the multiple testing problem covered in Multiple Testing and Researcher Degrees of Freedom.
- With 12 tests at the conventional 5% threshold, the chance of at least one false positive is roughly 46% (1 − 0.9512 ≈ 0.46) — even if no calendar month has any true underlying effect.
- More years of history narrows the standard error but doesn't remove the bucket count: A longer sample makes each month's estimate more precise; it does not reduce the number of months being compared, so a multiple-testing correction is still required.
- A t-statistic just above 1.96 is not automatically significant with a small sample: The correct critical value depends on the degrees of freedom (N − 1); with fewer than roughly 30 years of data, the true critical value is noticeably higher than the large-sample approximation of 1.96.
- The full distribution across years matters more than the single average — see What Is Market Seasonality? for why the standard deviation and win rate change the interpretation of any monthly average.
- Statistical significance testing for a specific seasonal claim is covered in depth in Statistical Significance in Seasonality Testing.
Core Concepts
What is the standard methodology for monthly seasonality?
The standard approach computes a single return figure for each calendar month, in each year, using the month's opening price and closing price (or an equivalent total-return calculation if dividends are included). For N years of history, this produces N return values for January, N for February, and so on through December — 12 separate samples of size N. Averaging within each month's sample gives the 12 headline "average monthly return" figures typically shown on a seasonality chart.
Alongside the average, a complete methodology reports the standard deviation of each month's N return values, the number of years the month was positive versus negative (the win rate), and ideally the individual year-by-year values so a reader can see whether the average is broadly representative or driven by a few outlier years — the same principle covered on the market seasonality foundation page.
Why does more historical data help, but not solve the small-sample problem?
Extending the dataset from 10 years to 40 years quadruples the number of observations feeding each monthly average, which narrows the standard error of that average by a factor of two (standard error scales with the square root of sample size) and makes a given month's statistical test meaningfully more powerful. This is a genuine improvement, and it is why seasonality studies with longer histories are generally more credible than those with short ones.
What a longer history does not change is the number of calendar buckets being compared. Whether the dataset spans 10 years or 100 years, there are still 12 calendar months, and checking all 12 and reporting only the one with the most extreme average is still equivalent to running 12 statistical tests and keeping the winner. Using the same simplified formula as the companion multiple-testing guide, the probability that at least one of 12 independent tests produces a false positive at the conventional 5% threshold is 1 − (1 − 0.05)12 ≈ 1 − 0.9412 ≈ 46%. A researcher who checks all 12 months, finds one with an apparently striking average, and presents only that month is nearly a coin flip away from having found pure noise, regardless of how many years of data went into the calculation.
A Bonferroni correction for 12 tests requires each month's individual test to clear a significance threshold of 0.05 / 12 ≈ 0.0042 rather than 0.05, corresponding to a t-statistic threshold of roughly 2.64 rather than 1.96. Any monthly seasonality claim that highlights a single "best" month out of all 12 should be held to this corrected threshold, not the uncorrected one — the same logic covered in full in the site's guide to multiple testing and researcher degrees of freedom.
Why does sample size affect which critical value to use?
The common rule of thumb that a t-statistic above 1.96 is "statistically significant at the 5% level" is a large-sample approximation that assumes the sampling distribution is close to normal. For a small sample — as monthly seasonality studies with a few decades of history often are — the correct reference distribution is the t-distribution with N − 1 degrees of freedom, and the critical value is higher than 1.96 for small N. With 10 years of data (9 degrees of freedom), the two-tailed 5% critical value is approximately 2.26, not 1.96. Applying the large-sample 1.96 threshold to a small monthly sample systematically overstates how many months look "significant."
Worked Scenario: A Hypothetical Monthly Calculation
The following uses ten synthetic, illustrative years of return data for a single hypothetical calendar month. These are not real historical returns for the S&P 500 or any other index — they are constructed numbers used only to demonstrate the arithmetic.
Synthetic per-year returns for the month (10 years): +2.1%, −1.3%, +4.5%, +0.8%, −2.0%, +3.2%, +1.5%, −0.5%, +2.8%, +1.9%
- Compute the mean: Summing the ten values gives 13.0, and dividing by n = 10 gives a mean of 1.30%.
- Compute each deviation from the mean and square it: For example, the first year's deviation is 2.1 − 1.30 = 0.80, squared to 0.64; the fifth year's deviation is −2.0 − 1.30 = −3.30, squared to 10.89. Summing all ten squared deviations gives 38.28.
- Compute the sample standard deviation: Dividing the sum of squared deviations by n − 1 = 9 gives a variance of 4.25, and the square root gives a sample standard deviation of approximately 2.06%.
- Compute the standard error of the mean: Dividing the standard deviation by the square root of n = 10 (≈3.16) gives a standard error of approximately 0.65%.
- Compute the t-statistic: Dividing the mean (1.30%) by the standard error (0.65%) gives a t-statistic of approximately 1.99.
- Compare to the correct critical value: With n − 1 = 9 degrees of freedom, the two-tailed 5% critical value from the t-distribution is approximately 2.26 — not the large-sample approximation of 1.96. A t-statistic of 1.99 does not clear 2.26. This hypothetical monthly result would look "almost significant" under the common but incorrect 1.96 rule of thumb, and would correctly fail to reach significance once the small-sample critical value is used.
- Apply the multiple-testing lens: This calculation covers only one of 12 calendar months. If this hypothetical month was singled out after comparing all 12, the Bonferroni-adjusted threshold of roughly 2.64 (from the calculation above) applies instead of even the correct single-test threshold of 2.26 — and the result falls further short.
Measurement Framework
| Measurement | Question it answers |
|---|---|
| Mean return per calendar month | What was the average historical return for this specific month? |
| Sample standard deviation per month | How consistent was the month's return across the years sampled? |
| Standard error of the mean (SD / √n) | How precisely is the true average estimated, given the sample size? |
| t-statistic (mean / SE) | How many standard errors is the average away from zero? |
| Degrees-of-freedom-adjusted critical value | What t-statistic is actually required for significance at this sample size, rather than the large-sample 1.96 approximation? |
| Bonferroni-adjusted threshold for 12 months | What t-statistic is required if this month was selected after comparing all 12? |
Common Failure Modes
Applying the 1.96 threshold to a small sample
The 1.96 critical value is a large-sample approximation. For a monthly seasonality study with fewer than roughly 30 years of history, the correct t-distribution critical value is higher, and using 1.96 will incorrectly label some genuinely inconclusive months as statistically significant.
Testing all 12 months without correcting for the count
Reporting "September has historically been the market's weakest month, t = 2.1" without disclosing that all 12 months were compared to find this result omits the multiple-testing context entirely. The honest version discloses the full comparison and applies the Bonferroni or BHY correction described in Multiple Testing and Researcher Degrees of Freedom before calling any single month significant.
Treating a marginally positive average as an actionable signal
A monthly average of +0.5% with a standard deviation of +/-3% describes a wide range of possible outcomes clustered loosely around a small positive center — not a reliable, repeatable edge. As shown in the worked example above, even a mean that initially looks close to the naive 1.96 threshold can fail a properly specified significance test once sample size and multiple testing are correctly accounted for.
Ignoring year-to-year variance in favor of the single average figure
The worked example's ten synthetic years ranged from −2.0% to +4.5% around a mean of 1.30% — a spread far larger than the mean itself. A monthly seasonality chart that shows only the average bar, without the standard deviation or the individual years, presents a false sense of consistency that the underlying data does not support.
Frequently Asked Questions
How is monthly stock seasonality measured?
Monthly seasonality is measured by computing the return for a given calendar month (for example, every January) in each year of the available history, then averaging those per-year returns and computing their standard deviation. With N years of history, each calendar month produces exactly N observations — one per year — so a 20-year dataset gives 20 January returns, 20 February returns, and so on through December.
Why do 12 monthly buckets create a multiple testing problem?
Testing all 12 calendar months and highlighting whichever one has the best-looking average is equivalent to running 12 separate statistical tests and reporting only the winner. Even if none of the 12 months has any true underlying seasonal effect, random variation means one or two of them will show an average that looks meaningfully positive or negative purely by chance. This is a direct, small-scale illustration of the multiple testing problem: the more calendar buckets you check, the more likely you are to find an apparently interesting pattern with no real cause behind it.
Does adding more years of data fix the multiple testing problem for monthly seasonality?
More years of data increases the sample size within each of the 12 monthly buckets, which narrows the standard error of each month's average and makes any single month's test more statistically powerful. But it does not change the count of buckets being tested — you are still checking 12 months and are still exposed to the same structural risk of one bucket looking significant by chance. A longer history helps distinguish a real effect from noise once you have applied an appropriate multiple-testing correction; it does not substitute for that correction.
What does a hypothetical monthly seasonality calculation look like?
Using ten synthetic, illustrative years of return data for a single calendar month (not real historical returns for any index), the arithmetic mean is 1.30%, the sample standard deviation is approximately 2.06%, the standard error of the mean is approximately 0.65%, and the resulting t-statistic is approximately 1.99. Even though this t-statistic exceeds the commonly cited threshold of 1.96, the correct critical value for a two-tailed test with only 9 degrees of freedom is approximately 2.26, meaning this hypothetical result would not clear a properly specified significance test.
Sources and Further Verification
- Keim, D.B. (1983). "Size-Related Anomalies and Stock Return Seasonality: Further Empirical Evidence." Journal of Financial Economics, 12(1), 13–32. A foundational study of the January effect and monthly return seasonality in small-cap stocks.
- Harvey, C.R., Liu, Y., & Zhu, H. (2016). "… and the Cross-Section of Expected Returns." Review of Financial Studies, 29(1), 5–68. Discusses minimum significance thresholds appropriate when many patterns are tested. Available at academic.oup.com.
- See this site's Multiple Testing and Researcher Degrees of Freedom guide for the full statistical framework applied to the 12-month comparison described above.
- See also What Is Market Seasonality? for the general methodology this page's monthly application builds on.
Educational Disclaimer
This guide is for educational purposes only and does not constitute investment, financial, or trading advice. The worked example on this page uses synthetic, clearly labeled hypothetical data and is not a claim about the real historical performance of any month for any market or index. Consult a qualified financial professional before making investment decisions. Trading involves significant risk of loss.