Search code examples
statisticsprobabilitymontecarlopoker

Calculating poker preflop equity efficient


I've read many articles about the Monte Carlo algorithm for approximating the preflop equity in NL holdem poker. Unfortunately, it iterates over only a few possible boards to see what happens. The good thing about this is that you can put in exact hand ranges.

Well, I don't need exact ranges. It's good enough to say "Top 20% vs Top 35%". Is there a simple formula to tell (or approximate) the likelihood of winning or losing? We can ignore splits here.

I can imagine that the way to calculate the odds will become much simpler if we just using two (percentile) numbers instead of all possible card combinations.

The thing is, I don't know if for example the case "Top 5% vs Top 10%" is equal to "Top 10% vs Top 20%". Does anyone know of a usable relation or a formula for these inputs?

Thanks


Solution

  • Okay, I've made a bit analytical work and I came up wit the following.

    The Formula

    eq_a(a, b) := 1/2 - 1/(6*ln(10)) * ln(a/b)
    

    Or if you like:

    eq_a(a, b) := 0.5 - 0.072382 * ln(a/b)
    

    Where a is the range in percent (0 to 1) for player a. Same for b. The function outputs the equity for player a. To get the equity for player b just swap the two ranges.

    When we plot the function it will look like this: (Where a = x and b = y)

    Plot.png

    As you can see it's very hard to get an equity greater than 80% preflop (as even AA isn't that good mostly).

    How I came up with this

    After I've done some analysis I became aware of the fact that the probability of winning is dependent on just the ratio of the two ranges (same for multiway pots). So:

    eq_a(a, b) = eq(a * h, b * h)
    

    And yes, Top 5% vs Top 10% has the same equities as Top 50% vs Top 100%.

    The way I've got the formula is I've done some regressions on sample data I've calculated with an app and picked the best fit (the logarithmic one). Then I optimised it using special cases like eq_a(0.1, 1)=2/3 and eq_a(a, a)=1/2.

    It would be great if someone will do the work for multiway preflop all-ins.