How to compute prize pool equity

    • MisterHomes
      MisterHomes
      Bronze
      Joined: 12.09.2008 Posts: 128
      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.
  • 4 replies
    • MisterHomes
      MisterHomes
      Bronze
      Joined: 12.09.2008 Posts: 128
      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?
    • Optroot
      Optroot
      Bronze
      Joined: 11.05.2008 Posts: 250
      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.
    • MisterHomes
      MisterHomes
      Bronze
      Joined: 12.09.2008 Posts: 128
      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[i];
      p1[i]=0;
      p2[i]=0;
      p3[i]=0;
      equity[i]=0;
      }

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

      for(i=1;i<=numplayers;i++)
      {
      p1[i]=chipcounts[i]/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[i] += p1[j]*(chipcounts[i]/(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[i] += p1[j]*(chipcounts[k]/(totalchips-chipcounts[j]))*(chipcounts[i]/(totalchips-chipcounts[j]-chipcounts[k]));
      }
      }
      }
      }

      /*calculating equity for each player*/

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

      return equity;

      }
    • MisterHomes
      MisterHomes
      Bronze
      Joined: 12.09.2008 Posts: 128
      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.