We are currently working on an open source poker bot and are trying to enhance how the ranges are handled.

At the moment we are using tables based on pokersnowie's preflop play, to assess what ranges we can assume for the opponents in the post flop equity calculation (in taking the reverse of these tables).

In order to improve that we are looking for ways to make that more accurate. Are there generally any cards that can be assumed to be excluded from the opponents' hands at the Turn and River, based on the play at the Flop?

Any suggestions are appreciated.

  • I don't follow. The flop does not change the cards they chose to play preflop.
    – paparazzo
    Nov 8, 2016 at 15:38
  • @Paparazzi, but the flop does effect their decisions on how to progress with the hand, which can be used to narrow their range. I believe this is what Nick is asking, some rules on how to narrow a range based on post-flop play.
    – Grinch91
    Nov 8, 2016 at 16:08

2 Answers 2


My two cents is if you re-range them then you mess with the statistics.

You need to account for hands that could be a buff.

I would be more likely to add cards than take them away. Early positions comes in for a raise on 468 rainbow and leads on the flop and you had no 5 or 7 in their range then you need to consider that. But I would not take out AK sited or any pair.

If you over react to their actions you become exploitable and leave a more clear signature as a bot.

I would look at it more as Esfandiari says does it make sense. Did not bet the flop or turn but bet the river. If you take a way the busted hands that would do that in desperation I think you have a hole the size of Dallas in the algorithm.

Ranging is statistics but at some point you need to go with a GTO or machine learning type decision tree.

Hey that flush draw was only 20% but the way the hand was played is credible.

A bot to play against a low end player is so much different than a mid or high end.

Fool Pokerstars and Partypoker is another thing. The have some real smart people looking for patterns. And you have posted Open Source.


Absolutely you can exclude cards from your opponents range based on how they played the flop, however because people aren't rational 100% of the time, and poker being a game of probability with an element of human emotion, it's never necessarily something you can completely exclude. As your bot learns, and builds its range against specific players it will be better against each individual player. What I will say also is don't forget to include pre-flop too into the decision making when excluding cards.

Now your bot can for sure pick up patterns between players, but what you want to do will have to be player specific, making decisions solely, and tailored on each individual player. The more it plays, the better it can make these biases, but ultimately it will never have 100% accuracy.

As to how to do these, let me give you an example:

Say your bot has a reasonable hand in late position. A tight player, from the hands your bot has seen anyway, opens in mid position, they have a 25bb stack. Now what do you think makes sense for the starting range of a tight player, with a smallish stack in mid position? They'll probably be reasonable strong, likely 88+, suited connectors from 10,J up and likely all broad way connectors.

We can work out this range based on what makes sense for a tight player, with their stack, position, what hands we've seen them play/reach showdown with and how they have played hands with other players too.

Let's say the flop comes low, unsuited cards. If the tight player checks here, when they normally would have bet when strong what cards do you think you can discredit somewhat from his range? Well you can likely discredit any set seen as the board is low and they're a tight player, they didn't bet when they normally do, so probably no pocket pair, so likely they have some broadway connectors. But whatabout if they have checked a lot of their big pairs to not scare anyone away, or if they check their sets, etc? Ok in these situations we don't learn much to narrow their range yet, but we can use it help narrow a range further on the turn, i.e. they bet big on the turn after a check.

What I would suggest for your bot, is to build rules that track a few key aspects of players. Some suggestions of what I feel is meaningful data to track to help exclude cards from a players range would be:

  • Stack Size, shorter stacks (11bb-20bb) people tend to be able to wait for stronger hands, really short stacks people's ranges explode because they can't wait for good cards anymore, often any ace will do.
  • Position of raise, earlier tends to be stronger, but definitions of 'weak' and 'strong' can differ greatly between players. This is something you can track for each individual player.
  • Player trends, i.e. hands they've played in the past and how they have played them. I.e. that time they had aces, they raised every street, or that time they had A,K and raised pre, raised flop and shutdown on the turn and river, etc. How they play draws, how they play mid-pair, etc,etc.
  • Actions in front of player, i.e. if player raised on the flop, after there has been a raise and a call, do they do this only strong, or do they do this super light, etc.

I can't really list everything for you to track, but there are countless articles out there about building a range post-flop for your opponents. Use these, break down the key concepts into variables you can track and recall to weight certain decisions for your bot.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.