Inspiration
The TAMU Datathon Poker Bot Challenge: write a bot for Heads-Up Short Deck 5-Card Pot-Limit Omaha. Poker means deciding without seeing the opponent's cards, and one hand can swing 40 big blinds. We wanted a bot that decides from the numbers.
What it does
DoubleStack is a small web server the referee calls for each decision. It answers fold, call, raise half pot, or raise pot.
How we built it
- Odds from simulation: it estimates its win chance by simulating thousands of random opponent hands. A precomputed score table makes this fast, about 1.5 µs per simulated hand.
- Pot odds: it only continues if its win chance beats the price of the bet, $p > \frac{c}{P+c}$.
- Opponent model: it learns from showdowns how strong the opponent's bets are, and steals more from players who fold too often.
- Neural-network advisor: a small network trained on 6.5 million self-play decisions predicts the chips each action wins, and overrides the rules only when it sees a clear gain.
- Time budget: it measures its own speed and adapts to stay within 8 seconds per half.
Challenges
- Our first simulation was 20 times too slow, so we precomputed every 2-hole-card plus 3-board-card score.
- A stress test on a slow machine made the bot collapse, so we rewrote its time handling.
- Our training data came out 30 times too large because of a logging bug, which we caught by checking the row count.
- All our test opponents were bots we wrote, so we can't be sure the results carry over to other teams.
What we learned
Duplicate matches (same cards, seats swapped) cancel most of the luck. Speed matters as much as strength. A learned model works best as an advisor with a safety margin.