[LEAKFINDER CG] Créer un programme pour aider à trouver mes leak

Salut à tous,

J’avais commencé un sujet il y a un petit moment sur un site concurrent mais il n’est pas très en forme…, je vais donc continuer ici.
Je me suis lancé comme objectif de faire un programme pour extraire facilement les fuites dans mon jeu. Je suis débutant avec quelques bases dans la programmation en langage python et pour le poker je suis +/- breakeven en NL10…
On peut déjà faire ce travail avec un tracker mais je trouve qu’il y a tellement de données et facteurs à analyser que je ne sais pas si je m’y prend bien et/ou si je ne passe pas à côté de quelque chose.
J’ai vu un autre intérêt : vu que l’on ne peut pas prendre en compte le winrate sur de faibles échantillons (trop impacté par la variance), j’ai pensé à calculer des coefficients de corrélations pour estimer si la fuite est récurrente ou non…
J’ai récemment terminé une première base qui sera à améliorer, voici ce que cela donne pour mes 2 deniers mois :

Taille de l'échantillon : 12728 mains

Période : du 04/06/2019 au 18/07/2019

Winrate : 4.37 bb/100 +/- 8.39

Rapport par position

Position Gain (bb) Nombre de mains Gain (bb/100) Gain ajusté (bb) Gain ajusté (bb/100) Facteur de corrélation Gain espéré (bb/100) Pertes (bb)
0 BB -1528.3 2415 -63.3 -1470.8 -60.9 0.89 -36.7 -585.0
4 SB -359.1 2381 -15.1 -534.3 -22.4 0.77 -18.8 -86.6
2 CO 558.5 2279 24.5 547.9 24.0 0.55 24.9 -20.1
5 UTG 338.3 1198 28.2 312.0 26.0 0.65 18.2 93.5
1 BU 889.8 2471 36.0 994.2 40.2 0.78 35.4 120.4
3 MP 656.5 1984 33.1 823.9 41.5 0.60 22.0 387.0

Rapport en fonction de l'action avant parole + position

Face à (Preflop) Position Gain (bb) Nombre de mains Gain (bb/100) Gain ajusté (bb) Gain ajusté (bb/100) Facteur de corrélation Gain espéré (bb/100) Pertes (bb)
26 Unopened SB -414.9 716 -57.9 -399.2 -55.8 0.92 -18.8 -264.6
9 1 Raiser SB -291.9 1100 -26.5 -467.4 -42.5 0.87 -18.8 -260.5

Aucun leak n'a été observé pour les actions préflop de Hero sur cet échantillon

Rapport en fonction du type main joué + position (Blind non pris en compte)

Type de mains Position Gain (bb) Nombre de mains Gain (bb/100) Gain ajusté (bb) Gain ajusté (bb/100) Facteur de corrélation Gain espéré (bb/100) Pertes (bb)
20 Medium Pairs CO -225.3 41 -549.5 -288.9 -704.6 0.80 24.9 -299.1
80 Suited One Gapper CO -148.8 48 -310.0 -179.9 -374.8 0.78 24.9 -191.9

Rapport avec prise en compte de tous les facteurs (Fold pas pris en compte, nombre de mains > 10 kH)

Position Face à (Preflop) Action preflop hero Type de mains Gain (bb) Nombre de mains Gain (bb/100) Gain ajusté (bb) Gain ajusté (bb/100) Facteur de corrélation Gain espéré (bb/100) Pertes (bb)
24 BB 1 Raiser C Low Pairs -116.3 14 -830.7 -139.2 -994.3 0.92 -36.7 -134.1

Position : BB / Face à : 1 Raiser / Action PF : C / Type de mains : Low Pairs

Pertes : 134 bbs

Combo Nombre de mains Gain (bb) Gain (bb/100) Gain espéré (bb/100)
3 55 6 -59.7 -995.0 -36.7
1 33 1 -39.5 -3950.0 -36.7
4 66 2 -7.5 -375.0 -36.7
0 22 2 -5.5 -275.0 -36.7
2 44 3 -4.1 -136.7 -36.7

Pour expliquer un peu comment je construis les rapports : le programme me demande de récupérer des fichiers de HH (uniquement possible avec ceux de Pokerstars pour le moment) et je créé un tableau avec toutes les informations relatives à la main : Position, gain, type de main, action avant parole,…).
Je lance un autre programme pour analyser les données du tableau et construire le rapport.
Pour le moment, dans le rapport il y :

  1. Les gains par position (+ gains ajustés avec la courbe de tendance) et le nombre de bbs d’écart avec le winrate espéré
  2. Les gains en fonction de l’action avant d’avoir la parole ainsi que la position (+ gains ajustés avec la courbe de tendance) et le nombre de bbs d’écart avec le winrate espéré
  3. Les gains en fonction de l’action préflop de Hero ainsi que la position (+ gains ajustés avec la courbe de tendance) et le nombre de bbs d’écart avec le winrate espéré
  4. Les gains en fonction du type de mains de Hero ainsi que la position (+ gains ajustés avec la courbe de tendance) et le nombre de bbs d’écart avec le winrate espéré
  5. Les gains en prenant en compte les 4 paramètres (position, action avant parole, action préflop et type de mains) et le nombre de bbs d’écart avec le winrate espéré

Pour les rapports 2 à 5 : seules les situations avec un coefficient de corrélation assez important (> 0.7) et un représentant une perte significative sont affichées.
Cela me permet de modifier mon jeu et/ou travailler des spots précis.
Voila pour la présentation, j’aimerais avoir vos avis sur la méthode et si vous avez des questions et/ou suggestions, n’hésitez pas.

PS : Si un joueur de Pokerstars souhaite m’envoyer des mains (au moins 10 kH) pour que je réalise un rapport ce sera avec plaisir… Je compte gérer les HH de winamax prochainement.

Slt et bienvenu sur PA

Pkoi perdre autant de temps à recréer ce qui existe déjà ? Ou j ai pas tout saisi ! A la limite, si tu associais ton PF en fonction des profils rencontrés, why not mais là je pense que tu perds ton temps.

Pour l’analyse de ce premier rapport :

J’ai clairement un leak en BB :smiley:
J’ai observé plusieurs choses :

  • j’ai un fold to steal trop important vs CO (>75%) --> Elargir ma range de call en BB vs CO
  • j’ai un W$WSF bas lorsque je call en BB vs CO ou BU --> se battre davantage dans ces situations + développer range de x/raise et donkbet car quasi inexistante dans cette situation
  • j’ai un resteal sucess d’environ 75% vs BU --> Elargir la range de 3bet vs BU

J’attends environ 10 kH pour faire un nouveau rapport et observer les évolutions…

Cela doit me faire gagner du temps au lieu d’analyser ma base de données en 15 minutes le rapport est créé.
J’ajuste les winrates en traçant une courbe de tendance et ne prend en compte que si la corrélation est bonne --> cela serait très fastidieux à faire manuellement…
J’espère pouvoir prendre en compte des facteurs que les trackeurs ne proposent pas forcément… je suis illimité.
Mais, j’ai surtout commencé à faire cela pour m’amuser à développer avec python :grinning:

1 « J'aime »

OK pour se faire plaisir à coder en Python.

perso je pense que tu perds pas mal de temps. Tu peux enregistrer facilement ce type de rapports sur tracker, et les récupérer en 30 secondes.
Si tu utilises SQL, tu es illimité avec les trackers.
Si tu veux apprendre à coder, fais plutôt un solver :stuck_out_tongue:

Sinon, tu es débutant en poker, mais tu cherches à faire quelque chose d’assez avancé ; tu es débutant en programmation, mais tu cherches à faire quelque chose d’avancé, le tout dans un seul projet -> GL, mais niveau risque de chute on est au sommet de l’everest… (je dis pas ça pour te dégouter au contraire, si tu es débutant commence par des trucs de débutant, quand tu seras confirmé tu feras des meilleurs trucs…)

C’était mon idée de base mais je n’ai jamais réussi à récupérer les données de la base de données de HM!! :cold_sweat:
Je n’ai pas l’impression que ce que je souhaite soit très avancé (ni niveau programmation ni niveau poker), une simple automatisation de ce que l’on pourrait faire avec un tracker.

IMO, si tu es break even NL10. Je ne pense pas que le vrai pb soit du côté pre flop mais plutôt postflop. Donc si tu te focus à prog un truc sur le PF, c’est clairement une double perte de temps. Utilise ce temps à bosser le postflop et utilise les fitres des trackers pour résoudre tes leaks PF.

De plus, tu essaies de tirer des conclusions sur tes ranges en analysant le preflop alors que l’EV de ta main va dépendre fortement de ton jeu postflop.

edit : @WaitWaitW je crois que l’on ne peut pas accéder aussi facilement à la BDD de HM2 qu’à celle de PT4.

bah ? c’est du postgreSQL pour les 2 à moins qu’ils se soient amusés à crypter les datas je vois pas où est le problème… je dois avoir un HM2 qui traine quelque part je vais dépoussiérer ça voir si c’est vraiment chiant

le truc, c’est que si tu sais utiliser ton tracker il peut aussi automatiser ce que tu veux faire… (enfin normalement… il me fait douter de HM2 le Riviera…)

@WaitWaitW

Je ne suis pas sûr à 100% mais je m’étais renseigné à ce sujet il y a qq temps et voilà ce que j’ai pu noter.

With HM2 is impossible to extract stats, because they doesn’t store them in the DB but in files, for “performance issues”, they said.

et la réponse de HM2 support (voir dernier commentaire). Au final je crois que l’API n’est jamais sorti et contrairement à PT4 le schéma de la BDD n’est pas public.

EDIT:
J’ai fait quelques recherches et je suis tombé sur un nouveau doc de HM2 support pour ceux que ça intéresse, ils expliquent comment se connecter à leur BDD et extraire les données. Voici le doc

HoldemManager2APIGuideV5.pdf (576,0 Ko)

1 « J'aime »

le schéma de la BDD je peux te le donner :


après, si les hh ne sont pas dans la bdd… :sweat_smile:
pour les hhs :

elles sont bien dans la BDD.
Après, faut creuser dedans, on doit pouvoir trouver (même si la table “compiledplayerresults” me fait penser que peut être t’as raison et qu’on peut pas avoir les mains directement… mais on peut avoir les stats. Du coup si on a les stats on s’en fout un peu des main…)
edit : bon peut-être vu la réponse du support c’est pas possible d’avoir les stats… et en même temps ça date de 2012 ils ont pu aussi revoir le squelette de leur bdd depuis

1 « J'aime »

Il semble qu’ils ont intégré l’API server à HM2 pour pouvoir récup les données. Auparavant, personne n’arrivait à récup de l’info depuis la BDD.

Merci d’avoir creuser le sujet quand même.

Merci pour ce document! Un gros os à ronger!! :star_struck:

1 « J'aime »

Oui, l’idée du programme est d’extraire rapidement des situations perdantes pour travailler dessus : revoir range, stats post-flop, faire des review… Si je peux aller plus loin par la suite pourquoi pas!

J’ai essayer leur API et ça bug beacuoup!

Comment tu t’y es pris pour obtenir le schéma de la bdd?

1 « J'aime »

me suis connecté via pgadmin à la bdd tout simplement :stuck_out_tongue:

Tu pourrais me donner les paramètres de connexion?
J’imagine :
Hôte : localhost
Port TCP : 8001
Base maintenance : Nom de ma bdd
Mais pour le SSL, nom d’utilisateur et mot de passe, je sèche…

inutile de faire ça manuellement :
image
faut juste connaître le mot de passe qui a été automatiquement créé. En général avec PT4 c’est dbpass avec HM2 c’est postgrespass je crois. Sinon sur le net tu devrais trouver les mdps standards.

En fait, je ne m’en souvenais plus mais j’avais réussi à accéder à la bdd…
Mais je n’avais trouvé aucune table qui liste les infos de chaque mains (position, action préflop…)
Dans la doc, ils parlent d’une table hands qui n’existe pas!
Sais-tu comment c’est géré dans HM2?