## How To: Advanced HUD Configuration (updated 8/30/10)

Frequently Asked Questions/Answers, Tutorials, and Common How To's

Moderator: Moderators

### How To: Advanced HUD Configuration (updated 8/30/10)

The PT3 heads up display (HUD) is highly customizable and extremely flexible. This is by design in order to allow users the maximum amount of flexibility in customization. There are many different ways to achieve this customization. The techniques available here all require a registered version of PT3; they will not work in the trial.

The techniques covered in this FAQ are:
(1) Coloring one statistic based on the value of another
(2) Creating Read-Based statistics
(3) Creating M-range statistics
(4) Creating Hand Range popups

Finally, we have available a [[[LINK: ]]] HUD available which uses all of these techniques.

*** UPDATE IN PROGRESS ***
Moderator

Posts: 54443
Joined: Wed Mar 05, 2008 2:32 am
Location: NY

### Coloring one statistic based on the value of another

One of the more difficult decisions in designing a HUD is deciding how much to display on the table at any given time. There are hundreds of statistics that are available for display, and displaying them all at any given time is clearly impossible. One way a PT3 user can display more statistics with less clutter on the table is by using one statistic that displays colores based on the value of another statistic.

In this tutorial we will demonstrate how to have the statistic "Attempt to Steal" have a color which changes depending on the value of "Fold Steal to Reraise". Since these statistics have something in common it will be easier to remember the connection while playing, and in this way you can at a quick glance have an idea of how often your opponent will both attempt to steal the blinds and how easily he will give up when he faces resistance.

The following tutorial will explain how to add one color condition that will show the Attempt to Steal value in red when the player folds his steals to reraise less than 10% of the time. This will be a warning that he will not fold to re-raises and you should strengthen your 3-betting range accordingly.

In order to edit the color that displays in this fashion we need to edit the statistics directly. To edit statistics, click Configure --> Configure Stats
advhud1.jpg (13.35 KiB) Viewed 58677 times

Choose the Player Statistics section that you wish to use - Holdem Cash, Holdem Tournament, Omaha Cash or Omaha Tournament. For demonstration purposes, we will be using Holdem Cash.

Change to the Statistics tab and scroll down. Click on Att to Steal, then click on the Colors tab.

In this colors tab, you can set the statistics colors to based on whatever you can imagine. You set the conditions for each color field in the “Conditions” box, then check whether you want that color to apply to the HUD, the Tracker, or both. In our case, we want to just check the HUD box.

To create our condition, we're going to click the blue “insert” link to insert the statistic we want, change to the Statistics tab and choose Fold Steal to Blind Reraise.

Once you click OK you can see that the statistic has been inserted into the Condition Expression window. We can now define the statistic we want the color to display for. As we have said, we want the color to display when Fold Steal to Blind Reraise is less than 10%. Adding "< 10" after the #Fold Steal to Blind Reraise# will accomplish this goal. Now we need to choose the color that will display. Double click on the black box labeled “Color” to get the color choosing menu, and click on the solid red (second down from the top in the far left column).

Once you click OK it will appear as so:

advhud6.jpg (11.31 KiB) Viewed 58723 times

Click the uppermost Save and the condition will be saved and moved to the top pane.

You can add as many conditions as you would like here, and you can use the word “and” to connect multiple conditions together. You can resize the columns to see long conditions by clicking on the vertical bar and dragging it to the right or left. Add as many conditions as you would like and then click save. If you're unsure if the expression is ok, click “Validate” and PT3 will tell you if the expression is acceptable.
Moderator

Posts: 54443
Joined: Wed Mar 05, 2008 2:32 am
Location: NY

### Creating Read-Based Statistics

A Read-Based Statistic can be thought of as a note in statistic form. As you play poker and take notes on your opponents, you will find that, over time, you often take notes on the same things many times - whether they minraise and are weak, whether they donkbet and are strong, or any of a wide variety of things. Depending on your game type and your opponents' skill level, the detail and complexity of your notes may vary, but many of your notes can likely be built as PT3 statistics and set to display in your HUD.

This tutorial will explain how to create one Read-Based Statistic that I have found to be useful - how many times someone has posted dead blinds in early or middle position. A player who is posting rather than waiting for the big blind - especially in early position - is not as concerned with maximizing his equity in any given pot and is likely to get involved in a lot of pots and want action quickly. This stat displays "Posted Blinds in EP or MP X times" when a player has posted in early or middle position X times. If they've never done it, the stat displays nothing at all. This convention is useful for keeping your popups more easily readable as you build and add more Read-Based Statistics.

The relevant piece of database information required for this statistic is that holdem_hand_player_statistics.flg_blind_db is true when a player has posted a dead big blind.

Click Configure --> Stats to bring up the stat configuration interface. Click on Holdem Cash Player Statistics, and we're going to create a column: cnt_db_ep_mp (for the count of dead blinds in early or middle position). The definition is as follows:

Code: Select all
`sum(if[(((holdem_hand_summary.cnt_players = 4 and holdem_hand_player_statistics.position = 1) or(holdem_hand_summary.cnt_players = 5 and holdem_hand_player_statistics.position = 2) or(holdem_hand_summary.cnt_players = 6 and holdem_hand_player_statistics.position = 3) or(holdem_hand_summary.cnt_players = 7 and holdem_hand_player_statistics.position = 4) or(holdem_hand_summary.cnt_players = 8 and (holdem_hand_player_statistics.position = 4 or holdem_hand_player_statistics.position = 5)) or(holdem_hand_summary.cnt_players = 9 and (holdem_hand_player_statistics.position = 5 or holdem_hand_player_statistics.position = 6)) or (holdem_hand_summary.cnt_players = 10 and (holdem_hand_player_statistics.position = 6 or holdem_hand_player_statistics.position = 7))) or ((holdem_hand_player_statistics.position = 2 and  holdem_hand_summary.cnt_players > 5 and holdem_hand_summary.cnt_players < 9) or(holdem_hand_player_statistics.position = 3 and  holdem_hand_summary.cnt_players > 6) or(holdem_hand_player_statistics.position = 4 and  holdem_hand_summary.cnt_players > 8))) and  holdem_hand_player_statistics.flg_blind_db, 1, 0])`

This definition matches the definitions of early and middle position used by PT3.

Proceed to the Stats tab and create a new Statistic. Create a new stat and call it "Posts Blinds in Early/Middle Position" and give it an appropriate definition "Count of how many times the player posts dead blinds in early or middle position" and the value expression of cnt_db_ep_mp that we just built.

The Format Expressions box is where we can format the statistic to display the text we would like to see with the format() function. We want to format the statistic such that if someone has posted a dead blind even once, it tells us how many times they've posted, but if they haven't posted at all it shows us nothing. The conditionals in the formatting box are built a little differently than in columns, as you must use normal parentheses instead of square brackets. We know our test is whether or not cnt_db_ep_mp is greater than zero. We then use the format() function to say what we want to see. It will end up looking like this:

Code: Select all
`if(cnt_db_ep_mp > 0, format('Posted Dead Blinds in EP or MP {1} times.', format_number(cnt_db_ep_mp, 0, false, false)), '')`

So the {1} refers to the next argument after a comma, which in this case is the number of times they post. format_number(a, b, c, d) gives you a as a number with b decimal places and if c is true it uses commas to delineate thousands (e.g. 1,000 instead of 1000) and if d is true it becomes green if positive and red if negative. We used format_number() here because we don't want decimal places for sure in this value (you can't post a blind a half a time, after all), and you'll note that if cnt_db_ep_mp is not greater than zero, the else part of the conditional is two single quotes -- making an empty string. Thus if they've posted, we'll get the readout, if they haven't, we won't.

This functionality can be extended to any situation which you can pick out with a combination of PT3 database fields.
Moderator

Posts: 54443
Joined: Wed Mar 05, 2008 2:32 am
Location: NY

### Creating M-range statistics

M is defined in Harrington On Holdem as the ratio of your stack to the cost of going around the table once. So if the blinds are 100/200 and you have a stack of 900 you have an M of 3 ( 100+ 200 = 300, 900 / 300 = 3). If the blinds are 500/1000 with an ante of 100 and the table is 5 handed, and you have a stack of 6000, you also have an M of 3 (500 + 1000 + 100 * 5 = 2000, 6000 / 2000 = 3). I won't try and duplicate the analysis in HoH, but the idea is that there are different regions and you should play differently based on your M. When your M is lower, you need to be more aggressive.

I've split up the table into 5 M groups, three of which are taken directly from Harrington's analysis:

The Red Zone, where your M is less than 5. The Orange Zone, where your M is between 5 and 10. The Yellow Zone, where your M is between 10 and 20. The Green Zone I've altered slightly as it's now when your M is between 20 and 50, and the new zone is the Blue Zone, where your M is greater than 50.

For any hand a player has played that has been imported into PT3, we know what his stack size was in that hand. Thus we can build statistics that show how a player's play has changed based on his stack size at the time.

In stat defining parlance, the zones are as follows:

Red:
Code: Select all
`(tourney_holdem_hand_player_detail.amt_before / ( tourney_holdem_blinds.amt_bb + tourney_holdem_blinds.amt_sb + (tourney_holdem_hand_summary.cnt_players * tourney_holdem_hand_player_detail.amt_ante)) <= 5)`

Orange:
Code: Select all
`((tourney_holdem_hand_player_detail.amt_before / ( tourney_holdem_blinds.amt_bb + tourney_holdem_blinds.amt_sb + (tourney_holdem_hand_summary.cnt_players * tourney_holdem_hand_player_detail.amt_ante)) <= 10) and (tourney_holdem_hand_player_detail.amt_before / ( tourney_holdem_blinds.amt_bb + tourney_holdem_blinds.amt_sb + (tourney_holdem_hand_summary.cnt_players * tourney_holdem_hand_player_detail.amt_ante)) > 5))`

Yellow:
Code: Select all
`((tourney_holdem_hand_player_detail.amt_before / ( tourney_holdem_blinds.amt_bb + tourney_holdem_blinds.amt_sb + (tourney_holdem_hand_summary.cnt_players * tourney_holdem_hand_player_detail.amt_ante)) <= 20) and (tourney_holdem_hand_player_detail.amt_before / ( tourney_holdem_blinds.amt_bb + tourney_holdem_blinds.amt_sb + (tourney_holdem_hand_summary.cnt_players * tourney_holdem_hand_player_detail.amt_ante)) > 10))`

Green:
Code: Select all
`((tourney_holdem_hand_player_detail.amt_before / ( tourney_holdem_blinds.amt_bb + tourney_holdem_blinds.amt_sb + (tourney_holdem_hand_summary.cnt_players * tourney_holdem_hand_player_detail.amt_ante)) <= 50) and (tourney_holdem_hand_player_detail.amt_before / ( tourney_holdem_blinds.amt_bb + tourney_holdem_blinds.amt_sb + (tourney_holdem_hand_summary.cnt_players * tourney_holdem_hand_player_detail.amt_ante)) > 20))`

and

Blue:
Code: Select all
`(tourney_holdem_hand_player_detail.amt_before / ( tourney_holdem_blinds.amt_bb + tourney_holdem_blinds.amt_sb + (tourney_holdem_hand_summary.cnt_players * tourney_holdem_hand_player_detail.amt_ante)) > 50)`

To alter any existing statistic and make a version for a given M group, create a duplicate of the column, and add in the condition for the M group you wish and connect them with AND. For example, cnt_vpip_rz (RZ for Red Zone) would read:

Code: Select all
`sum(if[tourney_holdem_hand_player_statistics.flg_vpip and (tourney_holdem_hand_player_detail.amt_before / ( tourney_holdem_blinds.amt_bb + tourney_holdem_blinds.amt_sb + (tourney_holdem_hand_summary.cnt_players * tourney_holdem_hand_player_detail.amt_ante)) <= 5), 1, 0])`
Moderator

Posts: 54443
Joined: Wed Mar 05, 2008 2:32 am
Location: NY

### Creating Hand Range Popups

Some of the most difficult decisions in poker can be made vastly easier if we know what hands our opponent plays in what fashions. Each hand we can eliminate will make our decisions that much easier.

Three caveats:

(1) This information can take a very long time to approach accuracy. We only know our opponent's hand if he reaches showdown, so if our opponent limp/reraises 76s and AA in early position and only shows down AA, our view of his limp/reraising hands would be inaccurate. While this is not a problem that we can resolve, it is worth noting that these popups will take quite a while to populate completely. That is not to say they are not useful however. I once played against an opponent whose Reraise hands showed just K5s and Q3o - when he reraised and I had AQ, I knew I should be very happy.

(2) There is a maximum number of custom columns that can be added to the PT3 system. The total number of columns cannot exceed 1600. Each chart for a situation will use 170 columns. As such, we need to consider carefully which charts are worth building and displaying.

(3) Each additional column extends housekeeping time. Unless you are doing large scale datamining, this will likely not be a problem, but it is worth mentioning.

For the purposes of this tutorial we will look to build those columns that would be needed in order to make a grid of hands shown down after limping.

Each hole card combination in the PT3 database is assigned a number from 1 to 169 for Holdem and 1 to 1820 for Omaha. For the purposes of this tutorial (and our sanity) we will only discuss Holdem. The same ideas can be extended to Omaha, though building the entire chart is obviously not possible as per caveat (2).

We need to know the value of the hole cards. The details on these values can be found in this post.

Now we can start building. We can build cnt_limp_show_aa: sum( if[holdem_hand_player_statistics.flg_p_limp AND
holdem_hand_player_statistics.id_holecard = 1, 1, 0]) then cnt_limp_show_aks: sum( if[holdem_hand_player_statistics.flg_p_limp AND
holdem_hand_player_statistics.id_holecard = 2, 1, 0]) and so on. We also need to build cnt_limp_known: sum( if[holdem_hand_player_statistics.flg_p_limp AND holdem_hand_player_statistics.flg_showdown, 1, 0]) - this is the number of hands that they have limped and reached showdown with.

Once we have all of the 169 hole card combinations built as columns, we can build the statistics: (cnt_limp_show_aa / cnt_limp_known) * 100 will be the percentage of hands that he player limped and showed that were AA. We have 169 of these to build - so it is a very tedious process.

With time and effort, though, you can build a popup that looks like this:

(click on the image to see the full size version)