sidePotLayerTournamentEvDelta
Per side-pot layer: hero chip EV from layer equity and Harville ICM win/lose/marginal tournament-dollar swing.
sidePotLayerTournamentEvDelta(tableStacks: F64VectorInput, payouts: F64VectorInput, heroIndex: number, committedChips: F64VectorInput, equityPlayerByLayer: number[][] | Float64Array): SidePotLayerTournamentEvRow[]
equityPlayerByLayer[seat][layer] is hero's equity in that layer (0–1). See Float64 ICM input.
Import
const poker = require('poker-calculations');
ESM (Node):
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const poker = require('poker-calculations');
When to use
A multiway pot has side-pot layers and you need both chip EV and ICM marginal value per layer for the hero — after building a ladder from commitments and supplying per-layer equities.
How to use
const poker = require('poker-calculations');
const committed = [5000, 5000, 2000, 2000];
const layers = poker.sidePotLadderFromCommitments(committed);
const equityByLayer = [
[0.6, 0.4],
[0.55, 0.45],
[0.5, 0.5],
[0.5, 0.5],
];
const rows = poker.sidePotLayerTournamentEvDelta(
[12000, 9000, 6000, 3000],
[10000, 6000, 3000, 1000],
0,
committed,
equityByLayer,
);
rows.forEach((row, i) => {
console.log('Layer', i, 'pot', layers[i].potChips, 'chipEv', row.chipEv, 'icmMarginal', row.icmMarginal);
});
Row order matches layers from sidePotLadderFromCommitments.
Return type
SidePotLayerTournamentEvRow[] — one row per layer.
See also
sidePotLadderFromCommitments · SidePotLayer · icmExpectedPayouts