Como hallar un rango optimo de steal?

    • jakor451
      jakor451
      Bronce
      Registro: 08-04-2009 Artículos: 1.832
      Hola!

      Bueno, en la seccion de torneos pusieron una mano e intente deducir matematicamente cual seria el rango correcto de steal y derivandolo de ese rango el de fold y call al shove.

      Os adjunto el link:

      La suerte de los maniac players

      La mano en si tampoco tiene mucha ciencia, pero me interesa el metodo para obtener el rango conociendo el rango de 3bet del rival.

      Voy a simplificar un poco la situacion:

      Hero sb: 20bb

      BB: 20bb

      Pot pre sin ciegas: 2bb

      3bet bb: 40%

      Fold to steal: 60%

      *Su 3bet es all in*

      *Nuestro raise sera a 3bb*

      Ahora os pongo como plantee el ev total de la situacion de primeras y a ver si me podeis decir si el planteamiento para obtener el rango optimo de steal es correcto.

      S = Rango de steal [0..1]

      Y = Rango de call al shove [0..S]

      S - Y = Rango de fold [0..S]

      X = Equity de la peor mano de nuestro rango de call al shove

      0 <= EV = 0*(1-S) + S*[0.6*3.5 + 0.4*(Y*(X*25 - (1 - X)*17) - (S - Y)*3)]

      Esa seria la formula base, simplificando queda:

      EV = 16.8XYS - 5.6YS - 1.2S^2 + 2.1

      Si la desarrollamos para dejarlo en f(x):

      0 <= 16.8XYS - 5.6YS - 1.2S^2 + 2.1

      X = (1.2S^2 + 5.6YS - 2.1) / 16.8YS

      o

      S = [-(16.8XY - 5.6Y) +-((16.8XY - 5.6Y)^2 + 4*1.2*2.1))^(1/2)] / -2.4


      Hasta este punto llego. A partir de esto ya no se como ingeniarmelas para maximizar S por las siguientes razones:

      X es la variable independiente, por lo que no se si es correcto el planteamiento de las ecuaciones finales.

      Y se deduce de X, consultando en el equilator el porcentaje de manos que nos bastan para el call al shove.

      Ahora bien, con el equilator podria despejar Y y X, introducirlo en la formula S y me saldria el porcentaje total de manos con las que podria abrir rentablemente.

      El asunto, como podeis comprobar, es que la formula es mas fea que un parto, y lo que trato de hallar es una formula general para obtener rangos optimos de steal o un metodo menos engorroso.

      ¿Alguna idea de por donde tirar?

      Un saludo.
  • 11 respuestas
    • TheRipper71
      TheRipper71
      Bronce
      Registro: 08-16-2009 Artículos: 1.737
      Una vez quise hacer algo parecido, luego lo explico.

      Tal como planteas tu el problema, villano foldsteal 60% y 3bet 40% (supongo que es un bot que nunca varia su juego), te diria que solo tienes tres opciones:
      -Fold=> EV=0
      -Raise 3bb/fold=> EV=0.6*1.5-0.4*2.5=-0.1bb
      -Raise 3bb/call=> EV=Equity*40bb-19.5bb

      Es decir, viendo esto así, no puedes plantearte jugar raise/fold, por que no es rentable, cada vez que lo hagas perderás dinero.

      Solo podemos hacer 3bet/call o fold. Lo óptimo será hacer el 3bet/call con la mayor frecuencia posible y que sea EV+.

      Por lo que lo óptimo será jugar raise/call con todas las manos que tengan:
      Equity>=19.5/40=48.75% contra su rango de 3bet (40%) y foldear el resto.

      Esto sería para casos en que el raise/fold no es rentable.

      -------------------------------------------------------------------------------------------------

      Voy a tratar lo que se me ocurrió hacer a mi un buen día.

      Lo que yo intenté era buscar algo parecido a lo que tú haces, pero suponiendo que el villano se adapta a mi juego y que sabe exactamente mis rangos.

      Es decir, imagina que yo robo con el 40% y tengo un fold del 50%, entonces el villano me hará el resteal con un rango que optimice su juego contra mi.

      Entonces se trataba de buscar mi rango de steal y de fold a resteal que obligarán a jugar al villano a hacerme resteal de tal forma que aunque jugara perfecto contra mis rangos, él no pudiese ganar dinero.

      No conseguí casi nada.
    • jakor451
      jakor451
      Bronce
      Registro: 08-04-2009 Artículos: 1.832
      Hola!

      Gracias por el interes!

      Sigo dandole vueltas. En principio esos condicionantes son para simplificar los calculos y poder extraer algo asi como una formula general.

      Creo que no es tan drastico como lo planteas, es decir, si jugamos raise fold siempre perdemos -0.1bb, pero el asunto es que en el otro 40% de ocasiones que nos shovea no vamos a foldear el 100%. Ahora la cosa es como sacar el maximo de su 60% de fold vs sb steal y de su rango amplio de resteal.

      Ahora lo estoy planteando en base a las manos que tienen el equity necesario para EV >= 0 contra su rango de shove y ampliar rango tanto como nos permita el ev general de la secuencia. A ver si en un rato lo termino y lo subo para ver si he derrapado o esta bien el enfoque.

      Un saludo.
    • TheRipper71
      TheRipper71
      Bronce
      Registro: 08-16-2009 Artículos: 1.737
      No es que si juegas raise/fold siempre perderás 0.1bb.

      Imgainate que robas un 40%, foldeas un 50%.

      Entonces el 60%=> EV=0

      El 20% que haces raise/fold=> EV=-0.1bb

      El 20% que haces raise/call=> EV=equity*40-19.5=...

      Si sumas eso dará una cantidad.

      Pero si en vez de eso haces robas un 20% y foldeas un 0%

      Estarás ganando más.

      A ver si ahora he conseguido explicarlo mejor.

      Si el raise/fold no es rentable, no puedes hacerlo.

      Si el raise/fold fuera rentable (es decir un villano con fold del 75% por ejemplo) nunca deberías hacer fold directo, por que raise/fold tiene más EV.

      Todo esto es siempre pensando que el villano es un bot que no modifica su juego contra nosotros y se adapta.
    • TheRipper71
      TheRipper71
      Bronce
      Registro: 08-16-2009 Artículos: 1.737
      Supongamos que el rango con que te hace un resteal el villano es:



      El juego óptimo contra él será:

      -Raise/call con 33+,A2s+,A5o+,KTo+,K9s+ (21,12%)
      -Foldear el resto.
      -Nunca Raise/fold.

      Steal de 21,12% y Foldvsresteal del 0%.

      Eso es lo que maximizará tu EV.

      EV=21.12%*(56,819%*40-19.5)=0.682bb en cada mano.

      En realidad hay 0.5bb que no las estas ganando, si no recuperando ya que antes eran tuyas. Por lo que tu ganancia será 0.182bb por mano.

      EDIT:

      Cuando hacemos raise/call, el EV no será como he puesto arriba ni aquí, sino:

      EV=0.6*1.5bb+0.4*(21.12%*(56,819%*40-19.5))=1.17bb por mano.

      En realidad estaremos ganando 0.67bb por mano.
    • santaka
      santaka
      Bronce
      Registro: 09-01-2008 Artículos: 6.451
      Hola

      Veo que tenéis una buena discusión armada :) En el mathematics of poker explica exactamente cómo jugar de forma inexplotable push/fold SBvsBB, es decir, que para el villano con su mano la opción de foldear = pagar. De esta forma elabora una tabla de push/fold (podéis googlear Nash equilibium push fold).

      Ahora bien, jugar de manera inexplotable solo tiene sentido si estamos contra un villano que va a saber adaptarse a la perfección a cualquier estrategia que usemos, es decir, siempre va un paso por delante nuestro.

      En el resto de casos, en general los jugadores jugamos de forma explotable, por lo que siempre hay que buscar las líneas que maximizan el EV contra el juego del villano. Pero igualmente, buscar el juego inexplotable es muy importante para saber cómo adaptarnos al villano.

      Por ejemplo, si al villano le hemos visto hacer push con QTs en una situación en la que según el equilibrio nash es un fold, entonces nuestra adaptación será ampliar nuestro rango de call. O si en una situación en el river el %bluff optimo es 5% y si el villano bluffea más que eso entonces tendremos un call siempre con cada mano que gana un bluff. Si bluffea raramente entonces deberíamos foldear todos los bluffcatcher.

      En cuanto a la situación concreta que planteáis ahora son las 0:36 y estoy cansado, pero si os parece durante estos días estudio un poco la situción.


      Un saludo,
      Santaka
    • jakor451
      jakor451
      Bronce
      Registro: 08-04-2009 Artículos: 1.832
      Hola!

      Primero aviso y pido perdon por que viene tocho xD

      La primera parte, a colacion de lo que comenta TheRipper71, no estoy del todo de acuerdo con en el planteamiento de considerar que cualquier raise que hacemos es equivalente a pushear, por el rival tambien foldeara en algunas ocasiones. Te pongo lo que creo que demuestra que es incorrecto ese planteamiento y por lo que creo que tiene cierto sentido buscar la formulita que nos de el rango de steal optimo:

      A. EV del planteamiento que propones:

      (Creo que obviaste dead money y los folds que hace el jugador cuando abrimos nuestro 21%, pero me lio con esa notacion para el ev)

      EV=0.79*0 + 0.21*(0.4(23*0.56 - 17*0.44) + 0.6*1.5)=0,6426bb

      B. Rango que estimo a grosso modo (lo que pretendo es evitar el metodo grosso modo y hacerlo bien xD )

      Equity minima para el call = 17/40 = 42.5%

      Rango que tiene la equity minima = 22+, A2s+, K6s+, Q9s+, JTs, A2o+, K8o+, QTo+ (398 combinaciones, 30,02%)

      Equity promedio del rango de call = 53.3%

      Showdown EV = 0.3*(0.4(0.533*23 - 0.466*17) + 0.6*1.5) = 0,79 bb

      Hasta aqui todo mas o menos sencillo, engorroso pero sencillo. La pregunta en este punto es cuanto EV de showdown puedo sacrificar en steals puros de forma que me compense en el computo global? Contra este rival, como demostro TheRipper antes, es perdedor jugar raise fold. Y con esto empiezo la parte fea del post:

      El fundamento de la ecuacion que desarrollo abajo es el siguiente. Contra los shoves pagamos con todo lo que es EV+, por lo que nuestro rango base Y sera el que luego defina el rango de steal S. S no es necesariamente el top de manos porcentual en cuanto a equity de las manos, de hecho, la diferencia entre S e Y es un rango de manos que nunca llegaran al showdown, por lo que unicamente deberian ser proporcionalmente coherentes con Y y con el fold vs steal del rival. Obviamente, si damos con el resultado, pues tiene mas sentido abrir 94s que 53o :D

      Hago copy paste del bloc de notas, espero que se entienda...

      --------------------------------------------------------------------------------
      Variables:

      S = Steal %
      Y = Call al shove %

      Constantes:

      com = nº de combinaciones con las que pagamos el shove
      F = Fold vs Steal %
      p = Pot preflop
      e = Equity vs rango de shove %
      C = Tamaño del call al shove = M - R
      R = Tamaño del steal raise
      M = Stack efectivo
      Pf = Pot final sin hero call =
      PF = Pot final

      ---------------------------------------

      Y = com / (S * 1326)

      e >= C / PF

      Pf = p + R + M

      PF = Pf + C = p + R + M + M - R = p + 2M

      --------------------------------------


      EV = S*0 + S*[F*p + (1 - F)*[Y(Pf*e - (1 - e)*C) - (1 - Y)*R]]


      EV = S*0 + S*[F*p + (1 - F)*[YPfe - YC + YeC - R + YR]]


      EV = (1 - S)*0 + S*[F*p + YPfe - YC + YeC - R + YR - FYPfe + FYC - FYeC + FR - FYR]

      EV = S*0 + S*[- FYPfe + FYC - FYeC - FYR + YPfe - YC + YeC + YR - R + Fp + FR]

      EV = S*0 + S*[Y(-FPfe + FC - FeC - FR + Pfe - C + eC + R) - R + Fp + FR]

      EV = S*0 + S*[com(-FPfe + FC - FeC - FR + Pfe - C + eC + R) / (S * 1326) - R + Fp + FR]

      EV = S*0 + Scom(-FPfe + FC - FeC - FR + Pfe - C + eC + R) / (S * 1326) - SR + SFp + SFR

      EV = com(-FPfe + FC - FeC - FR + Pfe - C + eC + R)/(1326) - SR + SFp + SFR

      EV = (Fp + FR - R)S + com(-FPfe + FC - FeC - FR + Pfe - C + eC + R)/(1326)

      S = -com(-FPfe + FC - FeC - FR + Pfe - C + eC + R)/[1326 * (Fp + FR - R)]


      Hasta aqui creo que el desarrollo es correcto. Ahora intento simplificarla aun mas y, si no es mucha molestia, a ver si podeis hecharle un vistazo, por que aparentemente estan bien pero igual se me paso algo, y los resultados no entran dentro de lo previsible.

      S = -com[F(M - R - ((p + R + M)e - (M - R)e - R) + e(p + 2M) - M + 2R)]/[1326 * (F(p + R) - R)]

      S = -com[F(M - R - ((p + R + M)(M - R) / (p + 2M) - (M - R)(M - R)/(p + 2M) - R) + (M - R) - M + 2R)]/[1326 * (F(p + R) - R)]

      S = -com[F(M - R - ((pM +MM -Rp - RR) / (p + 2M) - (MM-2MR+RR)/(p + 2M) - (Rp+2RM)/(p + 2M)) + R)]/[1326 * (F(p + R) - R)]

      S = -com[F(M - R - ((pM -Rp -2MR)/(p + 2M))]/[1326 * (F(p + R) - R)]

      S = -com[F(M - R - (pM/(p + 2M) - R)]/[1326 * (F(p + R) - R)]

      S = -com[F(M - 2R - pM/(p + 2M)]/[1326 * (F(p + R) - R)]

      S = -com[F(- 2R - 2MM/(p + 2M)]/[1326 * (F(p + R) - R)]

      S = -com[F(- 2R - 2MM]/[(1326 * (F(p + R) - R))*(p + 2M)]

      S = 2comF(R + MM)/[(1326 * (F(p + R) - R))*(p + 2M)]

      S = 2comF(R + MM)/[(1326 * (Fp + FR - R))*(p + 2M)]

      S = 2comF(R + MM)/[1326 * Fp * (p + 2M)]

      S = com(R + MM)/[663 * (pp + 2Mp)]

      Bueno, la cosa es que esto lo pongo en una hoja de calculo y me da resultados que van contra el sentido comun y otros que simplemente no se interpretar.

      El metodo que uso es introduzco los stacks efectivos, me devuelve la equity minima para el call al shove, introduzco el numero de combinaciones con ayuda del equilator y entonces me devuelve lo que deberia ser el rango porcentual de steal optimo.

      Primero, el peso que tiene en la ecuacion el stack efectivo. Llevandolo al extremo, con stacks infinitos, si el rival va a shovear con un rango amplio... ¿Que sentido tiene stelear ciegas con algo peor que AA? Pues en ese caso el rango de steal tiende a infinito, que lo interpreto como steal atc.

      Segundo, el poco peso que tiene nuestro raise, que es ridiculo frente al MM incluso con stacks cortos, aunque es cierto que tiene una relacion directa con com y deberia hacer mas pruebas.

      Tercero, en el denominador el pp (dinero preflop al cuadrado) tambien produce resultados contrasentido. Si dentro del pot hubiese infinito dinero tendriamos que pagar con todo, mientras que la formula devuelve un bonito 0.

      Voy a repasarlo todo desde el principio a ver si meti la pata en algun sitio, o quizas tube algun error de plantemiento que no sea capaz de ver.

      En fin, si llegaste hasta aqui, muchas gracias por la paciencia, te debo una birrita xD

      Un saludo.
    • TheRipper71
      TheRipper71
      Bronce
      Registro: 08-16-2009 Artículos: 1.737
      original de jakor451
      Hola!

      Primero aviso y pido perdon por que viene tocho xD

      La primera parte, a colacion de lo que comenta TheRipper71, no estoy del todo de acuerdo con en el planteamiento de considerar que cualquier raise que hacemos es equivalente a pushear, por el rival tambien foldeara en algunas ocasiones. Te pongo lo que creo que demuestra que es incorrecto ese planteamiento y por lo que creo que tiene cierto sentido buscar la formulita que nos de el rango de steal optimo:

      A. EV del planteamiento que propones:

      (Creo que obviaste dead money y los folds que hace el jugador cuando abrimos nuestro 21%, pero me lio con esa notacion para el ev)

      EV=0.79*0 + 0.21*(0.4(23*0.56 - 17*0.44) + 0.6*1.5)=0,6426bb

      B. Rango que estimo a grosso modo (lo que pretendo es evitar el metodo grosso modo y hacerlo bien xD )

      Equity minima para el call = 17/40 = 42.5%

      Rango que tiene la equity minima = 22+, A2s+, K6s+, Q9s+, JTs, A2o+, K8o+, QTo+ (398 combinaciones, 30,02%)

      Equity promedio del rango de call = 53.3%

      Showdown EV = 0.3*(0.4(0.533*23 - 0.466*17) + 0.6*1.5) = 0,79 bb

      Hasta aqui todo mas o menos sencillo, engorroso pero sencillo. La pregunta en este punto es cuanto EV de showdown puedo sacrificar en steals puros de forma que me compense en el computo global? Contra este rival, como demostro TheRipper antes, es perdedor jugar raise fold. Y con esto empiezo la parte fea del post:

      La equity mínima para hacer call es 42,5 una vez que ya has invertido 3bb pero el error ha sido anterior, cuando has subido 3bb con una mano que te condena a pagar aunque vayas por detrás.

      Pero en realidad el 40% de las veces que el villano pushea y tu pagas, si pierdes la mano, y vas a tu cajero ¿cuanto has perdido en realidad, 17 bb o 20?

      EV=EV(ganar)-EV(perder)

      Cuando ganas:
      -Cuando foldea: 0.6*1bb (ganas 1bb en realidad, el 0,5 ya era tuyo por lo que no lo ganas si no que lo recuperas)
      -Cuando pushea y ganas: ganas 20bb no 23bb (cuanto ha aumentado tu cajero)

      Cuando pierdes:
      -Cuando pierdes: lo mismo pierdes 20bb

      Entonces:

      Con un rango del 30%

      EV=0.3*(0.4*(0.533*20-0.466*20)+0.6*1)=0.3408bb por mano

      Con el rango que puse yo:

      EV=0.67bb

      (Si te fijas hice un edit antes corrigiendo eso mismo que dices tu, no había tenido en cuenta lo que foldea el 60%)


      Esto que te explico aquí es parecido a lo que dije a guido en este post:
      EV resteal desde BB - debate

      Creeme, es algo sobre lo que llevo pensando mucho. No es lo mismo calcular el EV de un movimiento concreto, como el call a un 3bet, que hacerlo de una combinación de movimientos, raise+call.

      Puedes hacer un call a un 3bet correcto, pero que esa mano te de pérdidas por que el error no está en el call si no en el raise previo.

      Cuando quieres hacer un calculo del EV de una combinación de movimientos, no es suficiente con que el último sea rentable, por que si fuera así, entonces sería rentable hacer raises de 15bb con 72o y luego pagar las 5bb que te quedan. De la forma que haces tú las cuentas te va a salir que es más rentable subir preflop con 19bb y luego pagar la bb que falta con el 100% de las manos, comprendes.

      No he seguido leyendo después. Tal vez mañana lo lea.
    • santaka
      santaka
      Bronce
      Registro: 09-01-2008 Artículos: 6.451
      Hola

      Yo creo que habéis empezado con un problema demasiado difícil. Es siempre mucho mejor empezar por cosas más sencillas, por ejemplo, con menos opciones estratégicas, en la que Open raises siempre hace push/fold y BB tiene que pensar entre call/fold. Luego siempre hay tiempo para ir añadiendo más opciones.

      Por otro lado, me cuesta bastante seguir todas las fórmulas. Es mejor hacer un diagrama y darle un valor a las indiferencias entre por ejemplo bet/call y bet/fold, que al fin y al cabo es ese el valor que queremos obtener.


      Un saludo,
      Santaka
    • jakor451
      jakor451
      Bronce
      Registro: 08-04-2009 Artículos: 1.832
      Hola!

      Si, estaba equivocado en ese punto y creo que por eso salio todo mal. Es un pelin complejo pero creo que sigue siendo modelable. Voy a intentarlo una vez mas a ver si saco algo en claro.

      Un saludo.
    • yomatiyo
      yomatiyo
      Black
      Registro: 02-17-2010 Artículos: 9.637
      Quiero aclarar q algún día voy a saca estos cálculos.

      Gracias :D :f_biggrin:
    • TheRipper71
      TheRipper71
      Bronce
      Registro: 08-16-2009 Artículos: 1.737
      Voy a intentar plantear el problema de la forma más genérica posible.

      -El villano jugará contra nosotros push or fold.

      Datos

      Datos del villano:

      FBBv%=Fold bb ante un steal

      Datos de Hero:

      RS=Raise size, tamaño del raise en bb.
      Steal%
      FoldvsResteal%

      Fórmulas

      EV(fold)=-0.5bb
      EV(raise/fold)=(FBBv%*1bb)-((1-FBBv%)*RS)
      EV(raise/call)=FBBv%*1bb+(1-FBBV%)*((Equity*40bb)-20bb)

      Procedimiento de calculo:
      1º) Determinar que es más rentable raise/fold o fold directo:

      El raise/fold será más rentable que el fold si:
      -0.5bb<(FBBv%*1bb)-((1-FBBv%)*RS)

      Es decir cuando:
      FBBv%>(RS-0.5)/(RS+1)

      (Que es lo mismo que lo que se hace de toda la vida con RS=3bb, estás subiendo 2.5bb para ganar 1.5bb, por lo que es rentable robar si el FBBv%>62.5%)

      2º) Una vez que sabemos que es más rentable, si el raise/fold o el fold hay que comparar el movimiento más rentable de estos con el raise/call.

      Caso A) El fold es más rentable que el raise/fold.
      Pero ¿Qué es más rentable? Fold o raise/call.

      El raise/call es más rentable cuando:
      -0.5<FBBv%*1bb+(1-FBBV%)*((Equity*40bb)-20bb)

      Es más rentable hacer raise/call con las manos que tienen equity:

      Equity>(19.5-21*FBBv%)/((1-FBBv%)*40)

      (Aquí espero no haberla liado despejando)

      Caso B) El raise/fold es más rentable que el fold.
      Pero ¿que es más rentable? raise/fold o raise/call.

      El raise/call es más rentable cuando:
      (FBBv%*1bb)-((1-FBBv%)*RS)<FBBv%*1bb+(1-FBBv%)*((Equity*40bb)-20bb)

      Que es lo mismo que se hace toda la vida
      Equity*40-(20-RS)>0

      Equity>(20-RS)/40


      Conclusión

      EVtotal=(1-Steal%)*(-0.5bb)+Steal%*(1-Foldtoresteal%)*(FBBv%*1bb+(1-FBBV%)*((Equity*40bb)-20bb))+Steal%*(Foldtoresteal%)((FBBv%*1bb)-((1-FBBv%)*RS))

      Lo que maximiza este EV será:

      Caso A:Un Foldresteal=0%, y jugar raise/call con todas las manos que tienen la EMN puesta arriba.

      Caso B:Nuestro juego óptimo será un Steal=100% y pagar con todas las manos que tienen la equity de arriba.



      Por último añado algo de lo que no estoy seguro de todo:

      Cuanto menor sea RS (nuestro tamaño de raise preflop) mayor será el EV.

      Creo que ahora está todo bien, en mis post anteriores hay diversos fallos.