Why Invert Market Shares?
In a differentiated-products demand model, consumers’ choice probabilities depend on product mean utilities and on consumer-specific utility components. Researchers observe market shares, not the mean utilities that generated them. The BLP inversion takes a proposed set of preference parameters and finds the product mean utilities that make the model reproduce the observed shares. Those recovered utilities can then be used in structural estimation, but the inversion itself is a numerical problem that must be solved accurately for each proposed parameter vector.
This tutorial considers a market with a finite number \(J\) of inside products and an outside option. The nonlinear parameters and the distribution of consumer heterogeneity are held fixed during inversion. The unknowns are the \(J\) mean utilities, denoted by \(\delta_j\).
For random-coefficient logit, write the utility index for inside product \(j\) as \(\delta_j+\mu_j(\nu)\), where \(\mu_j(\nu)\) collects the part of utility that varies across consumers at the fixed parameter values. Normalize the outside option’s utility index to zero. Conditional on \(\nu\), the probabilities are
The probabilities for the inside products and the outside option sum to one for each consumer. In computation, the expectation over heterogeneity is often approximated with fixed simulation draws \(\nu_r\) and nonnegative weights \(w_r\) that sum to one:
Holding the draws and weights fixed during inversion makes each evaluation of the share function deterministic. The same update applies whether the shares are evaluated by exact integration or by simulation.
The BLP Contraction Mapping
The inversion is based on a simple fixed-point transformation. If the current mean utilities imply a share below the observed share for product \(j\), the update raises that product’s mean utility; if the predicted share is too high, it lowers the mean utility. The adjustment is proportional to the logarithm of the ratio of observed to predicted shares.
To verify the fixed-point claim, subtract \(\delta_j\) from both sides of \(\delta_j=T_j(\delta)\). The result is \(\log(s_j^{\mathrm{obs}}/s_j(\delta))=0\), which holds exactly when the two shares are equal. Thus repeated application of \(T\) gives the iteration
The share function and its derivative explain why this update has a contraction property under appropriate conditions. For finite mean utilities and finite utility components, every conditional inside probability and the outside probability are strictly positive. Differentiating the conditional logit probability and averaging gives
Here \(\mathbf{1}\{j=k\}\) is one when \(j=k\) and zero otherwise. Applying the chain rule to the BLP map gives a nonnegative Jacobian. Its \(j\)th row sum is
The strict inequality follows because \(P_jP_0>0\) for every finite draw, so \(E[P_jP_0]>0\), and \(s_j(\delta)>0\). Since the entries of the Jacobian are nonnegative, this row sum is also the absolute row sum. It therefore bounds the derivative in the maximum norm at that point.
The observed shares should be interior: \(s_j^{\mathrm{obs}}>0\) for every inside product and \(\sum_j s_j^{\mathrm{obs}}<1\), leaving a positive outside share. In the logit model with finite utility components, the share map is continuous and one-to-one onto the interior of the share simplex, so these conditions give a unique finite mean-utility vector. The Jacobian expression above also gives a local convergence justification around that solution. A global Banach contraction claim requires more than merely noting that an outside option exists; a uniform bound and an appropriate invariant region matter.
Worked Numerical Iterations
Worked Example: One Product With Two Simulation Draws
Suppose there is one inside product and the outside option. Use two equally weighted heterogeneity draws, with utility components \(\mu_1(\nu_1)=\log 2\) and \(\mu_1(\nu_2)=\log 4\). The observed inside share is \(0.6500\). At the trial value \(\delta^{(0)}=-0.3451\), calculate the simulated share and one BLP update.
For the first draw, the inside probability is \(2e^\delta/(1+2e^\delta)\); for the second, it is \(4e^\delta/(1+4e^\delta)\). Substituting \(\delta=-0.3451\) gives probabilities approximately \(0.5861\) and \(0.7391\), respectively. Thus
The predicted share exceeds the observed share, so the update lowers mean utility:
The update is a numerical correction, not a confidence interval or a causal effect. At the new value, both simulated probabilities must be recalculated before applying another update.
Worked Example: Updating Two Product Mean Utilities
Consider two products, with observed shares \(s_1^{\mathrm{obs}}=0.4000\) and \(s_2^{\mathrm{obs}}=0.3000\); the outside share is \(0.3000\). Use two equally weighted simulation draws. At the starting value \(\delta=(0,0)\), suppose the conditional probability vectors, listed as product 1, product 2, and outside option, are
| Draw | Product 1 | Product 2 | Outside option |
|---|---|---|---|
| 1 | 0.5000 | 0.2000 | 0.3000 |
| 2 | 0.4048 | 0.2762 | 0.3190 |
The second row uses the exact probabilities \(17/42\), \(29/105\), and \(67/210\), which sum to one. Averaging the two draws gives the starting predicted shares \(19/42\) and \(5/21\). The first BLP update is therefore
The first product’s predicted share was too high, so its mean utility falls; the second product’s predicted share was too low, so its mean utility rises. To perform the next iteration, keep the same heterogeneity draws and recompute each conditional probability at \((-0.1231,0.2311)\). For example, under draw 1 the unnormalized inside weights become \(0.5e^{-0.1231}\) and \(0.2e^{0.2311}\), while the outside weight remains one. Normalize all three weights to obtain that draw’s new probabilities, average across draws, and use those new shares in the ratio update. The simulation must be rerun at every iterate; the old predicted shares cannot be reused.
Worked Example: A Local Convergence Diagnostic
Return to the one-product model in the first example. For one product, the derivative of the update map is
At \(\delta=-0.3451\), the two inside probabilities are approximately \(0.5861439\) and \(0.7390804\). Their squared average is approximately
Using \(s_1(\delta)\approx0.6626122\), the local derivative is \(0.4449/0.6626122\approx0.6714\). Since this magnitude is below one, small deviations from a nearby fixed point are locally reduced by the iteration, to first order, by roughly this factor. It is a local diagnostic at this trial value, not a guarantee of the same rate everywhere.
Practical Checks and Common Pitfalls
A reliable inversion requires checking both the numerical calculation and its economic interpretation. Each iteration should use the same integration rule or simulation draws, and each predicted share should be computed from the current mean-utility vector. A useful stopping diagnostic is the largest absolute log share discrepancy:
This quantity is exactly the largest absolute component of the proposed update. A small value means the predicted and observed shares are close in relative terms. If a contraction bound \(q<1\) is available on the region containing the iterates, the fixed-point error also satisfies \(\|\delta-\delta^\ast\|_\infty\leq \|T(\delta)-\delta\|_\infty/(1-q)\). Without such a bound, a small update is useful evidence of numerical stability, but it is not by itself a formal error bound.
- Using an inside-share denominator without the outside option. The denominator in each choice probability includes the outside option’s weight, normalized to one. Omitting it changes every predicted share.
- Reversing the share ratio. The correct update adds \(\log(s_j^{\mathrm{obs}}/s_j(\delta))\). Reversing the ratio moves mean utility in the wrong direction.
- Claiming a uniform global contraction from pointwise row sums. Each row sum is strictly below one at finite \(\delta\), but it can approach one as utilities move toward extreme values. A uniform contraction argument needs a specified region and a uniform bound.
- Confusing inversion with parameter estimation. The inversion finds mean utilities conditional on the heterogeneity parameters and simulation scheme. It does not, by itself, estimate those parameters.
Check Your Understanding
Try these questions without looking back.
- Write the BLP update for product \(j\), and explain what happens to \(\delta_j\) when its predicted share is below its observed share.
- Why must the outside option’s probability be included when computing the denominator of a conditional choice probability?
- What conditions on observed shares make the target an interior share vector?
- Explain why a row sum strictly below one at each finite value of \(\delta\) does not automatically establish a uniform global contraction factor.
- What does a small maximum absolute log share discrepancy indicate, and when can it be converted into a bound on the mean-utility error?