Skip to main content

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