AN-010: BNE decomposition — exclusion vs protected-pool offset¶
Intuition (plain-language)
This is the structural heart of the paper: simulate the price under three bidder pools and ask how much of the set-aside's price effect is just removing the disciplining non-SMEs versus the SME pool's own response. Removing non-SMEs — the exclusion channel — does about 72% of the work in ordinary goods. SME entry roughly doubles but cannot undo the loss.
Question¶
How does the set-aside price effect decompose into the lost-discipline channel (non-SMEs removed) and the protected-pool offset (post-policy SME pool)? The structural decomposition compares three counterfactual bidder pools.
Design¶
- Sample: BEC Pregão drop-outs spanning the March 2018 cutoff. Recovered cost distributions are estimated per cell: (non-pharma standardized) and (pharma) × (pre/post) × (SME/non-SME).
- Variation: counterfactual policy regime — \(S_1\) (open pre-policy auction), \(S_2\) (SME-only with the pre-policy SME pool held fixed), \(S_3\) (SME-only with the observed post-policy SME pool).
- Specification: BNE simulation
(
v7-jpube-tight/scripts/45_bne_simulation.R) of \(E[c_{(2)}^V]\) — the second-order statistic of the bidder cost distribution — under each pool. Prices are normalized by the buyer reference price. - Outcomes: per-class \(S_1\), \(S_2\), \(S_3\), decomposition components \(S_2 - S_1\), \(S_3 - S_2\), \(S_3 - S_1\), exclusion-to-net ratio, absolute exclusion share.
Results¶
Headline magnitudes from v8-jpube/output/values.tex (canonical BNE run,
B = 10,000 Monte Carlo draws). All values reported as fractions of the
buyer reference price \(p^{\mathrm{ref}}\).
In standardized non-pharma:
| Object | Value | Macro |
|---|---|---|
| \(S_1\) (open pre-policy) | 0.774 | \bneMeanSoneNp |
| \(S_2\) (SME-only, pre-pool fixed) | 1.144 | \bneMeanStwoNp |
| \(S_3\) (SME-only, post-pool) | 1.000 | \bneMeanSthreeNp |
| \(S_2 - S_1\) (lost-discipline) | +0.371 | \bneEffectIntensNp |
| \(S_3 - S_2\) (protected-pool offset) | −0.144 | \bneEffectEntryNp |
| \(S_3 - S_1\) (net effect) | +0.227 | \bneEffectTotalNp |
| Absolute exclusion share | 72.0% | \bneShareIntensNp |
| Exclusion-to-net ratio | 164% | \bneIntensRelNetNp |
In pharma (boundary case — see AN-016): \(S_1\) = 0.654, \(S_2\) = 1.219, \(S_3\) = 0.963; exclusion magnitude +0.565, offset −0.256, net +0.309. Absolute exclusion share 68.8%; exclusion-to-net ratio 183%. Same qualitative pattern at higher magnitudes; the welfare ranking is more model-sensitive than in non-pharma.
Bidder counts (per auction). Non-pharma: SME participation 0.94 → 1.87 post-cutoff (roughly doubles); non-SME participation 2.68 → 1.50 (falls but does not vanish — many auctions are above the R$80K SME-eligibility ceiling and remain open). Pharma: SME 0.55 → 1.22; non-SME 2.61 → 1.66.
See Figure 4 (Counterfactual price decomposition) in paper.pdf §4.
Output: v7-jpube-tight/scripts/46_decomp_compare.R produces the
decomposition table cells; macros live in v8-jpube/output/values.tex.
Interpretation¶
The lost-discipline channel dominates in absolute magnitude: the non-SMEs that were the price-forming bidders cannot be replaced by the protected SME pool, even after the SME participation roughly doubles. The protected-pool offset works in the right direction but does not close the gap.
Critically, the protected-pool offset \(S_3 - S_2\) should not be read as a pure entry parameter. It combines (i) additional SME participation with (ii) changes in the active SME pool composition observed post-policy. The strict-invariance specification (AN-017) holds composition fixed to isolate the participation channel.
Confidence: yellow. The decomposition rests on the maintained IPV-clock interpretation of Pregão drop-outs (AN-013, AN-014, AN-015). The collusion-screen battery remains pending; until it lands clean, the decomposition is the load-bearing structural reading but its interpretation as a welfare counterfactual rather than as a bid-shift re-weighting depends on that diagnostic surviving. The non-pharma reading is robust across strict-invariance and bootstrap CI; the pharma reading is a boundary case.
Follow-ups¶
- Bootstrap CI on the exclusion share
(
v7-jpube-tight/scripts/51_bootstrap_ci.R): the current point-estimate decomposition does not report a confidence interval on the dominance ordering. Documenting this as a standalone AN would sharpen the "exceeds 50%" claim. - Cross-modality validation: GPV recovery of cost distributions from
Convite first-price bids (
v7-jpube-tight/scripts/38_cross_modality.R) applied to the same product cells. Convergence would discipline the IPV-clock restriction. - Phased-adoption counterfactual
(
v7-jpube-tight/scripts/70_phased_adoption.R): the protected-pool response should be smaller under phased rollout; the simulation would test whether the dominance ordering is robust to that implementation choice.