The Price of Knowing You: Welfare and Distributional Effects of Algorithmic Personalized Pricing
Gary Wang · Surveillance Pricing Observatory · September 2026 · interactive site · repository
1. Introduction
Retailers, travel platforms and subscription services increasingly set prices for a person rather than a product. The US Federal Trade Commission's 2025 surveillance-pricing study documents intermediaries that translate precise location, browsing history, cart abandonment and even mouse movements into individual prices. The European Union's Omnibus Directive obliges traders to say that a price was personalized, and nothing more. Economists have known since Pigou that first-degree price discrimination is efficient in theory and regressive in distribution; what is new is that firms now approximate it with machine learning on data consumers did not knowingly provide.
Three questions follow. First, is the textbook efficiency result robust to the way personalization actually happens — with noisy signals, learned demand models and consumers who refuse, delay, hide or err? Second, who wins and who loses, and is "vulnerable" the same as "harmed"? Third, which of the rules on the policy menu — disclosure, explanation, opt-out, data minimisation, feature bans, dispersion caps, price caps, parity constraints, audits — improve the trade-off, and which merely relabel it?
Field evidence exists but is thin: one randomized personalized-pricing experiment (Dubé and Misra 2023, ZipRecruiter) and one structural counterfactual (Shiller 2014, Netflix). Neither can vary information regimes, algorithms, behaviour and policy on the same population. A simulation can, and it has a second advantage: it provides ground truth against which the empirical methods an economist would use on observational data can be audited. We do both.
Contributions. (i) A validated, reproducible market simulator with heterogeneous consumers, imperfect information, learning sellers, behavioural types, competition and precisely-defined interventions, released with manifests for every run. (ii) A factorial Monte Carlo study (regime × algorithm × policy × behaviour) with pre-registered hypotheses evaluated mechanically. (iii) A distributional analysis that separates income from valuation and finds the burden falls on the latter. (iv) An econometric-recovery study quantifying estimator bias under economically motivated selection into adoption. (v) An honest account of what the pre-registration got wrong.
2. Institutional background
Personalized pricing sits at the intersection of three regulatory traditions. Consumer protection (FTC Act §5; EU Unfair Commercial Practices and Consumer Rights Directives as amended by the Omnibus Directive 2019/2161) has so far chosen transparency: Article 6(1)(ea) requires disclosure that a price is personalized on the basis of automated decision-making, not how. Data protection (GDPR Articles 5, 13–15, 21–22; CCPA/CPRA) supplies opt-out rights, data-minimisation principles and a right to "meaningful information about the logic involved" — the legal hook for our explanation and data-minimisation interventions. Anti-discrimination law supplies two distinct theories: an input rule (protected attributes and close proxies may not be used) and an outcome rule (protected groups may not face systematically different terms). We model both and find they behave very differently. Caps on price levels or dispersion are not in force for general retail but exist in regulated sectors; we include them as the hard end of the spectrum. Random audits are the enforcement instrument regulators actually have. docs/literature.md in the repository documents the evidence base and explains why no real consumer-level dataset is used: the only randomized pricing data are proprietary, and public measurement datasets record prices shown to personas, not purchases or valuations.
3. Related literature
The theory of price discrimination with imperfect information (Varian 1985; Aguirre, Cowan and Vickers 2010; Bergemann, Brooks and Morris 2015) establishes that finer segmentation can raise or lower total welfare depending on whether it expands output, and that the division of surplus between firm and consumers is governed by the information structure — Bergemann et al. show every split on the efficient frontier is achievable by some segmentation. Our simulation is a quantitative complement: it asks where learned segmentations from realistic signals land. Empirically, Dubé and Misra (2023) find a +19% profit gain from personalization over an optimized uniform price, a 23% fall in consumer surplus and more than 60% of consumers better off; Shiller (2014) finds browsing data raise profits by an order of magnitude more than demographics and cut consumer surplus 8%, with some consumers paying twice what others pay. Hannak et al. (2014) and Mikians et al. (2013) document price steering and discrimination on 9 of 16 and on several global sites, driven by account history, device and location. On algorithms, contextual bandits for pricing (Kleinberg and Leighton 2003; Misra, Schwartz and Abernethy 2019) and gradient-boosted demand models are the workhorses we implement. On strategic consumers, Villas-Boas (2004) and Fudenberg and Villas-Boas (2006) analyse behaviour-based price discrimination with forward-looking buyers; our strategic type is the bounded-rational cousin of their consumer who withholds purchases to affect future prices. On estimator recovery, Goodman-Bacon (2021) and Callaway and Sant'Anna (2021) explain why two-way fixed effects misbehave under staggered adoption with dynamic effects — a mechanism we reproduce in a setting where the dynamics come from seller learning.
4. Model
Consumers. A population of n = 1,000 consumers, each with a permanent valuation vi for one unit per period drawn from a configurable family (baseline lognormal, median 2.5, log-sd 0.5; marginal cost c = 1). Let zi be the standardised log valuation. Every other attribute is a noisy correlate of zi: log income (correlation 0.5, log-sd 0.6), urgency and loyalty (probit correlates, 0.4 and 0.2), three latent browsing signals (0.5 each), a Poisson purchase history increasing in income and loyalty, and a horizontal taste vector used only under competition. A demographic-proxy group (30% of the population) is generated from income alone — it carries no information about valuations beyond income, so any price gap between groups is proxy discrimination by construction. Period valuations are vit = vi × a mean-one lognormal shock (sd 0.15). We define a vulnerable subgroup — bottom income tercile and top urgency tercile — for measurement, not for behaviour.
Behaviour. Each consumer has one of six types (baseline shares in parentheses). Myopic (50%) buy iff p ≤ vit. Price-sensitive (15%) additionally refuse prices above 1.15 × last period's average price, a reference-dependent fairness refusal. Strategic (10%) buy only if p ≤ 0.8 vit, holding out to depress the seller's inference through the dynamic features it observes. Privacy-aware (10%) mask their behavioural and profile signals at a utility cost of 0.03 per period. Switchers (10%) compare every seller under competition. Bounded-rational (5%) act on vit × exp(0.25 × logistic error) and may overpay; negative surplus is counted as such.
Sellers. A seller never observes valuations. Each period it sees a feature vector for every consumer — the feature set is the information regime — posts a price, and observes whether the consumer bought. Regimes: uniform (no features), segment (income tercile × group), behavioural (segment + browsing signals, history, loyalty, an urgency signal, and two dynamic features — the consumer's exponentially-weighted purchase rate with this seller and a last-period-declined flag), individualized (behavioural + a third-party profile signal, zi + N(0, 0.35)). A global quality parameter scales the precision of every signal.
Welfare. Per period, CS = Σ(vit − pit)·1[buy] − privacy costs, PS = Σ(pit − c)·1[buy], TW = CS + PS, first best = Σ max(vit − c, 0), DWL = first best − TW. Total welfare is unweighted; every distributional cut is reported so a reader can re-weight. Steady state is the mean over periods 10–29 of 30.
5. Simulation design
Every experiment is a YAML sweep expanded into runs with deterministic seeds; each run writes a manifest (configuration hash, git commit, package versions, wall time) alongside period-level, seller-level and consumer-level results, and is skipped on re-execution if its manifest matches. The main experiment crosses nine regime–algorithm cells with eleven policies over 20 seeds. The consumer-mix experiment varies behavioural shares (all-myopic; baseline; 40% strategic; 40% price-sensitive; 40% privacy-aware; 35% bounded). The information-quality experiment sweeps signal precision from 0.1× to 10× for regression and boosting sellers under three mixes. The policy-frontier experiment sweeps the parameter of each intervention. The competition experiment varies the number of sellers (1, 2, 3, 5) and switching intensity. The robustness experiment applies 20 one-at-a-time deviations (valuation family, dispersion, shocks, quality, cost, population size, behavioural parameters, income correlation, duopoly). In total 4872 runs plus the econometric study. Hypotheses were registered in hypotheses.json before any of these ran; the file's changelog records the two post-hoc additions described below, neither of which edits hypothesis text.
Validation. Before interpretation we verified: no sale below cost and no rational type buying above its valuation in instrumented monopoly and duopoly runs; CS + PS = TW and TW + DWL = first best in every period; an oracle facing myopic consumers with no shock leaves zero consumer surplus and under 1% deadweight loss; the learned uniform price converges to the analytic monopoly optimum (2.55 for the baseline lognormal, also checked for uniform and normal families); producer surplus is ordered oracle ≥ individualized ≥ uniform with myopic consumers; price caps and parity constraints hold every period. All checks pass (make validate, make test).
6. Pricing algorithms
All model-based sellers choose, for each consumer, the grid price (40 geometric points from cost to the 99.5th valuation percentile) maximising (p − c)·P̂(buy | x, p) under their demand model, with ε-greedy exploration (εt = max(0.03, 0.65t)). The uniform seller fits a pooled logistic demand in price; the segment seller one per segment cell; the regression seller a logistic demand linear in (x, p) — the classic willingness-to-pay regression; the boosting seller a histogram gradient-boosting classifier with a monotone-decreasing constraint on price (80 trees, refit every two periods). The bandit is linear Thompson sampling over 12 price arms with the feature vector as context; it explores through posterior draws rather than ε. The oracle knows vi and prices against the period shock; it bounds what information can do. We deliberately include no reinforcement-learning agent: with no seller-side state beyond collected data, the per-period problem is a contextual bandit, and an RL agent would only relearn that structure more slowly without answering a question the bandit does not.
7. Policy interventions
Each intervention is one exact rule (Table 1). Disclosure changes only behaviour: 15% of non-strategic consumers become strategic and 10% privacy-aware. Explanation adds that above-median-valuation consumers manipulate browsing and urgency signals to the 10th percentile with probability 0.5; profile and segment signals cannot be manipulated. Opt-out makes masking free; privacy-aware consumers always opt out and above-median consumers do with probability 0.5; the seller gets no flag. Data minimisation restricts the seller to first-party transactional features. Feature restriction removes the group and income-segment features. Personalization cap (internal) — as pre-registered — confines every price to ±20% of the seller's own pooled-demand optimum. Personalization cap (list) — added post hoc — confines prices to ±20% of the list price a regulator observes before personalization, the analytic uniform-monopoly price. Price cap forbids prices above 3 × cost. Anti-discrimination scales the higher-priced group down each period until mean prices differ by at most 2%. Random audits check parity with probability 0.2 per period and fine violators 50% of that period's profit; the seller complies when its own model says the expected fine exceeds the gain from violating.
8. Results
Table 1 — Baseline market, no intervention (steady state per period, 1,000 consumers, 20 seeds).
| Regime · algorithm | Avg price | Price sd | Consumer surplus | Producer surplus | Total welfare | Conversion | CS Gini | Group gap | Learning (periods) |
|---|---|---|---|---|---|---|---|---|---|
| Uniform | 2.60 | 0.53 | 676 | 706 | 1,382 | 0.46 | 0.766 | -0.001 | 3.95 |
| Segment | 2.52 | 0.65 | 639 | 702 | 1,341 | 0.47 | 0.761 | -0.277 | 3.15 |
| Behavioural · regression | 2.58 | 0.87 | 455 | 840 | 1,295 | 0.47 | 0.783 | -0.263 | 4.65 |
| Behavioural · boosting | 2.87 | 1.43 | 428 | 825 | 1,253 | 0.47 | 0.779 | -0.197 | 5.30 |
| Behavioural · bandit | 2.58 | 1.19 | 594 | 796 | 1,390 | 0.55 | 0.735 | -0.143 | 7.05 |
| Individualized · regression | 2.55 | 0.91 | 431 | 872 | 1,303 | 0.49 | 0.772 | -0.263 | 4.10 |
| Individualized · boosting | 2.79 | 1.57 | 425 | 898 | 1,322 | 0.54 | 0.746 | -0.144 | 4.65 |
| Individualized · bandit | 2.66 | 1.34 | 549 | 837 | 1,386 | 0.56 | 0.732 | -0.088 | 7.35 |
| Oracle | 2.40 | 1.13 | 401 | 1,022 | 1,424 | 0.69 | 0.635 | -0.396 | — |
First best is 1,832. Marginal cost is 1; the analytic uniform-monopoly price is 2.55.
8.1 Who captures the gains (RQ2 — H2 supported)
Moving from uniform pricing to the individualized boosting seller raises producer surplus by +27% and lowers consumer surplus by -37%; total welfare changes by -4% (95% interval ±17). In every regime above segment pricing the fall in consumer surplus exceeds the fall in total welfare: personalization is first a transfer and second a loss. The order of magnitude matches Dubé and Misra's field estimates (+19% profit, −23% consumer surplus against an optimized uniform price) more closely than we had any right to expect from an uncalibrated model; we treat the agreement as a sanity check, not a calibration. Figure F2 shows the decomposition; Figure F3 places every regime × policy cell on the consumer–producer plane against the first-best frontier.
8.2 When personalization raises total welfare (RQ1 — H1 not supported)
We pre-registered that personalization would lower total welfare at baseline (correct) and raise it when valuation dispersion is high or consumers are all myopic (wrong). With all-myopic consumers the individualized boosting seller still lowers total welfare relative to uniform pricing (1,351 vs 1,404), and higher dispersion makes the loss larger (-261 at log-sd 1.1; -34 at 0.25). The mechanism is information noise, not behaviour: with baseline signal precision the seller's prices are noisy around each valuation, so it loses a fraction of the highest-surplus trades — which the uniform price had kept — while gaining low-surplus trades at the bottom. Dispersion amplifies the stakes of each mistake. The efficiency case re-emerges only when signals are precise: in the information-quality sweep with myopic consumers, total welfare under boosting crosses the uniform benchmark at 2.0× baseline precision and reaches 1,558 at 10× (Figure F6). The oracle, which has perfect information about permanent valuations, delivers total welfare 1,424 vs 1,382 under uniform pricing even with the baseline behavioural mix. Removing period shocks (-7) or tripling signal quality (-4) moves the baseline delta toward zero. The textbook result is therefore a statement about the limit of perfect information; the relevant policy question is where a real seller sits on the precision axis.
8.3 Who loses (RQ3 — H3 not supported)
Figure F4 and the Consumer page show a clean pattern by valuation: the bottom valuation deciles gain (they are served at prices below the uniform price), the top decile loses -1.88 per period, paying 4.42 on average against 2.57 under uniform pricing; the top-to-bottom price ratio is 1.20. By income the pattern is the same but muted: the top income quintile loses -0.72 per period, the bottom quintile gains +0.011 and is served 41% of the time instead of 23%. Matched consumer by consumer, 50% are better off and 42% worse off. The pre-registered vulnerability prediction failed in an informative way: the vulnerable group (low income, high urgency) faces a lower price-to-income ratio under individualized pricing (4.87 vs 5.07), because income is a strong correlate of valuation and the seller's income-related signals pull their prices down more than urgency pushes them up. In this model the burden of personalization is borne by those who value the good most, whatever their income; the distributional concern is about consumer surplus concentration (CS Gini 0.746 vs 0.766), not about the poor paying more. Whether real-world urgency signals are as weakly informative relative to income proxies as they are here is an empirical question this model cannot settle.
8.4 Does more information always pay? (RQ4 — H4 supported)
Producer surplus is monotone non-decreasing in signal precision for both regression and boosting sellers facing myopic consumers (Figure F6; 882 → 1,137). With 40% strategic hold-outs the gain from the lowest to the highest precision is 69% smaller for the regression seller and 59% smaller for the boosting seller, but remains positive. Consumer surplus falls along the whole curve. We find no region where more information hurts the seller; the pushback of strategic consumers taxes the value of data without reversing its sign. The bandit is the exception among algorithms rather than along the information axis: it personalizes gently (12 arms, linear reward model), reaching a consumer surplus of 549 and total welfare of 1,386, but learns slowly (7.3 periods to 90% of final profit against 4.7 for boosting).
8.5 Transparency and strategic behaviour (RQ5 — H5 not supported)
Disclosure — which changes nothing about prices, only about who holds out or hides — moves producer surplus by -72 and consumer surplus by +50 for the individualized boosting seller. Explanation does the same (-72 / +54). The pre-registered conjunct that failed is that explanation-induced manipulation of browsing signals would reduce offered-price dispersion: it does not (1.52 under disclosure vs 1.55 under explanation), and seed-by-seed the producer-surplus difference between the two is centred on zero. The seller is not hurt because the signals a consumer can manipulate are not the ones the model leans on: the dynamic purchase-rate and decline features, the third-party profile and the transactional history dominate browsing signals. The same null holds in the behavioural regime without a profile signal. Transparency works here through the behavioural channel (more hold-outs, more masking), not through signal jamming.
8.6 Policy comparison (RQ6 — H6 not supported as pre-registered)
Table 2 — Interventions against the individualized boosting seller (steady state; change vs no intervention).
| Intervention | Consumer surplus | Δ CS | Producer surplus | Δ PS | Total welfare | Δ TW | Group gap | CS Gini | Data exposure |
|---|---|---|---|---|---|---|---|---|---|
| None | 425 | — | 898 | — | 1,322 | — | -0.144 | 0.746 | 0.90 |
| Disclosure | 475 | +50 | 826 | -72 | 1,301 | -22 | -0.142 | 0.747 | 0.80 |
| Explanation | 479 | +54 | 826 | -72 | 1,304 | -18 | -0.116 | 0.747 | 0.80 |
| Opt-out | 514 | +89 | 850 | -47 | 1,365 | +42 | -0.112 | 0.755 | 0.67 |
| Data minimisation | 479 | +54 | 826 | -71 | 1,305 | -17 | -0.110 | 0.765 | 0.40 |
| Feature restriction | 433 | +9 | 896 | -1 | 1,330 | +7 | -0.135 | 0.744 | 0.90 |
| Personalization cap (internal ref.) | 256 | -169 | 639 | -259 | 895 | -427 | -0.005 | 0.886 | 0.90 |
| Personalization cap (list ref., post hoc) | 497 | +72 | 737 | -161 | 1,234 | -89 | -0.024 | 0.818 | 0.90 |
| Price cap (3 × cost) | 524 | +99 | 737 | -161 | 1,261 | -61 | -0.113 | 0.798 | 0.90 |
| Anti-discrimination (parity) | 489 | +65 | 898 | +0 | 1,387 | +65 | -0.037 | 0.715 | 0.90 |
| Random audits | 483 | +58 | 900 | +3 | 1,383 | +61 | -0.057 | 0.716 | 0.90 |
Four findings stand out. First, input rules fail and outcome rules succeed. Banning the group and income-segment features leaves 94% of the group price gap: browsing, history and the profile signal carry the same income information. The parity constraint closes the gap to -0.037 and — contrary to our prediction of a welfare cost — raises total welfare by +65 with producer surplus essentially unchanged, because the group it scales down is the majority whose prices the aggressive boosting seller had set above the profit-maximising level; the constraint is a free price correction. Random audits achieve a gap of -0.057 with total fines of 105 over 30 periods, because the seller's own model tells it compliance is cheap. Second, the pre-registered personalization cap is gamed by its own reference. Confining prices to ±20% of the seller's pooled-demand optimum collapses total welfare to 895: the pooled model is fit on the seller's own personalized-price data, in which high-valuation consumers bought at high prices, so its "uniform optimum" drifts to about 3.7 and the band locks everyone into prices near it. This is not an artefact to be fixed away — it is what happens when a dispersion cap references a quantity the regulated firm estimates. The post-hoc list-price variant, referenced to the pre-personalization uniform price a regulator can observe, is reported in the same table and in the frontier figure, labelled as exploratory. Third, a price cap transfers but does not create. Capping prices at 3 × cost raises consumer surplus by +99 and lowers producer surplus by -161, but total welfare falls by -61: the cap censors the seller's price experiments above 3, degrading its demand estimates for mid-valuation consumers, and lowers the reference price that price-sensitive consumers judge personalized offers against, so refusals rise (price-sensitive conversion falls from 0.54 to 0.41; myopic from 0.57 to 0.50). Fourth, privacy rules are the only interventions that reduce data exposure and help consumers at once. Opt-out (exposure 0.67) raises consumer surplus by +89 and total welfare by +42 at a producer cost of -47; data minimisation (exposure 0.40) does similar work on consumer surplus at a larger producer cost, because first-party transactional features alone predict valuations poorly.
8.7 Competition (H8 supported)
Duopoly with high switching (compare probability 0.5) lowers the average price faced from 2.79 to 2.17 and raises consumer surplus from 425 to 915 under individualized boosting; with five sellers the price is 1.86. Uniform-pricing duopoly delivers 1,019. With low switching (0.1) the duopoly gain is far smaller (607): personalization under competition benefits contestable consumers. Sellers poach — under individualized boosting a duopolist offers rivals' loyal consumers 2.09 on average against 2.42 to its own — which is the behaviour-based price-discrimination pattern of Fudenberg and Villas-Boas. Sellers never observe rivals' prices and learn myopically; we make no claim about tacit collusion and the model is not designed to detect it.
9. Distributional effects
Figure F5 shows Lorenz curves of consumer surplus. The CS Gini rises from 0.766 under uniform pricing to 0.746 under individualized boosting; the oracle, which serves the most consumers, has the lowest Gini (0.635) because it leaves almost everyone a little surplus from the period shock rather than a few a lot. Inequality of surplus and total surplus move in opposite directions along the information axis, which is why the policy frontier in Figure F8 is drawn in (Gini, total welfare) space rather than reported as a single index. By behaviour type, strategic consumers pay the least and privacy-aware consumers pay the pooled price; bounded-rational consumers are the only group with systematically negative surplus trades (0.54 conversion, about 7 negative-surplus trades per period at baseline), and their share of the population governs how far the reported consumer surplus overstates realised well-being.
10. Econometric recovery
We simulate 200 markets differing in valuation dispersion (observed only through a noisy proxy), median valuation (observed), strategic-consumer share (unobserved) and a data-broker coverage indicator that lowers adoption cost and enters nothing else. Both potential outcomes — steady-state consumer surplus per capita under uniform and under individualized regression pricing — are simulated with the same population seed, so each market's treatment effect is known; the average effect is -0.280 and the effect on adopters -0.306. Adoption is more likely where dispersion is high and consumers unsophisticated, with a selection-on-unobservables strength of 0, 1 or 2; 20 assignment replications per level.
Naive OLS understates the consumer harm by +36% of the true effect with no selection on unobservables and by +21% at the strongest level; the bias comes from selection on observed dispersion — adopters are markets where consumers had high surplus under uniform pricing — and the two selection channels partly offset at higher unobserved-selection strength. Adding the observed controls cuts the bias to +9%; the residual is the unobserved sophistication. 2SLS with the coverage instrument recovers the local effect (+2%, coverage 95%) and the randomized design the average effect (+1%, coverage 100%). Two-way fixed effects on a staggered-adoption panel are attenuated by +35% with 0% coverage: adopting sellers explore and learn, so the post-adoption path of consumer surplus starts near zero effect and converges over roughly ten periods (Figure F9 and the Econometrics page), and TWFE averages over that path with weights that are not the ones an economist wants. A clean-control DiD that compares adopters' late post-window with never-adopters is biased by only +9%. H7 was not supported as written because the naive-OLS bias fell just short of our 25% threshold at the strongest selection level; every directional prediction held.
11. Robustness
Across the baseline and 20 one-at-a-time deviations, individualized boosting lowers total welfare relative to uniform pricing in 21 of 21 axes (Figure F12); consumer surplus falls and producer surplus rises in every one of them (checks: True, True). The total-welfare loss is closest to zero on the high-precision (-4) and no-shock (-7) axes, consistent with §8.2. The sign of every headline result survives the valuation family (normal, uniform, bimodal, Pareto), cost, population size, income–valuation correlation and duopoly. The consumer-mix experiment shows the size of the welfare loss is behaviour-dependent — largest with 40% price-sensitive consumers, whose reference-price refusals turn dispersion into lost trades, and smallest with all-myopic consumers — but not its sign.
12. Policy discussion
Three lessons for regulators follow, each conditional on the model. (1) Transparency is not a price rule: disclosure and explanation help consumers only through behavioural responses, and explanation's signal-jamming channel is empty when firms hold transactional and third-party data. (2) Choose outcome rules over input rules: banning protected attributes is ineffective against proxy-rich sellers, while a parity-of-average-prices constraint is cheap to enforce, closes the gap, and in this model costs nothing. Audits with credible fines get most of the way there. (3) Reference points must be exogenous to the firm: a dispersion cap anchored to a firm's own demand estimate is worse than no rule at all. Beyond these, the finding that noisy personalization lowers total welfare while precise personalization raises it suggests that data-minimisation and opt-out rules do not merely trade efficiency for privacy — at current signal quality they can improve both, because they mostly remove noise the seller would otherwise price on.
13. Limitations
The consumer types are one-line rules, chosen so each effect is attributable, not because people behave that way; the consumer-mix experiment bounds the consequences. Total welfare is unweighted. Competition is learned myopically by each seller, not solved as an equilibrium, and there is no entry. Sellers face a single product and no capacity constraints. Signal structure — every attribute a correlate of one latent valuation — is the simplest that makes prediction meaningful; real profiles carry information about preferences the model does not represent. The oracle is an information bound, not a feasible strategy. The econometric instrument is valid by construction and would rarely be in the field. Calibration to the field is by sign and order of magnitude only. Consumer heterogeneity is static across periods except through dynamic features; there is no learning by consumers. Finally, five of eight pre-registered hypotheses were not supported; three of the failures (H1, H3, H6) reflect wrong economic intuition about mechanisms the model then made visible, and two (H5, H7) reflect a conjunct that failed by a small margin. We consider the documentation of those failures part of the result.
14. Ethics
All consumers are synthetic. The demographic-proxy group is an abstract construct correlated with income so that proxy discrimination can be measured; it does not represent any real protected class, and the model contains no race, gender or other protected attribute. The repository contains no code that scores real people, no scraped data and no interface to a live pricing system; it is an audit instrument. The literature review documents why no real dataset is used and what its use would have required. The "vulnerable" subgroup is a measurement definition, and our finding that it is not the group most harmed should not be read as a claim about real markets, where urgency signals (medical need, deadlines) may be far more informative than in this model.
15. Conclusion
Personalized pricing in this laboratory is a transfer first and a loss second. With the signal quality a realistic seller has, it takes more from consumers than it adds to firms, concentrates the burden on those who value the good most, and leaves proxy discrimination intact under input-based rules. Precise information restores the textbook efficiency result; behaviour taxes the value of data but does not reverse it. The rules that work are the ones that act on outcomes (parity), reduce noise (opt-out, data minimisation) or reference something the firm cannot move (list prices); the ones that fail act on inputs, on transparency alone, or on quantities the firm estimates. And the empirical literature should expect its observational estimates of personalization's harm to be too small.
References
Aguirre, I., S. Cowan and J. Vickers (2010). Monopoly price discrimination and demand curvature. American Economic Review 100(4). Bergemann, D., B. Brooks and S. Morris (2015). The limits of price discrimination. American Economic Review 105(3). Callaway, B. and P. Sant'Anna (2021). Difference-in-differences with multiple time periods. Journal of Econometrics 225(2). Dubé, J.-P. and S. Misra (2023). Personalized pricing and consumer welfare. Journal of Political Economy 131(1). Federal Trade Commission (2025). Surveillance pricing 6(b) study: research summaries, a staff perspective. Fudenberg, D. and J. M. Villas-Boas (2006). Behavior-based price discrimination and customer recognition. Handbook on Economics and Information Systems 1. Goodman-Bacon, A. (2021). Difference-in-differences with variation in treatment timing. Journal of Econometrics 225(2). Hannak, A., G. Soeller, D. Lazer, A. Mislove and C. Wilson (2014). Measuring price discrimination and steering on e-commerce web sites. IMC 2014. Kleinberg, R. and T. Leighton (2003). The value of knowing a demand curve: bounds on regret for online posted-price auctions. FOCS 2003. Mikians, J., L. Gyarmati, V. Erramilli and N. Laoutaris (2013). Crowd-assisted search for price discrimination in e-commerce. CoNEXT 2013. Misra, K., E. M. Schwartz and J. Abernethy (2019). Dynamic online pricing with incomplete information using multiarmed bandit experiments. Marketing Science 38(2). Shiller, B. R. (2014). First-degree price discrimination using big data. Brandeis University Working Paper 58. Varian, H. R. (1985). Price discrimination and social welfare. American Economic Review 75(4). Villas-Boas, J. M. (2004). Price cycles in markets with customer recognition. RAND Journal of Economics 35(3).
Appendix: reproduction
make reproduce runs tests, validation, all sweeps, the econometric study, analysis, figures, paper and site. Individual targets: simulate-smoke, simulate-main, simulate-extensions, robustness, econometrics, analyze, figures, paper, site. Configuration lives in configs/, pre-registration in hypotheses.json, run manifests in runs/, numbers quoted above in results/paper_numbers.json.