Why ICM decides tournament money
In a cash game a chip is a fixed amount of money, so the best play is the one that wins the most chips. A tournament pays a ladder: first place takes a slice, second takes less, and everyone below the last paid place takes nothing. The chips you win are therefore worth less per chip than the chips you put at risk, because losing them ends your run while winning them only improves it.
The Independent Chip Model turns stacks into prize money. Feed it every player's chips and the payout structure and it returns what each stack is worth right now. Once you see decisions in that currency, calls that look routine turn into mistakes, and folds that feel weak turn out to be the profitable line. That shift is sharpest on the bubble, the point where one more player has to bust before anyone gets paid.
What the coach tells you
By default the table starts with 45,000 chips, 100/100 blinds and 20-minute levels, with a blind timer, a fast mode, and a choice of no ante, traditional ante or big-blind ante.
-
Exact ICM equity
Your stack converted into its share of the prize pool, worked out exactly for up to nine players, not estimated from samples.
-
Stage and bubble pressure
The engine reads the stage of the tournament and says when the bubble is pulling correct play away from simply winning the most chips, and by how much.
-
Risk premium
The extra equity you need before calling, given what busting would cost you at this payout.
-
Push/fold with a range matrix
Shove (all-in) and call ranges for short stacks, drawn as the full 13 by 13 grid of 169 starting hands.
-
SPR and board texture
Stack-to-pot ratio and a read on the board for the spots after the flop, not just preflop shoves.
-
Eight opponents with their own habits
Tight, aggressive, TAG (tight and aggressive), loose, LAG (loose and aggressive), passive, balanced and adaptive. None of them can see your cards or the cards still to come.
-
Explanation depth, and a test mode
The coach engine has three depths, BEGINNER, INTERMEDIATE and ADVANCED, and the app currently uses the most detailed one. Test mode stays quiet until you act, then grades the decision PREFERRED, ACCEPTABLE or SUBOPTIMAL.
-
Session review
Hand history, VPIP and PFR (how often you paid to play a hand, and how often you raised first in), aggression, how often you agreed with the coach, your ICM mistakes, results by position and stack depth, and your biggest leak.
ICM, bubble pressure and risk premium in plain terms
Five ideas cover most of what the coach says at the table.
- ICM, the Independent Chip Model
- A way of converting a stack into the share of the prize pool it is worth, from every player's chip count and the payout structure.
- Chips you win are worth less than the chips you risk, because the players below you still get paid. What is worth the most in chips and what is worth the most in money stop agreeing the moment the payouts stop being flat.
- Four players left, equal stacks, a prize pool that pays 50, 30 and 20 percent. Everyone holds a quarter of the chips and a quarter of the money. Double up through someone and your chip share doubles, your prize share does not come close.
- The bubble
- The stretch just before the money, when one more player has to go out before anyone gets paid.
- Everyone's equity rises when somebody else busts, so surviving is briefly worth more than accumulating. Short stacks fold hands they would shove at any other point, and the big stacks can attack almost anything.
- Eleven players left, ten get paid. The 10 big blind stack folds ace-nine offsuit from the cutoff seat, because two shorter stacks are one hand away from busting and the pay jump belongs to whoever outlasts them.
- Risk premium
- The extra equity you need on top of a call that would break even in chips, because busting costs you more prize money than the pot gives back.
- It is the reason a call that is right in a cash game is wrong in a tournament. Facing a stack that covers you near the bubble, the premium can add ten percentage points or more to the equity you need.
- The pot is laying you odds that need 40 percent equity. Add a 7 percentage point risk premium and you need 47 percent, so the hand that beat the pot odds gets folded instead.
- Push/fold
- The short-stack game, where the only two moves worth making are all-in (betting everything you have) or fold, and the right one can be solved rather than guessed.
- Under about 15 big blinds a small raise commits you anyway, so the raise size stops mattering and the range does all the work. This is the spot you meet most often late in a tournament.
- Eight big blinds on the button, folded to you. The engine shows the hands that shove for a profit, then what the blinds can call with against that range.
- SPR, stack-to-pot ratio
- The effective stack divided by the size of the pot once the flop is out.
- It tells you how much room is left to play. At a low SPR, top pair already means betting your whole stack. At a high SPR, one pair is rarely worth your tournament life.
- A 12 big blind stack behind a 6 big blind pot is an SPR of 2. One bet and one raise and the chips are in the middle, so decide on the flop, not the river.
Run it on your computer
ICM Master is two programs. One runs the game, one draws the table in your browser, and both need to be running before a hand can be dealt. Three commands, and you keep two of them running in two terminal windows.
What you need
- Python 3.12 and uv
- Node and npm
- Docker, only if you want to keep your hand history between restarts
The steps
- Download the code. This creates a poker-icm-coach folder.
git clone https://github.com/Mehrdadabedin/poker-icm-coach - Start the game server. Leave it running. It reports that it is listening on port 8000.
cd backend && uv run uvicorn app.main:app --reload - Start the browser app, in a second terminal. It shows an address beginning http://localhost. Open that, create an account, and you can deal a hand.
cd frontend && npm install && npm run dev - Optional, add a database so your hands survive a restart. Run this before you start the game server.
docker compose up -d postgres && cd backend && uv run alembic upgrade head
You can skip the database. Without it, your table and your sign-in are held in memory only, so restarting the game server ends whatever you were playing. Nothing is lost that you cannot deal again.
How it is built
React, TypeScript and Vite on the front. Python 3.12, FastAPI, Pydantic v2 and SQLAlchemy 2 on the back, with PostgreSQL through Alembic migrations when you want it. Capacitor packages the same frontend for Android.
The backend owns every piece of game state and the frontend renders snapshots of it, which is what keeps the opponents honest. They decide from the same public information you have, never from your hole cards and never from cards that have not been dealt yet. Tests on both sides cover concurrency, ICM equity, the coaching engine and the API.