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

  JanFebMarAprMayJunJulAugSepOctNovDec Year
2026 −26%
2025 −5%
2024 +119%
2023 +154%
2022 −65%
2021 +64%
2020 +298%
2019 +90%
2018 −74%
2017 +1435%
2016 +124%
2015 +36%
2014 −58%
2013 +5475%
2012 +187%
2011 +1471%
2010 +344%
Avg +8.8%+12%+10.0%+32%+18%+7.4%+8.4%−2.2%−3.9%+26%+35%+11%
Cells clamped at ±40% for legibility. Tooltip shows the raw return. Best month ever: Nov 2013 (+453%). Worst: Aug 2011 (−39%).
Every Bitcoin month since 2010 — rows are years, columns Jan–Dec, sage up and rust down, clamped at ±40%. Source: btc oak, computed from daily closes (CoinGecko Pro + pre-2013 archive merge)as of 15 Jun 2026
Unit
% return, month-over-month
Frequency
Monthly, from daily closes
Range
2010–present
Years
17 on record

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.

Calendar-month significance — t-statistic vs zero, df = n − 1, two-tailed p < 0.05 cut at ≈ 2.14
ReadingRegimeWhat 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.
ExhibitEvery calendar month tested against zero — the t-column is what separates a season from a streak. Source: btc oak, computed from monthly returns since 2010as of 15 Jun 2026

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.

Refreshed 15 Jun 2026 — annual total, plus that year's best and worst single months from the live grid.
DateEventAnnualBest · worst month
2011Year 2011 — first $32 ATH + Mt Gox bear+1471.4%Best Apr +346.1% · worst Aug −38.7%
2013Year 2013 — first parabolic year+5475.0%Best Nov +453.0% · worst Dec −33.0%
2014Year 2014 — first multi-year bear−58.0%Best May +39.4% · worst Feb −30.7%
2017Year 2017 — ICO mania top+1435.3%Best May +72.5% · worst Mar −9.4%
2018Year 2018 — crypto-winter−74.3%Best Apr +35.2% · worst Mar −35.6%
2020Year 2020 — Covid flush + ETF prelude+298.3%Best Dec +58.7% · worst Mar −26.5%
2021Year 2021 — cycle top+63.6%Best Oct +48.7% · worst May −33.4%
2022Year 2022 — post-FTX−64.8%Best Mar +24.5% · worst Jun −36.6%
2024Year 2024 — spot-ETF launch+119.4%Best Feb +45.9% · worst Jun −11.0%
ExhibitCycle-defining years by annual return, with each year's extreme months — the volatility regime in two columns. Source: btc oak, annual totals from daily closesas of 15 Jun 2026

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.