$ ~/aibattle/holdem/match

🃏 Hold'em Match · Heads-up · 20-60 matches/pair · 62 pair logs · 3020 total matches · up to 30 hands/match · stacks carried, match-level winner · primary metric: match win rate
🎬 Watch featured replays →

Setup — Hold'em Match

Standard heads-up No-Limit Texas Hold'em (full rules on Wikipedia); the difference from 1-Hand is that here a whole sit-and-go match is the unit, not a single hand:
Win-or-lose by design — chips don't count past the match outcome — so the Elo rates match wins/losses, opponent-adjusted. Match win rate is the headline metric.
What the model sees each turn: the match score (which hand of the cap, and each side's chips), its own two hole cards, the community board, the pot and both stacks, its position, the bet it faces, the legal actions, and the action history — never the opponent's cards.

1 · Results — who won

Leaderboard (ranked by Elo; raw metrics kept for reference)

#modelElowin%wins/matches drawsbust-out%hands/matchavg win marginmatchestokens/dec$/1K dec
1GPT 5.51607
±19
65%235/360017%26.9138.2360
2GPT 5.41579
±18
61%220/360012%28.0124.4360
3Kimi K2.61533
±14
56%302/540010%27.5151.25407,166$28.66
4GLM-5.11530
±14
56%300/54008%28.6117.45403,056$13.45
5DeepSeek V4 Pro1515
±14
53%287/54004%29.1111.45401,159$4.03
6GLM-5.21503
±13
51%266/52008%28.6148.45201,454$6.40
7Claude Sonnet 4.61492
±16
48%197/410015%26.6186.6410
8MiniMax-M31443
±15
42%217/520110%27.7197.95202,236$2.68
9Claude Opus 4.81441
±16
40%165/410112%26.5206.4410
10MiniMax-M2.71432
±16
42%167/400212%27.9167.24006,027$7.23
11Qwen3.7 Plus1424
±15
39%201/52025%29.0141.35201,166$1.87
columns: Elo opponent-adjusted rating · win% matches won · wins/matches won / played · draws matches drawn · bust-out% matches losing all chips · hands/match avg hands/match · avg win margin avg chip margin in wins · matches matches played (varies by wave)

Head-to-head (row's match win % vs column — green = winning, red = losing; raw record below)

GPT 5.5GPT 5.4Kimi K2.6GLM-5.1DeepSeek V4 ProGLM-5.2Claude Sonnet 4.6MiniMax-M3Claude Opus 4.8MiniMax-M2.7Qwen3.7 Plus
GPT 5.555%22/4052%21/4062%25/4078%31/4055%22/4068%27/4072%29/4075%30/4070%28/40
GPT 5.445%18/4042%17/4060%24/4078%31/4072%29/4072%29/4052%21/4058%23/4070%28/40
Kimi K2.648%19/4058%23/4047%28/6053%32/6055%33/6058%29/5063%38/6054%27/5057%34/6065%39/60
GLM-5.138%15/4040%16/4053%32/6037%22/6062%37/6050%25/5067%40/6068%34/5073%44/6058%35/60
DeepSeek V4 Pro22%9/4022%9/4047%28/6063%38/6057%34/6054%27/5052%31/6054%27/5077%46/6063%38/60
GLM-5.245%18/4028%11/4045%27/6038%23/6043%26/6055%22/4067%40/6075%30/4055%33/6060%36/60
Claude Sonnet 4.632%13/4028%11/4042%21/5050%25/5046%23/5045%18/4048%19/4065%26/4070%14/2068%27/40
MiniMax-M328%11/4048%19/4037%22/6033%20/6048%29/6033%20/6052%21/4040%16/4050%30/6048%29/60
Claude Opus 4.825%10/4042%17/4046%23/5032%16/5046%23/5025%10/4035%14/4060%24/4050%10/2045%18/40
MiniMax-M2.743%26/6027%16/6023%14/6045%27/6030%6/2050%30/6045%9/2065%39/60
Qwen3.7 Plus30%12/4030%12/4035%21/6042%25/6037%22/6040%24/6032%13/4050%30/6055%22/4033%20/60

2 · Why — what makes a model win or lose matches

How each model wins — and how it loses. Every match ends one of four ways; this bar splits each model's matches into them, wins on the left, losses on the right (so the green→red edge is its win rate):
bust-win — busted the opponent cap-win — out-chipped them over 30 hands cap-lose — behind on chips at the cap (ground down) bust-out — busted out
A wide cap-win block = a grinder that out-chips opponents; a wide cap-lose block = it gets slowly ground down; a wide bust-out block = it busts out a lot (high variance).

1. GPT 5.5

65%match win
Strong — aggressive; high-variance (busts out a lot); fights back when behind.
bust-win 10%cap-win 55%cap-lose 18%bust-out 17%

2. GPT 5.4

61%match win
Strong — aggressive; fights back when behind.
bust-win 6%cap-win 55%cap-lose 27%bust-out 12%

3. Kimi K2.6

56%match win
Strong.
bust-win 11%cap-win 45%cap-lose 34%bust-out 10%

4. GLM-5.1

56%match win
Strong — fights back when behind.
bust-win 7%cap-win 48%cap-lose 36%bust-out 9%

5. DeepSeek V4 Pro

53%match win
Mid — steady (rarely busts out).
bust-win 6%cap-win 47%cap-lose 42%bust-out 4%

6. GLM-5.2

51%match win
Mid — steady (rarely busts out).
bust-win 10%cap-win 41%cap-lose 41%bust-out 8%

7. Claude Sonnet 4.6

48%match win
Mid — high-variance (busts out a lot); freezes when short (11%).
bust-win 14%cap-win 34%cap-lose 37%bust-out 15%

8. MiniMax-M3

42%match win
Weak.
bust-win 13%cap-win 29%cap-lose 48%bust-out 10%

9. Claude Opus 4.8

40%match win
Weak — freezes when short (6%).
bust-win 15%cap-win 26%cap-lose 48%bust-out 12%

10. MiniMax-M2.7

42%match win
Weak — high-variance (busts out a lot).
bust-win 11%cap-win 31%cap-lose 45%bust-out 12%

11. Qwen3.7 Plus

39%match win
Weak — very passive (rarely raises); steady (rarely busts out).
bust-win 7%cap-win 32%cap-lose 56%bust-out 5%

⚖️ Gear-shift: ahead vs behind (does it change how it plays when losing?)

Well sampled (every decision). Each cell is when ahead → when behind (change). Aggression = (bet+raise+all-in) ÷ (bet+raise+all-in+call+check), folds excluded; fold-to-bet = how often it folds when facing a bet. Strong players shift gears when behind — they raise more (aggression ↑) and fold less to bets (fold-to-bet ↓), i.e. they fight for pots; the change is green when it shifts toward fighting, red when it backs off. Weak players show ≈0 — they play the same whether winning or losing.
modelaggression (ahead → behind) fold-to-bet (ahead → behind)
GPT 5.534% → 51% (+17)24% → 16% (-8)
GPT 5.431% → 52% (+21)28% → 16% (-12)
Kimi K2.629% → 38% (+9)40% → 33% (-7)
GLM-5.120% → 32% (+12)38% → 32% (-6)
DeepSeek V4 Pro23% → 33% (+10)47% → 43% (-4)
GLM-5.223% → 32% (+9)33% → 26% (-7)
Claude Sonnet 4.629% → 32% (+3)30% → 29% (-1)
MiniMax-M326% → 28% (+2)30% → 25% (-5)
Claude Opus 4.825% → 25% (0)19% → 19% (0)
MiniMax-M2.730% → 37% (+7)30% → 25% (-5)
Qwen3.7 Plus14% → 16% (+2)34% → 34% (0)

📊 Lead trajectory (each row = a model; 30 blocks = hands 1→30; block colour = share of matches it is ahead / behind on chips after that hand)

A row that stays green across = wire-to-wire leader; green that reddens left→right = front-runs then gets ground down; green in the middle that reddens at the end = builds a lead but can't close it; all red = behind the whole match. The last block ≈ the model's match win rate.
behind ≤35%ahead ≥65% 50% = even
hand →151015202530
GPT 5.565%
GPT 5.461%
Kimi K2.656%
GLM-5.156%
DeepSeek V4 Pro53%
GLM-5.251%
Claude Sonnet 4.648%
MiniMax-M342%
Claude Opus 4.840%
MiniMax-M2.742%
Qwen3.7 Plus39%

3 · Analysis

A 30-hand match is usually won by leading at the hand cap, not by busting the opponent — so the edge is chip management: fighting back when behind, gear-changing as stacks get short, and not blowing up a whole match in one hand. Note a real limitation of this fixed dataset: the strong models rarely reach a short stack at all (they protect their chips), so their short-stack columns are based on very few decisions — greyed cells (n<30) are suggestive, not conclusive. We can't add more matches, so we read those honestly.

🪜 Aggression by stack depth (does it push/fold when short?)

Aggression = (bet+raise+all-in) ÷ (bet+raise+all-in+call+check), folds excluded — bucketed by effective stack: deep ≥40bb · mid 15–40bb · short <15bb (push-fold territory). Greener = more aggressive; greyed cells have n<30 (too few decisions — read as suggestive). The n on the short column doubles as an exposure signal: the top models barely appear there because they rarely get short-stacked.
modeldeep (≥40bb)midshort (<15bb)
GPT 5.540%
n=23054
37%
n=494
86%
n=14
GPT 5.440%
n=24339
32%
n=697
24%
n=41
Kimi K2.633%
n=29639
24%
n=755
30%
n=76
GLM-5.127%
n=32978
25%
n=766
50%
n=12
DeepSeek V4 Pro28%
n=29410
21%
n=334
46%
n=13
GLM-5.228%
n=34003
26%
n=507
18%
n=55
Claude Sonnet 4.631%
n=24456
24%
n=891
11%
n=65
MiniMax-M328%
n=32922
22%
n=998
35%
n=69
Claude Opus 4.826%
n=28430
18%
n=1284
6%
n=81
MiniMax-M2.734%
n=24474
35%
n=553
33%
n=33
Qwen3.7 Plus15%
n=35614
12%
n=782
0%
n=28

🧪 Decision quality (experimental — uses each model's hole-card equity vs a random hand; the opponent's range is never known, so read this as a gross, range-free signal, not exact EV)

Does it bluff, or only bet strong hands?

bluff rate = share of its bets/raises made with weak cards (<40% equity); bluff success = of those bluffs, how often the opponent actually folds; avg equity when betting = how strong its cards are, on average, when it fires. A model that only bets strong hands (low bluff rate, high avg equity) is predictable and easy to fold to; mixing in bluffs is a sign of skill. corr with win%: bluff rate +0.61 (more bluffing ↔ winning), avg-equity-when-betting -0.64 (only-bet-strong ↔ losing); bluff success -0.12 (not a skill signal).
modelbluff rate (<40% eq)bluff success avg equity when bettingn
GPT 5.59%46%58%4471
GPT 5.410%38%56%5180
Kimi K2.64%36%59%6675
GLM-5.14%41%63%4122
DeepSeek V4 Pro4%41%61%4908
GLM-5.24%55%65%3665
Claude Sonnet 4.62%59%65%3004
MiniMax-M34%42%61%4993
Claude Opus 4.81%46%65%3490
MiniMax-M2.79%46%60%3344
Qwen3.7 Plus1%37%66%2912

🎭 Player behaviour profiles

#modelVPIPPFRaggrfold→betbet sizeall-in%WTSDW@SDhand-wintokens/dec
1GPT 5.576%38%40%21%1.09x1%27%45%59%294
2GPT 5.475%44%40%23%1.02x0%31%48%55%905
3Kimi K2.660%43%33%37%1.25x0%29%52%41%7,166
4GLM-5.161%21%27%36%1.06x0%29%50%40%3,056
5DeepSeek V4 Pro51%28%28%45%1.25x0%25%57%37%1,159
6GLM-5.268%17%28%29%1.19x0%31%42%44%1,454
7Claude Sonnet 4.668%20%30%29%1.01x1%29%38%46%157
8MiniMax-M361%30%28%28%1.26x0%35%43%44%2,236
9Claude Opus 4.874%26%25%19%1.10x1%42%39%48%55
10MiniMax-M2.763%22%34%28%1.09x1%30%41%48%6,027
11Qwen3.7 Plus64%17%15%34%1.10x0%37%56%36%1,166
VPIP = voluntarily entered the pot preflop (looseness). PFR = preflop raise. aggr = aggression = (bet+raise+all-in) ÷ (bet+raise+all-in+call+check); folds are excluded. fold→bet = folds when facing a bet. bet size = avg bet/raise as a multiple of the pot. WTSD = went to showdown; W@SD = won at showdown. hand-win = share of hands that netted chips. tokens/dec = avg reasoning tokens per decision.

🎭 Style map (VPIP vs aggression — top-right = loose & aggressive; aggression = (bet+raise+all-in) ÷ (bet+raise+all-in+call+check), folds excluded)

🧮 Thinking effort (avg reasoning tokens / decision)

🃏 Action mix (% of all decisions)

📈 Aggression by street (aggression = (bet+raise+all-in) ÷ (bet+raise+all-in+call+check), folds excluded; darker = more aggressive)

preflopflopturnriver
GPT 5.538474229
GPT 5.445424025
Kimi K2.654252214
GLM-5.125292823
DeepSeek V4 Pro38262415
GLM-5.219373324
Claude Sonnet 4.621393727
MiniMax-M336252518
Claude Opus 4.826312120
MiniMax-M2.725403933
Qwen3.7 Plus19141311