Welcome to the PokerML wiki

The feature-by-feature encyclopedia of PokerML, generated from commit 56ad610. 5 articles.

About PokerML

PokerML is a simulation-driven heads-up and multiplayer no-limit hold'em engine that blends heuristic game-tree search with configurable card and action abstractions to explore poker strategy. The engine is designed for researchers and strategy experimenters who want to inspect and modify poker abstractions, search depth, bet sizing, and range handling rather than a production solver. It implements Counterfactual regret minimization for iterative strategy training, Game state management to track poker hand state, Interactive play and self-play for human and bot gameplay, and Solver optimization to accelerate subgame solving.

(Full article...)

Game state management is the subsystem that tracks the state of a poker hand in PokerML, including current position, action history, and folded/all-in status, and exposes methods to apply actions and compute legal moves. It serves as the foundation for action handling, strategy lookup, and decision-making across Counterfactual regret minimization and Solver optimization, and also enables opponent modeling through tracking of historical actions and position.

(Full article...)

Did you know...

  • ... that web routes in server/app.py (e.g., GET /api/game/{sid}, POST /api/game/{sid}/action, GET /api/game/{sid}/range, GET /api/exploit/{seat}) manage game state via GameManager, apply actions to the GameState, and return strategy recommendations by looking up info sets in the compressed strategy dictionary using bucket indices? (Counterfactual regret minimization)
  • ... that get_actions() computes legal moves by calling get_legal_actions() from cfr/action_abstraction.py, which applies the action abstraction (bet sizing, raise caps) and returns tokens like 'k', 'c', 'b50', or 'a'? (Game state management)
  • ... that the SelfPlayMonitor class tracks aggregate statistics across hands including raw profit, duplicate-matched profit, action frequencies by street and position, and flags action frequencies that deviate from GTO target ranges? (Interactive play and self-play)
  • ... that preFlopEquities.json contains precomputed win probabilities for all two-card hand matchups, keyed by numeric hand notation with suit suffix ('s' for suited, 'o' for offsuit)? (Legacy card utilities)
  • ... that FastState replaces immutable GameState copies with in-place mutation and an undo stack, using bitmasks for folded, all_in, and has_acted instead of list copies? (Solver optimization)

Recently updated

Feature map

flowchart LR
  n0["Counterfactual regret minimization"]
  n1["Game state management"]
  n2["Interactive play and self-play"]
  n3["Legacy card utilities"]
  n4["Solver optimization"]
  n0 --- n1
  n0 --- n2
  n0 --- n4
  n1 --- n2
  n1 --- n3
  n1 --- n4
  n2 --- n4
  click n0 "/wiki/pokerml/wiki/counterfactual-regret-minimization/"
  click n1 "/wiki/pokerml/wiki/game-state-management/"
  click n2 "/wiki/pokerml/wiki/interactive-play/"
  click n3 "/wiki/pokerml/wiki/legacy-card-utilities/"
  click n4 "/wiki/pokerml/wiki/solver-optimization/"
Each box is an article; a line joins two articles when code in one calls or imports code in the other.

All articles lists every article as text.