← All articles
Method · Z score

Why I score everything with z scores

22 Jul 20265 min readby Areeb Ali Khan

Here is a problem you hit the moment you try to combine onchain metrics. Hashrate is measured in absurd numbers of hashes per second. Funding is a tiny decimal. TVL is in the tens of billions. Active addresses is in the hundreds of thousands. How do you possibly weigh a move in one against a move in another? You cannot, not directly.

The fix is a z score

A z score answers one question for any series. How far is today from its own recent normal, measured in standard deviations. It strips away the units entirely. Hashrate up two sigma and funding up two sigma are now speaking the same language, even though one is a giant number and the other is a rounding error.

Every metric in the tool is converted this way against a rolling ninety day baseline. That baseline matters. It means the model is always asking whether something is unusual for the current regime, not unusual compared to five years ago when the network was a fraction of the size.

Why this beats percent change

Percent change sounds intuitive but it is misleading. A five percent move in a calm, stable metric is a genuine event. The same five percent in a naturally jumpy metric is Tuesday. A z score automatically accounts for how noisy each series usually is, so a big move in a quiet metric counts for more than the same move in a wild one. That is exactly the judgement a human analyst makes by feel, made explicit and repeatable.

The honest caveat

Z scores assume the recent past is a fair guide to what normal looks like. In a genuine regime break, when something changes structurally, the baseline lags reality for a while. No single number escapes that. But for turning a dozen incompatible feeds into one comparable picture, nothing I have tried beats it, and it keeps the whole model honest about what counts as a real move.

Open the dashboard → More articles