How language model agents reshape price competition
Organizations: School of Computation, Information and Technology, Technical University of Munich, Germany.
Abstract
Repeated Bertrand competition is a stringent benchmark for algorithmic pricing: in homogeneous-goods markets, standard learning procedures typically select the stage-game Nash outcome with prices near marginal cost. We show that LLM pricing agents can escape this benchmark, depending on deployment decisions. LLMs outperform standard online learners through faster adaptation, but this advantage largely disappears against full-information learners. An extracted surrogate algorithm illustrates how LLMs in specific deployments profit from regularly undercutting slower learners. Agents that post one price every period from raw market histories that include rival prices can sustain supracompetitive regimes in self-play. Agents that periodically emit probability distributions from summarized histories of their own profits instead move toward the competitive region in self-play. Markets mixing these interfaces can generate dynamic regimes in which LLMs establish a high-price anchor and regularly undercut it to capture demand. These regimes can keep both competitors' prices above marginal cost. Deployment choices shape these outcomes, shifting the focus from stationary equilibria to dynamic pricing regimes.
Figures & tables
| Interface code | Output | History | Interval | Prompt | Used in |
| P-R-1 | point | raw, 100 | 1 | 1 | Figs. 2c,d, 4, 5, 6 |
| P-S-1 | point | summary, 100 | 1 | 1 | Fig. 5 |
| D-S-1 | distribution | summary, 100 | 1 | 1 | Figs. 5, 6 |
| D-S-25 | distribution | summary, 75 | 25 | 0 | Figs. 2a,b, 3, 4a |
| D-S-50 | distribution | summary, 150 | 50 | 1 | Fig. 4a,c |
| Interface code | ||||||
| P-R-1 | raw, 100 | continuous; 21-point grid against standard learners | point | 1 | scratchpad, one file (two in the logit positive control) | Prompt 1, Fish template; prices in the homogeneous market |
| P-S-1 | summary, 100 | continuous | point | 1 | scratchpad, one file | Prompt 1, Fish template, |
| D-S-1 | summary, 100 | 21-point grid | distribution | 1 | scratchpad, one file | Prompt 1, Fish template, |
| D-S-25 | summary, 75 ( ) | 21-point grid | distribution | 25 | plans_and_insights , previous distribution | Prompt 0, structured, |
| D-S-50 | summary, 150 ( ) | 21-point grid | distribution | 50 | plans_and_insights , previous distribution | Prompt 1, structured, |
| Class | ||
| LLM | 1.25 | 1.00 |
| Exp3 | 1.25 | 2.50 |
| BM-RM | 1.00 | 1.00 |
| PPO | 2.25 | 1.00 |
| UCB | 6.25 | 1.00 |
| Class | Configuration |
| D-S-25 | Prompt 0 (neutral), Gemini 3 Flash Preview, temperature , intervention interval , summary history |
| Exp3 | Constant |
| BM-RM | Constant , |
| PPO | , , |
| UCB |
| Class | Configuration |
| D-S-50 | Prompt 1, Gemini 3 Flash Preview, temperature , intervention interval , summary history |
| Exp3 | Constant |
| BM-RM | Constant , |
| PPO | , , |
| UCB |
| Class | Rule | Aggregate (frozen) | Final | Full horizon |
| LLM | learning | interval | baseline ( ) | baseline ( ) |
| aggressive | Prompt 1 | Prompt 2 | Prompt 1 | |
| Exp3 | learning | |||
| aggressive | ||||
| BM-RM | learning | |||
| aggressive |
| Metric | Final 5% | 10% | 20% | 50% | Full |
| Profit gap | 24.64 | 24.92 | 25.69 | 25.99 | 27.70 |
| Price gap | -0.04 | -0.04 | -0.04 | -0.04 | -0.04 |
| ER gap (cumul.) | -2198.30 | -4007.74 | -7739.55 | -16364.73 | -33867.11 |
| Opponent | Periods | P-R-1 share | Profit | Behaviour |
| Bandit feedback | ||||
| Exp3 | 300 | 62.7% | 0.20/0.12 | P-R-1 agent adapts to Exp3’s exploration (main-text Fig. 2c) |
| Exp3 ( P-R-25 ) | 2,000 | 62.1% | 0.17/0.10 | advantage persists over a longer horizon with blockwise calls |
| PPO | 230 ∗ | 66.1% | 0.25/0.13 | P-R-1 agent prices just below PPO’s exploratory prices |
| Full information | ||||
| Coin betting | 300 | 28.9% | 0.16/0.38 | learner undercuts the P-R-1 agent’s anchor for 200 periods; prices then fall to about 0.18 |
| Motif | Trace-level pattern | DBBS component |
| Broad initialization | Before receiving feedback, the LLM distributes probability broadly around the middle of the price grid. | Cold-start distribution. |
| Recency weighting | Recent profitable outcomes receive more emphasis than older averages or historical peaks. | Recency-weighted payoff score . |
| Failure sensitivity | Zero-profit or failed outcomes reduce probability on the corresponding price region. | Failure score and penalty . |
| Ordered-price reasoning | Failures at relatively high prices are interpreted as evidence that the profitable region lies lower. | One-sided locality penalty . |
| Local asymmetric search | Probability concentrates around a focal price; higher neighbours serve as margin probes and lower neighbours as safer fallbacks. | Search centre with local upward probing . |
| Motif | Keywords and patterns |
| Opponent-facing | |
| Rival response | competitor(s)/rival(s)/opponent(s)/other firm(s) ( characters) follow*/match*/respond*/react*/retaliat*/mirror*/copy*/punish*/reciprocat* ; the verbs follow*/match*/respond*/react*/retaliat*/mirror*/copy* ( characters) competitor/rival/opponent/other firm ; tit-for-tat , retaliat* , forgiv* , punish* . |
| Price war | price war(s) , race to the bottom , downward spiral , mutually destructive . |
| Signal or reset | signal(s/ed/ing) , unless followed by (a/the) need/shift/change/instability/potential/that/weak*/declin*/drop/deteriorat*/saturat* ; reset* ; price leader* ; lead a/the (price) increase/rise/move . |
| Preserving a high price | cooperat* , collu* , tacit* , truce ; avoid(ing) (one word) undercut* ; do not/don’t/never undercut/price below ; maintain(ing) (the) high/ceiling/parity/price level ; preserv* (the) high/margin/price/ceiling . |
| Undercutting or harvesting | undercut* , unless preceded by avoid/avoiding/not ; harvest* ; capture (the) (entire/full/whole/all) market/demand/volume . |
| Folds | |||||||
| all 10 | 0.822 | 0.018 | 0.096 | 0.049 | 0.176 | 4 | 0.55–0.60 |
| Model | All | Changing | Stable |
| DBBS | 4.9 | 10.7 | 3.4 |
| DBBS without inertia | 6.0 | 10.2 | 4.8 |
| Persistence | 4.9 | 12.1 | 3.1 |
| Win-up–lose-down | 7.1 | 11.5 | 6.0 |
| Randomized win-up–lose-down | 8.1 | 11.5 | 7.3 |
| Weighted fictitious play † | 15.6 | 18.1 | 15.6 |
| Model | Error | DBBS closer |
| DBBS | 0.020 | – |
| DBBS without inertia | 0.030 | 59/70 ( ) |
| Win-up–lose-down | 0.063 | 56/70 ( ) |
| Randomized win-up–lose-down | 0.064 | 55/70 ( ) |
| Persistence | 0.074 | 58/70 ( ) |
| Weighted fictitious play † | 0.042 | 55/70 ( ) |
| Arm | Output | Market | History | Rival price | ||
| A1 | Continuous point | logit | 1 | Raw | 100 | Visible |
| A2 | Continuous point | homogeneous | 1 | Raw | 100 | Visible |
| A3 | Grid point | logit | 1 | Raw | 100 | Visible |
| A4 | Grid distribution | logit | 1 | Raw | 100 | Visible |
| A5 | Continuous point | logit | 1 | Raw | 100 | Hidden |
| A6 | Continuous point | logit | 1 | Summary | 100 | Visible |
| Cell | Seeds | P-R-1 | Opponent | Interpretation |
| P-R-1 vs P-R-1 | 3 | 1.11 | 0.91 | high-price regime under like LLM interaction |
| P-R-1 vs undercut heuristic | 2 | 1.04 | 0.97 | high P-R-1 prices are a best response to the fixed rule |
| P-R-1 vs D-R-1 | 6 | 0.91 | 0.93 | cross-deployment LLM interaction remains high |
| P-R-1 vs bandit regret matching | 2 | 0.57 | 0.53 | partial persistence under slow bandit adaptation |
| P-R-1 vs static monopoly | 3 | 0.44 | 1.03 | P-R-1 exploits a fixed high-price anchor |
| P-R-1 vs Exp3 | 3 | 0.36 | 0.46 | intermediate; seeds range from 0.19 to 0.64 |
| Regime | Runs | Price | Consumer (%) | Producer (%) | Leading firm (%) |
| Competitive benchmark (p = c) | 0.100 | 100 | 0 | ||
| Joint-monopoly benchmark (p = v) | 0.360 | 0 | 100 | ||
| Standard learners, markets without UCB | 21 markets, 10 seeds | 0.124 | 91 | 9 | |
| Standard learners, markets with UCB | 7 markets, 10 seeds | 0.158 | 78 | 22 | |
| D-S-25 self-play | 10 seeds | 0.113 | 95 | 5 | |
| D-S-50 self-play | 10 seeds | 0.113 | 95 | 5 |
| Arm | Price | CS | PS | TW | DWL (%) |
| Continuous Nash benchmark | 1.47 | 71.5 | 44.6 | 116.1 | 0.0 |
| Joint-monopoly benchmark | 1.93 | 32.7 | 67.5 | 100.2 | 13.7 |
| Control (continuous point, raw, visible) | 1.91 | 33.7 | 67.4 | 101.1 | 12.9 |
| Grid point | 1.95 | 31.2 | 67.3 | 98.5 | 15.1 |
| Grid distribution | 1.94 | 31.8 | 66.7 | 98.5 | 15.2 |
| Rival hidden | 1.73 | 49.6 | 59.4 | 109.0 | 6.1 |
Algorithmic Collusion
Algorithmic collusion studies how software agents coordinate to weaken competition, how to detect such behavior, and how to prevent it.
See all 22 papers