filter question number of coldcallers when squeeze opp

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

Moderators: WhiteRider, kraada, Flag_Hippo, morny, Moderators

filter question number of coldcallers when squeeze opp

Postby 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

Re: filter question number of coldcallers when squeeze opp

Postby 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

Re: filter question number of coldcallers when squeeze opp

Postby 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

Re: filter question number of coldcallers when squeeze opp

Postby 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.

    Spoiler: show
    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

    Re: filter question number of coldcallers when squeeze opp

    Postby 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

    Re: filter question number of coldcallers when squeeze opp

    Postby 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

    Re: filter question number of coldcallers when squeeze opp

    Postby 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.

      Spoiler: show
      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

      Re: filter question number of coldcallers when squeeze opp

      Postby 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

      Re: filter question number of coldcallers when squeeze opp

      Postby 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

      Re: filter question number of coldcallers when squeeze opp

      Postby 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

      Next

      Return to Custom Stats, Reports and HUD Profiles

      Who is online

      Users browsing this forum: No registered users and 26 guests

      cron