Bot Strategy

Here are some suggestions of strategies to improve your bots performance.

Starting hand tables

You can use the HoleRank helper value as a simple guide as to the value of your starting hand of two cards using something like:

var myHoleRank = playerHand.HoleRank();

But for a more refined approach, use one of many online tables for how to act, for example:

https://www.partypoker.com/how-to-play/school/basics/starting-hands.html

Randomise your moves

There are three possible moves in poker
Check/fold
Call
Raise

One strategy is to start with some assumed valued for the percentage chance you will take each of these moves, then as each piece of information comes in, adjust those percentages.

For example

Initial values:

Check/Fold Call Raise
40% 40% 20%

We are dealt a pair of eights:

Check/Fold Call Raise
0% 40% 60%

We raise, but our opponent reraises us:

Check/Fold Call Raise
10% 80% 10%

This way, your opponent can't recognise a pattern and predict your hand range so accurately from your betting.

Model your opponent's hole cards

What are the opponent’s cards likely to be, based on their betting?

Set up an array for the 169 possible hands your opponent could have. Before the deal, each hand has a fixed probability of being your opponents cards (but some hands are more likely than others, see https://wizardofodds.com/games/texas-hold-em/2-player-game/). Then as each piece of information comes in, adjust this array.

For example, if your opponent reraises you, the probability he has a stronger set of hole cards increases. Maybe double the probability of the top 50% of possible hands, or apply a linear function to all values.

Note the 169 possible values do not reflect the suit of the cards.

Rather than expand the range to 2450 entries (there are 50 cards in the pack we do not know the values of preflop, but their order is not important, so the calculation is 50 * 49 / 2), we have found it better to model flushes separately (and ignore straight flushes - you'll probably never see one!)

Look out for drawing hands that your opponent completes

If your opponent suddenly raises when a third heart hits the board, he may have filled his flush. (Or he may be bluffing that he did!)

Alternative Approaches

The Monte Carlo Method - To establish an approximate probability that you will end up with a flush, straight or any other desired hand, create random cards for the board cards yet to come and check the result using HandRank(). The HandRank() algorithm is fast, you can run thousands of random outcomes and find a % of achieving each hand.

Learning algorithms - Use the opportunity of the platform to play many games against the house bot or other players (or yourself), and have your bot learn from experience by implementing a neural network, evolutionary algorithm, or other learning technique.

Surely someone has done this before! - Find a library online and try to integrate it (warning, most libraries out there are for limit poker)

Never fold!

Well not quite, but we suggest you never set the Fold flag. Instead set the BetSize to 0. This might come in useful if it happens that your logic suggested folding when there was no bet for you to make at the time. If the server receives a 0 bet when there was a bet to you, it will interpret that as a fold, if there was 0 bet to you, it will interpret it as a check. So you may receive a free card as a result.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License