Skip to forum
Notifications
Clear all

How to compute prize pool equity

5 Posts
2 Users
0 Reactions
1,881 Views
MisterHomes
Joined: 12.09.2008
PokerStrategist

Hi all.

I play a lot of DONs and I am interested in studying them further. I am currently trying to write my own software to do some database analysis, and as part of this I am hoping to determine how to compute equity based on chip stacks.

For example, if the tournament is a 6max 10$ DON, and there are 4 people left with stacks

2000
2500
3000
1500

What equations should I be using to compute each player's equity of the prize pool? Remember that this is a DON and each places 1-3 pay the same.


Reply
Quote
4 replies
MisterHomes Topic starter
MisterHomes
Joined: 12.09.2008
PokerStrategist

So I found this website...

http://www.thehendonmob.com/matthew_hilger/tournament_equity

I made a program to do this calculation. For the example above with stacks

2000
2500
3000
1500

In a 6 max DON with 5$ buyin I get the following equity results:

7.30$
8.06$
8.55$
6.09$

Can anyone verify that I am doing this correctly?


Reply
Quote
Optroot
Joined: 11.05.2008
PokerStrategist

What language are you using? I think I have one in C, python, and maybe a couple more if you need them.

Your numbers are correct BTW, verified with http://www.icmpoker.com/Calculator.aspx

If you are only considering 6max DONs, you could definitely work out a closed form formula. ICM doesn't get really ugly until 4+ payouts.


Reply
Quote
MisterHomes Topic starter
MisterHomes
Joined: 12.09.2008
PokerStrategist

I am using C, here is the code I wrote in case you are knowledgeable in such an area:

double *DONequitycalc(double *chipcounts, int numplayers, double prizepool, double placespaid)
{
int i,j,k;

double p1[numplayers+1]; //probability of getting first based on ICM
double p2[numplayers+1]; //probability of getting second based on ICM
double p3[numplayers+1]; //probability of getting third based on ICM

double totalchips; //total chips in play

double *equity = malloc(numplayers * sizeof(double)); //add up p1,p2,p3 and muiltiply by prize to get equity

/*initializing variables*/

totalchips=0;

for(i=1;i<=numplayers;i++)
{
totalchips += chipcounts;
p1=0;
p2=0;
p3=0;
equity=0;
}

/*probability of first is chipstack divided by total chips*/

for(i=1;i<=numplayers;i++)
{
p1=chipcounts/totalchips;
}

/*adding up conditional probabilities to get probability of second*/

for(i=1;i<=numplayers;i++)
{
for(j=1;j<=numplayers;j++)
{
if(i!=j)
{
p2 += p1[j]*(chipcounts/(totalchips-chipcounts[j]));
}
}
}

/*adding up conditional probabilities to get probability of third*/

for(i=1;i<=numplayers;i++)
{
for(j=1;j<=numplayers;j++)
{
for(k=1;k<=numplayers;k++)
{
if((i!=j)&&(i!=k)&&(j!=k))
{
p3 += p1[j]*(chipcounts[k]/(totalchips-chipcounts[j]))*(chipcounts/(totalchips-chipcounts[j]-chipcounts[k]));
}
}
}
}

/*calculating equity for each player*/

for(i=1;i<=numplayers;i++)
{
equity = (p1+p2+p3)*(prizepool/placespaid);
printf("EQUITY %d is %.02f\n",i,equity);
}

return equity;

}


Reply
Quote
MisterHomes Topic starter
MisterHomes
Joined: 12.09.2008
PokerStrategist

I now have a fully functional program that analyzes my xml files from Titan poker tournaments and extracts all the preflop play into a separate file. I'm going to try and compile this information into a database in order to get an idea of ranges in different spots preflop. Hopefully, using the equity program I just wrote, I can analyze my hands and fix some leaks in my game.


Reply
Quote
Share: