Match probability calculator, given Fargo ratings

A while back I made a spreadsheet to calculate the odds for high races. I'll share it here just as an alternative. It doesn't use a simulation. To be honest I forget exactly how it works, but here's the spreadsheet formula I came up with:

Code:
=SUM(ARRAYFORMULA(
    NEGBINOM.DIST(SEQUENCE(games_b)-1, games_a, FARGO_GAME_WIN_ODDS(rating_a, rating_b))
))

Edit: here's FARGO_GAME_WIN_ODDS for completeness
Code:
=1 / (1 + POW(2, (rating_b - rating_a)/100))

 
Last edited:
A while back I made a spreadsheet to calculate the odds for high races. I'll share it here just as an alternative. It doesn't use a simulation. To be honest I forget exactly how it works, but here's the spreadsheet formula I came up with:

Code:
=SUM(ARRAYFORMULA(
    NEGBINOM.DIST(SEQUENCE(games_b)-1, games_a, FARGO_GAME_WIN_ODDS(rating_a, rating_b))
))

It looks like you defined the function for Fargo odds. I didn't know you could do that in Excel.
 
And here's a Python version using SciPy. There's a cumulative distribution function, so I can avoid the looping (ARRAYFORMULA w/ SEQUENCE) that I had to do in the spreadsheet. Both cumulative and summed distribution work out the same as you'd expect.


Python:
from argparse import ArgumentParser

import scipy as sp

def fargorate_game_win_probability(rating_a, rating_b):
    return 1 / (1 + 2**((rating_b - rating_a)/100))


def race_odds_cdf(n: int, m: int, p: float) -> float:
    '''
    Args:
        n (int): number of successes needed for player A
        m (int): number of successes needed for player B
        p (float): probability of player A succeeding in a single trial
    '''
    return sp.stats.nbinom.cdf(k=m, n=n, p=p, loc=1)


def race_odds_summed_pmf(n: int, m: int, p: float) -> float:
    '''
    Args:
        n (int): number of successes needed for player A
        m (int): number of successes needed for player B
        p (float): probability of player A succeeding in a single trial
    '''
    return sum(sp.stats.nbinom.pmf(k=i, n=n, p=p) for i in range(m))


def main():
    argument_parser = ArgumentParser()
    argument_parser.add_argument('--games_a', type=int, required=True, help="number of games A needs to win")
    argument_parser.add_argument('--games_b', type=int, required=True, help="number of games B needs to win")
    argument_parser.add_argument('--rating_a', type=float, default=0.0, help="Player A's rating")
    argument_parser.add_argument('--rating_b', type=float, default=0.0, help="Player B's rating")
    args = argument_parser.parse_args()

    game_odds = fargorate_game_win_probability(args.rating_a, args.rating_b)
    print(f"game_odds:{game_odds:.5f}")

    race_odds = race_odds_cdf(args.games_a, args.games_b, game_odds)
    print(f"race_odds:{race_odds:.5f}")

    race_odds2 = race_odds_summed_pmf(args.games_a, args.games_b, game_odds)
    print(f"race_odds2:{race_odds2:.5f}")

if __name__ == '__main__':
    main()
 
What I have a problem with here, is the actual game theory in which for 9ball, there is a compounding rate assessment that I don't think is being factored.

Case in point and I think it simplifies itself the higher the Fargo rate you go, so:

Race to 9, 9ball winner breaks.

Tony chohan .777 vs Filler .854

Fargo calculation gives Tony basically a 1 in 5 chance, so for every 10 sets, Tony wins 2 sets.

The problem I see here is tony winning 2 out of 10.

I don't know how to explain or calculate the true disparity other than citing one example related to black jack in which a player always uses a perfect strategy against a single deck = house edge is .5%.

From my experience, the game play gives the impression of back and forth, give and take but still overall a annoying house advantage where the cards seem to fight that much harder in favor of the house.

Now.... perfect strategy vs 4-6 decks where the house edge is 1.1%....the idiot says ohhh what's another .6% against you blahhh...(That polish accent still haunts me, if you only knew the guy)

I am here to tell you, the difference overall now feels as if FOR SURE... you are getting RUN OVER by the house. It just does, that's why I always refer to my saying of THE POWER OF 1%...it will keep the lights on in Vegas, if given enough time ILL BREAK BANK OF AMERICA.

There are reasons why that are specific to the house rules that change between the two variations and without getting into all that, I think it's dead exact when it comes to 9ball as a theory and it's compounding results in which I said one time to a intelligent person who for sure would never be able to deduce it on paper, but some people just know "things" and it goes like this:

I said if I play Efren 30 games of 1pkt, he doesn't have to win every game (in other words he cannot possibly control the outcome that deeply, my thought was the game theory itself won't allow it to happen vs my skill level etc)

When my friend said, "uhhh ...not necessarily"

THAT MADE ME THINK...and he's right. Now, I'm not going to explain why I think his intelligence especially for the game itself ALL OF A SUDDEN changed my entire outlook etc etc...he is right in the sense FOR STARTERS that I didn't give the proposition any real thought so to speak.

It's because I didn't know how but all of a sudden after what he said, true or not, I instantly became educated enough to understand the theory that he is right and for sure I do not necessarily have to win one game. I don't know how to emphatically explain it other than justifying some rational theories to it in which we begin to extrapolate an overall compounding problem...in other words, if Efren makes a mistake, what are my chances of running 8 and out?

So, we can pose the question that way to help clarify and I know based on my skill, I like his chances of winning all 30 games before the rare mistake in which it fatally cost him 1 game by running 8 and out which is an important emphasis as a base line because it's the only scenario in which not even god can make up for or out move me in difference when it comes to making up ground he lost.

If I run 4 balls, I think it's fairly safe to say it doesn't make much difference when considering the theory of his power being too overwhelming etc etc...it may not change much in his overall strategy even though it should on paper because I know for a fact I'm not helpless on a table, but to consider the fact I am wildcard DANGEROUS is really stupid and it's better to know that going in to the proposition rather than finding out after 10 games that Houston I think we have a problem here.

As good as Tony is...is just as stupid in reality to consider against Filler in 9 ball and it's because in my estimation that the Fargo rate calculation does not take into account that the virtual 77 point graduation in comparison and at that level, has too much compounding effect in which I believe it's basically the same as Filler starting out with a 3 game lead every set.... because of the punishing effects of pedigree difference (I call it the radiation effect in which the lesser player in this case does melt a bit) and the skill superiority where every inevitable mistake or miss not only costs him, but a cost in which a miss on the 5 where both players have the table dialed in respectively (another devastating problem more so for Tony and no way factored in the Fargo calc etc) ...the issue of binary mistakes becomes multiplied in cost and yes, in the case of Filler vs Chohan, a race to 9 I factor 1 out of 12 he will win because at some point I have to respect the statistical outcome within the game theory....but a race to 11 where Fargo calculation only changes a couple of percent, I don't liken this to simple mathematical outcomes where the numerical facts WILL NOT LIE, but this is different...I say it dramatically changes to something like 1 out of 18 sets Tony will win.

Another factor to be considered is the disparity in wins of a average set where yes I know, you don't get paid for yardage in this case because losing nine to nothing or 11 to nothing is no different than losing hill hill....but it is telling and once more, I'm not here to knock the Fargo system because I also know even though I am right in a sense that the Fargo calculation may be in fact severely lacking but I too maybe much more wrong in my calculations then how reality would play itself out.

But even so I only see one way Tony can win in a race to 9 and especially 11.... He needs the bulk load of favorable outcomes and Joshua to conceivably play bad enough at the same time.

I think 77 points at that level is a huge variance just like 900 to a 854 may seem inconsequential....but no way...it too being only 46 points in variance to, is considerably huge at that height...unlike a 550 vs 500... because at that level, no one generally controls an outcome to a multiple potential, much less a binary one ie; player X misses the 5 ball, no way in hell does either player from there necessarily have to run out even with a road map and with that said, the disparity is still mutually chaotic vs the game theory.

If I'm wrong in fact about my 1-12 and 1-18 it's only because I'm never factoring Filler to actually play that bad or throw up a turd on a given set....I think if it were to happen it's only because he is legitimately tired, so if that were negated somehow which I don't think is difficult to avoid like, they both play five sets once a day when both are mutually and virtually fresh.

With that being said I really think my calculations are correct which of course is far off from the Fargo calculations which of course suggest the system is severely lacking not flawed or anything if anything I think 9-ball theory is flawed...

My 2 cents
 
...
Race to 9, 9ball winner breaks.

Tony chohan .777 vs Filler .854

Fargo calculation gives Tony basically a 1 in 5 chance, so for every 10 sets, Tony wins 2 sets. ...
No it doesn't.

The odds of the Fargo 777 winning are 13.35%, not 20%.

You're starting out here with a number that's off by ~50%.
 
Back
Top