← Back to Projects

AI Poker Bot - Jump Trading Poker Competition

Jump Trading x CMU AI Poker Tournament 2026

PythonGame TheoryBayesian InferenceMonte Carlo2026

Built a competitive AI poker agent for the Jump Trading x CMU AI Poker Tournament 2026, competing against 100+ teams in an ELO-ranked tournament. The game is a modified Texas Hold'em variant played on a 27-card deck (ranks 2-9 and Ace, three suits only) with a unique discard mechanic where players receive 5 hole cards, discard 3 after the flop, and discards are revealed to the opponent.

80,730
Hand Table
C(27,5) precomputed
100+
Teams
ELO-ranked matches
12+
Opponent Metrics
VPIP, PFR, AF, WTSD...
27
Card Deck
3 suits, ranks 2-9 + A

System Architecture

Entry Point

PlayerAgent

Input

State Parser

Game state decoding

Intel

Opponent Tracker

Bayesian profiling

Safety

Bankroll Manager

Lock-in logic

Strategy Engine

Pre-flop StrategyPost-flop StrategyDiscard OptimizerExploit Engine

Core Engine

Hand Evaluator (80,730 table)Equity CalculatorMonte Carlo Sampler

Opponent Classification

Bayesian profiling classifies opponents in real-time, adjusting strategy thresholds dynamically.

Nit

VPIP < 20%

Bluff more

TAG

VPIP 20-30%

Respect raises

LAG

VPIP 30-45%

Trap & call

Station

VPIP 45-60%

Value bet heavy

Maniac

VPIP > 60%

Let them hang

Decision Pipeline

STEP 1

Pre-flop Hand Scoring

Score 5-card hands via pairs/trips bonus, suit concentration, connectivity, high cards, and flexibility. Map to percentile from 80,730 precomputed rankings.

score = pairs + trips + suit_bonus + connectivity + high_card + flexibility
STEP 2

Position-Aware Action Selection

Separate thresholds for Small Blind (discards 2nd, info advantage) and Big Blind (discards 1st, info disadvantage). Adjusts raise sizing and frequency by position.

SB: raise_thresh=0.65 | BB: raise_thresh=0.72 (tighter)
STEP 3

Discard Phase

Select optimal 2-card keep from 5 hole cards. Evaluate each of 10 combinations via equity against estimated opponent range, penalizing information leakage.

C(5,2) = 10 keeps -> heuristic filter -> equity eval top-k
STEP 4

Post-flop Equity-Based Betting

Compute real-time equity against Bayesian-weighted opponent range. Exploit calling stations with value bets, bluff nits more aggressively.

action = f(equity, pot_odds, opponent_type, position)
STEP 5

Bankroll Lock-in

When sufficiently ahead, calculate worst-case blind losses for remaining hands and lock in the win by folding everything - a mathematically guaranteed victory condition.

if bankroll - (remaining_hands * big_blind) > opponent_bankroll: FOLD_ALL

Equity Computation Approach

Exact Enumeration

Enumerate all possible opponent hands and board completions. Precise but computationally expensive.

Accuracy
Exact
Speed
Slow

Used for: discard phase, small remaining decks

Monte Carlo Sampling

Random sampling with configurable iteration limits. Fast approximation for time-critical decisions.

Accuracy
~92-98%
Speed
Fast

Used for: post-flop betting, large search spaces

Discard Optimization

5

Hole Cards

10

Possible Keeps

2

Cards Kept

1

Heuristic scoring of all 10 keeps (pair quality, flush potential, straight draws)

2

Top-k filter narrows to best 3-4 candidates

3

Exact equity evaluation of top candidates against opponent range

4

Information leak penalty - discards are revealed, so penalize keeps that leak hand strength

Tournament Format

Jump Trading x CMU AI Poker Tournament 2026

Open Season

March 14-21, 2026

ELO-ranked matchmaking, ~116 matches/day

Finals

March 22, 2026

Top 10 teams, 1000-hand matches

Compute Phases

3 Phases

1 vCPU / 500s → 4 vCPU / 1500s

Iteration History

v1.0Baseline

Basic hand evaluation and simple threshold-based betting. Established the agent framework and game engine integration.

v2.0Equity Engine

Added exact equity computation and precomputed hand lookup tables. Implemented heuristic-based discard selection.

v3.0Opponent Modeling

Introduced opponent tracking with 12+ metrics and dynamic strategy adjustment. Added Bayesian range weighting from revealed discards.

v4.0Final

Monte Carlo sampling for speed, modular strategy architecture (preflop/postflop/discard/exploit), NumPy-based tracking, and bankroll lock-in logic.