Analyze is where we do our analysis. We can build or import games from hand histories and we can do all kinds of analysis. In the following we will do our best to document the many features and still keep it light and easy to read. We highly recommend reading this guide before working with PokerJuice.
Print out the guide
We recommend printing out the guide and reading through it along with a good cup a coffee 😃
PokerJuice uses Monte Carlo simulations for all equity and frequency calculations. All players that have not folded are included in the calculations. In other words all simulations are range versus range meaning that players ranges impact one another.
This also means that:
- equities and frequencies will vary from one run to another
- (action) frequencies will not add up to 100% exactly
The simulations are done like this:
- we pick a random hand from each player's range.
- for each matchup we go to showdown with a random board
We do this many times and count winners or frequencies.
Number of trials
Most simulations are made up of 600,000 trials
We have put a lot of work into optimizing the performance and user experience by:
- doing simulations in the cloud on multiple machines
- caching both on the client and on the server to avoid unnecessary simulations
This hopefully means that no matter where in the world you are located you will have a nice and fluent user experience. If this is not the case please let us know
# Decision Tree
PokerJuice operates on a decision tree. What this means is that even though the user interface has a flat structure - where we can navigate back and forth in the hand - behind the scenes we are actully navigating a decision tree.
So how do we do that?
Let's look at a simple game where SB goes allin with the top 20% of hands and folds the rest. BB can then choose to either call or fold.
The decision tree for this game would look this. We can see that if SB folds it leads to leaf. The game is over and there are no more decisions. When SB goes allin we arrive at a new decision point, this time for BB. He can now either call or fold.
We can re-create this game in PokerJuice. Go to Analyze and click New Game. Select 2 players and click Create Game.
Let's start by creating the allin raise. Click the Allin button and click Raise To. We now want to define a range for this raise.
We enter 20% for the raise action. Let's also add the fold action by clicking the Fold button.
But notice that our fold action is now active and the raise action has been deactivated. So what does our decision tree look like now?
We have activated the SB's fold action which brings the action to a leaf (game over).
This is exactly what we can see in the replayer. If we step forward we will reach the leaf and it will say end of game on the right. Now we want to build the other half of the decision tree. We do this by activating the raise action.
Our decision tree now looks like this. We can now navigate forward and we arrive at BB's decision point. It is now time to add the call and the fold from BB. Let's start by adding the call. Click call.
We enter 40%.
Notice that we now have four new game nodes added to our game. Flop, turn, river and showdown nodes have been added to the game. The players are allin and there are no more decision points in the game. We are almost finished. We want BB to fold the rest of his hands. We click fold.
We are done 🎉
What can we see here? We can see the expected stack for BB for each of his actions. It is displayed on the tab next to the frequency for each action.
We can also see that the expected stack for BB's combined strategy is 96.56. Since he started with a stack of 99.00 this is not a profitable strategy. Let's see how SB is doing. We navigate one step back.
We see that the expected stack for SB's raises is 103.25. When SB folds he has an expected stack of 99.50. Combined his strategy yields him an expected stack of 100.23.
We have completed the decision tree. We hope you now have a basic understanding of how decision trees work in PokerJuice. To learn more about expected stacks we suggest reading the chapter dedicated to that subject.
# Decision Points
The decision points are the circles in the decision tree. This is where a player needs to make a decision. When navigating through a game we move from one decision point to another.
At the top of each decision point we have a couple of features:
- The owner of the decision point and his stack size (before any actions)
- The width of the starting range coming into the decision point
- The player's equity in the pot
- The player's expected stack
The width of starting range will change as we narrow a player's range throughout the game.
We also have:
These features are the same for all decision points throughout the decision tree. Let's dive into actions.
When a poker player makes a decision he has three main actions to choose from:
- Raise To
In PokerJuice we can define actions and assign each action a range. The range tells us with what hands he will make the given action. This also means that if a situation is played out with all possible hole cards then each action will have a frequency.
To create an action we click either the fold, call or raise button. On each decision point we can have anywhere from one to three actions. Let's do a quick example:
We are on the button in a heads up game. We raise the top 80% of our hands and fold the rest. How would we emulate this in PokerJuice?
We click the raise to button.
We enter 80%.
We now click the fold button.
We have now defined our two actions with a range assigned to each. But wait, we never assigned a range to fold? How does PokerJuice know what hands goes into the folding range?
The reason is that the ranges assigned to actions in PokerJuice are cumulative.
Our action ranges look like this:
Since the range assigned to fold is empty it defaults to (*).
It is best practice to let the bottom action stay empty. This will ensure that all hands that have not been extracted by other actions will go into the bottom action and that the actions will sum to 100%
Here we can see that SB's range is indeed (*)!(80%).
When adding a new action it will automatically be the active.
Let's take a look at the frequencies. The frequency for each action is displayed on the tab to the right. In this case the frequency for raise is 79,94% and for fold 19,91%.
The frequency for each action tells us how often the player will have a hand in that particular range.
Hey, something's wrong?
The frequencies do not add up to 100%. Why not?
# Expected Stacks
Next to the frequencies we see n/a for the raise action and 99.50 for the fold action displayed. These are the expected stacks for each action.
The expected stack is the expected size of a player's stack at the end of the hand averaged over all the ways the hand can play out.
The expected stack when choosing to fold is 99.50 because that is what is currently the size of SB's stack. A fold will not change that.
The expected stack when choosing to raise is n/a. This is because we have not told PokerJuice how the hand will play out. In other words we have to complete the entire sub tree to be able to determine the expected stack.
The warning triangle is there to warn us that we have not completed the sub tree.
Let's do that quickly by assuming that BB will fold every single hand.
We first activate the raise action by clicking the red toggle button next to RAISE 2.50. We can now navigate forward in the replayer to BB's decision point and just add a fold (remember empty ranges default to (*)). We navigate back to SB's decision point.
We can now see that the expected stack from our raise is 101.00. This makes sense because we stand to steal BB's big blind every time.
But what is SB's combined expected stack for both actions.
At the top of the page we see our combined expected stack. In this case 100.55.
Why not relative EV like I am used to?
We think that using absolute values (stacks) instead of relative values is simpler and more intuitive and makes comparing different lines easier.
Cumulative ranges mean that the sub ranges are mutually exclusive and sub range A is automatically excluded from sub range B. Sub ranges A and B are automatically excluded from sub range C and so on:
Hands trickle down
You can think of cumulative as all hands from the starting range trickling down through the actions, where each action extracts a given set of hands.
Why cumulative ranges?
- it is easy to make them sum to 100%
- a given hand can not show up in two ranges at the same time
Since the actions are cumulative it means that the order of the actions is essential. We can confirm this by moving the fold action up above the raise action.
To do this we click the arrow up icon.
The fold action is now on top and since we are not extracting out any hands the fold range is empty (0.00%).
Ranges only default to (*) when they are the last action
The raise is still 79.94% since we are filtering out the top 80% hands in the raise. Now, we are making the mistake of not letting the bottom range stay empty. This means that:
- actions will not sum to 100%
- expected stacks further up the decision tree will be incorrect
We get a warning that we might be doing something wrong.
# Player Range
When we play poker we narrow our opponent's range the best we can for each action they take. Based on their actions we can exclude certain hands from their range and as the game progresses the range will get narrower and narrower.
We do the same in PokerJuice. We start out by assigning them a preflop range. This can be based on their position at the table and their actions preflop.
E.g. if a tight player open from UTG we can exclude the bottom 85% of hands (read more about preflop rankings) and we assign him a 15% range.
Postflop we don't use preflop rankings anymore. Now a range is a function of the board and we need a way to express the sub ranges players can have.
PokerJuice contains an advanced syntax that we can utilize. We will go in-depth with the syntax later. For now, you just need to know three simple syntaxes:
|p+||One pair or better|
|2p+||Two pair or better|
|set+||Set/Trips or better|
As mentioned these syntaxes are functions of the board. This simply means that one pair on the flop is not the same as one pair on the river!
|Street||Street Range||Accumulated Range|
The accumulated range is therefore an evaluation of the syntax on the current street with the previous street range prepended.
Let's do a quick example (download here) where BB check-calls all streets on a dry board with the hands from the table above:
Let's see how we narrow BB's check calling range:
|Street||Street Range||Accumulated Range||% of all hands|
Preflop we assign BB a range of the top 50% starting hands. This is the same as 50% of all hands.
|Street||Street Range||Accumulated Range||% of all hands|
On the flop we define his calling range as p+. Since the flop is 2c7sQh this evalutes to (2,33-66,7,88-JJ,Q,KK,AA). This is 72.91% of all the hands he arrived with on the flop. So his range is now down to 36% (50% x 72.91%).
|Street||Street Range||Accumulated Range||% of all hands|
On the turn we define his calling ranges as 2p+ on a board which is now 2c7sQh3d. This evaluates to (32,72,73,Q2,Q3,Q7,22,33,77,QQ). This is 20.95% of all the hands he arrived with on the turn. His range is now down to 7.64% (36.46% x 20.95%).
|Street||Street Range||Accumulated Range||% of all hands|
Finally on the river we define his calling range as set+ on a 2c7sQh3dQd board which translates to (Q,22,33,77). This is 77.64% of all the hands he arrived with on the river. His range is now down to 5.93%. (7.64% x 77.64%)
If we multiply the frequencies of his ranges throughout the game we can see that he ends up calling with a total of 5,93% of all starting hands.
So, a player's range is defined as a range for each street.
The player range component at the top helps us keep track of a given player's range on any street at any time.
We can hover over the street icons to take a quick peek at the range for that street.
On the far right we have a copy icon. This will copy the accumulated generic syntax to the clipboard.
To help manage sub ranges PokerJuice introduces something called snippets. Snippets are simply range fragments that we can combine to produce sub ranges. The idea is to make it more managable to deal with complicated ranges. We edit small snippets instead of one long text string.
Let's illustrate this with a quick example. We create a heads up new game and add an opening raise action:
We enter AA and we get a frequency of 2.56%.
# Add new
We would like to add another snippet.
To add a new snippet we click the plus icon.
We enter KK. We can see that the frequency is now 5.15%.
If we look in the player range we can see that SB's range is now (AA, KK). As we can see snippets are separated by a comma. A comma means the union of two ranges. PokerJuice unites all snippets within the same action.
Union of two ranges
Use comma to get the union of two ranges. We can also think of (AA, KK) as AA OR KK
We can activate/deactivate a snippet by clicking the check mark icon above.
Here we have deactivated the KK snippet that we just added a moment ago. The frequency is now back to 2.56%. Deactivated snippets are NOT part of the sub range and are completely ignored.
What's the point?
Activation/Deactivation of snippets can be useful when working with sub ranges. Thinking in terms of small snippets that we can turn on and off is much more flexible than working with one long string
Negating means that we can exclude hands from our ranges. For example AA!KK means all hands with at least two Aces but with no Kings.
To negate a range we use an exclamation point. Example: AA!KK
Let's do a quick example:
We have a raise action with snippets AA and KK. We can see that the frequency is 5.15%. We now want to exclude all AK hands from this range:
We add a snippet !AK. The frequency is now down to 4.31%.
The sub range is now ((AA, KK)!AK). When we start a snippet with "!" then it will automatically wrap all snippets above in parentheses and then apply the negated range.
Let's illustrate this by moving the bottom snippet up one place. We click the arrow up to move the bottom snippet up:
The negation now only applies to AA.
We can confirm this by looking at the new player range.
# Syntax Preview
Postflop we can utilize the PokerJuice Syntax.
When we do we get a preview of the corresponding generic syntax when hovering the magnifying glass.
In the replayer we can follow the action in a game. Games do not contain a specific currency. Instead everything is calculated in big blinds.
In the following we will walk through the information presented in the replayer.
# Active Player
Here we have created a new heads up game. We can see that SB is the active player. Being the active player means that we are located on a decision point belonging to that player. The active player is highlighted in orange.
In the bottom right corner of the orange box we see Small Blind (sb). This is the name and position of the player. We can edit the name by clicking on it:
A popup appears where we can edit the name.
In the bottom left corner we see the player's current stack. In this case 99.50. This is also editable by clicking on it.
In the top left corner we see the player's equity. In this case 50%. This value will change as we change the players ranges. The equity is also visualized in the progress bar in the middle of the box.
# Expected Stack
# Hole Cards
We can define a set of hole cards for any player.
If we hover over the cards a pencil will appear on the right. We click it to bring up a popup:
Here we select four cards and click Select.
We have now defined hole cards for SB. Notice that our equity changed to 51%.
# Toggle hole cards
We can toggle between a range and hole cards simply by clicking the hole cards.
We click the hole cards and our equity is now back to 50%.
To demonstrate how to edit the board we need to arrive at the flop.
- create new game heads up
- add call for SB and step forward
- add check for BB and step forward
Or you can just download the game here.
We are now at the flop. We have yet to define a board.
On the right we see that we can edit the flop by clicking the pencil. We can also add a random flop.
We click random flop. In this case we get Jc9d2d.
And the same flop is visible in the replayer. Likewise we can add a turn card when we arrive at the turn and a river card when we arrive at the river.
The current pot size is displayed on the right side of the poker table. PokerJuice handles side pots if a shorter stacked player is allin.
To demonstrate this we have created a 3-way game (download here) and set Button's stack to 60.00. Button goes allin and so does SB and BB.
We now have a main pot of 180.00 (3 x 60.00) and a side pot of 80.00 (2 x 40.00). SB and BB also have a progess bar visualizing the equities in both the main pot and the side pot.
Mouseover to see equity
You can mouseover each progress bar to see the exact equity
# Preflop Ranges
# Generic Syntax
PokerJuice implements the ProPokerTools generic syntax.
# Ranks & Suits
The available ranks are: A, K, Q, J, T, 9, 8, 7, 6, 5, 4, 3, 2.
The available suits are: s, h, d, c (spades, hearts, diamonds, clubs)
# Wild Card
* means any rank
|AsKhJd2c||a specific hand where all cards are known|
|AA||all hands with at least two aces in it|
|sshh||all hands with two spades and two hearts|
# Combining Ranges
We will often have the need to combine ranges. For this purpose we have three operators available:
|,||AA, KK||A range of all hands containing AA or KK|
|:||AA:K||A range of all hands containing AA and a King|
|!||AA!K||A range of all hands containing AA but no King|
Just like math some operator have precedence over others. And just like math we can use parentheses to define precedence.
The order of precedence is (from top to bottom):
|()||(AA,KK):Q!J||(AA,KK):(Q!J)||Parentheses||(Aces or Kings) containing a Queen but not a Jack|
|!||AA,KK:Q!J||AA, (KK:(Q!J))||Exponents||Aces or Kings containing a Queen but not a Jack|
|:||AA,KK:Q||AA, (KK:Q)||Multiplication||Aces or Kings containing a Queen|
|,||AA,KK||Addition||Aces or Kings|
# Preflop Ranking
To select a preflop range it is useful to have a preflop ranking to easily be able to select a large number of hands. If we have a preflop ranking we can select a certain subset of that ranking using percentages. PokerJuice uses the ProPokerTools preflop ranking (download).
How are these rankings created?
Click here to read more about how this ranking was created
To demonstrate percentages in PokerJuice we have created a new game and added a raise action:
We enter 10%. We can see that the frequency is 10.03% (why not exactly 10.00%?).
How is this range doing against a random hand?
We can see that the top 10% of hands on average has 62% equity against a random hand.
# PokerJuice Preflop Ranges
The ProPokerTools preflop ranking is a solid start and they are fine and useful in a lot of situations. But there are situations where we would like to select preflop ranges that better reflect the ranges that a lot of players use in the real world. Theses ranges are less equity-based and more based on playability. For that reason we have created the PokerJuice Preflop Ranges.
# Quick Access
PokerJuice has built-in quick access to the PokerJuice Preflop Ranges. No more need to memorize them.
All we have to do is place the cursor inside the range input field and the drop-down appears automatically. The list is filtered as we type. Let's find the 3bet 8% ip range.
We type 8. The list is filtered and we can now easily select the 3bet 8% ip range.
# Postflop Ranges
While it is handy being able to select a range preflop based on a percentage, this will not work postflop. Postflop we have a board that comes into play which impacts equities to the degree that is does not make sense to talk about a top x% range. So, we need another way to select hands to build our ranges.
# PokerJuice Syntax
PokerJuice Syntax is a postflop syntax which provides an easy way to describe ranges postflop fast and accurately. Instead of having the find all the combinations manually we can use PokerJuice Syntax to describe the range we are looking for.
The syntax contains a set of expressions that we use. Expressions are evaluated in the context of the street on which we enter the expression. A set on the flop is not the same as a set on the turn.
Let's illustrate that with an example:
|Kc 7s 2d||set||KK, 77, 22|
|Kc 7s 2d 4h||set||KK, 77, 22, 44|
# Plus Operator
Most of the time we want a specific sub range or better. For this use case we can use the plus operator:
|Kc 7s 2d||2p||(72,K2,K7)!(22,77,KK)|
|Kc 7s 2d||2p+||72,K2,K7,22,77,KK|
We can see that 2p returns exactly two pair by filtering out all better hands while 2p+ returns two pair or better.
# N-th Operator
The n-th operator allows us to be even more granular when selecting a specific sub range. We suffix an expression with a number representing the sub range we are looking for.
For instance if we only want specific set on a flop, we can type:
|Kc 7s 2d||set1||KK|
|Kc 7s 2d||set2||77|
|Kc 7s 2d||set3||22|
We can see that set1 returns top set while set2 returns middle set and so on.
Why not just type KK to get top set?
To understand KK we need knowledge of the board. To understand set1 we do not need knowledge of the board. Also set1 is re-usable on another board, while KK is not.
# Combing Plus and N-th Operator
We can even combine the plus operator and the n-the operator to give us a very specific sub range:
|Kc 7s 2d||set2+||77, KK|
We can see that set2+ returns second set or better.
# Made Hands
The expression made hands refers to hands the value of which are one pair or higher.
# One Pair
|Kc 7s 2d||p+||2,33-66,7,88-QQ,K,AA|
|Kc 7s 2d||p||(2,33-66,7,88-QQ,K,AA)!(72,K2,K7,22,77,KK)|
|Kc 7s 7d||p||(*!*)|
|Kc 7s 2d 4h||p||(((2,33,4,55,66,7,88-QQ,K,AA)!(42,72,74,K2,K4,K7,22,44,77,KK)))|
|Kc 7s 2d||p1||AA!(72,K2,K7,22,77,KK)|
|Kc 7s 7c 2d||p||(*!*)|
|Kc 7s 2d||p2+||AK,AA,72,K2,K7,22,77,KK|
# Board Card
Returns a range of hands that connects with the board.
|Kc 7s 2d||bc+||n/a|
|Kc 7s 2d||bc||K,7,2|
|Kc 7s 2d||bc1||K|
|Kc 7s 6h 2d||bc||K,7,6,2|
|Kc 7c 7s 2d||bc||K,7,2|
|Kc 7c 7s 2d||bc1||K|
Plus operator not supported
Board card does not support the plus operator because it is not part of the official poker hand ranking.
Therefore, it does not make sense to talk about a board card or better.
# Over Pair
|Jc 7s 2d||op||QQ-AA!(72,J2,J7,22,77,JJ)|
|Jc 7s 2d||op+||QQ-AA,72,J2,J7,22,77,JJ|
|Jc 7s 2d||op1||AA!(72,J2,J7,22,77,JJ)|
|Jc 7s 2d||op4||(*!*)|
|Jc 7s 7d||op||(*!*)|
|Qc Jc 7s 2d||op2||KK!(AA,72,J2,J7,Q2,Q7,QJ,22,77,JJ,QQ)|
Over Pair on paired boards returns empty range because it would evaluate to two pair
# Top Pair
|Jc 7s 2d||tp||J!(QQ-AA,72,J2,J7,22,77,JJ)|
|Jc 7s 2d||tp+||J,QQ-AA,72,22,77|
|Jc 7s 2d||tp1||AJ!(QQ-AA,72,J2,J7,22,77,JJ)|
|Jc 7s 2d||tp2||KJ!(AJ,QQ-AA,72,J2,J7,22,77,JJ)|
|Jc 7s 7d||tp||(*!*)|
|Qc Jc 7s 2d||tp1||AQ!(KK,AA,72,J2,J7,Q2,Q7,QJ,22,77,JJ,QQ)|
The ranking of top pairs is determined by the kicker.
Top Pair on paired boards returns empty range because it would evaluate to two pair
# Middle Pair
|Jc 7s 2d||mp||7!(88-TT,J,QQ-AA,72,22,77)|
|Jc 7s 2d||mp+||7,88-TT,J,QQ-AA,22|
|Jc 7s 2d||mp1||A7!(88-TT,J,QQ-AA,72,22,77)|
|Jc 7s 2d||mp2||K7!(A7,88-TT,J,QQ-AA,72,22,77)|
|Jc 7s 7d||mp||(*!*)|
|Qc Jc 7s 2d||mp1||AJ!(Q,KK,AA,72,J2,J7,22,77,JJ)|
The ranking of middle pairs is determined by the kicker.
Middle Pair on paired boards is promoted to two pair
Turn & River
Middle Pair on the turn or river means the 2nd highest pair
# Bottom Pair
|Jc 7s 2d||bp||2!(33-66,7,88-TT,J,QQ-AA,22)|
|Jc 7s 2d||bp+||2,33-66,7,88-TT,J,QQ-AA|
|Jc 7s 2d||bp1||A2!(33-66,7,88-TT,J,QQ-AA,22)|
|Jc 7s 2d||bp2||K2!(A2,33-66,7,88-TT,J,QQ-AA,22)|
|Jc 7s 7d||bp||(*!*)|
|Qc Jc 7s 2d||bp1||A2!(33-66,7,88-TT,J,Q,KK,AA,22)|
Bottom Pair on paired boards returns empty range because it would evaluate to two pair
# Two Pair
|Kc 7c 2c||2p+||72,K2,K7,22,77,KK|
|Kc 7s 2d||2p||(72,K2,K7)!(22,77,KK)|
|Kc 7s 2d||2p1||K7!(22,77,KK)|
|Kc 7s 2d||2p2||K2!(K7,22,77,KK)|
|Kc 7s 7d||2p||(22-66,88-QQ,K,AA)!(7,KK)|
|Kc 7s 2d||2p2+||K2,K7,22,77,KK|
|Kc 7s 7d 2d||2p||(2,33-66,88-QQ,K3,K4,K5,K6,K8,K9,KT,KJ,KQ,AK,AA)!(7,22,KK)|
|Kc 7c 2c||set+||22,77,KK,cc|
|Kc 7c 2c||set||(22,77,KK)!cc|
|Kc 7c 2c||set1||KK!cc|
|Kc 7c 2c||set2||77!(KK,cc)|
|Kc 7c 7c||set||7!(K7,KK,77)|
|Kc 7c 7c 2d||set||7!(22,72,K7,KK,77)|
Trips vs. Set
Usually a set refers to three-of-a-kind where one card is a community card while trips refers to three-of-a-kind with two community cards. In PokerJuice set covers both.
|Jc Tc 8c||str+||97,Q9,cc|
|Jc Tc 8c||str||97,Q9|
|Jc Tc 8c||str1||Q9|
|Jc Tc 8c||str2||97!Q9|
|Jc Tc 8c||str2+||97,Q9,cc|
|Jc Tc 8c 8d||str||(97,Q9)!(T8,J8,TT,JJ,88)|
|Jd 9d 2d||f||dd|
|Jd 9d 2d||f1||dAd|
|Jd 9d 2d||f2||dKd!dAd|
|Jd 9d 2d||f2+||dKd,dAd|
|Jd 9d 2d 2c||f||dd!(92,J2,99,JJ,22)|
# Full House
|Kc 7c 2c 2d||fh+||72,K2,77,KK,22|
|Kc 7c 2c 2d||fh||(72,K2,77,KK)!22|
|Kc 7c 2c 2d||fh1||KK!22|
|Kc 7c 2c 2d||fh2||77!(KK,22)|
|Kc 7c 2c 2d||fh2+||77,KK,22|
|Jd 9d 8d 8c||fh||(98,J8,99,JJ)!(88,Td7d,QdTd)|
|Kc 7c 2c 2d||quads||22|
|Kc 7c 2c 2d 2h||quads||2|
|7c 7c 2c 2d||quads||22,77|
|7c 7c 2c 2d||quads1||77|
|7c 7c 2c 2d||quads2||22|
|Jd 9d 8d 8c||quads||88!(Td7d,QdTd)|
# Straight Flush
|Jd 9d 8d 2c||sf||QdTd,Td7d|
|Jd 9d 8d 2c||sf1||QdTd|
|Jd 9d 8d 2c||sf2||Td7d|
|Kd Qd Jd||sf1||(AdTd)|
# Straight Draws
Straight draw expressions are named after the number of outs they have. For example, a gut-shot straight draw is named a 4w and an open-ended straight draw is named 8w and so on.
# Backdoor Straight Draws
PokerJuice Syntax supports backdoor draws. A backdoor straightdraw is a hand that can pick up a draw on the turn.
The n-th operator is not supported for backdoor straight draws. The reason is that it is hard to rank backdoor straight draws.
The syntax for a backdoor draw is a regular straight draw prefixed by an underscore. For example _8w. Examples are shown below.
|Td 9c 2s||8w+||87,Q86,J8,KQ76,KJ7,QJ|
|Td 9c 2s||8w||(87,Q86,J8,KQ76,KJ7,QJ)!(876,KQJ,J87,QJ8)|
|Td 9c 2s||8w1||QJ!(876,KQJ,J87,QJ8)|
|Td 9c 2s||8w2||KJ8!(QJ,876,J87)|
|Td 9c 2s||8w2+||KJ8,QJ,876,J87|
|Td 9c 2s||_8w+||43,53,54|
|Td 6c 2s||9w+||543,987|
|Td 6c 2s||9w||543,987|
|Td 6c 2s||9w1||987|
|Td 6c 2s||9w2+||543,987|
|Td 6c 2s 3d||9w||987!(9874,9875)|
|Td 6c 2s||_9w+||KQJ,AQJ,AKJ,AKQ,QJ9,QJ8,KJ9,KQ9|
|Td 9c 2s||13w+||876,KQJ,J87,QJ8|
|Td 9c 2s||13w||(876,KQJ)!(J87,QJ8)|
|Td 9c 2s||13w1||KQJ!(J87,QJ8)|
|Td 9c 2s||13w2||Q876|
|Td 9c 2s||13w2+||Q876,KQJ,J87,QJ8|
|Td 9c 2s||_13w+||A43,A53,A54,643,653,654,7543,8543|
|Td 9c 2s||17w+||J87,QJ8|
|Td 9c 2s||17w||(J87,QJ8)!QJ87|
|Td 9c 2s||17w1||QJ8!QJ87|
|Td 9c 2s||17w2||KJ87|
|Td 9c 2s||17w2+||KJ87,QJ8|
|Td 6c 2s||_17w+||QJ8,KJ9,KQ9|
|Td 9c 2s||20w+||QJ87|
|Td 9c 2s||20w||QJ87|
|Td 9c 2s||20w1||QJ87|
|Td 9c 2s||20w2||*!*|
|Td 9c 2s||20w2+||*!*|
|Jd 6c 2s||_20w+||T975,QT87,KQ98|
# Flush Draws
A flush draw is a hand that can improve to a flush on the next street.
# Backdoor Flush Draws
A backdoor flush draw is a hand that can pick up a flush draw on the turn.
The n-th operator is supported for backdoor flush draws
# Flush Draw
|Ts 9c 2s||fd||ss|
|Ts 9c 2s||fd1||Ass|
|Ts 9c 2s||fd2||Kdd!Add|
|Ts 9c 2s||fd2+||Kdd,Add|
|As 9c 2s||fd1||Kss|
# Backdoor Flush Draw
|Ts 9c 2s||_fd||cc|
|Ts 9c 2s||_fd1||Acc|
|Ts 9c 2s||_fd2||Kcc!Acc|
|Ts 9c 2s||_fd2+||Kcc,Acc|
|Ac 9s 2s||_fd1||Kcc|
# Flush Blocker
A flush blocker is a hand containing one or more cards blocking either a flush or a flush draw.
|Ts 9c 2s||fb||s|
|Ts 9c 2s||fb1||As|
|Ts 9c 2s||fb2||Ks!As|
|Ts 9c 2s||fb2+||Ks,As|
|As 9s 2s||fb1||Ks|
# Backdoor Flush Blocker
|Ts 9c 2s||_fb||c|
|Ts 9c 2s||_fb1||Ac|
|Ts 9c 2s||_fb2||Kc!Ac|
|Ts 9c 2s||_fb2+||Kc,Ac|
|As 9s 2s||_fb||*!*|
Overcards returns all ranks higher than the board.
|Ts 9c 2s||oc||A,K,Q,J|
|Ts 9c 2s||oc1||A|
|Ts 9c 2s||oc2||K|
|Ts 9c 2s||oc2+||A,K|
To express a specific number of overcards we can put the expression inside brackets:
|Ts 9c 2s||[oc][oc]||[A,K,Q,J][A,K,Q,J]|
|Ts 9c 2s||[oc1][oc]||[A][A,K,Q,J]|
|Ts 9c 2s||[oc1][oc2+]||[A][A,K]|
|Ts 9c 2s||[oc][oc][oc]||[A,K,Q,J][A,K,Q,J][A,K,Q,J]|
|Ts 9c 2s||[oc][oc]:fd||[A,K,Q,J][A,K,Q,J]:ss|
# Combo hands
A range of hands is often a combination of a made hand and a draw. We can combine made hands and draws to create combo hands.
# Made Hand + Flush Draw
Examples of combinations of made hands and flush draws:
|Ts 9c 2s||bc:fd||(2,9,T):ss|
|Ts 9c 2s||p+:_fd||(2,33-88,9,T,JJ-AA):cc|
# Made Hand + Straight Draw
Examples of combinations of made hands and straight draws:
|Ts 9c 2s||bc1:8w+||T:(87,Q86,J8,KQ76,KJ7,QJ)|
|Ts 9c 2s||bc3:_13w+||2:(A43,A53,A54,643,653,654,7543,8543)|
# Straight Draw + Flush Draw
Examples of straight draws and flush draws:
|Ts 9c 2s||8w+:fd||(87,Q86,J8,KQ76,KJ7,QJ):ss|
|Ts 9c 2s||4w+:_fd2+||(76,86,J7,Q8,KJ,KQ,87,J8,QJ):(Acc,Kcc)|
# Made Hand + Straight Draw + Flush Draw
Examples of made hands + straight draws and flush draws:
|Ts 9c 2s||bc1:4w+:fd||T:(76,86,J7,Q8,KJ,KQ,87,J8,QJ):ss|
|Ts 9c 2s||bc3:13w+:_fd||2:(876,KQJ,J87,QJ8):cc|
# Quick Access
PokerJuice has built-in quick access to the postflop ranges as well.
All we have to do is place the cursor inside the range input field (postflop) and the drop-down appears automatically. If we start typing the list is filtered as we type.
# Syntax Builder
In case we are still learning the PokerJuice Syntax or just want a more visual approach, we can use the Syntax Builder to generate the PokerJuice Syntax for us.
Create a game with the flop above or download it here.
We have created a flop and we are now ready to use the Syntax Builder. We can select a combination of:
- a made hand
- a straight draw
- a flush draw
The Syntax Builder will generate the syntax for us.
We have selected Top Pair + as our made hand and 8-way + as our straight draw.
In the preview window we can see the generated PokerJuice Syntax and the corresponding Generic Syntax
For each expression we can determine the n-th operator by selecting a number from 1 to 5 in the drop-down.
We can now click Insert or Insert & Close and the syntax is inserted.
Inside Analyze have an import button. This is used to import games. Let's try it out.
We click the button and we get a modal. Copy this sample game to the clipboard and paste the data into the modal.
We click the black Import button and we have imported a game at the exact spot it was exported.
To demonstrate the export feature let's:
- create a new game
- add a raise
- set raising range to AA
We click the export button.
The data has now successfully been copied to our clipboard. We can now save this in a text file for later use.