The BLP Contraction Mapping
Summary
Estimation requires inverting the random-coefficients share system to recover the vector of mean utilities that rationalizes the observed market shares for a given guess of . Berry (1994) / BLP (1995) show this inversion can be computed by iterating the fixed point , which is a contraction mapping with a unique fixed point. This is the “inner loop” of the nested fixed-point algorithm. Modern best practice replaces plain iteration with acceleration (SQUAREM) or Jacobian-based (Levenberg-Marquardt) solvers, which are 3-12x faster.
Overview
For each candidate , and separately and in parallel for each market , we must solve the equations in unknowns that set predicted shares equal to observed shares. Holding fixed turns one large -dimensional nonlinear system into small -dimensional systems, which is the source of BLP’s scalability. The mapping is the Berry inversion.
Main Content
The system to solve ^share-system
In market we seek the -vector satisfying
A unique solution exists mathematically, but it cannot be solved exactly numerically; instead we solve to a tolerance expressed in the log difference in shares:
Tolerance is a tradeoff: too loose and numerical error propagates to (Dubé et al. 2012); too tight and it can never be met. The recommended is between
1E-14and1E-12(machine epsilon1E-16in double precision).
The BLP fixed point is a contraction ^contraction
Berry et al. (1995) show the relation given by
is a contraction mapping. Iteration is linearly convergent at a rate proportional to , where the Lipschitz constant (Dubé et al. 2012) is
A smaller converges faster. A larger outside-good share generally implies a smaller Lipschitz constant; as the outside share shrinks, convergence takes increasingly many steps. (Empirically, shrinking from 0.91 to 0.27 raised iteration counts by ~5x.)
RCNL: the contraction must be dampened ^rcnl-dampen
For random-coefficients nested logit, the plain update is no longer a contraction; it must be dampened by :
Convergence becomes arbitrarily slow as (more within-nest substitution), making RCNL harder to estimate. Without random coefficients () the inversion has the closed form (Berry 1994).
Faster solvers: Newton / Levenberg-Marquardt and SQUAREM ^accelerated
Two families improve on plain iteration:
- Jacobian-based. Newton-Raphson updates , where . The Levenberg-Marquardt (LM) least-squares solver is the fastest, most reliable Jacobian method; its update solves , interpolating between Gauss-Newton () and gradient descent (large ). Cost per iteration is high (computing numerical-integral Jacobians).
- Accelerated fixed points. SQUAREM (Varadhan & Roland 2008) uses the residual and curvature to take an approximate Newton step without forming the Jacobian, at essentially the cost of plain iterations. It is 3-6x faster than direct iteration (3-8x fewer iterations in simulations) and is the recommended default. (No formal convergence guarantee, as the accelerated iteration is no longer a contraction; DF-SANE is a similar but slightly slower/less robust alternative.)
Examples
Inner loop for one guess of (NFXP step (a)):
- For each market , start at the plain-logit solution (or the previous ‘s solution, a “hot start” saving 10-20% of iterations).
- Run SQUAREM (or LM) until
1E-14. - Return to the outer GMM loop. Markets run in parallel across processors.
Connections
- Random Coefficients Logit Model — defines the share integrals being inverted.
- GMM Estimation and Instruments for Price Endogeneity — the recovered feeds the linear index and moment conditions (this is the “inner loop” of NFXP).
- Numerical Integration and Optimization in PyBLP — each share evaluation requires numerical integration; the contraction is the “inner loop,” optimization the “outer loop.”
- Method of Simulated Moments — the simulated shares make this a simulated fixed point.