# Strategy analysis — frontier-1

48 player-games from 12 finished games. Correlations on a sample this small are hypotheses, not findings: test each with `arena sim`.

## What winners did differently

| feature | winners (mean) | others (mean) | r with winning | r with placement (−=better) |
|---|---:|---:|---:|---:|
| monopolies_end — complete colour groups held at the end (or at bankruptcy) | 7.00 | 0.64 | +0.96 | -0.77 |
| orange_red_lots — orange + red lots held at the end | 6.00 | 1.31 | +0.87 | -0.69 |
| houses_built — house/hotel purchases | 37.17 | 4.58 | +0.87 | -0.76 |
| railroads_end — railroads held at the end | 4.00 | 1.17 | +0.78 | -0.56 |
| rounds_to_3_houses — rounds from first monopoly to 3 houses on every lot of a group (121 = never) | 2.92 | 95.17 | -0.69 | +0.68 |
| first_build_round — round of the first house (121 = never) | 9.83 | 79.67 | -0.56 | +0.61 |
| first_monopoly_round — round of the first complete colour group (121 = never) | 9.75 | 59.47 | -0.43 | +0.45 |
| invalid — decisions rejected by the engine | 0.08 | 4.22 | -0.36 | +0.21 |
| props_bought — properties bought at list price | 7.33 | 5.64 | +0.35 | -0.28 |
| trade_ev — EV gained in accepted trades (valuation model) | 2505.42 | 1166.31 | +0.34 | -0.28 |
| auction_wins — lots won at auction | 1.58 | 0.56 | +0.32 | -0.36 |
| public_msgs — public messages sent | 0.00 | 0.69 | -0.30 | +0.16 |
| monopoly_via_trade — 1 if the first monopoly was completed by a trade | 0.75 | 0.44 | +0.26 | -0.24 |
| offers — trade offers and counters made | 18.33 | 10.86 | +0.26 | -0.33 |
| dms — private messages sent | 2.08 | 1.25 | +0.18 | -0.30 |
| avg_cash — mean cash at own turn starts | 806.40 | 677.65 | +0.17 | +0.01 |
| auction_paid_ratio — auction price paid / list price (mean) | 0.29 | 0.37 | -0.07 | -0.07 |
| low_cash_turns — share of own turns starting with < $150 | 0.20 | 0.22 | -0.06 | -0.19 |
| jail_fines_paid — times paid to leave jail early | 0.33 | 0.42 | -0.06 | +0.04 |
| trades_done — accepted trades (either side) | 3.75 | 3.47 | +0.06 | -0.17 |
| jail_rolls — times stayed and rolled in jail | 0.75 | 0.86 | -0.03 | -0.03 |
| mortgages — mortgages taken (excluding forced auto-liquidation) | 5.25 | 5.14 | +0.01 | +0.02 |

## By model

| model | games | wins | mean place | first monopoly (median round) | via trade | trades done | trade EV/game | DMs/game | invalid/game |
|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|
| deepseek-v3 | 12 | 0 | 3.25 | never | 4 | 44 | +1113 | 1.2 | 2.6 |
| gpt-6-astra | 12 | 5 | 2.00 | 8 | 10 | 52 | +610 | 1.9 | 0.2 |
| kimi-k2-5 | 12 | 0 | 3.00 | never | 3 | 25 | +1154 | 0.2 | 10.0 |
| opus-5-5 | 12 | 7 | 1.75 | 12 | 8 | 49 | +3128 | 2.5 | 0.0 |

## First monopoly group → win rate

| group | players | won |
|---|---:|---:|
| orange | 10 | 2 (20%) |
| brown | 6 | 0 (0%) |
| pink | 5 | 2 (40%) |
| lightblue | 4 | 4 (100%) |
| red | 4 | 2 (50%) |
| yellow | 2 | 1 (50%) |
| darkblue | 1 | 0 (0%) |
| green | 1 | 1 (100%) |

## Next step

Turn the strongest differences into bot traits and test them, e.g.:

```
uv run python -m arena sim trader 'threehouse,trader' 'focus:orange+red,trader' 'reserve:300,trader' --design vs --baseline trader --games 20000
```
