1. Volatility is only the second moment
Realized variance — the sum of squared intraday returns — has become the workhorse measure of risk, and for good reason: it is model-free, easy to compute, and converges to true variance as you sample more finely. But variance is only the second moment of the return distribution. It treats a session that drifted quietly and one that lurched down in a single violent move as identical, as long as their total dispersion matches. Two markets with the same volatility can carry very different risks.
To tell them apart you need the higher moments: skewness, which captures asymmetry, and kurtosis, which captures tail heaviness. And just as variance has a model-free "realized" estimator built from intraday data, so do these.
2. Realized skewness
Skewness measures which way the distribution leans. Negative skew means the big moves were disproportionately to the downside — a market that grinds up and occasionally gaps down; positive skew is the reverse. Amaya, Christoffersen, Jacobs and Vasquez (2015) defined the realized version directly from a day's intraday returns:
RSkew = √N · Σ ri3 / RV3/2
where ri are the N intraday returns and RV = Σ ri² is the realized variance. The cube in the numerator preserves the sign of each move, so systematic asymmetry survives; the √N scaling and the division by RV3/2 make the number dimensionless and comparable across days and sampling frequencies.
3. Realized kurtosis
Kurtosis measures how much of the action lives in the tails. High kurtosis is the fingerprint of a jumpy session — mostly small moves punctuated by a few large ones — while a low value describes returns that stayed close to their typical size. The realized estimator follows the same recipe with a fourth power:
RKurt = N · Σ ri4 / RV2
The fourth power makes large returns dominate the sum, so a single outsized move lifts kurtosis sharply — which is exactly what you want from a tail-risk gauge. As with skewness, the N scaling normalizes the estimate so it can be compared like-for-like across instruments and days.
| Moment | Captures | Reads high when… |
|---|---|---|
| Realized variance | Dispersion | Moves were large overall |
| Realized skewness | Asymmetry | Big moves clustered on one side (sign matters) |
| Realized kurtosis | Tail heaviness | A few jumps dominated an otherwise calm session |
4. Why the shape carries signal
This is not just descriptive statistics. Amaya and co-authors found that stocks with the most negative realized skewness over a week tended to outperform those with the most positive skew over the following week — a robust, tradable pattern in the cross-section of returns that plain volatility does not capture. The intuition is that investors pay up for lottery-like, positively-skewed payoffs and shun negatively-skewed ones, leaving a premium behind. Realized kurtosis, meanwhile, is a direct read on jump and tail risk — the kind of exposure that a variance number quietly averages away right up until it hurts.
For a systematic desk, that makes the higher moments both a risk lens and a source of cross-sectional signal — a natural complement to the regime read from the Hurst exponent and the efficiency picture from the variance ratio.
5. Reading them honestly
Higher moments are more delicate than variance, and it pays to respect that. They need enough intraday observations to be stable — a handful of returns will give noisy, unreliable estimates. They are, by construction, dominated by the largest moves, so a single bad print or a stale quote can distort them; clean data matters more here than almost anywhere else, which is why sampling by activity with information-driven bars and screening prints against a reconstructed book pays off. And like realized variance, they are a measure of what did happen over a window, not a guarantee of what happens next. Treated as one input among several — beside dispersion, toxicity, and cost — they add a dimension the others miss.
6. Where they fit
Realized moments round out the "realized measures" corner of the toolkit. Variance gives you the size of the moves; skewness and kurtosis give you their shape. Alongside VPIN for flow toxicity and the effective spread from our spread estimators, they build a fuller picture of the risk in a session than any single number can. And because they are model-free and cheap to compute, they slot straight into a backtest or a live risk monitor without any fitting.
7. Computing it
Both estimators are a few sums over a return series. Our open-source orderflow-metrics library ships them, dependency-free, in TypeScript and Python:
import { realizedSkewness, realizedKurtosis } from "orderflow-metrics";
realizedSkewness(returns); // √N · Σr³ / RV^1.5 — intraday asymmetry
realizedKurtosis(returns); // N · Σr⁴ / RV² — intraday tail heaviness
The Python distribution exposes the same functions as realized_skewness and realized_kurtosis. Point them at a day's worth of intraday returns, roll them forward, and you have a live read on the shape of risk — part of the wider market microstructure stack we build in the open.
8. Conclusion
Two markets with identical volatility can be nothing alike — one quietly efficient, the other one bad print away from a gap. Realized skewness and kurtosis recover that difference from the same intraday data, turning the shape of returns into numbers you can risk-manage and, in the case of skewness, even trade on. Measure them on enough clean data, read them alongside variance rather than instead of it, and volatility stops being the end of the risk story and becomes just the beginning. We build these tools in the open, one metric at a time — you can follow our journey on LinkedIn, explore the full research library, or read the code in our open-source metrics.