Hi everyone. On October 1, mikumiku37, a bot I've been working on, reached #1 on the [Gen 9 Champions] VGC 2026 Reg M-C ladder at 1857 Elo, 81.2% GXE and 1775 ± 25 Glicko.
The ladder at 23:47 PDT on October 1.
The bot behind mikumiku37 is a small transformer (about 8.7M parameters) trained from scratch through self-play reinforcement learning: PPO against a league of its own past versions, with no human replays, and only terminal rewards. Part of the design is adapted from the Jaxcalibur technical writeup, with additional modeling for VGC and doubles layered on top. It trained on roughly 1,260 public tournament teams from Reg M-B and M-C (some spreads were guessed), inside a custom battle simulator that runs about 650x faster than Showdown. The bot can run with AlphaZero-style search, but the policy itself was trained without it.
The network encodes nothing beyond the game state. It sees the battle from its own side, plus static dex data (types, base stats, move data), with no damage calculator, Smogon usage stats, or speed resolver. The search is AlphaZero-style in that the policy network proposes moves and the value network evaluates positions, so no game is ever played out to the end. It does differ from Jaxcalibur's search in a few ways. Jaxcalibur runs a pUCT tree search four plies deep (about two turns), with 20,480 rollouts across 32 sampled worlds. Ours looks only one turn ahead, but treats that turn as the simultaneous-move game it actually is: in each of 16 sampled worlds, it builds the full payoff table of our top 8 joint actions against the opponent's top 8 replies and solves it for a mixed strategy, rather than growing a tree. Doubles makes this necessary, since two active slots and their targets produce far more joint actions than singles does.
Truth be told, none of this was the original plan. mikumiku37 was meant to be an A/B test: the same network as an earlier account, with search added on top, to see whether search helped. On its own, the network had peaked at 1747 over 100 games. With search, mikumiku37 went 248–110 (69.3%) and reached #1 in its 358th game, rotating among the ten teams that performed best during training. This surprised me, given that the model had trained for only 48.3 hours on a single consumer GPU (an RTX 5090); the checkpoint that reached #1 had played around 330 million training games. The network doesn't appear to be anywhere near saturating, and it's still training, so I expect near-future versions to be noticeably stronger.
For the time being, I am not planning on open sourcing the battle engine or the weights, given the potential impact it could have on laddering, and even official Pokemon Champions tournaments. However, I am thinking about other ways to make the model available as an educational or practice resource after it finishes training. There's a variety of possibilities with search visualization, interpreting how it scores positions, and so on.
For now, mikumiku37 is accepting challenges in Pokemon Showdown. It will play a random team that saw moderate success during training. A technical writeup is also coming up soon.
Happy to answer questions, and curious what people who played it thought.
The ladder at 23:47 PDT on October 1.
The bot behind mikumiku37 is a small transformer (about 8.7M parameters) trained from scratch through self-play reinforcement learning: PPO against a league of its own past versions, with no human replays, and only terminal rewards. Part of the design is adapted from the Jaxcalibur technical writeup, with additional modeling for VGC and doubles layered on top. It trained on roughly 1,260 public tournament teams from Reg M-B and M-C (some spreads were guessed), inside a custom battle simulator that runs about 650x faster than Showdown. The bot can run with AlphaZero-style search, but the policy itself was trained without it.
The network encodes nothing beyond the game state. It sees the battle from its own side, plus static dex data (types, base stats, move data), with no damage calculator, Smogon usage stats, or speed resolver. The search is AlphaZero-style in that the policy network proposes moves and the value network evaluates positions, so no game is ever played out to the end. It does differ from Jaxcalibur's search in a few ways. Jaxcalibur runs a pUCT tree search four plies deep (about two turns), with 20,480 rollouts across 32 sampled worlds. Ours looks only one turn ahead, but treats that turn as the simultaneous-move game it actually is: in each of 16 sampled worlds, it builds the full payoff table of our top 8 joint actions against the opponent's top 8 replies and solves it for a mixed strategy, rather than growing a tree. Doubles makes this necessary, since two active slots and their targets produce far more joint actions than singles does.
Truth be told, none of this was the original plan. mikumiku37 was meant to be an A/B test: the same network as an earlier account, with search added on top, to see whether search helped. On its own, the network had peaked at 1747 over 100 games. With search, mikumiku37 went 248–110 (69.3%) and reached #1 in its 358th game, rotating among the ten teams that performed best during training. This surprised me, given that the model had trained for only 48.3 hours on a single consumer GPU (an RTX 5090); the checkpoint that reached #1 had played around 330 million training games. The network doesn't appear to be anywhere near saturating, and it's still training, so I expect near-future versions to be noticeably stronger.
For the time being, I am not planning on open sourcing the battle engine or the weights, given the potential impact it could have on laddering, and even official Pokemon Champions tournaments. However, I am thinking about other ways to make the model available as an educational or practice resource after it finishes training. There's a variety of possibilities with search visualization, interpreting how it scores positions, and so on.
For now, mikumiku37 is accepting challenges in Pokemon Showdown. It will play a random team that saw moderate success during training. A technical writeup is also coming up soon.
Happy to answer questions, and curious what people who played it thought.
Last edited:








