Quant Memo
Advanced

Bipower Variation And Jump Detection

Bipower variation measures the smooth, continuous part of a price's variance while staying almost blind to sudden jumps — comparing it against ordinary realized variance is how researchers detect whether a price actually jumped.

Prerequisites: Realized Volatility Estimators

A pedometer counting your daily steps can't tell a smooth walking stride from one giant leap over a puddle — both just register as "movement." But if you instead multiply each step's length by the previous step's length, that giant leap stands out clearly: it's huge compared to its ordinary neighbors on either side, while a normal continuous stride times another normal stride stays modest. Bipower variation applies exactly this trick to price returns, using consecutive returns multiplied together to build a measure that stays nearly blind to isolated jumps.

The formula, defined

BVt=π2i=2nriri1BV_t = \frac{\pi}{2} \sum_{i=2}^{n} |r_i|\,|r_{i-1}|

In words: instead of squaring each return individually and summing (that's ordinary realized variance RVtRV_t, see realized volatility estimators), bipower variation multiplies each return's absolute size by its immediate neighbor's absolute size, sums those products, and rescales by the constant π/21.5708\pi/2 \approx 1.5708 so that in a pure continuous-diffusion world (no jumps at all), BVtBV_t converges to the same quantity as RVtRV_t. The key property: a single enormous jump return rir_i gets multiplied by its neighbor ri1r_{i-1}, which is an ordinary-sized continuous return — so the jump contributes only proportionally to BVBV, roughly like an ordinary large return would, instead of contributing its own huge value squared, which is what happens to it in RVtRV_t.

Worked example 1 — computing RV and BV side by side

A stock has five consecutive returns: +0.5%, -0.3%, +4.0% (a jump), +0.2%, -0.4%. Ordinary RV=0.0052+0.0032+0.0402+0.0022+0.0042=0.000025+0.000009+0.0016+0.000004+0.000016=0.001654RV = 0.005^2 + 0.003^2 + 0.040^2 + 0.002^2 + 0.004^2 = 0.000025 + 0.000009 + 0.0016 + 0.000004 + 0.000016 = 0.001654 — the jump return alone (0.0016) accounts for nearly 97% of total RV. Bipower variation uses consecutive pairs: r1r2+r2r3+r3r4+r4r5=(0.005)(0.003)+(0.003)(0.040)+(0.040)(0.002)+(0.002)(0.004)=0.000015+0.000120+0.000080+0.000008=0.000223|r_1||r_2| + |r_2||r_3| + |r_3||r_4| + |r_4||r_5| = (0.005)(0.003) + (0.003)(0.040) + (0.040)(0.002) + (0.002)(0.004) = 0.000015 + 0.000120 + 0.000080 + 0.000008 = 0.000223, times π/2\pi/2: BV=1.5708×0.0002230.000350BV = 1.5708 \times 0.000223 \approx 0.000350. BV is barely a fifth of RV — because the jump, paired with its ordinary-sized neighbors on each side, contributes far less to the sum than it did to RV where it was squared against itself.

Worked example 2 — isolating the jump component

The jump contribution to total variance is estimated as Jt=max(RVtBVt, 0)J_t = \max(RV_t - BV_t,\ 0). From example 1: J=0.0016540.000350=0.001304J = 0.001654 - 0.000350 = 0.001304. That's the estimated variance attributable to the discontinuous jump, versus BV=0.000350BV = 0.000350 attributable to ordinary continuous price movement. A formal jump test doesn't stop here — it standardizes this difference by its own estimated statistical noise (using a ratio statistic and known asymptotic distribution) to get a z-score and decide if JtJ_t is significantly different from zero, rather than just eyeballing that RV>BVRV > BV, since some gap between the two is expected from estimation noise even with no true jump.

the five-return series jump: +4.0%
Five consecutive returns, one of them (+4.0%) an outsized jump against otherwise ordinary neighbors.
RV vs BV for the same series RV: 0.001654 BV: 0.000350
The jump dominates RV because it's squared against itself, but barely moves BV because it's paired against ordinary-sized neighbors — the gap is the estimated jump contribution.

What this means in practice

Separating jump variance from continuous variance matters because the two behave differently for forecasting and risk purposes — continuous variance tends to be persistent and predictable (feeding models like HAR-RV, see HAR-RV model), while jump variance is closer to a one-off shock that shouldn't be extrapolated forward the same way. Trading desks and researchers use jump detection to decide whether a sharp move is "part of the ongoing volatility regime" or "an isolated event," which changes how much weight it should get in a forecast.

RVtBVtRV_t - BV_t being positive is not automatically proof of a statistically significant jump — with finite, noisy data, this difference is essentially never exactly zero even in a pure continuous-diffusion world with no jumps at all, purely from estimation noise. A proper jump test standardizes the gap by its own sampling variability and compares it to a critical value (a z-score against the normal distribution, typically) before declaring a jump — treating any positive RVBVRV - BV as "a jump happened" overstates how often jumps are actually detected.

Bipower variation multiplies consecutive absolute returns instead of squaring each return alone, which makes it far less sensitive to isolated jumps than ordinary realized variance — the gap between the two, properly tested for significance, is how researchers separate jump risk from continuous diffusion risk.

Practice

  1. Given four consecutive returns +0.4%, +0.3%, -3.0%, +0.5%, compute both RV and BV (using the π/2\pi/2 scaling), and estimate the jump contribution J=max(RVBV,0)J = \max(RV-BV, 0).
  2. Why does pairing each return with its immediate neighbor, rather than squaring it against itself, make bipower variation much less sensitive to a single large jump?

Related concepts

Practice in interviews

Further reading

  • Barndorff-Nielsen and Shephard, Power and Bipower Variation with Stochastic Volatility and Jumps (Journal of Financial Econometrics, 2004)
  • Huang and Tauchen, The Relative Contribution of Jumps to Total Price Variance (Journal of Financial Econometrics, 2005)
ShareTwitterLinkedIn