Interpretation
What problem this visualization solves
Seasonality claims are common in crypto — “May is weak”, “Q4 is bullish”, “September always dumps” — but they are rarely tested across multiple years.
This visualization helps separate:
- recurring patterns
- one-off events
- narrative-driven hindsight
By showing returns by month or quarter across years, it makes it easier to see whether seasonality is persistent or anecdotal.
What you’re looking at

You are looking at a multi-year heatmap of returns, grouped by month or quarter.
- Each row represents a year
- Each column represents a month (or quarter)
- Each cell shows the return for that period
- Color intensity reflects magnitude (positive or negative)
A side panel summarizes either:
- average returns across all years, or
- the return path of a selected year
How to read seasonality patterns
Seasonality is about tendencies, not guarantees.
When reading the heatmap:
- consistent color patterns across many rows suggest recurring behavior
- mixed colors indicate weak or unreliable seasonality
- isolated extremes usually reflect event-driven years
Strong seasonality requires both frequency and consistency.
Averages vs individual years

By default, the side panel shows average returns per month or quarter across the selected year range.
This answers:
“On average, how does this asset behave in each period?”

Selecting a specific year switches the panel to that year’s return path, revealing:
- how closely it followed (or broke) historical patterns
- which months drove that year’s outcome
- whether “seasonal strength” actually mattered in practice
Comparing averages to individual years helps avoid overgeneralization.
Monthly vs quarterly views
Monthly view
- higher resolution
- more noise
- better for spotting specific months with recurring behavior

Quarterly view
- smoother
- fewer data points
- better for identifying regime-level patterns
Switching between them helps test whether a pattern survives aggregation.
Common misinterpretations
Seasonality is not a trading signal
Patterns can disappear as regimes change.
A strong average can hide weak consistency
A few extreme years can distort averages.
Past seasonality does not imply future certainty
Especially in fast-evolving markets like crypto.
Seasonality is best used as context, not conviction.
When to use and when not to use
Most useful for
- evaluating seasonality narratives
- comparing behavior across market cycles
- sanity-checking “this month is usually bullish/bearish” claims
- contextualizing short-term performance
Not suitable for
- short-term timing decisions
- predicting single-month outcomes
- use without broader market context
Key takeaways
- Seasonality describes tendencies, not rules
- Averages must be compared against individual years
- Consistency matters more than magnitude
- Patterns weaken or disappear across regimes
How to use
Selecting asset and period granularity

Choose an asset and toggle between monthly or quarterly aggregation.
The heatmap automatically updates to reflect the selected granularity across all available years.
Reading the heatmap
- Blue cells indicate positive returns
- Red cells indicate negative returns
- Darker colors signal larger magnitude
Scan vertically to compare years, and horizontally to compare periods.
Using the average returns panel
By default, the side panel shows:
- average return per month or quarter
- best and worst periods
- average yearly return
This view summarizes long-term tendencies across the selected year range.
Drilling down into a specific year

Click any year in the heatmap to:
- highlight that row
- switch the side panel to that year’s return path
- view best and worst periods for that year
- see the total return for the year
This makes it easy to compare narrative averages with actual outcomes.
Example workflow
- Start in monthly view and scan for recurring patterns
- Check the average returns panel for confirmation
- Click individual years to see how often the pattern held
- Switch to quarterly view to test robustness
- Use the results as context, not prediction
