Vertical Report Column

Discuss how to create custom stats, reports and HUD profiles and share your creations.

Moderators: WhiteRider, kraada, Flag_Hippo, morny, Moderators

Vertical Report Column

Postby Evoke_89 » Fri Apr 30, 2021 1:37 pm

Hello,

In the custom reports section, it is possible to add a "position" or "FR position" stat, that will display each position vertically. Horizontal stats are then filtered/applied to each position.

How can I make a custom vertical stat?

Eg: I would like to have a vertical pot type stat, so my report might read like this:

2Bet Pot - CBet % - Fold to Cbet % - Call Cbet % - Raise Cbet %
3Bet Pot - CBet % - Fold to Cbet % - Call Cbet % - Raise Cbet %
Sqz Pot - CBet % - Fold to Cbet % - Call Cbet % - Raise Cbet %
4Bet Pot - CBet % - Fold to Cbet % - Call Cbet % - Raise Cbet %

I feel a report like this makes a comparison between pot types a breeze and easy to identify where over/under adjustment to strategy is made.
Evoke_89
 
Posts: 60
Joined: Tue Oct 09, 2018 7:32 am

Re: Vertical Report Column

Postby Evoke_89 » Fri Apr 30, 2021 2:18 pm

Also, under the "summary > Starting hands (hold'em)" window, the report displays all starting hands, why can't i add a "starting hand" column to a custom report?
Evoke_89
 
Posts: 60
Joined: Tue Oct 09, 2018 7:32 am

Re: Vertical Report Column

Postby WhiteRider » Sat May 01, 2021 3:05 am

It would be possible to make a "type of pot" stat to group rows like that. For an example take a look at the built-in stat "Preflop Action Facing Player".
For an overview of custom stats in PT4 read the Custom Stats Guide, and the Tutorial: Custom Reports and Statistics goes into much more detail, with examples. (The latter was written for PT3 but the principals are the same in PT4.)

Evoke_89 wrote:Also, under the "summary > Starting hands (hold'em)" window, the report displays all starting hands, why can't i add a "starting hand" column to a custom report?

You can - the stat you need is called "Hole Cards".
WhiteRider
Moderator
 
Posts: 53961
Joined: Sat Jan 19, 2008 7:06 pm
Location: UK

Re: Vertical Report Column

Postby Evoke_89 » Sat May 01, 2021 9:43 am

It would be possible to make a "type of pot" stat to group rows like that. For an example take a look at the built-in stat "Preflop Action Facing Player".


Thank you for this. Based on the expressions provided in the "Preflop Action Facing Player", I converted my working codes for pot types and replaced the if[XXXX, 1/2/3/4]]]]. However, PT is telling me it isn't valid, I assume I have missed some form of bracket? See below:

Code: Select all
if[cash_hand_player_statistics.flg_f_saw
and not
(cash_hand_player_statistics.flg_p_3bet or cash_hand_player_statistics.flg_p_3bet_def_opp) and not (cash_hand_player_statistics.flg_p_4bet or cash_hand_player_statistics.flg_p_4bet_def_opp) and not (cash_hand_player_statistics.flg_p_squeeze or cash_hand_player_statistics.flg_p_squeeze_def_opp)
and not
(cash_hand_player_statistics.cnt_p_face_limpers > 0
and
(lookup_actions_p.action SIMILAR TO '(X|C)%')
and not
(lookup_actions_p.action SIMILAR TO '(CF|CC)%')), 1,

if[cash_hand_player_statistics.flg_f_saw
and
(cash_hand_player_statistics.flg_p_3bet or cash_hand_player_statistics.flg_p_3bet_def_opp)
and not
(cash_hand_player_statistics.flg_p_4bet or cash_hand_player_statistics.flg_p_4bet_def_opp)
and not
(cash_hand_player_statistics.flg_p_squeeze or cash_hand_player_statistics.flg_p_squeeze_def_opp), 2,

if[cash_hand_player_statistics.flg_f_saw
and
(cash_hand_player_statistics.flg_p_squeeze or cash_hand_player_statistics.flg_p_squeeze_def_opp)
and not
(cash_hand_player_statistics.flg_p_4bet or cash_hand_player_statistics.flg_p_4bet_def_opp), 3,

if[cash_hand_player_statistics.flg_f_saw
and
(cash_hand_player_statistics.flg_p_4bet or cash_hand_player_statistics.flg_p_4bet_def_opp), 4, 0]]]]



Evoke_89 wrote:
Also, under the "summary > Starting hands (hold'em)" window, the report displays all starting hands, why can't i add a "starting hand" column to a custom report?

You can - the stat you need is called "Hole Cards".


Ah, that's awesome. Thank you :)
Evoke_89
 
Posts: 60
Joined: Tue Oct 09, 2018 7:32 am

Re: Vertical Report Column

Postby WhiteRider » Sat May 01, 2021 11:36 am

Evoke_89 wrote:However, PT is telling me it isn't valid, I assume I have missed some form of bracket?

Yes, you're right.
There's a missing bracket in the not part of the "3" case:
Code: Select all
cash_hand_player_statistics.flg_f_saw and (cash_hand_player_statistics.flg_p_squeeze or cash_hand_player_statistics.flg_p_squeeze_def_opp) and not cash_hand_player_statistics.flg_p_4bet or cash_hand_player_statistics.flg_p_4bet_def_opp)


What I tend to do when I'm building something fairly complex like this is to make each part of the "if" really simple to make sure that I have all of the if/then/else formatted correctly, and then pad out each case individually and validate each part.
For example, to find that the first thing I did was strip the whole thing down to if[cash_hand_player_statistics.flg_f_saw, 1, if[ cash_hand_player_statistics.flg_f_saw, 2, ... etc.
Then when that worked I put the whole expression back in and removed each part one at a time until it stopped failing.

One other little tip:
For the 2bet/3bet/4bet parts; if you literally only want to check that a pot was exactly 2-bet you can simply use:

char_length(cash_hand_summary.str_aggressors_p) = 2

This says that there were exactly two aggressors preflop, i.e. the big blind and a raise.
For more information on the aggressors string take a look at this thread.
WhiteRider
Moderator
 
Posts: 53961
Joined: Sat Jan 19, 2008 7:06 pm
Location: UK

Re: Vertical Report Column

Postby Evoke_89 » Sat May 01, 2021 1:08 pm

What I tend to do when I'm building something fairly complex like this is to make each part of the "if" really simple to make sure that I have all of the if/then/else formatted correctly, and then pad out each case individually and validate each part.
For example, to find that the first thing I did was strip the whole thing down to if[cash_hand_player_statistics.flg_f_saw, 1, if[ cash_hand_player_statistics.flg_f_saw, 2, ... etc.
Then when that worked I put the whole expression back in and removed each part one at a time until it stopped failing.


That makes complete sense. It's easy to rush ahead with this kind of thing when it's a copy & paste, but it's also the kind of thing that is important to get right. One step at a time certainly saves a headache when something isn't correct!

One other little tip:
For the 2bet/3bet/4bet parts; if you literally only want to check that a pot was exactly 2-bet you can simply use:

char_length(cash_hand_summary.str_aggressors_p) = 2

This says that there were exactly two aggressors preflop, i.e. the big blind and a raise.
For more information on the aggressors string take a look at this thread.


I do need to simplify my codes, this was all written a year or two ago when I was first learning and settled on having something that worked. I guess now is the time to take it to the next level!

I have now successfully input and had the code approved, however, there seems to be a display issue:

https://ibb.co/cTqzfF8 (Dimension issue when trying to post img direct).

I think I misunderstood what "format type" is? I also haven't touched Summary type.

The off thing is, I have 5 rows, despite only putting in 4 cases of "if[xx]". The 15k hands are preflop hands that didn't see a flop (not coded in this stat).
Evoke_89
 
Posts: 60
Joined: Tue Oct 09, 2018 7:32 am

Re: Vertical Report Column

Postby WhiteRider » Sat May 01, 2021 4:15 pm

There are five cases in your column, because zero is possible as well as 1 to 4.
I'm not sure just from looking at it why the expression is giving an error. Please export your stat and attach it here or to a Support Ticket and we'll take a closer look at it for you.
WhiteRider
Moderator
 
Posts: 53961
Joined: Sat Jan 19, 2008 7:06 pm
Location: UK

Re: Vertical Report Column

Postby Evoke_89 » Sat May 01, 2021 4:32 pm

WhiteRider wrote:There are five cases in your column, because zero is possible as well as 1 to 4.
I'm not sure just from looking at it why the expression is giving an error. Please export your stat and attach it here or to a Support Ticket and we'll take a closer look at it for you.


Ticket opened and stat sent.

Does this mean to have 4 cases, I should change it to 0-3?
Evoke_89
 
Posts: 60
Joined: Tue Oct 09, 2018 7:32 am

Re: Vertical Report Column

Postby WhiteRider » Sun May 02, 2021 2:58 am

If your four cases cover all possible hands, then yes - you will want four values. It doesn't matter whether those cases are 0-3 or 1-4, but you would use three IF statements and have the final "else" be the fourth value.
If you do that, though, you will end up including limped pots in the "else" case and I notice they're not on your list. With a grouping stat like this it isn't possible to exclude certain types of hands from the grouping altogether as they will alwasy end up with the "else" case value. If you want to exclude certain hands altogether then you will need to use a filter as well.

One thought just occurred to me - a "squeeze pot" will generally be a 3bet pot, so if you were to switch to using "char_length(cash_hand_summary.str_aggressors_p) = 3" to test for 3bet pots, then you would need to test for the squeeze case BEFORE that, otherwise the squeezes will be counted as simple 3bet pots. (It looks as if the expressions you posted above explicitly exclude squeezes from the 3bet pots, so using those wouldn't have that problem.)

Also be aware that using "char_length(cash_hand_summary.str_aggressors_p) = 4" would exclude 5bet and higher pots, so you'd probably want to use "char_length(cash_hand_summary.str_aggressors_p) >= 4" in that case.
WhiteRider
Moderator
 
Posts: 53961
Joined: Sat Jan 19, 2008 7:06 pm
Location: UK

Re: Vertical Report Column

Postby Evoke_89 » Mon May 03, 2021 1:53 pm

If your four cases cover all possible hands, then yes - you will want four values. It doesn't matter whether those cases are 0-3 or 1-4, but you would use three IF statements and have the final "else" be the fourth value. If you do that, though, you will end up including limped pots in the "else" case and I notice they're not on your list. With a grouping stat like this it isn't possible to exclude certain types of hands from the grouping altogether as they will always end up with the "else" case value. If you want to exclude certain hands altogether then you will need to use a filter as well.


I do have a limped pot stat, I just didn't add it to this. I have now added it, but are not been grouped separately :cry:

Also, this means all the hands that did not see a flop "preflop pots" will need to be included? How is this included in the "else[]" expression, or does it stay blank?

One thought just occurred to me - a "squeeze pot" will generally be a 3bet pot, so if you were to switch to using "char_length(cash_hand_summary.str_aggressors_p) = 3" to test for 3bet pots, then you would need to test for the squeezing case BEFORE that, otherwise, the squeezes will be counted as simple 3bet pots. (It looks as if the expressions you posted above explicitly exclude squeezes from the 3bet pots, so using those wouldn't have that problem.)

Also be aware that using "char_length(cash_hand_summary.str_aggressors_p) = 4" would exclude 5bet and higher pots, so you'd probably want to use "char_length(cash_hand_summary.str_aggressors_p) >= 4" in that case.


If which case would use of "char_length(cash_hand_summary.str_aggressors_p) = 3" actually simplify my squeeze stat? I would still need to use "not (cash_hand_player_statistics.flg_p_squeeze or cash_hand_player_statistics.flg_p_squeeze_def_opp)", correct?

Also, considering people have a tendancy to call 4bets on occasions (be it either a leak, tricky play or being deep stacked), would using "char_length(cash_hand_summary.str_aggressors_p) = 4" & "char_length(cash_hand_summary.str_aggressors_p) >= 5" be suitable?
Evoke_89
 
Posts: 60
Joined: Tue Oct 09, 2018 7:32 am

Next

Return to Custom Stats, Reports and HUD Profiles

Who is online

Users browsing this forum: No registered users and 24 guests

cron
highfalutin