From Product Data to a Price Counterfactual
A structural demand analysis links observed choices to economic objects that are not directly recorded, including price sensitivity, substitution patterns, and the marginal costs implied by firms’ pricing decisions. A BLP random-coefficient model makes this link while allowing consumers to differ in their preferences. The chain of calculations matters: observed shares inform demand estimation; estimated demand determines price derivatives; and those derivatives, together with a conduct assumption, determine markups.
This worked application uses hypothetical data. It follows one market through share construction, a numerical illustration of share inversion and GMM estimation, and the recovery of markups. It then evaluates a small specified price increase using a local approximation. The numerical demand estimates below are stipulated output from a synthetic multi-market estimation exercise; the tutorial shows how to interpret and use that output, rather than claiming to reproduce an optimizer from raw data.
Model and Estimation Setup
The mean price coefficient is \(-\alpha\), and \(\sigma_\alpha\) controls heterogeneity in price sensitivity. The specification permits a consumer’s price coefficient to vary with \(\nu_i\); with a normal taste distribution it does not mathematically rule out every positive price coefficient. Product-level unobserved quality \(\xi_{jt}\) may be correlated with price, so ordinary least squares on a mean-utility equation is generally not justified. Estimation instead uses instruments \(z_{jt}\) assumed to satisfy the relevant exogeneity condition \(E[z_{jt}\xi_{jt}]=0\).
For a candidate \((\alpha,\sigma_\alpha)\), BLP share inversion finds mean utilities that make predicted shares match observed shares. Nonlinear GMM then chooses the nonlinear parameters to make instrument-weighted residual moments small, while estimating the linear coefficients in mean utility. In this application, assume a synthetic panel of six markets with two products in each market, observed prices and characteristics, and valid excluded cost shifters among the instruments. The numerical market below is one market from that panel.
Worked Example: Constructing Market Shares
Worked Example: Constructing Market Shares
In a hypothetical market with \(100{,}000\) potential consumers, product 1 sells \(43{,}035\) units and product 2 sells \(33{,}000\). The remaining consumers choose the outside good. The prices are \(p_1=\$7\) and \(p_2=\$8\). Construct the three shares.
Product 1. Its share is units sold divided by market size:
Product 2. Similarly,
The outside-good share is the remaining fraction:
The shares sum to one, as required. The model treats the outside good as a genuine choice option, not as missing data. This market’s shares are the observed targets for inversion; they are not, by themselves, enough to identify all demand parameters. Identification and estimation use variation across the hypothetical panel of markets and the instrument assumptions.
Share Inversion and GMM Estimation
For each market and candidate nonlinear parameter values, the share inversion adjusts \(\delta_{jt}\) until simulated choice probabilities reproduce observed shares. In a random-coefficient model, the predicted shares integrate the choice probabilities over consumer tastes. In computation, that integral is approximated using a fixed set of simulation draws or numerical integration nodes.
After inversion, the demand residual is recovered from \(\delta_{jt}=x_{jt}'\beta+\xi_{jt}\). At each candidate \(\theta=(\alpha,\sigma_\alpha)\), the linear coefficients can be estimated by instrumental variables, and the resulting residuals form sample moments. If \(z_{jt}\) is a vector of instruments, the population restriction is \(E[z_{jt}\xi_{jt}]=0\); the sample analogue averages \(z_{jt}\hat{\xi}_{jt}\) across product-market observations. GMM selects the nonlinear parameters to minimize the quadratic form in those moments, using a chosen positive-semidefinite weighting matrix. The validity of the moments depends on instrument exogeneity, not on the numerical optimizer.
Worked Example: One Inversion Update and a GMM Output
For the market above, suppose the stipulated simulation output at one iteration gives predicted shares \(s_1^{sim}=0.40000\) and \(s_2^{sim}=0.35000\). These are model predictions at the current mean utilities, not the observed shares. Apply one contraction update to the current values \(\delta_1^{(r)}=0.5000\) and \(\delta_2^{(r)}=-0.2000\).
For product 1, the change is \(\log(0.43035/0.40000)=\log(1.075875)\approx0.0731343\). Thus \(\delta_1^{(r+1)}\approx0.5000+0.0731343=0.5731343\).
For product 2, the change is \(\log(0.33000/0.35000)=\log(0.942857)\approx-0.05884\). Thus \(\delta_2^{(r+1)}\approx-0.2000-0.05884=-0.25884\). These are one-step values only; convergence requires repeating the update and checking that predicted shares match the observed shares closely.
Suppose the nonlinear GMM estimation over the six-market synthetic panel reports \(\hat{\alpha}=0.850\), \(\hat{\sigma}_\alpha=0.200\), and a characteristic coefficient \(\hat{\beta}_x=0.620\). The units of \(\hat{\alpha}\) and \(\hat{\sigma}_\alpha\) are utility per dollar, while the units of \(\hat{\beta}_x\) depend on the characteristic. For illustration, suppose the estimated sample moment vector is \(\hat{g}=(0.0012,-0.0008)'\) and the weighting matrix is the identity. Then the reported quadratic criterion at this point is
The parameter values and moment vector are a stipulated hypothetical estimator output. A low value of this criterion alone does not establish that instruments are valid or that the model is correctly specified; it reports how closely these particular sample moments are matched under the stated weighting matrix.
Price Derivatives, Elasticities, and Markups
The fitted model’s derivatives describe how predicted shares change with prices, holding the estimated demand parameters fixed. For an individual with price coefficient \(\alpha_i=\alpha+\sigma_\alpha\nu_i\), differentiating the logit probability gives \(\partial P_{ij}/\partial p_k=-\alpha_iP_{ij}(\mathbf{1}\{j=k\}-P_{ik})\). Averaging this expression over the taste distribution gives the market-share derivative. Own-price derivatives are negative when consumers have positive price sensitivity; cross-price derivatives are positive in this model because raising the price of another inside good shifts choice probability toward product \(j\).
For the target market, suppose numerical integration at the estimated parameters gives \(\partial s_1/\partial p_1=-0.230760875\), \(\partial s_2/\partial p_2=-0.2162\), and \(\partial s_1/\partial p_2=\partial s_2/\partial p_1=0.133619\), all in share points per dollar. The corresponding elasticity is \(\varepsilon_{jk}=(\partial s_j/\partial p_k)(p_k/s_j)\): it is the percentage change in product \(j\)'s share for a one-percent change in product \(k\)'s price, locally at the evaluated prices and shares.
Worked Example: Elasticities, Markups, and a Price Change
Use the target market’s shares, prices, and derivatives above. First calculate the elasticities. The own-price elasticity for product 1 is
For product 2, \(\varepsilon_{22}=(-0.2162)(8/0.33000)\approx-5.241\). The cross-price elasticities are \(\varepsilon_{12}=0.133619(8/0.43035)\approx2.484\) and \(\varepsilon_{21}=0.133619(7/0.33000)\approx2.834\). Thus a one-percent increase in product 1’s price is associated locally, under this demand model, with about a 3.754% decrease in its share and a 2.834% increase in product 2’s share. These are local model implications, not causal effects identified independently of the model and its assumptions.
Next recover markups. Here \(d_{11}=0.230760875\), \(d_{22}=0.2162\), and \(g=0.133619\). The determinant is
For this symmetric matrix,
The implied marginal costs are \(c_1=p_1-m_1=7-4.28062\approx\$2.719\) and \(c_2=p_2-m_2=8-4.17193\approx\$3.828\). These are model-implied costs under the assumed common ownership and Bertrand first-order conditions, not directly observed costs. The positive cross-derivative enters \(A\) with a negative sign; the positive terms in the inverse-matrix numerators arise from inverting that matrix.
Finally, consider a specified increase of \(\$0.10\) in product 1’s price, with product 2’s price held fixed. A first-order share prediction uses the derivatives at the baseline:
The predicted shares are therefore \(s_1^{new}\approx0.43035-0.0230761=0.407274\) and \(s_2^{new}\approx0.33000+0.0133619=0.343362\). Since total share must remain one, the outside-good share rises by \(0.0230761-0.0133619=0.0097142\), giving \(s_0^{new}\approx0.249364\). The three predicted shares sum to \(1.000000\), up to rounding. At a market size of \(100{,}000\), these correspond to approximately \(40{,}727\), \(34{,}336\), and \(24{,}936\) choices, respectively. This is a local linear approximation to a specified price change; an exact finite-change prediction would recompute the random-coefficient choice probabilities at the new price.
Why the Assumptions and Calculation Order Matter
The calculations form a sequence rather than a collection of interchangeable summaries. Shares are constructed relative to a defined market size and outside option. The demand model maps prices, characteristics, mean utilities, and taste draws into choice probabilities. Inversion recovers mean utilities conditional on nonlinear parameters; GMM uses excluded instruments to address the correlation between price and unobserved product quality. The estimated model then supplies derivatives, while a supply-side conduct assumption is needed to turn those derivatives into markups and marginal costs.
The distinction between a derivative-based prediction and a solved equilibrium is especially important. The price-change calculation above holds product 2’s price fixed and uses baseline derivatives. If firms are allowed to adjust prices after a cost or demand change, their first-order conditions must be solved again using the model’s shares and derivatives at the new prices. That is a different counterfactual. Likewise, a price intervention alone does not establish a causal effect unless the demand model and the variation supporting its parameters are credible.
- Common mistake: treating predicted shares as observed shares. The contraction update compares simulated shares with observed shares. A single update does not establish convergence; continue until the share discrepancies are sufficiently small.
- Common mistake: using the wrong sign for cross-price terms. Cross-price share derivatives are positive here, but \(A_{jk}\) is defined as the negative of the relevant derivative. Apply the definition consistently before inverting \(A\).
- Common mistake: treating a local derivative as an exact finite-change prediction. The derivative gives a first-order approximation at the baseline. For a larger price change, recalculate model shares at the new price; for an equilibrium counterfactual, also solve the firms’ pricing conditions again.
- Common mistake: interpreting model-implied cost as observed fact. Recovered markups and costs depend on demand estimates, ownership, and the assumed pricing conduct. Different conduct assumptions can imply different costs from the same demand derivatives.
Check Your Understanding
Use the definitions and calculations in this tutorial to answer the following.
- If a market has \(50{,}000\) potential consumers and \(12{,}500\) choose an inside product, what is that product’s share? What additional quantity is needed to determine the outside-good share when there are multiple inside products?
- In the contraction update, observed product share is \(0.20\) and simulated share is \(0.25\). Is the update to that product’s mean utility positive or negative? Explain using the update formula.
- Why can price be correlated with \(\xi_{jt}\), and what population moment restriction is used to motivate instrumental variables in this setup?
- Under the stated elasticity convention, interpret a cross-price elasticity of \(2.0\) in context. Why is it a local model implication?
- What ownership assumption justifies using the full two-product derivative matrix to recover the two markups? How would a price-change calculation differ from a re-solved price equilibrium?