← PLO5 6-max — 100bb

PLO5 6-max — 100bb — technical details

6-max five-card PLO preflop solve at 100bb effective with a 1.2bb ante — frequencies and EVs for every hand class on every action.

Overview

Game
Pot-limit Omaha 5-card · 6-max
Stack depth
100bb effective
Hands
134,459 PLO5 hand classes (suit-isomorphic)
Solver
HydraSolver
Price
$100, one-time

Tree

Raise sizes
Pot-limit
Rake
5%, 1bb cap, 1.2bb ante
Streets
Preflop only

Solver run

Solver game
Omaha 5 Card Hi
Players
6
Stacks
99.8bb
Rake
5% up to 1bb · postflop pots only
Streets saved
1 street
Iterations
52,948,218
Solve time
71h 40m
Save format
2
Saved solve
plo5-6max-100bb-r5c1.hds · 3.9 GB · saved 2026-10-25 22:56

File

Format
Zip of per-node gzipped JSON
Download
PLO5-6max-100bb-ante1.2-rake5-1bbcap-json.zip · 3.7 GB
Opens with
Any JSON tooling — gunzip a node file and parse it

What's inside

README.txt
How the pack is laid out and read
index.json
Every preflop decision node and its actions
nodes/<line>.json.gz
One file per decision node, named by its action line

How strategies are stored

  • Each node file holds every action available at that node.
  • Each action lists its hands as hand:freq:ev — the hand class, how often it takes the action, and its EV.
  • Hands are suit-isomorphic classes, so one entry stands for every suit permutation of it.

Using the data

  1. Unzip the download. Everything sits in one folder named after the pack.
  2. Open index.json to find a spot: each node lists its action line (history), the player to act (actor), the actions available and its file under nodes/.
  3. Gunzip that node file and parse the JSON. "#meta" holds the line, the actor and each action's share of the range (poolPct); every other key is one action.
  4. Split an action's value on commas, then each entry on colons: hand, frequency (0 to 1) and EV in big blinds. EV is empty for hands that never reach the node.
  5. One hand's frequencies across a node's actions sum to 1, so the node file alone gives the full strategy for every hand.

Python: read one strategy

import gzip, json
from pathlib import Path

pack = Path("PLO5-6max-100bb-ante1.2-rake5-1bbcap-json")

# Every decision node: who acts, the actions, and the node's file.
index = json.loads((pack / "index.json").read_text())
print(len(index["nodes"]), "nodes")

# One node: the first decision, LJ to act.
node = json.loads(gzip.decompress((pack / "nodes/root.json.gz").read_bytes()))
print(node["#meta"]["actor"], "to act")

for action, rng in node.items():
    if action == "#meta":
        continue
    for entry in rng.split(","):
        hand, freq, *ev = entry.split(":")
        freq = float(freq)
        ev = float(ev[0]) if ev and ev[0] else None  # bb; None if unreached
        # ... your analysis here
    print(action, "parsed")

Back to PLO5 6-max — 100bb →