[Release] Elephant AllinEV und Statistik Tool

    • lukenewitschh
      lukenewitschh
      Bronze
      Dabei seit: 13.08.2009 Beiträge: 185
      Mein Allin-EV Tool für den Elephant ist endlich fertig und ich stelle es hiermit der PS.de Community zur Verfügung.

      Das Tool ließt die Hände aus einer Elephant-Datenbank ein und berechnet daraus dann den aus dem Holdem-Manager bekannten Allin-EV.

      Ich hoffe das Tool gefällt euch und ich bitte um weitere Anregungen, mit denen ich es verbessern kann.

      Download-Link

      Hinweise:
      Was der AllIn-EV Graph aussagt und warum der Street-EV wert nicht aussagekräftig ist steht hier: FAQ: All-In-EV-Graph.

      Dabei werden nur NL-Holdem Hände berücksichtigt (FL macht das nicht viel Sinn und SNGs, Omaha, etc werden vom Elephant noch nicht unterstützt)

      Das Tool sollte mit allen Elephantversionen von 0.69 bis 0.78 kompatibel sein

      Bekannte Bugs:
      In Multiwaypötten wird die Allin-EV-Berechnung nicht immer 100% präzise ausgeführt, da der Rake nicht genau eingerechnet wird (Der Fehler handelt sich aber maximal um einzelne Bigblinds, in Situationen die vielleicht alle 2000+ Hände auftreten)

      Die Diagramme müssten teilweise durch einen erneuten Klick auf den Button neu gezeichnet werden, nachdem man sich auf einem anderen Reiter befand oder aus dem Programm herausgetabbed ist.

      Nicht alle Pokerräume sind bekannt. Das heißt, dass in der Liste mit den Spielernamen, hinter dem Namen nicht immer der Pokerraum aufgelistet ist, sondern manchmal einfach nur eine Zahl. Sollte das bei euch auftreten und ihr wisst um welchen Pokerraum es sich handeln muss, bitte ich darum das in diesem Thread zu vermerken, so dass ich die Verknüpfung einbauen kann

      TODO- Liste:
      1.-3. Die obengenannten Bugs beseitigen
      4. Filter einbauen (nur SSS - Spiele, nur die letzten 1000 Hände, nur bestimmte Limits, etc.)
      5. Die Achsenbeschriftungen auf gerade Werte beschränken
      6. Die Berechnungen beschleunigen und für Mutlicore-Prozessoren optimieren
      7. Die $ - Werte auch in Bigblinds anzeigen lassen
      8. Eine Liste mit allen gespielten Händen einbauen und den einzelnen Allin-EV dort anzeigen
      9. Weitere Statistiken einbauen (Häufigkeit von Sets, Gewinn pro Farbe, etc.).
      10. Das Design sinnvoller gestalten (Anordnung der Buttons, Gestaltung der Tooltips, etc.)
      11. Die Export-Buttons im Diagramm-Reiter aktivieren
      (12. Den Street-EV Wert berechnen - ob ich das wirklich einbaue ist fraglich, da dieser Wert absolut nicht aussagekräftig ist)

      Diese Aufgaben werden nach und nach erledigt (nicht der hier angegebenen Reihe nach) je nach Zeit und Lust von mir.

      Changelog:
      Version 1_6:
      Endgültiger Release des Tools.
  • 14 Antworten
    • lukenewitschh
      lukenewitschh
      Bronze
      Dabei seit: 13.08.2009 Beiträge: 185
      1.

      In diesem Menü die Daten für den die Elephant-Datenbank eintragen.
      Unter Erweitert kann auch der Host und der Port geändert werden (Falls die Datenbank auf einem anderen Computer/Server läuft).
      Bei einem Klick auf Speichern bleiben die Eingetippten Daten für den nächsten Start des Programms erhalten.

      2.

      In diesem Menü können die eingenen Spielernamen, die in der Elephant-Datenbank gespeichert sind. Einfach den Spielernamen im Textfeld oben eingeben (Groß/Kleinschreibung beachten), den Namen markieren und auf Hinzufügen klicken.
      Ein Klick auf "Einlesen" berechnet dann die Statistiken für die ausgewählten Spielernamen. Dies dauert eine Weile, als Richtwerk kann man ca 10000 Hände pro Minute ansetzen. SSSler werden länger brauchen, da sie häufiger AllIn sind.

      Ein Klick auf Datenbank löschen löscht alle von diesem Programm geschriebenen Daten. Die Daten für den Elephant bleiben davon unangetastet.

      3.

      Nach der Berechnung kann unter "Diagramme" der Graph für den Gewinn, den AllIn-EV, die Showdown- / Non-Showdownwinnings und ein Graph namens Glück begutachtet werden. Glück ist hierbei Gewinn - AllinEV. Bei einem Positiven Wert hatte man in der Vergangenheit in Allin-Situationen also "Glück".

      4.

      In diesem Reiter lassen sich die Gewinne für jedes einzelne Kartenpaar begutachten. Wobei der Rechtsobere Abschnitt für Suited Karten steht und der linksuntere für Offsuited Karten.
      Die hierverwendeten Farben sind:
      Rot für negative Gewinne (bei Anzahl: unterdurchschnittlich oft)
      Grün für positive Gewinne (bei Anzahl: überdurchschnittlich oft)
      Grau für neutrale Werte.
      (Überraschenderweise :P )

      5. Fehler exportieren:

      Gebt ihr bei 2. einen Spielernamen ein, für den nicht alle Holecards bekannt sind, so ist die Berechnung sinnlos und ín der Fehlerliste wird der Fehler "Holecards nicht bekannt" sehr häufig auftreten. In diesem Fall die Fehler bitte nicht exportieren.
      Sollten die Eingaben allerdings richtig sein, und es treten trotzdem Fehler auf, bitte ich im den Export per Klick auf den entsprechenden Button. Nach dem exportieren befinden sich im Ordner, in dem auch das Programm ist 2 Dateien. Die error.txt und die error2.txt. Diese beiden bitte hochladen und in diesem Thread verlinken. Ich kümmere mich dann darum.
    • SoWe
      SoWe
      Global
      Dabei seit: 10.01.2008 Beiträge: 2.397
      geiel, vielen dank!

      könntest du auch ne version machen, bei der anstatt dem all-in-wert berechnet wird wie man in jeder situation der hand stand?

      also ich geb mal n beispiel:
      der einfachheit headsup
      ich hab preflop 60% equity, bringe hier 10$ rein, er called
      am flop hab ich 80% equity, hier bringe ich weitere 15$ rein, er called und ist damit genau all in

      soweit ich das verstanden habe wäre laut all-in-ev der erwartete wert für die hand nun 80%*(15$+15$+10$+10$)=40$
      bzw der rake müsst noch abgezogen werden

      ich fänds nun aber schöner, wenn der erwartungswert wie folgt berechnet werden würde:
      60%*(10$+10$) + 80%*(15$+15$)



      geht das? :-)


      ps: er bleibt bei mir beim einlesen von hand 70 von 18848 stehen... :(

      edit: aham.... bei einem weiteren versuch einzulesen (ele war die ganze zeit aus) meint er plötzlich da wären 18878 hände drin, also 30 mehr? und er bleibt bei 0 stehen...
      laut ele sind es 18851 hände.
      habe gerade die datenbank aufräumen lassen (komplett), danach nochmal probiert und nun steht im "gui" fenster die richtige handzahl, aber wenn ich auf "einlesen" gehe behauptet er, bei 0 von 18778 zu sein und bleibt da auch hängen.

      edit2: hab jetzt mal extra hierfür ne neue db mit den händen von heute erstellt. er bleibt wieder beim einlesen hängen.

      liegt das eventuell daran, dass ich die neueste developer version hab?
    • SoWe
      SoWe
      Global
      Dabei seit: 10.01.2008 Beiträge: 2.397
      also ich hab jetz mal ne datenbank mit ganz genau zwei händen erstellt, damit ich den EV auch per hand ausrechnen könnte...
      bei einem hab ichs am river mit der besseren hand reingebracht, sollte nach all-in-ev also 100% des pots kriegen, beim anderen hab ichs preflop mit 70/30 rein, sollte also 70% des pots kriegen.

      er sagt mir bei beiden, dass mir 100% gehören würden, jedenfalls gibts keinen unterschied zwischen der "gewinne" und der "ev" linie, überhaupt scheinen die nur die farbe zu ändern wenn man die verschiedenen boxen anklickt :-)

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

      versuch, das ganze zu reproduzieren (datenbank gelöscht, neu angelegt, die gleichen beiden hände reingestellt) schlug fehl, er bleibt nach dem import der ersten hand hängen und macht garnichts mehr.
    • lukenewitschh
      lukenewitschh
      Bronze
      Dabei seit: 13.08.2009 Beiträge: 185
      Danke für das Feedback
      deine Tipps werden beachtet, wie oben steht, dauert das aber noch eine Weile.
      Mit meiner Datenbank funktioniert das Programm. Ein Freund hat ähnliche Probleme wie du. Ich hoffe du kannst dich den Monat noch gedulden, aber danach wird das Programm definitiv funktionstüchtig werden.

      Was du meinst in deinem ersten Post ist der Street-EV so eine Berechnung könnte ich einbauen, sie wird aber nicht aussagekräftig sein. Ich find gerade den Thread nicht, in dem das erläutert wird. Aber kurz zusammengefasst:
      Ein Fisch called seinen Gutshot am river nur, wenn er trifft. Ansonsten foldet er und du kennst seine Karten nicht, kannst also keinen EV ausrechnen. Im Fall, dass er trifft hat er dich natürlich ausgesuckt und dein Street EV wäre deutlich über deinem Gewinn. (Während er bei den anderen eben gleich, wie der Gewinn ist)

      Mfg lukenewitsch
    • SoWe
      SoWe
      Global
      Dabei seit: 10.01.2008 Beiträge: 2.397
      andererseits - called der fisch seinen gutshot am turn, obwohl er danach nur noch ein 20tel des pots hat und hauts dann am river rein wenn er trifft, dann sollte mein EV nicht 0% vom pot sein :)

      und ich finds ok, dass mein EV >0 ist, wenn ich ausgesuckt werde, schließlich ist ja genau das, was ein aussucken ausmacht... im durchschnitt werd ich in der situation gewinn machen, aber wenn er den gutshot trifft und ich dann noch geld reintu verschenk ich das praktisch.


      dass es bei mir nicht funktioniert, liegt wohl an der neuen developer version vom elephanten, der macht sowieso datenbankprobleme wie ich feststellen musste.


      *erwartet voller vorfreude dass der elephant repariert wird und du dein tool updatest* :) :heart:
    • SoWe
      SoWe
      Global
      Dabei seit: 10.01.2008 Beiträge: 2.397
      nochmals vielen Dank für dein Tool, ist echt gut.


      Und pls pls pls pls bau den Street-EV ein, ich persönlich find den aussagekräftiger als den All-In-EV...

      ein weiteres bsp:
      openraise mit AA, einer called mit K6o. Flop kommt 3K5, ich mach contibet, er called, turn kommt 6, ich push all in und er called...
      auf lange Sicht werd ich mit der preflopaction und der flopaction gewinn machen, die sollten also positiv in die Statistik einfließen. Wenn man nur den All-In-EV nimmt is das aber net so

      oder auch:
      ich openraise 27o weil ich tilte, treffe mein FH und sucke AA aus... find ich nich i.o. wenn ich dafür 100% vom pot als EV angerechnet bekomme
    • Aerox88
      Aerox88
      Bronze
      Dabei seit: 31.01.2007 Beiträge: 2.906
      hi rechnet des programm nur den ev bei händen die allin gegangen sind, oder stellt es auch den street ev auf bei händen die bis zum sd gespielt wurden aber nicht all-in waren? (wie pokerEV)
    • SoWe
      SoWe
      Global
      Dabei seit: 10.01.2008 Beiträge: 2.397
      im moment isses glaubich "nur" der allin-ev bei showdown händen, aber lukenewitschh wird da sicher mehr zu sagen können.


      ich hab auch noch ne frage - bist du sicher, dass (non-)sd-winnings inzwischen korrekt berechnet werden? mir kommts spanisch vor, dass die non-sd-winnings durchgehen (23k hände) über den gesamtwinnings sind, die sd-winnings aber durchgehend negativ... für nen sssler, bei positivem EV-verlauf. das kommt irgendwie nicht hin, oder? o_O
    • lukenewitschh
      lukenewitschh
      Bronze
      Dabei seit: 13.08.2009 Beiträge: 185
      im Moment ist es nur der Allin-EV Wert.
      Zum Thema Street-EV:
      Aber :
      (12. Den Street-EV Wert berechnen - ob ich das wirklich einbaue ist fraglich, da dieser Wert absolut nicht aussagekräftig ist)

      Ich finde den Thread leider nicht, in dem erklärt ist warum, aber vielleicht kann den ja noch jemand verlinken.

      Also die Idee ist da, es später einzubauen, mehr aber auch nicht.

      Zu den Showdownwinnings: Sie müssten richtig sein. Ich kann gerade keinen Fehler entdecken. Werde aber als nächstes die Tabelle für die einzelnen Hände einbauen, mit welcher dann überprüft werden kann, ob das wirklich stimmt.
    • Aerox88
      Aerox88
      Bronze
      Dabei seit: 31.01.2007 Beiträge: 2.906
      vlt is er nicht aussagekräftig, weill wenn jemand nen draw hält und der nicht ankommt aber dann am river folded diese hand nicht mit in den street ev mit einberechnet wird sondern nur die hände die er improved und dann bis zum sd spielt (was natürlich nen fehler wäre)
    • SoWe
      SoWe
      Global
      Dabei seit: 10.01.2008 Beiträge: 2.397
      aber das geht halt auch andersrum. wenn er seinen 2outer am river trifft, warum soll er dann für die 1.20$, die er da noch reinschiebt, den 40$ pot zu 100% zugeschrieben bekommen?

      oder wenn mein draw rankommt, und ich vorher nur auf implieds gecalled hab, das darf doch longterm nicht zu 100% in meinen EV gerechnet werden, sondern nur zu den anteilen wo ich auch den draw treffe?

      so zeuch halt...

      ich wünsch mir den street-ev sooooooo sehr
    • xcbrx
      xcbrx
      Bronze
      Dabei seit: 16.08.2008 Beiträge: 2.447
      sowe, such nach "sect". so heisst das tool das du willst und von dem mittlerweile auch der letzte depp weiß, dass es nicht stimmt. es gibt eben leider diese angesprochene systematische verzerrung und dein angezeigter ev-graph wird einfach nur überbewertet sein. aber wenn du dich durch anlügen besser fühlst..... nur zu
    • SoWe
      SoWe
      Global
      Dabei seit: 10.01.2008 Beiträge: 2.397
      Original von xcbrx
      sowe, such nach "sect". so heisst das tool das du willst und von dem mittlerweile auch der letzte depp weiß, dass es nicht stimmt. es gibt eben leider diese angesprochene systematische verzerrung und dein angezeigter ev-graph wird einfach nur überbewertet sein. aber wenn du dich durch anlügen besser fühlst..... nur zu
      dei mudda is der letzte depp[/patzig]
      thx für den prognamen,funzt net mit ele db
    • SoWe
      SoWe
      Global
      Dabei seit: 10.01.2008 Beiträge: 2.397
      bugreport:

      beim einlesen von daten kamen folgende fehler:
      org.postgresql.util.PSQLException: Das ResultSet ist nicht richtig positioniert. Eventuell muss 'next' aufgerufen werden.
      at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkResultSet(AbstractJdbc2ResultSet.java:2695)
      at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1872)
      at main.Steuerung.handBerechnen(Steuerung.java:99)
      at main.Steuerung.run(Steuerung.java:176)
      at java.lang.Thread.run(Unknown Source)
      org.postgresql.util.PSQLException: Das ResultSet ist nicht richtig positioniert. Eventuell muss 'next' aufgerufen werden.
      at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkResultSet(AbstractJdbc2ResultSet.java:2695)
      at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1872)
      at main.Steuerung.handBerechnen(Steuerung.java:99)
      at main.Steuerung.run(Steuerung.java:176)
      at java.lang.Thread.run(Unknown Source)
      org.postgresql.util.PSQLException: Das ResultSet ist nicht richtig positioniert. Eventuell muss 'next' aufgerufen werden.
      at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkResultSet(AbstractJdbc2ResultSet.java:2695)
      at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1872)
      at main.Steuerung.handBerechnen(Steuerung.java:99)
      at main.Steuerung.run(Steuerung.java:176)
      at java.lang.Thread.run(Unknown Source)