1. One number that hides the thing you care about
Realized variance — the sum of squared returns, RV = Σ r² — is symmetric by construction. Squaring erases the sign, so a +3% return and a −3% return contribute identically. For a risk manager that is a strange thing to accept: the two are not remotely the same experience. Upside variance is, mostly, the market climbing a wall of worry; downside variance is drawdown, margin calls, and forced selling. A single RV number blends the two into a grey average and hides exactly the asymmetry a trader is paid to manage.
The fix is almost too simple. Before you square, look at the sign.
2. Splitting variance by sign
Realized semivariance (Barndorff-Nielsen, Kinnebrock & Shephard, 2010) partitions realized variance into two non-negative pieces — one built only from up-returns, one only from down-returns:
RS⁺ = Σ ri² · 1{ri > 0} (upside)
RS⁻ = Σ ri² · 1{ri < 0} (downside)
RS⁺ + RS⁻ = RV
That's the whole construction: the two halves add back exactly to realized variance (zero returns belong to neither), so you lose nothing — you've simply un-blended the average. But the halves are not interchangeable. A large body of research finds that downside semivariance carries the risk premium and the predictive content, while upside variance behaves quite differently. Splitting is the difference between knowing a market moved 2% and knowing it fell 2%.
3. Good volatility and bad volatility
The shorthand that stuck is "good" and "bad" volatility. Bad volatility — RS⁻, the downside half — is the one that persists, that forecasts tomorrow's risk, and that investors demand to be paid for bearing. Good volatility — RS⁺ — is upside dispersion, and it neither predicts nor prices the same way; a market that is volatile only to the upside is a very different animal from one bleeding to the downside, even at identical RV.
To read the balance directly, normalise. The downside variance ratio is the share of realized variance that came from negative returns:
downside ratio = RS⁻ / (RS⁺ + RS⁻) ∈ [0, 1]
Read it as a live state variable. At 0.5 the window is symmetric; push toward 1 and the variance is overwhelmingly downside — the market is not just moving, it is falling. It's a cleaner asymmetry gauge than a full distributional fit, and it moves fast enough to act on. Where realized skewness measures the shape of the whole return distribution, the downside ratio zeroes in on the one question a risk desk asks first: how much of today's turbulence is to the wrong side?
4. Signed jump variation: jumps that remember their direction
The split has a second payoff. Ordinary jump variation — the part of RV attributable to discrete jumps rather than continuous diffusion — is unsigned: it tells you a jump happened, but not which way. Take the difference of the two semivariances instead and you recover the direction (Patton & Shephard, 2015):
signed jump variation = RS⁺ − RS⁻
A positive value means upside moves dominated the window; a negative value means the downside did. Unlike jump variation, it can be either sign — and that sign is exactly what a naive "how big were the jumps?" measure discards. A window with a large negative signed jump variation is one where the tail risk that materialised was crash risk, not melt-up risk, and the two forecast very differently.
5. Computing it
All three are one pass over a return series. Our open-source orderflow-metrics library ships them, dependency-free, in TypeScript and Python:
import {
realizedSemivariance,
downsideVarianceRatio,
signedJumpVariation,
} from "orderflow-metrics";
// a downside-heavy window (two sharp drops: -0.02, -0.03)
const r = [0.01, -0.02, 0.015, -0.03, 0.008, -0.012, 0.02, -0.005];
realizedSemivariance(r); // { upside: 0.000789, downside: 0.001469 } (sum = RV 0.002258)
downsideVarianceRatio(r); // 0.651 — ~65% of the variance is downside
signedJumpVariation(r); // -0.00068 — negative: the window is downside-driven
The Python distribution exposes the same functions (realized_semivariance, downside_variance_ratio, signed_jump_variation). They read naturally next to plain realized volatility, the bipower jump decomposition, and the jump-robust MinRV / MedRV estimators in the wider market microstructure toolkit we build in the open — different lenses on the same tape, each answering a question a single RV number can't.
6. Conclusion
Volatility is not one thing, and the most important dimension it hides is direction. Realized semivariance recovers it for free: split realized variance by sign and you separate the good, upside dispersion from the bad, downside kind that persists, prices, and predicts. The downside variance ratio turns that into a live asymmetry gauge; signed jump variation restores the direction to jump risk. For anyone whose losses live on one side of zero, that is not a refinement — it is the whole point. Explore the rest of the toolkit in our quantitative research library, or read the implementation in our open-source metrics.