Monthly Returns Heatmap
Every Bitcoin month since 2010 as a coloured cell in a year-by-month grid — then the sample-size test most seasonality pages skip, which finds no calendar month with an edge that survives the noise.
As of 15 Jun 2026Across 16 Octobers on record — the calendar month closest to a real Bitcoin seasonal edge — the average return is +26.4% with a t-statistic of just 1.92 against zero, below the 2.14 bar a sample this small needs to clear p < 0.05. That is the high-water mark: 0 of the twelve calendar months carries a return statistically distinguishable from chance. “Uptober” and the rest are patterns in the record, not edges in the future.
Month-to-date
−10.7%
Current month
Year-to-date
−25.5%
Vs prior Dec close
Best month
+453.0%
Nov 2013
Worst month
−38.7%
Aug 2011
- Unit
- % return, month-over-month
- Frequency
- Monthly, from daily closes
- Range
- 2010–present
- Years
- 17 on record
- Source
- Daily closes
TL;DR
- The claim
- Bitcoin has tradeable calendar seasons — “Uptober”, September weakness, a Q4 melt-up. The heatmap renders every month-over-month return as a year-by-month grid: sage up, rust down, annual totals on the right.
- The evidence
- October carries the strongest t-statistic of any month at 1.92, on a +26.4% average over 16 years; 11 of those were green. The current year is running −25.5% — a deep-bear year by historical standards — with the live month at −10.7%.
- Signal or noise
- Noise, by the t-test. Of the twelve calendar months, 0 carries a mean return distinguishable from zero at p < 0.05 (|t| > 2.14 for samples this small). Even October — the strongest column — tops out at t = 1.92. The tendencies are real in the record and indistinguishable from chance going forward.
- The catch
- Each column rests on 16-odd observations, and one outlier print drives the rest. The std devs (October +55.2%) are several times the means — exactly the regime where a backtested calendar rule looks profitable and fails live.
One number per month, and why the t-stat is the only honest summary
For every (year, month) pair where both endpoints have a daily close on record, the cell is ret(y, m) = close(last day of m, y) / close(last day of m−1, y) − 1.
The current month uses the most recent close in place of an end-of-month close, so the latest
row always carries a live month-to-date cell. The annual column is December close over
prior-December close minus one, falling back to compounding the defined months when December
is unavailable — the first and current years.
The colour scale clamps at ±40% so the early-2010s moonshots don't
bleach the rest of the grid; the printed number in each cell is always the raw value. Beyond
the grid, the page computes per-calendar-month sample size, mean, median, standard deviation,
and a t-statistic against zero: t = mean / (stdev / √n). That last number is the whole point. A column
average looks like a season; the t-statistic asks whether the season is bigger than the
month-to-month scatter. With 17
years on record — ten to sixteen observations per calendar month — the two-tailed p < 0.05
critical value sits near 2.14. The full derivation, clamp and month-end conventions
live on the methodology page.
The significance test: no month clears the bar
Sorted by average return — the line the seasonality crowd quotes — the biggest calendar months are November (+34.7%, n=16, t=1.22); April (+32.1%, n=16, t=1.50); October (+26.4%, n=16, t=1.92); May (+17.8%, n=16, t=1.59). Read the t-column, not the mean column. The four largest averages on the whole record carry t-statistics that never reach 2.14, the threshold a sample this size needs to call a mean distinguishable from zero. Their standard deviations run from +114.1% to +44.9% — several times the size of the average itself. That is the signature of noise, not season.
The table below scores all twelve. A tone badge fires only when |t-stat| ≥ 2.14; 0 of the twelve qualify. October is the closest miss — the popular “Uptober” trade, statistically a coin-flip dressed in a strong record.
| Reading | Regime | What it has meant |
|---|---|---|
| January | 10/16 green · avg +8.8% | n=16 · mean +8.8% · stdev +29.5% · t-stat 1.20 — within sampling noise. |
| February | 10/16 green · avg +12.3% | n=16 · mean +12.3% · stdev +28.7% · t-stat 1.71 — within sampling noise. |
| March | 8/16 green · avg +10.0% | n=16 · mean +10.0% · stdev +48.8% · t-stat 0.82 — within sampling noise. |
| April | 11/16 green · avg +32.1% | n=16 · mean +32.1% · stdev +85.7% · t-stat 1.50 — within sampling noise. |
| May | 9/16 green · avg +17.8% | n=16 · mean +17.8% · stdev +44.9% · t-stat 1.59 — within sampling noise. |
| June | 10/16 green · avg +7.4% | n=16 · mean +7.4% · stdev +29.2% · t-stat 1.02 — within sampling noise. |
| July | 10/15 green · avg +8.4% | n=15 · mean +8.4% · stdev +17.1% · t-stat 1.91 — within sampling noise. |
| August | 6/16 green · avg −2.2% | n=16 · mean −2.2% · stdev +23.0% · t-stat -0.39 — within sampling noise. |
| September | 6/16 green · avg −3.9% | n=16 · mean −3.9% · stdev +13.7% · t-stat -1.14 — within sampling noise. |
| October | 11/16 green · avg +26.4% | n=16 · mean +26.4% · stdev +55.2% · t-stat 1.92 — within sampling noise. |
| November | 10/16 green · avg +34.7% | n=16 · mean +34.7% · stdev +114.1% · t-stat 1.22 — within sampling noise. |
| December | 9/16 green · avg +11.1% | n=16 · mean +11.1% · stdev +28.2% · t-stat 1.57 — within sampling noise. |
Reading the grid in three directions
The heatmap reads three ways. By row you see how a single year unfolded — whether the bear was front- or back-loaded, whether the rally came in June or November. By column you see how a calendar month behaved across cycles, and how often the colour flips. By the bottom row you get the per-month average, which is the line the seasonality crowd quotes — and the line the significance table above exists to caveat. The grid is a cycle-context lens, best read alongside the halving-cycle overlay, which explains more of the green clusters than the calendar ever does: the melt-up months tend to be the ones twelve-to-eighteen months past a halving, not the ones called October.
Annual totals at each cycle's headline year
Pulling the annual total alongside each cycle's defining year shows the same data in a shape the monthly grid hides. 2013 and 2017 were both order-of- magnitude bull years; 2014 and 2018 were the symmetric capitulation years; 2020 compounded the Covid flush and the recovery into a positive annual; 2021 stalled on the year despite a November cycle top. The best- and worst-month columns expose each year's volatility regime: a +50% best month sitting next to a −30% worst month is a normal Bitcoin year, not a calm one.
| Date | Event | Annual | Best · worst month |
|---|---|---|---|
| 2011 | Year 2011 — first $32 ATH + Mt Gox bear | +1471.4% | Best Apr +346.1% · worst Aug −38.7% |
| 2013 | Year 2013 — first parabolic year | +5475.0% | Best Nov +453.0% · worst Dec −33.0% |
| 2014 | Year 2014 — first multi-year bear | −58.0% | Best May +39.4% · worst Feb −30.7% |
| 2017 | Year 2017 — ICO mania top | +1435.3% | Best May +72.5% · worst Mar −9.4% |
| 2018 | Year 2018 — crypto-winter | −74.3% | Best Apr +35.2% · worst Mar −35.6% |
| 2020 | Year 2020 — Covid flush + ETF prelude | +298.3% | Best Dec +58.7% · worst Mar −26.5% |
| 2021 | Year 2021 — cycle top | +63.6% | Best Oct +48.7% · worst May −33.4% |
| 2022 | Year 2022 — post-FTX | −64.8% | Best Mar +24.5% · worst Jun −36.6% |
| 2024 | Year 2024 — spot-ETF launch | +119.4% | Best Feb +45.9% · worst Jun −11.0% |
Where 'Uptober' breaks — and the dates that already broke it
The seasonality claims on this chart fail in a specific, datable way: the column averages are hostage to one or two prints, and the live record is already eroding the patterns people quote most.
October — the strongest column — is one outlier wide. October 2010 returned +211%, the largest single contribution to the famous +26.4% average. Strip that one print from the sixteen and the “Uptober” edge falls by nearly half. Then October 2025 closed −5.3% — the first red October since 2018 — directly into the year the trade was most crowded. The historical tilt is real (11 of 16 green); the forward edge is a coin-flip with a good story, exactly what t = 1.92 says it is.
September weakness was the cleanest pattern — and just broke. September ran red in 2017, 2018, 2019, 2020, 2021, 2022 and 2023 — seven losing Septembers in a row, the most reliable calendar signal Bitcoin ever produced. Then September 2024 closed +11.0% — the first green September since 2016 — and September 2025 +5.1%, snapping the streak the moment it became consensus. At t = -1.14, the test never endorsed it; the tape confirmed the test.
November's average is a single 2013 print. November averages +34.7% with a standard deviation of +114.1% — the widest of any month — almost entirely because November 2013 returned +453%, the best Bitcoin month on record. Outside that one print, recent Novembers split both ways: +34.7% in 2024, but −16.1% in 2025, −20.3% in 2022, −32.4% in 2018. The mean describes a month that effectively no longer exists.
Daily closes only, and month-end snapshots drift. A month that spiked intra-month but closed flat reads as flat; a month that wicked down but recovered by the last close reads as green. And different providers snapshot month-end at slightly different times, so a handful of historical months can read one-to-ten percentage points off the figures other sites publish — direction always correct, magnitude occasionally not. The merge provenance is on the data sources page.
The data-mining warning compounds the sample problem. The canonical critique of calendar effects in markets — Sullivan, Timmermann & White (2001) — shows that calendar tendencies which look strong in isolation largely vanish once you account for how many patterns were tested. With Bitcoin's sample a fraction of an equity index's, the warning is stronger, not weaker.
What to do with a grid that has no edge
If you accumulate on a schedule, ignore the calendar entirely. The per-month signal is far too weak relative to monthly volatility for a month-of-year rule to add value, and a steady weekly buy lands at roughly the long-run average anyway. The path-dependent variance across years dwarfs anything the bottom row can offer. Rolling CAGR is the honest horizon: it shows where the monthly noise actually averages out.
If you trade the cycle, read the grid by row for shape — two- stage vs single-stage advances, front- vs back-loaded declines — and let cycle position, not the month name, set the bias. The halving-cycle overlay and drawdown carry the context the heatmap can't: a green October in year two post-halving and a green October at a cycle top are not the same trade, even though the grid colours them identically.
Frequently asked
- What does each cell on the Bitcoin Monthly Returns heatmap represent?
- Each cell is one calendar month's percentage return — last-day close divided by the prior month's last-day close, minus one. Green is positive, rust is negative; intensity tracks magnitude, clamped at ±40% so outlier months don't drown out the rest of the grid. The current month uses the most recent close in place of an end-of-month close.
- What is Bitcoin's best and worst month ever?
- On the daily-close record, the best Bitcoin month was November 2013 at +453.0%; the worst was August 2011 at −38.7%. Both extremes cluster in the early 2010s when absolute price moves translated into much larger percentage swings.
- Are Bitcoin monthly returns seasonal?
- Mostly no, despite the popular framing. Across 16 Octobers on record, the average return is +26.4% with a standard deviation of +55.2%; the t-statistic against zero is 1.92, below the conventional p < 0.05 threshold of about 2.14 for a sample this small. Of the twelve calendar months, 0 carries a return statistically distinguishable from zero on this sample.
- Is October bullish for Bitcoin?
- October has historically tilted positive — 11 of 16 on-record Octobers were green, with an average of +26.4%. The hit-rate is real but the sample is small. The standard deviation is +55.2% — a single rough October can flip the average several percentage points. Treat “Uptober” as a tendency in the historical record, not a forecast.
- Is "Sell in May and go away" relevant for Bitcoin?
- It maps from equity markets, where Bouman & Jacobsen documented the “Halloween indicator” in The Halloween Indicator, ‘Sell in May and Go Away’: Another Puzzle (American Economic Review, 2002). On Bitcoin's 17 years of data, May's average return is +17.8% with a t-statistic of 1.59; not statistically distinguishable from zero. Crypto-markets have not yet produced the multi-decade record needed to prove or disprove a Halloween effect on Bitcoin.