Someone asked me last week what the beta of a mid-cap altcoin was, and I gave them a number, and then I felt a little dirty about it. Because a single beta number for a crypto asset is one of those things that sounds precise and is mostly fiction. It is the average of a quantity that refuses to hold still. So I want to walk through how you actually estimate it, and then show you why the honest answer is a moving line rather than a point.
Beta comes from CAPM, and the mechanic is simple. You regress an asset's excess returns against the market's excess returns, and the slope of that line is your beta. A beta of 1 means the asset moves with the market. Above 1 means it amplifies. Below 1 means it dampens. The regression also spits out an alpha, the intercept, which is the return the model cannot explain by market exposure. For crypto the alpha is usually noise, so I mostly care about the slope.
The setup, step by step
Here is the workflow I actually run. Nothing fancy, and you can do all of it in a notebook in about twenty minutes.
- Pick a benchmark. For a single token, the honest benchmark is a broad crypto market index or a market-cap-weighted basket. A lot of people just use Bitcoin as the market, which is fine as long as you say so out loud, because then you are measuring beta to Bitcoin and not to crypto as an asset class. Those are different questions.
- Pull returns at a sensible frequency. Daily is the default. I compute log returns rather than simple returns because they add up cleanly across time and behave better in a regression.
- Subtract the risk-free rate to get excess returns. In crypto this is a small daily number and it barely moves the slope, so if you skip it you will get roughly the same beta. Skip it knowingly, not accidentally.
- Align the two series on the same dates and drop any gaps. Crypto trades every day, but your benchmark and your token can still have missing rows, and a misaligned join will quietly corrupt the whole thing.
- Run an ordinary least squares regression of token excess returns on market excess returns. The slope coefficient is beta. Look at the R-squared too, because a beta of 1.4 with an R-squared of 0.1 means the market explains almost nothing and your beta is basically decorative.
Do that over your full sample and you get one number. Say it comes out around 1.3. Clean, defensible, and quietly misleading, because you have just averaged over every regime the asset has ever lived through.
Why the single number lies
The full-sample beta assumes the relationship between your token and the market is stable. In crypto it is not. During a risk-on melt-up, alts tend to have very high beta, sometimes well north of 2, because everything correlates and the small caps get whipped around hardest. During a slow grind, correlations loosen and beta can drift down toward 1 or lower. And in a proper liquidation cascade, correlations spike toward 1 across the board, so even a normally sleepy token suddenly moves like the index. One averaged slope smears all of these together and reports the middle of a range that the asset spends almost no time actually sitting in.
The fix is to stop asking for one beta and start asking how beta behaves over time. Two tools do this.
A rolling window regression re-estimates beta over a fixed lookback that slides forward one step at a time. Pick a window, say 90 days, and for each day you run the regression on the trailing 90 observations. You get a time series of betas. Plot it, and the drift jumps out. You will see beta climb into a rally, stay elevated through the euphoria, then collapse when the leverage flushes out. That shape is the actual risk story, and it is invisible in the single number.
An expanding window regression starts from a minimum sample and adds one observation at a time, never dropping the old data. This converges toward the full-sample beta as history piles up, and it is useful for a different reason. It shows you how stable your estimate is. If the expanding beta is still wandering after a couple of years of data, that is a loud signal that there is no single true beta to converge to. The relationship itself is non-stationary, and no amount of extra data fixes that.
The two views answer different questions. Rolling asks what beta is right now, given recent behavior. Expanding asks whether a stable long-run beta even exists. For most crypto assets the rolling line is jagged and the expanding line never quite settles, and both are telling you the same thing, which is that beta here is a regime property, not a constant.
How to actually use it
A few rules of thumb I have landed on. Window length is a real tradeoff. Short windows, say 30 days, react fast but are noisy and will jump around on a handful of outlier days. Long windows, say 180 days, are smooth but lag badly and will still be reporting last regime's beta well into the new one. I usually look at two windows side by side, a fast and a slow, and treat the gap between them as information about how quickly the risk is shifting.
Watch the R-squared alongside the slope, always. A rising beta with a rising R-squared means correlation is tightening and your token is becoming a leveraged bet on the market. That is the dangerous combination for anyone running what they think is a diversified book, because the diversification quietly evaporates exactly when you need it. Blockcircle's market scorecards lean on this idea a lot, treating correlation regime as a first-class signal rather than a footnote, because a portfolio of ten alts that all snap to beta 1.5 in a drawdown is really one position wearing ten tickers.
The failure mode to avoid is sizing a position off a full-sample beta during a calm stretch, then getting surprised when a stress event drags the realized beta up to 2 and your loss is double what the model implied. If you must use a single number for sizing, use a recent rolling beta and stress it upward, do not use the flattering long-run average.
None of this makes beta useless. It just moves it from a fact you look up to a quantity you monitor. Estimate it with a rolling regression, watch how it drifts across regimes, and treat any single reported number with the skepticism it deserves. The slope was never going to sit still, and the sooner your risk model admits that, the fewer nasty surprises you inherit.