Discuss how to create custom stats, reports and HUD profiles and share your creations.
Moderators: WhiteRider, kraada, Flag_Hippo, morny, Moderators
by ommaha » Fri Sep 09, 2016 1:37 pm
hi,
i tried to filter for squeeze opportunity when a player 2bets, 2 player call his raise and I have the opprtunity to squeeze. teh crucial part is having exactly 2 coldcallers. How can I filter for this?
tyvm
-
ommaha
-
- Posts: 218
- Joined: Sun Jul 29, 2012 8:46 am
by Flag_Hippo » Sat Sep 10, 2016 5:44 am
You can use Squeeze Opportunity (or not) to filter for there being callers or not but you can't distinguish with simple filters for the number of players who called in between more than that.
-
Flag_Hippo
- Moderator
-
- Posts: 14505
- Joined: Tue Jan 31, 2012 7:50 am
by ommaha » Sat Sep 10, 2016 9:42 am
I would not mind if it was not a simple filter but an expression filter
-
ommaha
-
- Posts: 218
- Joined: Sun Jul 29, 2012 8:46 am
by BillGatesIII » Sun Sep 11, 2016 7:41 am
That was a bit more difficult than I thought it would be
And I'm not sure if every situation is covered with this expression.
- Code: Select all
cash_hand_player_statistics.flg_p_squeeze_opp
and length(cash_hand_summary.str_actors_p) > 2
and substring(cash_hand_summary.str_actors_p from 1 for 1) = substring(cash_hand_summary.str_aggressors_p from 2 for 1)
and substring(cash_hand_summary.str_actors_p from 3 for 1)::int <> cash_hand_player_statistics.position
and (length(cash_hand_summary.str_aggressors_p) = 2
or substring(cash_hand_summary.str_actors_p from 3 for 1) <> substring(cash_hand_summary.str_aggressors_p from 3 for 1))
and (substring(cash_hand_summary.str_actors_p from 3 for 1)::int <= 7
and (cash_hand_player_statistics.position < substring(cash_hand_summary.str_actors_p from 3 for 1)::int
or cash_hand_player_statistics.position >= 8)
or (substring(cash_hand_summary.str_actors_p from 3 for 1)::int = 9
and cash_hand_player_statistics.position = 8))
and (length(cash_hand_summary.str_actors_p) = 3
or (length(cash_hand_summary.str_actors_p) > 3
and (substring(cash_hand_summary.str_actors_p from 4 for 1)::int <= 7
and cash_hand_player_statistics.position <= 7
and cash_hand_player_statistics.position >= substring(cash_hand_summary.str_actors_p from 4 for 1)::int)
or (substring(cash_hand_summary.str_actors_p from 4 for 1)::int = 9
and cash_hand_player_statistics.position <> 8)
or substring(cash_hand_summary.str_actors_p from 4 for 1)::int = 8))
Here is the same code with some explanation.
where cash_hand_player_statistics.flg_p_squeeze_opp -- implicits at least one raiser
and length(cash_hand_summary.str_actors_p) > 2 -- need at least three actors for a raiser and two callers
and substring(cash_hand_summary.str_actors_p from 1 for 1) = substring(cash_hand_summary.str_aggressors_p from 2 for 1) -- no limpers before the first raiser
and substring(cash_hand_summary.str_actors_p from 3 for 1)::int <> cash_hand_player_statistics.position -- third actor not hero
and (length(cash_hand_summary.str_aggressors_p) = 2 -- one raiser
or substring(cash_hand_summary.str_actors_p from 3 for 1) <> substring(cash_hand_summary.str_aggressors_p from 3 for 1)) -- or third actor did not raise
and (substring(cash_hand_summary.str_actors_p from 3 for 1)::int <= 7 -- third actor not in the blinds
and (cash_hand_player_statistics.position < substring(cash_hand_summary.str_actors_p from 3 for 1)::int -- and hero acts after third actor
or cash_hand_player_statistics.position >= 8) -- or hero in the blinds
or (substring(cash_hand_summary.str_actors_p from 3 for 1)::int = 9 -- third actor in the small blind
and cash_hand_player_statistics.position = 8)) -- and hero in the big blind
and (length(cash_hand_summary.str_actors_p) = 3 -- exactly two callers
or (length(cash_hand_summary.str_actors_p) > 3 -- more players making some noise
and (substring(cash_hand_summary.str_actors_p from 4 for 1)::int <= 7 -- fourth actor not in the blinds
and cash_hand_player_statistics.position <= 7 -- and hero not in the blinds
and cash_hand_player_statistics.position >= substring(cash_hand_summary.str_actors_p from 4 for 1)::int) -- and hero acts before, or is fourth actor
or (substring(cash_hand_summary.str_actors_p from 4 for 1)::int = 9 -- fourth actor in the small blind
and cash_hand_player_statistics.position <> 8) -- and hero not in the big blind
or substring(cash_hand_summary.str_actors_p from 4 for 1)::int = 8)) -- fourth actor in the big blind
-
BillGatesIII
-
- Posts: 740
- Joined: Fri Dec 16, 2011 6:50 pm
by ommaha » Tue Sep 13, 2016 8:24 pm
thank you very much. amazing work!
i learned a lot by looking at your code and your comments
-
ommaha
-
- Posts: 218
- Joined: Sun Jul 29, 2012 8:46 am
by zino123 » Sat Sep 17, 2016 9:47 am
very nice bill!
can you do the same for 1 coldcaller ?
-
zino123
-
- Posts: 17
- Joined: Sun Aug 12, 2012 5:14 pm
by SirDehi » Thu Jan 10, 2019 12:39 pm
BillGatesIII wrote:That was a bit more difficult than I thought it would be
And I'm not sure if every situation is covered with this expression.
- Code: Select all
cash_hand_player_statistics.flg_p_squeeze_opp
and length(cash_hand_summary.str_actors_p) > 2
and substring(cash_hand_summary.str_actors_p from 1 for 1) = substring(cash_hand_summary.str_aggressors_p from 2 for 1)
and substring(cash_hand_summary.str_actors_p from 3 for 1)::int <> cash_hand_player_statistics.position
and (length(cash_hand_summary.str_aggressors_p) = 2
or substring(cash_hand_summary.str_actors_p from 3 for 1) <> substring(cash_hand_summary.str_aggressors_p from 3 for 1))
and (substring(cash_hand_summary.str_actors_p from 3 for 1)::int <= 7
and (cash_hand_player_statistics.position < substring(cash_hand_summary.str_actors_p from 3 for 1)::int
or cash_hand_player_statistics.position >= 8)
or (substring(cash_hand_summary.str_actors_p from 3 for 1)::int = 9
and cash_hand_player_statistics.position = 8))
and (length(cash_hand_summary.str_actors_p) = 3
or (length(cash_hand_summary.str_actors_p) > 3
and (substring(cash_hand_summary.str_actors_p from 4 for 1)::int <= 7
and cash_hand_player_statistics.position <= 7
and cash_hand_player_statistics.position >= substring(cash_hand_summary.str_actors_p from 4 for 1)::int)
or (substring(cash_hand_summary.str_actors_p from 4 for 1)::int = 9
and cash_hand_player_statistics.position <> 8)
or substring(cash_hand_summary.str_actors_p from 4 for 1)::int = 8))
Here is the same code with some explanation.
where cash_hand_player_statistics.flg_p_squeeze_opp -- implicits at least one raiser
and length(cash_hand_summary.str_actors_p) > 2 -- need at least three actors for a raiser and two callers
and substring(cash_hand_summary.str_actors_p from 1 for 1) = substring(cash_hand_summary.str_aggressors_p from 2 for 1) -- no limpers before the first raiser
and substring(cash_hand_summary.str_actors_p from 3 for 1)::int <> cash_hand_player_statistics.position -- third actor not hero
and (length(cash_hand_summary.str_aggressors_p) = 2 -- one raiser
or substring(cash_hand_summary.str_actors_p from 3 for 1) <> substring(cash_hand_summary.str_aggressors_p from 3 for 1)) -- or third actor did not raise
and (substring(cash_hand_summary.str_actors_p from 3 for 1)::int <= 7 -- third actor not in the blinds
and (cash_hand_player_statistics.position < substring(cash_hand_summary.str_actors_p from 3 for 1)::int -- and hero acts after third actor
or cash_hand_player_statistics.position >= 8) -- or hero in the blinds
or (substring(cash_hand_summary.str_actors_p from 3 for 1)::int = 9 -- third actor in the small blind
and cash_hand_player_statistics.position = 8)) -- and hero in the big blind
and (length(cash_hand_summary.str_actors_p) = 3 -- exactly two callers
or (length(cash_hand_summary.str_actors_p) > 3 -- more players making some noise
and (substring(cash_hand_summary.str_actors_p from 4 for 1)::int <= 7 -- fourth actor not in the blinds
and cash_hand_player_statistics.position <= 7 -- and hero not in the blinds
and cash_hand_player_statistics.position >= substring(cash_hand_summary.str_actors_p from 4 for 1)::int) -- and hero acts before, or is fourth actor
or (substring(cash_hand_summary.str_actors_p from 4 for 1)::int = 9 -- fourth actor in the small blind
and cash_hand_player_statistics.position <> 8) -- and hero not in the big blind
or substring(cash_hand_summary.str_actors_p from 4 for 1)::int = 8)) -- fourth actor in the big blind
Quoting this amazing post for future reference.
I think I made the following column from it : "BB call 2-Bet when Hero is SB and calls an open raise". I need to find a way to create the opportunities column now
- Code: Select all
sum(if[cash_hand_player_statistics.flg_p_squeeze_opp and length(cash_hand_summary.str_actors_p) = 3 and substring(cash_hand_summary.str_actors_p from 1 for 1) = substring(cash_hand_summary.str_aggressors_p from 2 for 1) and substring(cash_hand_summary.str_actors_p from 3 for 1)::int <> cash_hand_player_statistics.position and (length(cash_hand_summary.str_aggressors_p) = 2 or substring(cash_hand_summary.str_actors_p from 3 for 1) <> substring(cash_hand_summary.str_aggressors_p from 3 for 1)) and (substring(cash_hand_summary.str_actors_p from 3 for 1)::int = 8 and cash_hand_player_statistics.position = 9), 1, 0])
-
SirDehi
-
- Posts: 78
- Joined: Sun Jun 19, 2016 12:00 pm
by SirDehi » Thu Jan 10, 2019 1:27 pm
Well I can not longer edit or delete that post, so here's an update on that stat which SEEMS to work. Would appreciate confirmation:
To be clear here is what it's supposed to do:
% of the time the player is in the BB and calls a 2-Bet after the SB Called an open raise.
Count:
- Code: Select all
sum(if[cash_hand_player_statistics.flg_p_squeeze_opp and length(cash_hand_summary.str_actors_p) = 3 and substring(cash_hand_summary.str_actors_p from 1 for 1) = substring(cash_hand_summary.str_aggressors_p from 2 for 1) and substring(cash_hand_summary.str_actors_p from 3 for 1)::int = cash_hand_player_statistics.position and length(cash_hand_summary.str_aggressors_p) = 2 and substring(cash_hand_summary.str_actors_p from 3 for 1) <> substring(cash_hand_summary.str_aggressors_p from 3 for 1) and cash_hand_player_statistics.position = 8 and substring(cash_hand_summary.str_actors_p from 2 for 1)::int = 9, 1, 0])
Opportunities:
- Code: Select all
sum(if[cash_hand_player_statistics.flg_p_squeeze_opp and substring(cash_hand_summary.str_actors_p from 1 for 1) = substring(cash_hand_summary.str_aggressors_p from 2 for 1) and cash_hand_summary.str_actors_p LIKE '_9%' and length(cash_hand_summary.str_aggressors_p) = 2 and cash_hand_player_statistics.position = 8 and substring(cash_hand_summary.str_actors_p from 2 for 1)::int = 9, 1, 0])
-
SirDehi
-
- Posts: 78
- Joined: Sun Jun 19, 2016 12:00 pm
by Flag_Hippo » Fri Jan 11, 2019 8:16 am
The count column is fine but you can achieve the same thing with a much simpler expression:
- Code: Select all
sum(if[cash_hand_player_statistics.flg_p_squeeze_opp and cash_hand_player_statistics.position = 8 and cash_hand_summary.str_actors_p LIKE '_98' and cash_hand_summary.str_aggressors_p LIKE '8_', 1, 0])
In the opportunities column you are using
length(cash_hand_summary.str_aggressors_p) = 2 so you are not counting hands where the BB did squeeze as an opportunity to call so that needs changing to
length(cash_hand_summary.str_aggressors_p) >= 2 or you can use this instead:
- Code: Select all
sum(if[cash_hand_player_statistics.flg_p_squeeze_opp and cash_hand_player_statistics.position = 8 and cash_hand_summary.str_actors_p LIKE '_9%' and cash_hand_summary.str_aggressors_p LIKE '8_%', 1, 0])
-
Flag_Hippo
- Moderator
-
- Posts: 14505
- Joined: Tue Jan 31, 2012 7:50 am
by SirDehi » Fri Jan 11, 2019 9:22 am
Thank you very much for the help!
I'm always a little confused as to why sometimes the code for some basic stats is "complex" when there always seems to be a more recent easier way to create them nowadays. But that's probably just me not seeing the full picture of things
-
SirDehi
-
- Posts: 78
- Joined: Sun Jun 19, 2016 12:00 pm
Return to Custom Stats, Reports and HUD Profiles
Users browsing this forum: No registered users and 26 guests