Bilateral bargaining
How do you make a mutually useful trade without funding the winner?
01Find joint surplus
02Check the rival’s gain
03Set a reservation price
The decision at the table
A trade can improve both hands while making your relative position worse. One missing ore may complete your city and also complete the leader’s winning build. Trade acceptance alone is therefore a poor measure of negotiating skill.
The mechanism to test
Estimate your gain, the partner’s gain, and each side’s outside option. Account for the probability of acceptance, the cost of failed offers, and whose turn comes next. A reservation price is the worst offer you prefer to declining; it should change with the race. A bargaining solution is a modelling assumption, not a universal price rule.
Proposed experiment
Hold offer generation fixed and compare own-value pricing, bilateral build-aware pricing, and threat-aware pricing. Hypothesis: threat-aware pricing improves wins even if it lowers acceptance rate. Then test better offer generation separately.
Plot own versus partner estimated gain for proposed, accepted, and rejected trades. Label these gains as model estimates. Report offers per turn, completion, time cost, and wins by opponent family, including a player that never trades.
First ablation
Never proposing a trade changed the contrast by -0.027 wins per game (95% interval -0.132 to +0.077); removing the trade margin (trade slider at 1) changed it by -0.094 wins per game (95% interval -0.192 to +0.005) with more trades completed. The margin arm is registered again on fresh seeds. On 192 fresh seeds removing the margin was -0.016 (95% interval -0.075 to +0.043): no effect. Details and every run ID are in the ablation report; this is a development-tier result on one lineup.
Second round: threat-aware pricing
Every other seat now carries a threat from the race, shared ground, and award contests; the threat raises the margin a swap must clear and charges a share of the partner's gain, thin offers draw priced counters, and refusals are explicit with a reason (the server's docs/expectimax.md, Bargaining). Against the same search with plain acceptance the threat-aware seat won 53.5% to 31.6%, +0.219 wins per game (interval +0.124 to +0.314), on 64 deterministic boards. The partner accepted every helpful counter, so the bargaining report treats this as development evidence and names the one-change arms and the refusing partner as the next test.
Third round: one switch at a time, and a seating bias
Two identical default searches in the arm design's slots 0 and 1 differ by +0.176 wins per game (interval +0.083 to +0.268) on the same 64 boards and by +0.051 (interval crosses zero) on boards 64-127, because slot 1 always sits one seat after slot 0 and is asked first on its offers. Against that null the earlier fifth of a win shrinks to +0.043 (interval crosses zero), switching counters off costs -0.199 (interval -0.309 to -0.089), switching two-for-one asks off costs -0.156 (-0.259 to -0.054), and switching threat pricing off changes nothing. A partner that refuses every ask loses nothing by refusing. A swapped pair on fresh boards confirms counters at -0.096 (interval -0.156 to -0.035) for the seat without them. The arms report has the run IDs; every future two-search arm needs both seatings.
Fourth round: the switches under the learned leaf
With the learned n-tuple tables as the leaf, each switch was turned off one at a time and measured as swapped pairs at the builder table (seeds 0-63 and 800-863) and at a population table of three searches and an ETA (seeds 800-863). Pooled after the fact over 192 seeds, all bargaining off costs -0.143 wins per game (interval -0.180 to -0.106), counters off -0.102 (-0.136 to -0.069), and asks off -0.085 (-0.119 to -0.050); threat pricing off is +0.001 (-0.035 to +0.036), and a seat that refuses every ask is +0.006 (-0.008 to +0.020) over 320 seeds with its extension. The order and the size of the counters effect match the hand-written leaf. Bargaining costs about 60 percent more time per decision under both leaves, most of it from counters. Every switch stays on in the engine and the browser; the tables report has the run IDs and the browser recommendation.
What could disprove it
Acceptance is selective: completed trades are not a random sample of offers. More offers can also win through scheduling advantages. Equalize response windows and limits. An uncalibrated partner model can reject almost every good deal.
Agent notes
Use the shared experiment design to freeze candidate versions, full lineups, budgets, sample size, primary contrast, and stopping rules before collecting evidence. This is a draft study brief, not a preregistration. No run IDs exist for this proposal.
The deployable policy reads only its own observation and recipient-visible events. The diagram is a conceptual schematic. Build new measured exhibits from retained artifacts using the visual publishing guide.
Keizer et al. (2017) evaluate negotiation strategies in an online Catan setting; their results do not establish the best pricing policy in this arena.
All approaches · Player’s guide · Experiment program
Tracked investigations
| Updated | Investigation | Status | Finding and next step |
|---|---|---|---|
| 2026-09-09 | Proposing trades versus never proposing | Active | Round one, 256 deterministic games: contrast -0.027 wins per game (95% interval -0.132 to +0.077). See the ablation report. Next: Read the confirmation cohort on fresh seeds where registered; otherwise retest under the confirmed depth-3 candidate before changing defaults. Log 2026-09-09 |
| 2026-09-09 | Maximal trade openness | Complete | Screen -0.094 then confirmation -0.016 (95% interval -0.075 to +0.043): removing the trade margin makes no measurable difference against builders. Next: Test the margin against another search seat that prices trades. Log 2026-09-09 |
| 2026-09-12 | Bargaining switches under the learned leaf | Complete | Swapped pairs under the learned n-tuple leaf, pooled after the fact over 192 seeds: all bargaining off -0.143 wins per game (95% interval -0.180 to -0.106), counters off -0.102 (-0.136 to -0.069), asks off -0.085 (-0.119 to -0.050), threat pricing off +0.001 (-0.035 to +0.036), and the stubborn seat +0.006 (-0.008 to +0.020) over 320 seeds after its extension to seeds 864-927. Counters and all off lose at every stage and asks at both builder-table stages (inconclusive at the population table). Bargaining costs +59% decision time under both leaves, counters +41%, asks +7%, threat pricing +4%. Development tier, depth 2; every switch stays on and no default changes. Next: Measure counters at equal time rather than equal nodes: a swapped pair of the browser configuration (hand-written leaf, depth 3, one-second budget) with counters on and off, to see whether the 40 percent extra time per decision costs depth where the browser spends it. Log 2026-09-11 |
| 2026-09-11 | Threat-aware pricing, counters, and reasoned declines | Complete | Two identical defaults in the arm design's slots 0 and 1 differ by +0.176 wins per game (95% interval +0.083 to +0.268, run 91ddb42d), so the +0.219 of run 4228f4f7 is mostly seating: +0.043 (-0.082 to +0.168) against that null. Read the same way, counters off costs -0.199 (-0.309 to -0.089), asks off -0.156 (-0.259 to -0.054), threat pricing off -0.008 (no effect), and a partner that refuses every ask loses nothing by refusing. A swapped pair on fresh boards 64-127 confirms counters at -0.096 (-0.156 to -0.035) for the seat without them, with a seating term of -0.010 there; a second null on boards 64-127 put the seating term at +0.051 (-0.046 to +0.148), so its size varies by board set and every two-search contrast needs both seatings. Development tier at a table of two searches and two builders. Next: A follow-up study: rotate the recipient order of multi-seat offers in the arena, re-measure the null in both seatings, rerun the two-search arms of the ablation program as swapped pairs, and test the bargaining against a partner that counters back. Bargaining arms · Log 2026-09-11 |