Market Microstructure & Quant Finance
Hasbrouck Information Share Bounds for Two-Venue Price Discovery
Calculate Hasbrouck (1995) Cholesky upper, lower, and midpoint price-discovery information shares across two cointegrated trading venues and audit correlation sensitivity.
Understand why correlated venue innovations require upper and lower Cholesky bounds
When the same equity or futures contract trades on two cointegrated venues, Hasbrouck (1995) measures each venue’s share of efficient random-walk variance var_rw = (psi1*sig1)^2 + 2*rho*psi1*psi2*sig1*sig2 + (psi2*sig2)^2. Whenever reduced-form innovations correlate contemporaneously (rho <> 0), ordering Venue 1 first in a Cholesky factorization attributes shared covariance to Venue 1 (Upper Bound), while ordering Venue 1 second strips it out via (1 - rho^2) (Lower Bound).
Verify by hand with permanent impact weights psi1 = 0.70 (B2), psi2 = 0.30 (B3), innovation SDs sig1 = 0.10 (B4), sig2 = 0.10 (B5), and correlation rho = 0.60 (B6): psi1*sig1 = 0.07, psi2*sig2 = 0.03, and var_rw = 0.0049 + 0.00252 + 0.0009 = 0.00832. Venue 1’s Upper Bound is (0.07 + 0.03*0.60)^2 / 0.00832 = 0.007744 / 0.00832 = 0.9308, while its Lower Bound is 0.0049*(1 - 0.36) / 0.00832 = 0.3769, yielding midpoint IS = 0.6538.
| Hasbrouck Metric | Formula Expression | Sample Output (rho = 0.60) |
|---|---|---|
| Random-Walk Variance var_rw | (psi1*sig1)^2 + 2*rho*psi1*psi2*sig1*sig2 + (psi2*sig2)^2 | 0.00832 |
| Venue 1 Upper Bound (First) | (psi1*sig1 + rho*psi2*sig2)^2 / var_rw | 0.9308 (93.08%) |
| Venue 1 Lower Bound (Second) | (psi1*sig1)^2 * (1 - rho^2) / var_rw | 0.3769 (37.69%) |
| Midpoint Information Share | 0.5 * (IS1_upper + IS1_lower) | 0.6538 (65.38%) |
Hasbrouck Midpoint Information Share Formula
Guard |rho| >= 1 or non-positive random-walk variance before computing the Cholesky bounds.
=LET(p_1, B2, p_2, B3, s_1, B4, s_2, B5, rho_v, B6, a_1, p_1 * s_1, a_2, p_2 * s_2, var_rw, a_1^2 + 2 * rho_v * a_1 * a_2 + a_2^2, IF(OR(ABS(rho_v) >= 1, s_1 <= 0, s_2 <= 0, var_rw <= 0), "Degenerate Covariance", LET(is_up, (a_1 + rho_v * a_2)^2 / var_rw, is_lo, (a_1^2 * (1 - rho_v^2)) / var_rw, ROUND(0.5 * (is_up + is_lo), 4))))Bound-Width Diagnostic & Zero-Correlation Convergence Check
Track the Cholesky ambiguity spread IS1_upper - IS1_lower. When timestamp resolution eliminates contemporaneous correlation (set B6 = 0), upper and lower bounds collapse identically to 0.0049 / 0.0058 = 0.8448 with bound width = 0.
=LET(a_1, B2 * B4, a_2, B3 * B5, rho_v, B6, var_rw, a_1^2 + 2 * rho_v * a_1 * a_2 + a_2^2, ROUND(((a_1 + rho_v * a_2)^2 - a_1^2 * (1 - rho_v^2)) / var_rw, 4))Try the example
Use the original values or change them to test your understanding.