ICM calculation with Equity vs Opponent Hand Range in HU

ICM calculation with Equity vs Opponent Hand Range in HU

Is my model correct for the icm calculation using opponent ranges for call or push?

Calculus for the CALL (we don't use the pcg of the shove because we use the equity = our hand vs opponent range):

TOT_CHIPS_IN_GAME = 100 # hero stack + villain stack
HERO_STACK = 30
VILLAIN_STACK = 70
EQUITY_WIN = .59 # T9s vs 30% Shove range with 59% of equity call
EQUITY_LOSE = 1 - EQUITY_WIN
SB = 1
BB = 2

100$ HU without rake

AMT_WIN = 100 # 100$
AMT_LOSE = 100

EV Fold

ICM_HERO_STACK = (HERO_STACK - BB) # Convert to ICM
ICM_VILLAIN_STACK = (VILLAIN_STACK + BB) # Convert to ICM
EV_FOLD = (ICM_HERO_STACK / TOT_CHIPS_IN_GAME) * AMT_WIN - (ICM_VILLAIN_STACK / TOT_CHIPS_IN_GAME) * AMT_LOSE

IF (HERO_STACK > VILLAIN_STACK) {
STACK_IF_LOSE = HERO_STACK - VILLAIN_STACK
VILLAIN_STACK_IF_WIN = VILLAIN_STACK * 2

EV_WIN = AMT_WIN
EV_LOSE = (STACK_IF_LOSE / TOT_CHIPS_IN_GAME) * AMT_WIN - (VILLAIN_STACK_IF_WIN / TOT_CHIPS_IN_GAME) * AMT_LOSE
} ELSE {
STACK_IF_WIN = HERO_STACK * 2 # If we have less chips, we double up
EV_WIN = (STACK_IF_WIN / TOT_CHIPS_IN_GAME) * AMT_WIN
EV_LOSE = -AMT_LOSE # We lose, so the payout doesn't use ICM
}

EV_CALL = EQUITY_WIN * EV_WIN + EQUITY_LOSE * EV_LOSE

IF (EV_CALL > EV_FOLD) {
we call
} else {
we fold
}

Calculus for the SHOVE:

PCG_FOLD = .5 # The percentage that opponent folds
PCG_CALL = 1 - PCG_FOLD
TOT_CHIPS_IN_GAME = 100 # hero stack + villain stack
HERO_STACK = 30
VILLAIN_STACK = 70
EQUITY_WIN = .59 # T9s vs 30% Shove range with 59% of equity call
EQUITY_LOSE = 1 - EQUITY_WIN
SB = 1
BB = 2

100$ HU without rake

AMT_WIN = 100 # 100$
AMT_LOSE = 100

EV Fold

ICM_HERO_STACK_IF_FOLD = (HERO_STACK - SB) / TOT_CHIPS_IN_GAME
ICM_VILLAIN_STACK_IF_HERO_FOLD = (VILLAIN_STACK + SB) / TOT_CHIPS_IN_GAME
EV_FOLD = (ICM_HERO_STACK_IF_FOLD * AMT_WIN) - (ICM_VILLAIN_STACK_IF_HERO_FOLD * AMT_LOSE)

EV Push

ICM_HERO_STACK_IF_VILLAIN_FOLD = (HERO_STACK + BB) / TOT_CHIPS_IN_GAME
ICM_VILLAIN_STACK_IF_FOLD = (HERO_STACK - BB) / TOT_CHIPS_IN_GAME

EV_FOLD_VILLAIN = (ICM_HERO_STACK_IF_VILLAIN_FOLD * AMT_WIN) - (ICM_VILLAIN_STACK_IF_FOLD * AMT_LOSE)

IF (HERO_STACK > VILLAIN_STACK) {
STACK_IF_LOSE = HERO_STACK - VILLAIN_STACK
VILLAIN_STACK_IF_WIN = VILLAIN_STACK * 2

EV_WIN = AMT_WIN
EV_LOSE = (STACK_IF_LOSE / TOT_CHIPS_IN_GAME) * AMT_WIN - (VILLAIN_STACK_IF_WIN / TOT_CHIPS_IN_GAME) * AMT_LOSE
} ELSE {
STACK_IF_WIN = HERO_STACK * 2 # If we have less chips, we double up
EV_WIN = (STACK_IF_WIN / TOT_CHIPS_IN_GAME) * AMT_WIN
EV_LOSE = -AMT_LOSE # We lose, so the payout doesn't use ICM
}

EV_CALL = EQUITY_WIN * EV_WIN + EQUITY_LOSE * EV_LOSE
EV_PUSH = PCG_FOLD * EV_FOLD_VILLAIN + PCG_CALL * EV_CALL

IF (EV_PUSH > EV_FOLD) {
we push
} else {
we fold
}

Are my formulas correct?

23 March 2025 at 05:52 PM
Reply...