#1
|
|||
|
|||
ICM, because I don\'t have a degree in mathematics...
I've read dethgrind's clinic on ICM in the FAQ. I've bought SnGPT's and use it to review hands to see where my pushes or called pushes have been right and wrong...so I'm trying to develop an "instinct" for when to push, when to call, etc.
However, I know some in this forum can actually do the calculations in real time (since plugging the data into SnGPT's isn't practical while 4+ tabling). So, to those of you that skilled/experienced...are there some mathematical shortcuts that you use to be able to recognize your +EV pushes/calls...or is it just going through enough examples that you start to recognize situations which are ICM-similar? |
#2
|
|||
|
|||
Re: ICM, because I don\'t have a degree in mathematics...
i'm going to go out on a limb here and say that no one here can do the calculations in real time.
citanul |
#3
|
|||
|
|||
Re: ICM, because I don\'t have a degree in mathematics...
[ QUOTE ]
I know some in this forum can actually do the calculations in real time [/ QUOTE ] i highly doubt that. icm is pretty complicated. here's my tip for doing chipEV calcs in real time (then you have do a fudge factor to get to $EV). suppose i raise to 150 at the 25/50 level and the BB pushes for 800. my 150, his 150, and the SB's 25 are all dead money, for a total of 325. i have to call 650 more. the bet is 2x the pot, so i need to be 40% to be neutral chip EV. i'll need to be more to be neutral $EV, but i just take a guess on how much. if the bet equals the pot, 33%, 1/2 pot 25%. you can do others, but those are good rules of thumb. |
#4
|
|||
|
|||
Re: ICM, because I don\'t have a degree in mathematics...
The first day I bought eastbay's calc, I actually sat down and ran through just about every hand in the small blind and on the button at every stack level and every range. I made a chart with the results and studied it until I knew enough about the numbers to basically understand where my hand stands against an opponents likely range and what kind of odds I need to betting to push or call. I don't think anyone can do the calcs in real time, but if you put some effort into it, you can make a pretty accurate real time decision. Think of it as memorizing your multiplication tables [img]/images/graemlins/smile.gif[/img]
|
#5
|
|||
|
|||
Re: ICM, because I don\'t have a degree in mathematics...
Unless you're Rainman, I doubt you could do more than as heads-up ICM calculation in real time.
|
#6
|
|||
|
|||
Re: ICM, because I don\'t have a degree in mathematics...
You guys don't do ICM in your head? Come on, this is all you have to do:
[ QUOTE ] function go() { MAXPLAYERS = 10; ITM_SPOTS = 3; stacks = new Array(MAXPLAYERS); payout = new Array(ITM_SPOTS); totalChips = 0; for (i = 0; i < MAXPLAYERS; i++) { // the even inputForm elements are the input fields stacks[i] = parseInt(document.inputForm.elements[2*i].value); if (isNaN(stacks[i])) { stacks[i] = 0; } totalChips += stacks[i]; } document.inputForm.total.value = totalChips; for (i = 0; i < ITM_SPOTS; i++) { payout[i] = parseFloat(document.payoutForm.elements[i].value); if (isNaN(payout[i])) { payout[i] = 0; } } totalFinish = new Array(MAXPLAYERS); for (i = 0; i < MAXPLAYERS; i++) { totalFinish[i] = new Array(0,0,0); } getResults(totalFinish, stacks, totalChips); for (i = 0; i < MAXPLAYERS; i++) { EV = 0; for (j = 0; j < ITM_SPOTS; j++) { EV += payout[j]*totalFinish[i][j]; } // the odd inputForm elements are the output fields, despite the name "inputForm" EV = Math.round(EV*10000)/10000; document.inputForm.elements[2*i+1].value = EV; } } function getResults(totalFinish, stacks, totalChips) { //get first place results for (i = 0; i < MAXPLAYERS; i++) { totalFinish[i][0] = 0; totalFinish[i][1] = 0; totalFinish[i][2] = 0; if (totalChips != 0) { totalFinish[i][0] = stacks[i]/totalChips; } } //get second place results for (i = 0; i < MAXPLAYERS; i++) { // i is first if (stacks[i] > 0) { tempTotal = totalChips - stacks[i]; for (j = 0; j < MAXPLAYERS; j++) { // j is second if (j != i) { if (tempTotal != 0) { totalFinish[j][1] += stacks[j]/tempTotal * totalFinish[i][0]; } } } } } //get third place results for (i = 0; i < MAXPLAYERS; i++) { // i is first if (stacks[i] > 0) { for (j = 0; j < MAXPLAYERS; j++) { // j is second if (j != i && stacks[j] > 0) { tempTotal = totalChips - stacks[i] - stacks[j]; for (k = 0; k < MAXPLAYERS; k++) { // k is third if (k != i && k != j) { if (tempTotal != 0) { totalFinish[k][2] += stacks[k]/tempTotal * totalFinish[i][0] * stacks[j]/(tempTotal+stacks[j]); // Probability of k getting third times probability of i // getting first times probability of j getting 2nd given // i got first. Get it? } } } } } } } } [/ QUOTE ] |
#7
|
|||
|
|||
Re: ICM, because I don\'t have a degree in mathematics...
Perl is sexier.
|
#8
|
|||
|
|||
Re: ICM, because I don\'t have a degree in mathematics...
[ QUOTE ]
sub icm { my ($s_a, $total, $data) = (shift, 0, []); $total += $_ foreach (@$s_a); $data->[$_] = { stack => $s_a->[$_], 0 => $s_a->[$_] / $total } foreach (0 .. $#$s_a); foreach my $i (0 .. $#$s_a) { next unless ($s_a->[$i] > 0); my $temp = $total - $s_a->[$i]; foreach my $j (0 .. $#$s_a) { next unless ($j != $i); $data->[$j]->{1} += $s_a->[$j] / $temp * $data->[$i]->{0};} } foreach my $i (0 .. $#$s_a) { next unless ($s_a->[$i] > 0); foreach my $j (0 .. $#$s_a) { next unless ($j != $i && $s_a->[$j] > 0); my $temp = $total - $s_a->[$i] - $s_a->[$j]; foreach my $k (0 .. $#$s_a) { next unless ($k != $i && $k != $j); $data->[$k]->{2} += $s_a->[$k] / $temp * $data->[$i]->{0} * $s_a->[$j] / ($temp + $s_a->[$j]); } } } $_->{ev} = .5 * $_->{0} + .3 * $_->{1} + .2 * $_->{2} foreach (@$data); return $data; } [/ QUOTE ] Ugg. |
#9
|
|||
|
|||
Re: ICM, because I don\'t have a degree in mathematics...
well, *I* do it in my head. but i didn't expect others did.
citanul |
#10
|
|||
|
|||
Re: ICM, because I don\'t have a degree in mathematics...
Hmm let's see how far we can take this...
Lisp is sexier. |
|
|