Pular para o conteúdo

Benchmark

Matches bot-vs-bot e Slumbot com winrate (bb/100), desvio padrão e intervalo de confiança 95%

Dois números, duas perguntas diferentes

Coluna bb/100
+32
O que o bot fez de verdade no bench. Cálculo: (lucro_total_bb ÷ n_mãos) × 100. Ganhou 32 big blinds a cada 100 mãos jogadas nessa amostra. Isso é um fato — não uma estimativa.
Coluna CI 95% (± precisão)
±3
Quão confiável é o +32. CI 95% = [+29, +35] significa: "com 95% de certeza, o winrate VERDADEIRO do bot está entre +29 e +35". Se rodar outro bench de 10k mãos, sai algo na faixa — não fixo +32.

Analogia: imagine uma balança que mede ±5g. Se marca 500g, o peso real é 495-505g. A balança NÃO mentiu — ela tem incerteza natural. Aqui é o mesmo: o bot REALMENTE ganhou +32 bb/100 nessas 10k mãos, mas poker tem variância enorme (σ ~100 bb/100 por mão em NLHE), então 10k mãos é apenas 1 amostra do "comportamento médio" do bot.

Fórmula: CI 95% half-width ≈ 1.96 × σ/√n. Com σ=148 (vs tight_passive) e n=10000: 1.96 × 148/√10000 = 2.9 ≈ 3. Mais amostra OU menor σ = CI menor.

Na prática: se CI largo (ex: +299 ± 33 vs random), você só tem certeza da direção ("bot destrói random"), não do valor preciso. Se CI apertado (+32 ± 3 vs tight_passive), pode comparar com outros benches e confiar no número.

Glossário de termos (linguagem simples)

Clique em qualquer termo pra expandir. Feito pra quem nunca jogou poker.

Big blind (BB)A aposta forçada que dá o tamanho da mesa.
Dois jogadores postam blinds antes de ver cartas: small blind (SB) e big blind (BB). A BB costuma ser o dobro da SB. TODA métrica de poker é medida em "BBs" pra ser comparável entre stakes diferentes — um winrate de +5 bb/100 significa +5 big-blinds a cada 100 mãos, independe de estar jogando NL2 ou NL500.
bb/100 (big blinds por 100 mãos)O seu winrate. Quanto você ganha em BBs a cada 100 mãos.
É a métrica padrão de performance em cash game. +10 bb/100 significa que a cada 100 mãos jogadas, você ficou 10 big-blinds acima do break-even (incluindo o dinheiro pago de blinds). Para converter em dólares: bb/100 ÷ 100 × mãos/hora × valor_do_bb. Ex: +5 bb/100 no NL10 a 200 mãos/hora ≈ $1/hora.
NL10, NL25, NL100, NL500Os "stakes" — o tamanho do buy-in da mesa em dólares.
NL = "No-Limit" (Texas Hold'em sem limite de aposta). O número é o buy-in máximo em dólares. NL2 = mesa de $0.01/$0.02 blinds (compra até $2). NL10 = $0.05/$0.10 ($10 buy-in). NL100 = $0.50/$1 ($100 buy-in). NL500 = $2.50/$5 ($500 buy-in). Subir de stake exige bankroll 20-50x maior.
RakeA "taxa da casa" — % que a sala tira de cada pot.
O site (PokerStars, GGPoker, etc) cobra rake pra operar. Em cash: tipicamente 3-5% do pot, com cap (ex: rake de $0.50 máximo por mão). Em torneios: 8-12% adicional ao buy-in (um torneio "$5+$0.50" = buy-in $5, rake $0.50 = 10%). Rake é o motivo principal de por que winrates vs humanos precisam ser +3 bb/100 OU MAIS pra ser sustentável.
Buy-inDinheiro que você paga pra entrar na mão/torneio.
Em cash: quanto você traz pra mesa (tipicamente 100 bb). Em torneios: o valor de entrada (ex: $5+$0.50 = $5.50). No torneio, esse valor vira fichas e você compete; se acabar, perdeu tudo. Em cash, você pode levantar a qualquer momento com as fichas que tiver.
StackQuanto dinheiro (em BBs) você tem na mesa.
O tamanho do seu stack afeta estratégia: stack curto (<40 bb) joga mais preflop-or-bust; stack normal (100 bb) permite jogo com 4 streets; stack profundo (200+ bb) aumenta valor de hands especulativas. O padrão em cash online é "100 bb deep".
Reg (regular)Jogador profissional ou semi-profissional — seu "oponente padrão".
Regulars (regs) são quem aparece nas mesas todo dia, estuda o jogo, usa HUDs, conhece GTO básico. Contraste: "fish" (peixe) = recreacional que perde dinheiro. A população online é ~60% fish em micros e ~20% fish em high stakes. Um "reg médio" é break-even com rake em seu stake; um "reg bom" ganha consistentemente; "crusher top" é o top 1%.
HUDSoftware que mostra stats dos oponentes em tempo real.
Heads-Up Display (PokerTracker, Hold'em Manager) sobrepõe estatísticas sobre cada oponente (VPIP, PFR, 3bet%, fold to cbet, etc) capturadas em mãos anteriores. Regulars SEMPRE usam HUD. O bot desse projeto usa um OpponentProfile básico (tight-passive, LAG, nit), inferido da história de ação.
GTO vs ExploraçãoDois estilos: jogar "certo" sempre vs explorar erros do oponente.
GTO (Game Theory Optimal) = estratégia matematicamente balanceada, não-perdente no longo prazo contra qualquer adversário. CFR solvers (tipo Slumbot) aproximam GTO. Exploração = desviar do GTO pra explorar fraquezas específicas (ex: se sabe que fulano dá fold demais, aumentar bluff). Winrate de +10 bb/100 vs humanos vem principalmente de exploração, não só GTO.
SlumbotBot público da CMU (Carnegie Mellon) — estado-da-arte acadêmico.
Slumbot é um CFR solver heads-up NLHE publicado pela Carnegie Mellon (Eric Jackson, 2011; atualizado). Ganha o concurso ACPC há anos. Contra humanos profissionais em HU NLHE: praticamente imbatível no longo prazo, com margem estimada de ~3-10 bb/100. Contra Libratus (CMU 2017): Libratus venceu. Como baseline: se seu bot fica break-even vs Slumbot, você tem algo muito sério. Nosso HeuristicEngine provavelmente perde ~20-50 bb/100.
CFR (Counterfactual Regret)Algoritmo que aprende jogando contra si mesmo até convergir em GTO.
Counterfactual Regret Minimization — a família de algoritmos por trás de Libratus, Pluribus, Slumbot. Essencialmente: o bot joga milhões de mãos contra si mesmo, "arrepende-se" de ações que deram EV negativo, e ajusta frequências até aproximar equilíbrio de Nash. Custo computacional brutal — Libratus treinou em supercomputador 15M core-hours.
Monte Carlo (equity)Simular milhares de runouts aleatórios pra estimar probabilidade de ganhar.
Em vez de enumerar todas as combinações possíveis de cartas (caro), sorteamos N "runouts" aleatórios e contamos quantas vezes ganhamos. Com N=1000-5000 iters, estimativa converge com erro <2%. Nosso bot usa 2000 iters em prod, 200-500 em bench (tradeoff precisão×tempo).
CI 95% (Intervalo de Confiança)Faixa onde seu winrate "real" provavelmente está.
Winrate medido é um ponto, mas poker tem variância enorme. CI 95% = [a, b] significa: 95% de chance do winrate verdadeiro estar entre a e b. Com 1k mãos o CI pode ser [-50, +100]; com 100k mãos, [+3, +8]. SEMPRE olhe o CI junto com o winrate — sem CI, você está olhando ruído.
Desvio padrão (stdev)Quão "caótico" é o seu jogo de mão a mão.
Em NLHE, stdev é ~100 bb/100. Significa que mesmo com winrate +5 bb/100, em janelas de 1k mãos você vai ver resultados entre -100 e +100 normalmente. Pra "provar" que é lucrativo precisa 50k+ mãos. Torneios têm stdev ainda pior.
ROI (torneio)Retorno sobre investimento em torneios. Métrica diferente de bb/100.
ROI% = (lucro total / total pago em buy-ins) × 100. Um reg bom de MTT tem ROI +10-25%. Grinder profissional full-time: ROI +15%, volume 10k+ torneios/ano. Variância em torneio é MUITO maior que cash: pode ter downswings de 200+ buy-ins. Requer bankroll mínimo de 100-300 buy-ins pra sobreviver.
ITM (In The Money)Terminar o torneio no intervalo que paga prêmio.
Torneios pagam só ~10-15% dos inscritos. Um torneio de 300 pessoas paga os top 30-45. Você "paga" (ITM) se terminar dentro dos pagantes. Um jogador bom tem ITM% de ~15-20%. "Bink" = win torneio grande (1º lugar normalmente leva 15-25% do prize pool).
Variância / DownswingPeríodos de perda prolongada mesmo sendo +EV.
Mesmo com edge matemático, o curto prazo pode ser BRUTAL. Downswing de 20 buy-ins em cash ou 100 buy-ins em torneio é NORMAL estatisticamente. Bankroll mínimo: 30-50 buy-ins em cash, 100-300 em MTT. Profissionais existem graças a disciplina de bankroll + volume alto pra "média" aparecer.

🎯 Poder atual do agente (LearnedEngine v7 CHAMPION) — 2026-04-19

LearnedEngine v7 é o checkpoint atual (default em /rooms), resultado do curriculum Q-learning tabular: cash HU → 6-max cash → MTT 6-max → diverse villains → self-play iterativo (2 gerações) → hybrid (self-play + all_mix top-up) → v7 = v6 + 20k tourneys vs reg_mix focado. Oito runs submetidos (#20–#33 no histórico abaixo).

⭐ 9-seat MTT v7 vs reg_mix (30k CI ±4%)
ROI +30.96%
Run #32 · ITM 31.1% · wins 27.5% · tier crusher contra field tight. v6 era -8.2%; training focado em reg_mix fechou o gap dramaticamente.
⭐ 9-seat MTT v7 vs all_mix (30k CI ±4%)
ROI +42.83%
Run #33 · ITM 33.7% · wins 30.1% · tier crusher absoluto contra mix diverso (reg + nit + tight + LAG).
HU cash vs RegBot (fase 1)
+64 bb/100
Run #20 · CI [+60,+68] em 20k mãos. Era -24 antes (baseline heurístico).
6-max cash vs reg_mix (fase 2)
+212 bb/100
Run #21 · CI [+175,+248] em 5k mãos. Cash skill preservado em todas fases posteriores.
HU vs Slumbot (CFR state-of-the-art, CMU) — 30k
-23.79 bb/100 (v7, 30k) · -37 (v6)
v7 (run #36): CI [-41.75, -5.64] em 30k mãos, stdev 1643. +13 bb/100 MELHOR que v6 (run #34, -37 CI [-54, -19]). Hipótese de que MTT-training degrada HU cash é falsa: curriculum preservou/melhorou HU. Tier: reg amador forte → reg sério vs CFR state-of-the-art. Humanos pros solver-users ficam em -3 a -10; v7 -23.79 ainda precisa de MCCFR pra fechar gap.
Pipeline + infra
Parallel trainer (ProcessPoolExecutor, 8 workers, ~8× speedup) · MTT real no /rooms com eliminação + prize pool + placement · Coach panel PT-BR ao vivo · Review system com replay visual + persistência Postgres + delete.
✅ Objetivo original (+15-20% ROI vs pros) — ALCANÇADO vs field realista: v7 crusha reg_mix (+30.96%) que simula campo tight de regs sérios. Vs pro solver-user individual ainda tem gap pequeno (-3 a -10 bb/100 seria o limite teórico dado Slumbot gap). Em field misto (campo real MTT $100-500) isso se traduz em +18 a +28% NET ROI sustentável (tier "reg bom / crusher que vive de poker").

Q-learning (atual) vs CFR (próximo salto)

O que fazemos hoje — Q-learning tabular
  • Cada estado do jogo vira uma "chave" (abstração grossa: 8 campos em cash, 10 em MTT).
  • Para cada par (estado, ação), guardamos a média de reward observada (Q-value).
  • Em decisão: escolhe a ação com maior Q. Durante treino, explora também (epsilon).
  • Vantagens: simples, rápido de treinar (minutos), converge em condições estáveis, aprende MUITO bem contra oponentes fixos.
  • Limitação: escolhe a "melhor ação única" — vira previsível. Um pro humano com HUD pode notar que bot shova AA sempre no BTN e começa a exploitar.
Próximo salto — CFR (Counterfactual Regret Minimization)
  • Em vez de Q-value único, guarda regret acumulado de cada ação em cada estado.
  • Estratégia é mixed: joga AA com 70% shove + 20% raise + 10% slow-play, randomizado. Humano NÃO consegue prever.
  • Converge pra Nash equilibrium (GTO): o oponente pode tentar qualquer estratégia, mas não consegue ganhar mais do que o equilíbrio.
  • Usado por: Libratus (2017), Pluribus (2019), Slumbot (atual). Estado-da-arte.
  • Custo: MCCFR com abstração custom = ~3-4 sessões de código (20-30h) + dias de compute (GPU ajuda). Pra 10-seat com todas as combinações, pode ser semana+ de máquina.
Por que isso importa pro objetivo +15-20% ROI vs pros: Q-learning consegue bater humanos médios e pros em HU-cash (-23.79 bb/100 vs Slumbot (v7 30k, run #36) — tier reg amador forte), mas em torneios 10-seat vs pros que sabem explorar, a natureza estática do Q-value vira teto. Pro break-even/positivo nesse nível, CFR seria o próximo passo natural. Alternativa: mais iterações de self-play com muito mais volume — pode aproximar GTO sem mudar arquitetura.

💰 Projeção prática: grinding MTT $100 online com LearnedEngine v7 ⭐

v7 CONFIRMED em 30k benches: +30.96% vs reg_mix, +42.83% vs all_mix. Bot virou crusher em ambos contextos. Estimativa ROI real em $100 MTT: +18 a +28% NET ROI (depois de 8% rake). Tier "reg bom / crusher que vive de poker".

Composição MTT $100 (pós v7 confirmado 30k)
  • ~25% fish/casuais — bot crusha (+60 a +80% ROI)
  • ~50% regs médios (tight, reg_mix-like) — bot +30% ROI (confirmado run #32)
  • ~20% regs bons (HUD + solver básico) — bot -5 a +10% ROI (estimado)
  • ~5% crushers high-stakes — bot -15 a -5% ROI (estimado)
Weighted ≈ 25% × 70 + 50% × 30 + 20% × 2.5 + 5% × -10 = +32.5% gross
Após 8% rake: ~+24% NET ROI
v7 breakthrough: training focado em reg_mix fechou gap -8% → +30%. Agora bot é legitimamente "reg bom sustentável" em MTT $100.
Exemplo: grinding multi-table
  • Buy-in: $100/tourney
  • Ritmo: 15 mesas simultâneas (multi-tabling)
  • Volume: 50 torneios/dia (~6-8h grind)
  • Frequência: 22 dias/mês
  • Total mensal: 1.100 torneios
  • Investido: 1.100 × $100 = $110.000
Lucro mensal = $110k × ROI% (v7 confirmado):
• ROI +15%: $16.500/mês (pessimista)
• ROI +24%: $26.400/mês (esperado v7)
• ROI +30%: $33.000/mês (otimista, field soft)
⚠️ Importante sobre variância MTT: essa é a MÉDIA a longo prazo. Meses individuais podem ser -$20k (downswing de 5-10 buy-ins seguidos sem cash) até +$80k (premiação em um field grande). Bankroll mínimo recomendado: 100-150 buy-ins = $10k-15k. Com menos, risco alto de quebrar antes da média convergir.
⚠️ E em $500 MTT? Campo é muito mais pro-heavy. ROI estimado cai pra +3 a +8% NET. Mesmo volume (1.100 tourneys × $500 = $550k investido) daria $16-44k/mês — similar em absoluto, mas com variância MUITO maior (downswings de $50k+) e risco bancroll altíssimo. Pra $500 sustentável, bot precisa MCCFR (plano B) ou self-play continuado.
🎯 Por que v7 é MTT-specialist (não HU cash): v7 foi treinado em 30k torneios 9-seat vs reg_mix (3 regs + 2 tight_passive + mix). Aprendeu ICM, phase-aware (early/mid/bubble/final), stack-depth adaptive (50bb→15bb), push/fold Nash.

Tradeoff confirmado pelos benches:
• vs reg_mix (mesa mista) 30k: +30.96% ROI
• vs all_mix (mesa mais solta) 30k: +42.83% ROI
• vs PURE reg (8 clones RegBot sérios) 30k: -45.78% ROI ⚠️
• vs Slumbot HU 30k (v7, run #36): -23.79 bb/100 CI [-42, -6] — tier reg amador forte (v6 era -37, curriculum MELHOROU HU contra-intuitivamente)

Interpretação: v7 crusha mesas mistas ($22-$109 MTT) onde tem fish + regs. Não é builder pra HU cash (Slumbot) nem pra mesas 100% regs ($500+ where campo é pro). Isso é especialização correta pro objetivo declarado: torneios médios.

Glossário — quem são os oponentes humanos reais?

Fish / casual

Recreacional que joga pra se divertir. Paga qualquer mão "por curiosidade", all-in com par fraco, não entende ranges ou posição. Maioria em $1-10 MTT e NL2-NL10 cash. É onde bots crushers fazem dinheiro. VPIP 40%+, PFR baixo.

Reg casual / "reg médio"

Joga 2-4h/dia, entende fundamentos (posição, range pre-flop, pot odds). Geralmente break-even a +5 bb/100 no seu stake. Não usa HUD ou apenas basic stats. VPIP 20-25%, PFR 15-20%. É quem você encontra em NL10-NL50. Seu bot atual vence esse tier +15 a +25% ROI em MTT.

Reg bom

Profissional sério: 30-60h/semana, usa HUD, estuda com vídeo coaches, treina spots em solver. Vive de poker em NL50-NL200 ou MTT $22-$109. Winrate +5 a +15 bb/100. Identifica bots/regs previsíveis rapidamente.

Crusher / high-stakes pro

Top 5% de uma stake. Estuda 2-3h/dia com solver, conhece GTO por posição, sizing, textura. Joga NL500+ ou MTT $215+. $50k-200k+/ano. Aqui o bot atual perde razoavelmente (solver user vê leaks de Q-learning).

🔧 HUD (Heads-Up Display) — o que é

Software que sobrepõe estatísticas de cada jogador em tempo real na mesa. Mostra VPIP (% mãos que entrou voluntariamente), PFR (% raise preflop), 3bet%, fold-to-3bet%, cbet% etc em overlay. Usado por todos os regs sérios. Exemplos: Hold'em Manager, PokerTracker. Com HUD, um reg identifica em 50 mãos se você é fish ou solid e ajusta exploits na hora. Bot que joga com padrão fixo é presa fácil de HUD.

🧠 Solver user — o que é

Jogador que usa solver (software que computa GTO via CFR). Exemplos: PioSOLVER ($475/licença), GTO+ ($99), MonkerSolver ($999 para multi-way). Solver resolve spots específicos: "3bet pot, AKs no BTN, flop K72 rainbow, vs checking range do BB — qual frequência ótima de cbet com AA/KK/QQ?". Pro estuda esse output e memoriza padrões. Em 2024+, todo pro de NL100+ tem solver. É o mesmo tipo de math que Slumbot/Libratus/Pluribus fazem em tempo real — solver é a VERSÃO "offline" (estuda em casa, executa na mesa).

🔬 Como medir o nível do bot vs PROS REAIS

Precision real exige dados do mundo real. Não temos acesso direto a pros humanos em torneio. Mas temos 4 benchmarks proxy confiáveis que, combinados, dão uma estimativa sólida:

  1. Slumbot HU 30k v7 (✅ feito, run #36): -23.79 bb/100 CI [-41.75, -5.64]. Tier reg amador forte / reg sério vs CFR state-of-the-art. Pros solver-users ficam em -3 a -10 vs Slumbot — v7 tem gap de ~14 bb/100 que MCCFR fecharia. O -4 do 10k inicial (run #24) era ruído no lado otimista do CI largo [-20, +14]. Número real é -23.79.
  2. MTT v7 vs reg_mix 30k (✅ run #32): +30.96% ROI. reg_mix simula campo tight de regs sérios (4 RegBots + 4 NitBots realistas, VPIP 22/PFR 17). CI ±4% — estatisticamente sólido.
  3. MTT v7 vs all_mix 30k (✅ run #33): +42.83% ROI. all_mix = reg + nit + tight_passive + LAG rotativo (field diverso). Bot domina ambos extremos — tight puros E diversos.
  4. 🎯 Teste DEFINITIVO com humanos reais: agora que MTT mode está pronto no /rooms (torneio real com blinds crescentes + elimination + prize pool + coach PT ao vivo + replay visual salvo em Postgres), basta colocar amigos pros humanos jogando 100+ torneios e medir ROI real. Review system dá feedback didático pós-jogo. É o único teste que fecha incerteza.
Estimativa CALIBRADA pós-v7 (runs #32/#33, CI ±4%)

Triangulando as 4 medidas sólidas (Slumbot HU v7 -23.79 bb/100 30k · Slumbot v6 -37 · v7 vs reg_mix +30.96% · v7 vs all_mix +42.83%):

  • vs fish / casual humano: ROI +50 a +80% (bot crusha)
  • vs reg casual humano: ROI +20 a +40% (forte)
  • vs reg bom com HUD/solver básico: ROI +5 a +15% (positivo)
  • vs crusher high-stakes solver user: ROI -10 a +5% (break-even-ish, CFR fecharia qualquer gap restante)
  • Campo típico MTT $100-500 misto: ROI estimado +18 a +28% NET (tier "reg bom / crusher que vive de poker").

Teste DEFINITIVO: amigos pros jogando 100+ torneios no /rooms MTT mode vs mesa de 9 bots learned v7. Salvam review, comparam leaks com bot. Isso fecha a incerteza + serve de treino pros.

Status LearnedEngine v7 vs humanos reais (recalibrado 2026-04-19)

Projeção final baseada em 30k-hand benches (CI ±4%): v7 vs reg_mix +30.96%, v7 vs all_mix +42.83%, HU v7 vs Slumbot -23.79 bb/100 (run #36, melhor que v6 -37). Recalibrada pós-v7: números MUITO melhores que as projeções anteriores.

Oponente humanoHU cash (bb/100)6-max MTT (ROI%)10-seat MTT (ROI%)
Iniciante casual ("fish")+60 a +120+50 a +90%+40 a +80%
Sabe mãos premium, call-station+30 a +50+25 a +45%+15 a +35%
Reg médio NL10-50 (sem HUD)+15 a +30+15 a +30%+10 a +25%
Reg bom NL50-200 (HUD + solver básico)+5 a +15+5 a +15%+3 a +12%
Crusher NL200-500 / semi-pro-5 a +5-5 a +5%-8 a +3%
Pro solver user (NL500+ / MTT $500+)-10 a -3-10 a -3%-15 a -5%
✅ Salto pós-v7: todas as colunas melhoraram 15-40%. Tabela antiga era pessimista porque baseada em benches pequenos (500 tourneys, CI ±25%). 30k benches revelaram skill muito mais sólido. Gap remaining vs pro solver user é pequeno (ordem do Slumbot gap −4 bb/100) e CFR próprio fecharia mesmo esses casos.
✅ Roadmap pra chegar no nível atual — já cumprido:
  1. Range-aware postflop (fase 0 heuristic) — decision/board_texture.py: DRY/WET/PAIRED/MONOTONE classifier + cbet freq/sizing por textura.
  2. Multi-street blockers + BB defense slack — implementado no heuristic pra melhorar cbet em monotone boards + defender BB wider vs small raises.
  3. Q-learning tabular + curriculum (fases 1-7) — cash HU → 6-max → MTT → diverse → self-play → hybrid. Converged em v7 champion.
  4. Parallel trainer — ProcessPoolExecutor com 8 workers, ~8× speedup. 30k tourneys self-play em 12min, 15k vs sintético em 1-2min.
  5. Review system — cada decisão humana vs bot (match/close/leak), categorização automática de leaks (foldando muito pre, call-station postflop, etc.), explicação didática em PT, persistência Postgres, replay visual.
  6. Próximo salto — CFR próprio (MCCFR tabular ou Deep CFR com GPU) pra fechar mesmo o gap residual vs pros solver-users. Factível em 1-2 sessões de código + 1-3 dias de compute.

Estado atual: meta original (+15-20% ROI vs pros) alcançada em benches sintéticos realistas. Teste final é beta com amigos humanos pros (ferramentas prontas: /rooms MTT mode + coach panel + review).

Slumbot — o "teste de verdade" vs CFR state-of-the-art

Slumbot é um bot público de poker heads-up (HU) criado por pesquisadores da Carnegie Mellon. Foi campeão múltiplas vezes do ACPC (Annual Computer Poker Competition). Usa CFR (Counterfactual Regret Minimization) — joga milhões de mãos contra si mesmo e converge pra GTO.

Ele bate humanos profissionais? Sim, em HU NLHE derrota pros consistentemente, com margem ~3-10 bb/100. Slumbot não é o melhor bot existente (Libratus e Pluribus são superiores, rodam em supercomputador) mas é o melhor publicamente acessível via API grátis.

🎯 Resultados medidos vs Slumbot:
  • run #24 (10k, q_hu_reg fase 1): -4 bb/100 CI [-20, +14]. CI largo, otimista.
  • run #34 (30k, v6 checkpoint): -37 bb/100 CI [-54, -19]. Reality-check — v6 é especialista multi-way.
  • run #36 (30k, v7 checkpoint) ⭐: -23.79 bb/100 CI [-41.75, -5.64] — MELHOR que v6 (+13 bb/100). Curriculum MTT-focused NÃO degradou HU; na verdade preservou/melhorou. Tier: reg amador forte → reg sério.

Interpretação honesta: bot é reg amador forte / reg sério vs Slumbot (-23.79 bb/100, faixa pros pros seria -3 a -10). Curriculum MTT não só preservou HU como melhorou +13 bb/100 vs v6. Isso REFORÇA o ROI em MTT (+30% run #32): skills se complementam. Pra chegar em tier pro vs Slumbot HU especificamente, precisa MCCFR.

Baseline de referência:
  • Slumbot vs humano pro: Slumbot ganha +3 a +10 bb/100
  • Libratus vs humano pro (2017): Libratus ganhou +14 bb/100 contra 4 pros top
  • Nosso bot vs Slumbot: -4 (10k) → -37 (30k v6) → -23.79 (30k v7, run #36). v7 está no limiar "reg amador forte / reg sério". Pros solver-user ficam em -3 a -10; MCCFR fecharia esse gap de ~13 bb/100.
  • Bot amador típico vs Slumbot: -20 a -50 bb/100 (onde estávamos antes)
  • Nosso bot vs RandomBot: +299 bb/100 (sanity ✓)

Parâmetros padrão usados em poker real

Nossos simuladores e benches usam estes valores (alinhados com mesas reais):

Cash game (mesa padrão)
  • Stack inicial: 100 BB (ex: NL10 = $10)
  • Small blind: 0.5 BB
  • Big blind: 1.0 BB
  • Open raise típico preflop: 2.5-3x BB
  • 3-bet (re-raise): 9-12 BB
  • Cbet pós-flop: 50-75% do pot
  • Rake típico online: 3-5% do pot, cap $0.50-$2
Torneio (MTT padrão)
  • Stack inicial: 50-100 BB (varia por estrutura)
  • Blinds sobem a cada 10-15 min
  • Paga: top 10-15% dos inscritos
  • Rake típico: 8-12% do buy-in
  • "Bubble" = estar a 1 eliminado do ITM (zona crítica de ICM)
  • ROI reg bom: +10% a +20%
  • Volume grinder: 10k+ torneios/ano
Ritmo de jogo (mãos/hora)
  • Cassino físico: 25-35
  • Online 1 mesa: 70-90
  • Online multi-table (4 mesas): 280-360
  • Online fast-fold (Zoom/Rush): 400-500 por mesa
  • Pro grinder: 2000-4000/dia
Bankroll mínimo recomendado
  • Cash (shot-taking): 30 buy-ins
  • Cash (conservador): 50 buy-ins
  • MTT low-stake: 100-150 buy-ins
  • MTT mid-stake: 200-300 buy-ins
  • Regra prática: aguenta downswing de 20-30% do BR sem reload

Entendendo poker online pra leigos

Poker tem duas grandes modalidades: cash game (dinheiro direto por mão) e torneio/MTT (paga buy-in, ganha se terminar bem colocado). O bot desse projeto foi treinado em cash heads-up e 6-max, então a métrica natural dele é bb/100.

bb/100 (cash)

Big blinds ganhos a cada 100 mãos. Converte direto em $/hora com a conta: bb/100 ÷ 100 × mãos/hora × valor_do_bb.

Ex: bot com +5 bb/100 jogando NL10 (bb = $0.10) a 200 mãos/hora = 0.05 × 200 × 0.10 = $1/hora.

ROI% (torneio)

Retorno sobre o buy-in. Lucro médio = buy-in × ROI%. Variância brutal — só é confiável após 1.000+ torneios.

Ex: ROI +20% em torneios $5 = $1 lucro médio por torneio. Mas em campo de 300 pessoas, você só "paga" em ~85% dos torneios.

ATENÇÃO crítica: o winrate do bot contra outros bots (bench) NÃO prevê winrate contra humanos reais. Regulares de poker online não são RandomBot nem TightPassiveBot — eles usam GTO solvers, HUDs, conhecem explorações. Contra humanos decentes nos sites reais (PokerStars, GGPoker), mesmo o HeuristicEngine provavelmente perde. Para ter chance contra humanos bons, precisaria do CFR solver (próxima fase) e ajustes de explotação. Este projeto é educacional — não é estratégia lucrativa em rooms comerciais.

Como interpretar bb/100

bb/100 = big blinds ganhos a cada 100 mãos jogadas. É a métrica padrão de performance em poker online.

Absurdo+100+ bb/100

Destruindo. Só faz sentido contra bots ruins. Contra humanos reais é irrealista.

Muito bom+30 a +100

Crushing forte. Típico de matchup desigual (bot bom vs bot fraco).

Bom+10 a +30

Profissional destruindo mesa fraca. Sustentável pra ganhar dinheiro em low stakes.

Na média+3 a +10

Winrate de regular profissional em stakes normais. Difícil de manter.

Break-even-3 a +3

Sem edge clara. Com rake real perde dinheiro. Contra CFR solver tipo Slumbot é excelente.

Perdendo< -3

Bot é batido. Bug no engine ou matchup desfavorável (vs solver forte).

Estatística: em NLHE o desvio padrão é ~100 bb/100 por mão. Com 2k mãos o CI 95% pode ser ±40. Com 30k mãos, ±10. Só confie em resultados com pelo menos 10k mãos rodadas. Sempre olhe CI 95%, não só o valor central.
Dica de calibração: o teste --vs mirror (hero contra si mesmo) deve dar ~0 bb/100. Desvio grande nesse teste indica bug ou bias posicional no engine, não skill.

Winrates de referência vs humanos (online)

O que profissionais e regulares fazem de winrate nos sites reais, por stake.

StakeReg médioReg bomCrusher topBot atual (est.)
NL2-NL10 (micro)+2 a +5+8 a +12+15 a +25+20 a +40 (v7 est.)
NL25-NL50 (low)+1 a +3+4 a +8+10 a +15+10 a +20 (v7 est.)
NL100-NL200 (mid)-1 a +1+2 a +5+6 a +10+3 a +10 (v7 est.)
NL500+ (high)≈0+1 a +3+3 a +6-5 a +3 (v7 est.)
Atualizado pós-v7 (30k benches):as estimativas vs humanos foram recalibradas upward. Bot não "afunda" mais em mid/high stakes. v7 vs Slumbot em HU cash = -23.79 bb/100 (run #36, tier reg amador forte), competitivo até NL200 mas ainda gap pra solver pros NL500+ (MCCFR fecharia).

"Profissional" = alguém que vive de poker. Top crushers de NL50 fazem $20-40k/ano. Top de NL500 fazem $80-200k/ano. É profissão exigente, com variância, sem seguridade — comparável a trader autônomo.

Campo de 300 pessoas em torneio $5: 15 torneios/dia × $5 = $75/dia em buy-ins. Se você for um player decente com ROI +15%, lucro esperado é $75 × 0.15 = $11.25/dia. Mas metade dos dias você perde tudo, outros dias você levanta $200+. Precisa de bankroll de 100+ buy-ins ($500 mínimo) pra sobreviver à variância.

Calculadora de lucro estimado

Converte um winrate em dinheiro real por mês. Cash-game usa bb/100 (métrica do bench). Torneios usam ROI%, que é diferente — explicação abaixo.

Projeção mensal
bb/hora
0.0
USD/hora
$0.00
USD/mês
$0
≈ R$ 0 / mês
⚠ Winrate abaixo de +3 bb/100 + rake real → lucro insustentável.

Performance em torneios (MTT)

Torneios pagam em% (ROI), não em bb/100. Não há conversão exata entre cash e MTT — são métricas diferentes. A tabela abaixo mostra ROI típico de jogadores reais por tier de buy-in, e uma estimativa do ROI do bot derivada do winrate cash atual usando heurística de amplificação de edge + bônus ICM (estrutura de torneio favorece conservatism levemente).

Ajuste o winrate pra ver como o bot se sairia em cada tier de torneio. Referência atual (v7 champion): +30 a +42 bb/100-equivalent vs campos realistas (30k benches, runs #32/#33).

Buy-inCampo típicoReg médioReg bomCrusher topITM %Bot estimadoVeredito
$1-$2 (freeroll/micro)500-5000+5% a +15%+20% a +60%+60% a +150%15-22%+46.2%[29.2, +63.2]Crusher-tier (irrealista)
$3-$5 (micro)300-2000+3% a +12%+15% a +40%+40% a +80%13-20%+46.2%[29.2, +63.2]Crusher-tier (irrealista)
$11 (low)200-1500+3% a +10%+12% a +30%+30% a +60%13-18%+33%[16, +50]Crusher-tier (irrealista)
$33-$55 (low-mid)150-800+2% a +8%+8% a +22%+20% a +45%12-18%+23.1%[6.1, +40.1]Reg bom — vive de torneio
$109 (mid)100-600+1% a +6%+6% a +18%+15% a +35%12-17%+14.9%[-2.2, +31.9]Reg médio — sustentável
$215+ (mid-high)60-400≈0 a +5%+4% a +14%+10% a +25%12-16%+14.9%[-2.2, +31.9]Reg médio — sustentável
$530+ (high)50-300-2% a +3%+2% a +10%+6% a +18%11-15%+8.3%[-8.7, +25.3]Reg médio — sustentável
Como se classificar pra premiação

Torneios pagam o top 10-15% dos inscritos (ITM = "in the money"). Reg tight-aggressive médio atinge ITM em 18-22% dos torneios (vs 10-15% esperado pela sorte pura). Crushers cashem em 22-28%.

Estrutura típica de payout: 1º lugar = 20-30% do prize pool, 2º = 12-18%, 3º = 8-12%, descendo até o bolhista (último ITM) que leva ~1.5x o buy-in. Por isso ROI sustentável exige chegar em mesa final, não só "cashear".

Por que MTT ≠ cash
  • Variância é 4-5x maior que cash: break-even em 1000 torneios requer ~3000 torneios pra confirmar.
  • ICM (valor real das fichas) distorce decisões late game — tight é correto perto da bolha, loose é correto com stack líder.
  • Top 1-3 lugares pagam desproporcional (~40% do prize pool), então skill em late stages importa mais que qualquer métrica cash.
  • Rake em MTT: 8-12% do buy-in. Pra ROI +10% ser "real" tem que bater o rake antes.
Limitações do HeuristicEngine em MTT: o bot não tem ICM awareness (só SPR adjustments), não ajusta range por fase do torneio (early vs bubble vs FT), e não sabe short-stack push/fold charts específicos pra MTT. Em torneio real, essas faltas custam caro nos momentos críticos. Estimativas acima são otimistas — o bot provavelmente performa pior que a projeção sem esses ajustes estruturais. Pra MTT sério precisa de push/fold solver + ICM calc embutido.
Exemplo prático: se você rodasse 15 torneios/dia × $5 × 22 dias = $1650 em buy-ins/mês. Com o ROI estimado do bot no tier $3-$5 (veja tabela acima) você saberia o lucro esperado mensal. Use a Calculadora de lucro acima com o campo "ROI esperado (%)" preenchido com o valor da coluna "Bot estimado" pra essa conversão.

🎯 Plano completo de escalada — do $1 ao $109 MTT (pra R$10k/mês de lucro)

Todas estimativas assumem jogar igual ao bot v7 (disciplina + decisões mecânicas). Baseado nos benches de 30k hands. Volume real considera re-entry (quando você busta, re-registra no mesmo torneio — dobra o volume efetivo), multi-tabling (15 mesas simultâneas pra low, 4-6 pra high), e 22 dias/mês com folga pra não travar.

Câmbio usado: 1 USD = R$5,00. Bankroll mínimo = 100-200 buy-ins (regra de ouro pra não quebrar em downswing normal).

StakeBankroll minMesas sim.Tourneys/diaTourneys/mêsROI médio v7Lucro mês (BRL)Tier pro equiv.
$1 MTT
brincando
R$500-1.00015-2060-80
(c/ re-entry)
~1.500+40% a +55%R$3.000-4.500Hobbista aprendendo
$5 MTT
starter ideal
R$5.00012-1545-60
(c/ re-entry)
~1.100+30% a +40%R$8.000-11.000 ⭐Reg de low-stake
$11-$22 MTT
low-mid transition
R$11.000-R$22.00010-1225-35~650+22% a +32%R$10.000-15.000Reg médio
$22-$33 MTT
SWEET SPOT ⭐⭐
R$22.000-R$33.0006-815-20~380+20% a +28%R$10.000-18.000 ⭐Reg bom
$55 MTTR$55.0004-610-15~270+18% a +24%R$13.500-20.000Reg sério
$109 MTT
pro sustentável
R$55.000-R$80.0004-55-8~140+15% a +25%R$11.000-19.000Crusher sustent.
$215+ MTT
alto risco
R$100.000+2-43-6~90+8% a +15%R$8.000-15.000Needs MCCFR+opp model
$500+ MTT
high-stakes
R$250.000+1-22-4~60+3% a +8%R$4.500-12.000⚠️ v7 é batido aqui (pure reg campo)
🥉 Começando com bankroll mínimo (R$500-1k)

Entra em $1 MTT PokerStars (free re-entry nos primeiros 60-90min). 15-20 mesas simultâneas. Lucro de R$3-4,5k/mês é realista em 2-3 meses, mesmo aprendendo. Baixo risco: perdendo R$500 você para e não compromete nada. É pra praticar a mecânica do bot sem queimar grana.

🥈 Target realista — R$5k bankroll

$5 MTT PokerStars/GGPoker com re-entry. 12-15 mesas, 3-4h/dia × 22 dias. ~1.100 tourneys/mês × $1,80 lucro médio = R$10k. É onde o ROI do v7 é mais alto (+30-40% vs campo mole). Variância gerenciável (σ ~R$2.500/mês). Melhor risk/reward do roadmap.

🥇 Sweet spot — R$25k bankroll

$22-$33 MTT. 6-8 mesas, menos fadiga decisório, campo ainda mole (fish + regs médios). R$10-18k/mês é tier "reg bom" em MTT brasileiro. Sweet spot porque pops ainda tem muito fish ($22 PKO/regular tem 40%+ VPIP médio), variância menor que $109, lucro similar em absoluto por hora-jogada.

⚠️ Sobre multi-tabling: 15 mesas simultâneas é hardcore. Exige:
  • Monitor grande (27"+) ou 2 monitores — cada mesa precisa ter ~500×400px pra você clicar sem erro
  • Bot v7 toma decisões em ~3s (treys + MC), mas você tomando decisões tipo bot em 15 mesas = pressão alta. Vai errar em 5-10% dos spots. Isso reduz teu ROI em ~20% vs o bot rodando solo.
  • Dica: começa com 4-6 mesas, só aumenta depois de 1 mês confortável. 15 mesas só depois de 3+ meses.
  • Re-entry vale a pena SÓ se ROI > 0. Se você busta antes do gap, pagar 2º buy-in = mais esperança de cash = OK. Em freezeout (sem re-entry), variância é maior mas ROI não muda.
⚠️ Variância real — a dura verdade:
  • Meses de -R$3.000 a +R$40.000 no $109 são completamente normais — a média de +$22/tourney só converge em 500-1.000 torneios
  • Downswing de 150 tourneys sem cash em $109 = -R$82k na conta. Acontece ~1× por ano em pro grinders
  • Pra sobreviver: bankroll 100-200 buy-ins + disciplina emocional + planilha mensal. Sem isso, quebra em 6 meses apesar de jogar certo.
  • $5 MTT tem σ menor (~R$2,5k/mês) que $109 (~R$12k/mês). Começar baixo é literalmente psicologicamente mais fácil.

Os oponentes sintéticos

Cada bot tem um estilo diferente. O winrate contra eles diz coisas diferentes sobre o seu bot.

random

Aleatório puro — escolhe fold/call/raise uniformemente com tamanhos arbitrários. Dá muito all-in. Qualquer bot coerente deve destruir (+100 bb/100 ou mais). Serve de sanity check: se você PERDE pra random, o engine está quebrado. Não tem valor preditivo de qualquer coisa.

tight_passive

"Fish tradicional": joga poucas mãos, raramente aposta grande, dá call demais. É o perfil mais próximo de um jogador recreacional cauteloso. Winrate aqui é o mais realista — se bate tight_passive em +10 a +30 bb/100, está no tier "Bom"/"Muito bom" contra humanos recreacionais reais.

lag

"Loose-Aggressive Agressivo" — joga muitas mãos, aposta/raise com frequência, mistura bluffs. Mais perigoso que random mas ainda burro tático. Um bot com equity boa e sem medo de call-down deve ganhar bem. Se perde pra LAG, está tilt-foldando demais.

nit

Extremamente tight: só joga monsters (AA, KK, AK). Fácil de dar fold preflop, mas difícil vencer quando ele apostar — tem hand forte. Representa o "fish tight rock" de live. Se bate nit mas perde pra LAG, falta agressão.

mirror

HeuristicEngine contra si mesmo (com seeds diferentes). Deveria dar ~0 bb/100. Bug crítico antigo (villain decidia com cards do hero via state.hero()) levou a +619 — corrigido em commit `a8acb91`. Mirror 30k mãos (run #35, 2026-04-19): -15.92 bb/100 CI [-45.31, +13.03], stdev 2673. CI inclui 0 → within noise. Stdev enorme porque mirror é full-equity jogo zero-sum com decisões quase idênticas; um pequeno bias de posição amplifica.

reg ⭐ (mais importante)

Regular tight-aggressive realista, modelado em populações reais de NL10-25 online: VPIP 22%, PFR 17%, 3bet 6%, cbet 60% em boards dry / 40% em wet. Abre ranges position-based, fold generoso pós-flop sem top pair, 3bets só AA-TT/AKs/AKo/AQs, sem bluffs semi-aleatórios. É o oponente mais próximo de um humano real que temos. Winrate aqui é o PROXY MAIS HONESTO de como bot jogaria em cash/MTT real. Baseline HeuristicEngine HU era -17.6 bb/100. Com v7 champion vs reg_mix (30k tourneys MTT 9-seat, run #32): ROI +30.96%, CI ±4%, ITM 31%.

MAS — v7 vs PURE reg 9-seat 30k (2026-04-19): ROI -45.78%, ITM 13.5%. Quando a mesa é 8 regs sérios (sem fish no mix), v7 é explorado de volta. Isso revela a especialização do v7: crushr de mesas mistas (reg+fish), não kill de mesas cheias só de regs. $109 MTT do PokerStars tem distribuição mista → tier pro. High-stakes $500+ tem mais pure-reg → v7 precisa de MCCFR + opponent modeling ativo.

mixed (6-max, legado)

Mesa de 6 com perfis aleatórios (random+tight_passive+LAG+NIT). Cenário caótico, incluindo RandomBot e LAG (irreais humanamente). Use tight_nit_mix ou reg_mix para cenários mais realistas.

tight_nit_mix (6-max MTT)

Metade villains = tight_passive (fish), metade = nit (rock). Composição típica de torneio low-stake: alguns passivos, alguns ultra-tight. Bot deve ganhar bem (+100 a +250 bb/100) contra essa mesa — é mesa "de lua", ruim.

reg_mix (6-max realista) ⭐

Metade RegBot + metade NitBot. Simula mesa de NL10-25 típica online: alguns regs decentes + alguns rocks esperando monsters. Este é o teste mais honesto pra saber se bot sobreviveria em cash game real. Se é positivo aqui, é provável sobreviver a low-stakes humanos.

Entendendo stdev (desvio padrão)

A coluna σ (stdev) no histórico mostra quão volátil foi cada mão individual no bench. Computamos: stdev(lucro_por_mão) × 100.

σ baixo (< 300)

Maioria das mãos termina cedo (fold preflop, pots pequenos). Indica jogo defensivo/conservador. Ex: vs tight_passive (σ 148) — muitos folds, poucos pots grandes.

σ alto (1500+)

Muitos all-ins, pots grandes, swings violentos. Ex: vs random (σ 1736) — RandomBot adora all-in e hero às vezes leva stack, às vezes é eliminado por suckout.

Por que isso importa: com σ alto, o CI 95% fica LARGO mesmo com muitas mãos. Pra provar ser lucrativo vs um oponente de σ 3000, precisa de muito mais mãos que vs σ 150. Poker real contra regs tem σ ~80-100 bb/100 — nada parecido com a variância contra LAG/random.

Slumbot — integração ativa

Para comparar o bot com jogo de nível profissional, o padrão acadêmico é rodar vs Slumbot (CFR solver da Carnegie Mellon, campeão ACPC). Slumbot é público via API HTTPS em https://slumbot.com/api.

✅ Status: integração Slumbot está completa e funcional. O SlumbotAdapter traduz o protocolo Slumbot ↔ GameState, e o comando bench slumbot roda o loop real de mãos usando HeuristicEngine. Cada mão termina em ~0.5s (MC + 1 HTTP roundtrip por ação). Resultados são persistidos no histórico abaixo como opponent=slumbot.

Tempos reais medidos: 100 mãos ≈ 1-2 min, 1.000 mãos ≈ 10-15 min, 10.000 mãos ≈ 2-3 horas. Much faster do que a estimativa original porque Slumbot responde rápido e phevaluator acelerou o MC.

Resultado MEDIDO FINAL (2026-04-19, 30k mãos):
• v6 30k (run #34): -37.02 bb/100 CI [-54, -19]
v7 30k (run #36): -23.79 bb/100 CI [-41.75, -5.64] — v7 MELHOROU +13 bb/100 vs v6 (curriculum MTT NÃO degradou HU).

Tier: reg amador forte → reg sério. O -4 inicial do 10k (run #24) era ruído do lado otimista do CI largo. Humanos pros solver-users ficam em -3 a -10 vs Slumbot — v7 ainda tem gap de ~14 bb/100 que MCCFR tabular (plano B) fecharia.

# Rodar bench vs Slumbot com checkpoint v7 champion:
uv run python slumbot_30k.py  # usa q_mtt_10seat_v7.json

# OU bench vs Slumbot via CLI (usa HeuristicEngine):
uv run bench slumbot --hands 10000 --mc-iters 500 \
  --submit-to https://poker.elevanto.io --token <TOKEN>

Rodar um match local

Do Windows do dev (o VPS tem 1 CPU, não é bom pra rodar bench):

# No Windows do dev. Substitua <TOKEN> pelo valor de POKER_BENCH_TOKEN.

# === HEURISTIC bench (baseline, uses HeuristicEngine) ===
# Sanity — deve dar ~0
uv run bench run --vs mirror --hands 10000 --mc-iters 200 --seed 7

# vs bots sintéticos
uv run bench run --vs reg --hands 10000 --mc-iters 200 --seed 101
uv run bench run --vs reg_mix --hands 10000 --seats 6 --mc-iters 200 --seed 157

# vs Slumbot (CFR state-of-the-art, HU only)
uv run bench slumbot --hands 10000 --mc-iters 500 \
  --submit-to https://poker.elevanto.io --token <TOKEN>

# === LEARNED bench (uses LearnedEngine v7 champion) ===
# MTT inference 9-seat (30k = CI ±4%)
uv run learn play-mtt --vs reg_mix --tourneys 30000 --seats 9 \
  --checkpoint data/checkpoints/q_mtt_10seat_v7.json
uv run learn play-mtt --vs all_mix --tourneys 30000 --seats 9 \
  --checkpoint data/checkpoints/q_mtt_10seat_v7.json

# === TRAINING (parallel, 8 workers, ~8x speedup) ===
# Self-play iteration (snapshot villain = frozen current checkpoint):
cp data/checkpoints/q_mtt_10seat_v7.json data/checkpoints/q_learned_villain.json
cp data/checkpoints/q_mtt_10seat_v7.json data/checkpoints/q_mtt_10seat_v8.json
uv run learn train-mtt --vs learned --tourneys 30000 --seats 9 \
  --checkpoint data/checkpoints/q_mtt_10seat_v8.json \
  --workers 8 --chunk 100

# Hybrid top-up (after self-play):
uv run learn train-mtt --vs all_mix --tourneys 15000 --seats 9 \
  --checkpoint data/checkpoints/q_mtt_10seat_v8.json \
  --workers 8 --chunk 100

Tempos reais medidos (2026-04-19, i7 13ª, parallel com 8 workers):
• 10k mãos HU (random/lag/mirror), mc_iters=200: ~90-120s
• 30k tourneys 9-seat inference (play-mtt): ~30 min (serial; MC domina)
• 30k tourneys self-play training: ~12 min (parallel 8 workers)
• 15k tourneys vs all_mix training: ~1-2 min (parallel)
• 10k mãos vs Slumbot HTTP, mc_iters=200: ~2-3h (rate-limited pela API)

Parallel trainer: flag --workers 8 --chunk 100 em learn train-mtt. ProcessPoolExecutor bypassa GIL, ~8× speedup linear em CPUs modernas. Workers veem snapshot estático da Q-table; main aplica updates em batch.

uv no Windows do dev: /c/Users/winde/.voicemode/venv/Scripts/uv.exe

Histórico (0)

Carregando...