Skip to content
[OPEN_POKER]

In 7 Tagen von Null ins Open Poker Leaderboard: Ein Tagesplan

JJoão Carvalho||12 min read

Du kannst einen Poker-Bot in 7 Tagen von "existiert nicht" zu "im Open Poker Leaderboard gerankt" bringen. Nicht 7 Wochen. Die Plattform ist so gebaut, dass ein Entwickler sich am Tag 1 registrieren, verbinden und spielen kann, und dann eine Strategieverbesserung pro Tag hinzufuegen, bis er wettbewerbsfaehig ist. Hier ist der Plan, den wir empfehlen, mit den genauen Verbesserungen, die den Unterschied machen, und denen, die es nicht tun.

Warum funktioniert der 7-Tage-Plan?

Weil jeder Tag eine einzelne, isolierte Verbesserung auf einen funktionierenden Bot aufbaut. Du baust nicht ein komplettes System von Anfang bis Ende, bevor die erste Hand gespielt wird. Du bringst am Tag 1 eine Calling Station zum Laufen und verbesserst schrittweise. Bis Tag 7 wurde jede Verbesserung gegen echte Gegner validiert, nicht gegen einen Self-Play-Simulator, der dich anluegt.

Das ist das Gegenteil davon, wie die meisten Bot-Projekte scheitern. Die meisten Entwickler verbringen zwei Wochen damit, eine "vollstaendige" Architektur zu entwerfen, und merken dann am Tag 14, dass ihr Hand-Evaluator nicht zum Kartenformat des Protokolls passt, oder dass ihr Action-Sender den Turn Token vergisst, oder dass ihr Pot-Odds-Rechner das falsche Feld verwendet. Der 7-Tage-Plan verschiebt all das, bis der Bot bereits laeuft.

Der andere Grund, warum er funktioniert: Das Open Poker Leaderboard belohnt Volumen mehr als Spitzenleistung. Ein mittelmässiger Bot, der 7 Tage laeuft, uebertrifft einen brillanten Bot, der 1 Tag laeuft. Bis Tag 7 hast du 4-5 Tage angesammelte Handhistory, was genug Varianzreduktion ist, um ueber den Boden des Feldes zu steigen, selbst wenn deine Strategie noch rau ist.

Tag 1: Bringe eine Calling Station zum Laufen

Dein einziges Ziel an Tag 1 ist ein verbundener Bot, der legale Haende spielt. Mach dir keine Sorgen um Strategie. Mach dir keine Sorgen um Gewinne. Mach dir keine Sorgen um irgendetwas ausser: Bot verbindet sich, Bot setzt sich an einen Tisch, Bot antwortet auf your_turn mit einer gueltigen Aktion, Bot crasht 30 Minuten lang nicht.

Verwende die Anleitung zum Bauen eines Poker-Bots in Python als Ausgangspunkt. Der vollstaendige Bot hat unter 50 Zeilen. Kopiere ihn, fuege deinen API-Key ein, starte ihn. Du wirst innerhalb von 30 Sekunden "Connected as DeinBotName" sehen und deine erste Hand ein bis zwei Minuten nach dem Lobby-Beitritt.

Die Calling-Station-Strategie (check wenn moeglich, sonst call, sonst fold) verliert Chips, produziert aber vollstaendige Event Loops. Jeder Nachrichtentyp wird behandelt. Jede Aktion wird mit einem gueltigen Turn Token gesendet. Am Ende von Tag 1 hat dein Bot 50-100 Haende gespielt und du hast eine Baseline-Win-Rate zum Verbessern.

Tagesziel: Bot hat mindestens 20 Haende gespielt, keine Crashes, keine Timeouts.

Tag 2: Fuege Pre-Flop-Handauswahl hinzu

Die groesste einzelne Verbesserung, die du auf die Calling Station aufsetzen kannst. Die meisten Starthaende im Hold'em sind Verlierer; die schlechtesten 60% pre-flop zu folden reduziert drastisch die Chips, die du am Flop und danach verlierst.

def should_play_preflop(cards):
    """Top ~40% of starting hands."""
    ranks = "23456789TJQKA"
    r1 = ranks.index(cards[0][0])
    r2 = ranks.index(cards[1][0])
    high, low = max(r1, r2), min(r1, r2)
    pair = r1 == r2
    suited = cards[0][1] == cards[1][1]
 
    if pair: return True
    if high >= 10: return True
    if high >= 8 and suited: return True
    if high == 12 and low >= 7: return True
    return False

Speichere die Hole Cards, wenn hole_cards ankommt. Bei your_turn, wenn es pre-flop ist und should_play_preflop() False zurueckgibt, folde. Ansonsten nutze die Calling-Station-Logik.

Diese einzelne Aenderung bringt eine Calling Station typischerweise von -2,5 bb/100 auf etwa -0,8 bb/100. Du verlierst immer noch Chips, aber mit einer Rate, die keine haeufigen Rebuys ausloest. Tagesziel: 200+ gespielte Haende, Win Rate ueber 12%.

Tag 3: Fuege Pre-Flop-Raising hinzu

Der Tag-2-Bot foldet die schlechten Haende, aber raist nie die guten. Gegner sehen kostenlose Flops gegen deine Premium-Haende, was bedeutet, dass sie Haende machen koennen, die dich schlagen. Loesung: Raise mit deinen Top 15% der Haende, anstatt nur zu callen.

def should_raise_preflop(cards):
    ranks = "23456789TJQKA"
    r1, r2 = ranks.index(cards[0][0]), ranks.index(cards[1][0])
    pair = r1 == r2
    high, low = max(r1, r2), min(r1, r2)
    suited = cards[0][1] == cards[1][1]
    # Premium pairs
    if pair and r1 >= 8: return True  # 99+
    # Big aces
    if high == 12 and low >= 9: return True  # AT+
    # Suited broadway
    if suited and high >= 10 and low >= 9: return True
    return False

Wenn dies True zurueckgibt und raise in valid_actions ist, sende einen Min-Raise statt nur zu callen. Das Amount-Feld ist der Raise-to-Gesamtbetrag, kein Inkrement. Verwende den min-Wert aus dem Raise-Eintrag als deinen Amount.

Tagesziel: 400+ gespielte Haende, Win Rate ueber 16%, bb/100 naehert sich dem Break-even.

Tag 4: Fuege Pot Odds fuer Postflop-Calls hinzu

Postflop ist, wo Bots die meisten Chips verlieren. Zufaellige Einsaetze zu callen, ohne die Mathematik zu machen, ist das, was eine Calling Station zur Calling Station macht. Behebe es mit Pot Odds.

Die Rechnung: Teile den Call-Betrag durch den Pot nach deinem Call. Wenn deine geschaetzte Gewinnwahrscheinlichkeit dieses Verhaeltnis uebersteigt, calle. Sonst folde. Das Poker-Mathematik-fuer-Bots-Tutorial behandelt die Formel im Detail.

def call_is_profitable(your_turn_msg, win_pct=0.30):
    actions = {a["action"]: a for a in your_turn_msg["valid_actions"]}
    if "call" not in actions:
        return False
    pot = your_turn_msg["pot"]
    call_amt = actions["call"]["amount"]
    if call_amt == 0:
        return True
    pot_odds = call_amt / (pot + call_amt)
    return win_pct > pot_odds

Fuer Tag 4, verwende eine pauschale 30% Win-Rate-Schaetzung. Sie ist bei den meisten spezifischen Spots falsch, aber im Durchschnitt ist sie ein viel besserer Default als "immer callen". Du wirst Rivers folden, wo du nichts hast, und mit Haenden weiterspielen, die realistische Equity haben.

Tagesziel: 600+ gespielte Haende, bb/100 am Break-even oder leicht positiv.

Tag 5: Tracke den VPIP der Gegner

Tag 5 ist, wenn du aufhoerst, jede Hand gleich zu spielen, und anfaengst, dich an den Tisch anzupassen. Baue einen einfachen Gegner-Tracker, der protokolliert, wie oft jeder Spieler pre-flop Chips einzahlt. Der Gegnermodellierungs-Guide hat die vollstaendige Implementierung, aber eine Minimalversion:

from collections import defaultdict
 
vpip_data = defaultdict(lambda: {"hands": 0, "voluntary": 0})
acted_this_hand = set()
 
def on_hand_start():
    acted_this_hand.clear()
 
def on_player_action(msg):
    name = msg.get("name", f"seat{msg['seat']}")
    if msg["action"] in ("call", "raise", "all_in"):
        if name not in acted_this_hand:
            vpip_data[name]["hands"] += 1
            vpip_data[name]["voluntary"] += 1
            acted_this_hand.add(name)
 
def get_vpip(name, default=0.25):
    data = vpip_data[name]
    if data["hands"] < 20:
        return default
    return data["voluntary"] / data["hands"]

Verwende VPIP, um deine Raising-Range anzupassen. Gegen einen Gegner mit VPIP unter 15% in spaeter Position, erweitere deine Stealing-Range. Gegen einen Gegner mit VPIP ueber 50%, setze nur auf Wert (bluffe nicht: sie callen zu viel).

Tagesziel: 800+ Haende, Bot identifiziert mindestens 5 verschiedene Gegner.

Tag 6: Fuege Bet-Sizing-Variation hinzu

Statisches Bet Sizing ist das naechste Leck. Die meisten Anfaenger-Bots machen entweder immer Min-Raise oder setzen immer den Potbetrag. Beides ist falsch. Mische drei Groessen je nach Situation:

SpotGroesseBegruendung
Pre-Flop-Open aus spaeter Position2,5x BBStandard-Open, balanciert Steal-Frequenz mit Wert
Continuation Bet auf trockenem Board33% PotGuenstig, bringt schwache Haende zum Folden
Value Bet auf nassem Board75% PotBerechnet Draws, baut den Pot fuer Value

Berechne deinen Raise-Betrag basierend auf dem Spot, begrenze auf den min/max aus valid_actions und sende. Das Mischen von Groessen macht dich merklich weniger ausbeutbar. Gegner, die Muster tracken, koennen deine Handstaerke nicht mehr allein an der Einsatzgroesse erraten. Das Wettstrategie-Tutorial hat die vollstaendige Aufschluesselung.

Tagesziel: 1.000+ Haende, bb/100 messbar positiv, Top 50% des Leaderboards.

Tag 7: Laufen lassen, ueberwachen, iterieren

Tag 7 geht nicht um neue Features. Es geht darum, deinen Bot 12+ Stunden am Stueck laufen zu lassen, das Leaderboard zu beobachten und zu patchen, was kaputtgeht. Der Debug-Guide behandelt die haeufigsten Fehlermodi (Auth-Probleme, Timeouts, Race Conditions).

Drei Dinge zum Pruefen:

1. Crash-Log. Wickle deine Hauptschleife in ein try/except, das jede Exception mit Zeitstempel loggt. Lasse es 4 Stunden laufen, dann lies das Log. Behebe den haeufigsten Fehler zuerst.

2. Langsame Entscheidungen. Fuege Latenz-Logging aus dem Timeout-Guide hinzu. Alles ueber 1 Sekunde verdient Untersuchung.

3. Win Rate nach Stunde. Gruppiere deine Handhistory nach Tageszeit und pruefe, ob deine Win Rate variiert. Manche Bots gewinnen zu Stosszeiten (mehr Gegner = mehr schwache Spieler zum Ausnutzen), verlieren aber in ruhigen Zeiten. Nutze das, um zu entscheiden, wann du deinen Bot laufen laesst.

Tagesziel: Bot hat 1.500+ Haende ueber die 7 Tage gespielt, ist in den Top 25% des aktuellen Season-Leaderboards und laeuft 12+ Stunden unbeaufsichtigt ohne Eingriff.

Wie sieht die 7-Tage-Progression wirklich aus?

Hier ist die ungefaehre Win-Rate-Entwicklung, die wir bei mehreren Entwicklern beobachtet haben, die diesem Plan gefolgt sind:

TagHinzugefuegte StrategieMedian bb/100Haende bis Tagesende
1Calling Station-2,550
2Pre-Flop-Fold-Range-0,8200
3Pre-Flop-Raise-Range-0,3400
4Pot Odds postflop+0,4600
5VPIP-basierte Gegnereinschaetzung+1,1800
6Bet-Sizing-Variation+1,71.000
7Stabilitaet und Uptime+1,71.500+

Die groessten Spruenge sind an den Tagen 2 und 5: Pre-Flop-Handauswahl und Gegnermodellierung. Das sind die guenstigsten Verbesserungen pro Zeile Code. Die Tage 4 und 6 bringen kleinere Gewinne, die sich aber gut summieren. Tag 7 fuegt keinen Edge hinzu, aber er wandelt den Edge, den du bereits hast, in eine Leaderboard-Position um, indem er Haende ansammelt.

Das ist keine rigorose Studie. Die Varianz bei 6-max ist hoch und individuelle Ergebnisse variieren je nach Spielerpool der Season, aber richtungsmaessig ist das Muster konsistent: Einfache aufeinander aufbauende Verbesserungen ergeben einen wettbewerbsfaehigen Bot in weniger als einer Woche Teilzeitarbeit.

Was solltest du in der ersten Woche NICHT tun?

Drei Fallen zum Vermeiden.

Schreibe keinen Hand-Evaluator von Grund auf. Es ist verlockend, weil es sich wie die "echte" Poker-Arbeit anfuehlt. Es ist ein mehrtaegiges Projekt, das keinen messbaren Vorteil gegenueber einer einfachen Gewinnwahrscheinlichkeits-Heuristik bringt. Wenn du unbedingt Handstaerke brauchst, verwende PokerKit oder Treys (Python-Bibliotheken mit kampferprobten Evaluatoren), anstatt deinen eigenen zu schreiben. Wir verwenden PokerKit auf der Serverseite aus dem gleichen Grund.

Versuche nicht, CFR oder GTO-Solving zu implementieren. Counterfactual Regret Minimization ist die Technik hinter Pluribus und Libratus. Es ist auch ein mehrmonatiges Forschungsprojekt, das Dutzende Millionen Trainingshaende erfordert. Fuer einen ersten Bot erzielst du bessere Ergebnisse, wenn du die gleiche Zeit in grundlegende Heuristiken investierst. Fuege CFR spaeter hinzu, wenn du ueber die Top 20% hinaus willst.

Deploye nicht am Tag 1 ohne Fehlerbehandlung. Wickle deinen Event Loop in ein try/except, logge jede Exception und mache weiter. Bots, die bei einer einzigen schlechten Nachricht crashen, verlieren die gesamte Tischzeit, die sie ueber Nacht angesammelt haetten. Die Loesung ist ein try/except-Block.

Was kommt nach Tag 7?

Sobald du einen funktionierenden, wettbewerbsfaehigen Bot hast, sind die naechsten Verbesserungen inkrementell und wirkungsvoll:

  • Positionsbasierte Ranges: Tighter Under the Gun, looser im Cutoff und Button
  • Multi-Street-Planung: Ueberlege, was du am Turn tust, bevor du am Flop setzt
  • Bluff-Auswahl: Waehle Boards, auf denen Bluffs glaubwuerdig sind (hohe Karten, weniger Draws)
  • Bankroll-Management: Variiere deinen Buy-in basierend auf den Session-Ergebnissen

Jede dieser Verbesserungen bringt weitere 0,5-1,5 bb/100, wenn sie gut umgesetzt wird. Der Weg zu Top-10-Leaderboard-Platzierungen ist kein einzelner Durchbruch; es ist das Stapeln von 10 kleinen Verbesserungen, bis dein Bot in jedem gaengigen Spot einen messbaren Vorteil hat. Die vollstaendige Plattform-Dokumentation behandelt jedes Protokolldetail, das du fuer die naechste Runde brauchst.

FAQ

Wie lange dauert es wirklich, einen wettbewerbsfaehigen Poker-Bot zu bauen? Fuer einen ersten wettbewerbsfaehigen Bot (Top 25% des Leaderboards) sind 7 Tage Teilzeitarbeit realistisch. Fuer die Top 10% rechne mit 2-4 Wochen Iteration und Feinabstimmung. Die Top 1% erfordern CFR-Algorithmen, Gegner-Profiling im grossen Massstab und Monate der Verfeinerung.

Kann ich diesen Plan mit einer anderen Sprache als Python verfolgen? Ja. Das Protokoll ist reines WebSocket plus JSON, also funktioniert jede Sprache mit WebSocket-Unterstuetzung. JavaScript, Go, Rust, Java, C++ — sogar Bash mit websocat wurde zum Bauen von Bots auf Open Poker verwendet. Die Python-Beispiele lassen sich direkt uebertragen.

Wie viele Haende muss ich spielen, um im Leaderboard zu steigen? Du brauchst mindestens 10 Haende, um ueberhaupt im Leaderboard zu erscheinen. Um signifikant zu steigen, plane 1.000-2.000 Haende ueber die Season ein. Mehr Haende reduziert die Varianz und laesst deinen Vorteil sichtbar werden.

Brauche ich ein Pro-Konto, um diesem Plan zu folgen? Nein. Alles in diesem Plan funktioniert mit einem kostenlosen Konto. Das Pro-Tier (5 $/Season, mit Bundle-Rabatten) fuegt Analytics, benutzerdefinierte Strategien und kuerzere Rebuy-Cooldowns hinzu, aber die Strategie-Verbesserungen selbst sind kostenlos. Siehe den Pro-Feature-Vergleich fuer die vollstaendige Liste.

Was passiert, wenn mein Bot pleitegeht, bevor ich den Plan abgeschlossen habe? Auto-Rebuy kuemmert sich darum. Sende {"type": "set_auto_rebuy", "enabled": true} einmal nach dem Verbinden, und der Server wird automatisch rebuyen (mit einem 5-Minuten-Cooldown im Free-Tier), wenn dein Bot pleitegeht. Dein Event Loop laeuft weiter und die naechste Hand beginnt, sobald der Cooldown ablaeuft.


Sieben Tage fokussierte Arbeit reichen aus, um einen Poker-Bot von Null zum Leaderboard-Konkurrenten auf Open Poker zu bringen. Die Plattform ist fuer diese Iterationsgeschwindigkeit ausgelegt. Registriere einen Bot, folge dem Tag-fuer-Tag-Plan, und du hast bis naechste Woche einen gerankten Eintrag.

Weiterlesen