HydraSolver

← All proofs

Proof · Razz

Heads-up Razz from 5th street, solved exactly

Any solver can print a strategy. The real question is whether it’s right. In two-player poker there is a hard test: give the strategy to a perfect opponent who knows it, let them find the best counter-play over every card that can come, and count what they win. We ran that test on three 5th-street Razz spots. The most a perfect opponent can take: under 0.005% of the pot, less than a nickel in a $1,000 pot.

  1. Spot ASeat 13♣7♦2♥Seat 25♠4♦8♣0.0049%of the pot
  2. Spot BSeat 1A♦4♥6♣Seat 2K♥8♠2♦0.00035%of the pot
  3. Spot CSeat 17♠7♥3♣Seat 2A♣9♦5♥0.0019%of the pot

Exploitability after 1,000 iterations. Pot 2.2 big bets at 5th street, a bet and three raises a street, both seats holding any two down cards.

What “solved” means

A strategy pair is solved when neither player can win more by changing their play. How far a strategy is from that has a name: exploitability. Let an opponent see the strategy, play the best possible response to it, and count what they win; average that over both seats. Zero means nobody can beat it.

We compute that number exactly, not by sampling. The best response is worked out over every way the unseen cards can be dealt (both players’ down cards, each 6th-street up-card, each 7th-street card) and every betting line, with no hands lumped together. It’s the same yardstick researchers used when they declared heads-up limit hold’em “essentially solved” (Bowling et al., Science, 2015).

The result

Exploitability by iterations For each of the three 5th street Razz spots, the share of the pot a perfect counter-strategy wins as the solve runs, on log scales. 5% 1% 0.1% 0.01% 0.001% 25 50 100 200 400 1,000 iterations share of the pot a perfect opponent wins A B C
Exploitability falls steadily as the solve runs (both axes on log scales): ten times the iterations cuts it by 40 to 75 times. Each spot covers 152,110 decisions and 63.7 million hand-by-decision strategies.
SpotSeat 1 showsSeat 2 showsPotFirst to actExploitableIn big betsSeat 1’s value
A3♣7♦2♥5♠4♦8♣2.2Seat 10.0049%0.000108+0.2922
BA♦4♥6♣K♥8♠2♦2.2Seat 10.00035%0.000008+0.9901
C7♠7♥3♣A♣9♦5♥2.2Seat 20.0019%0.000041-0.5477

Checking the check

A number from a solver about its own strategy is only as good as the code that computed it. So we checked it four separate ways.

  • Matches

    A second program, written separately

    An independent checker in a different language reads only the saved strategy. It rebuilds Razz from the rules: the betting, who acts first, every deal of the unseen cards, the best five-card low. Then it computes its own best responses.

    SpotExploitable: checkersolverSeat 1’s value: checkersolver
    A0.0049%0.0049%+0.2922426+0.2922426
    B0.00035%0.00035%+0.9900739+0.9900739
    C0.0019%0.0019%-0.5477159-0.5477159

    The three 5th-street spots above. All 152,110 decisions of each matched the rules as the checker rebuilt them.

  • Matches

    Two solving paths, one answer

    The same 6th- and 7th-street spots, solved by two independently built solving paths in HydraSolver, land on the same game value.

    StreetSeat 1Seat 2Path 1Path 2
    6th3♣7♦2♥K♠5♠4♦8♣6♥-1.3220-1.3220
    6thA♣2♦9♥9♠3♠4♣Q♦J♠+0.8112+0.8112
    6thA♦4♥6♣8♦K♥8♠2♦3♠+0.7693+0.7693
    6th7♠7♥3♣J♦A♣9♦5♥4♣-1.8740-1.8740
    7th3♣7♦2♥K♠5♠4♦8♣6♥-1.6154-1.6154
    7thA♣3♦5♥7♠2♠4♣6♦K♥+0.5761+0.5761

    Seat 1’s value in big bets.

  • Matches

    A separate reference solver

    A reference solver written separately in Python valued a 6th-street spot in each of four stud games. HydraSolver agrees to within a ten-thousandth of a big bet.

    GameReferenceHydraSolver
    Seven Card Stud+1.2134+1.2134
    Razz-1.3220-1.3220
    Stud Hi-Lo-0.5710-0.5710
    High-Low Chicago+0.5403+0.5402

    Seat 1’s value in big bets.

  • Matches

    A spot with a textbook answer

    7th street. Seat 1 shows A♥2♥3♦4♣ and holds a wheel or jack-low air, half and half. Seat 2 shows 6♠7♦8♣9♥ and holds an eight-low. Pot 5, one bet, no raise. Theory: bluff a sixth of the air, call five times in six, worth exactly 5/12 of a bet to Seat 1.

    FigureTheoryHydraSolver
    Air that bluffs16.667%16.670%
    Eight-low calls83.333%83.336%
    Seat 1’s value0.4166670.416667

What’s exact, and what isn’t

Exact: 5th street to the showdown

Heads-up, three of Razz’s five betting rounds. Every hand, every card. The exploitability above is computed, not estimated. When a hand reaches 5th street, HydraSolver switches to this solve.

Estimated: 3rd and 4th street

The whole hand from 3rd street is solved by self-play over sampled deals, with similar hands grouped together. Its accuracy is measured statistically (on 3rd street it shows no loss it can detect after 160 million hands, to within about a third of a big bet per 100 hands). That’s an estimate, not a proof. Three-handed Razz isn’t covered here.

What HydraSolver gives you for Razz

  • Whole hands from 3rd street

    Heads-up or three-handed, with your own doors, ante, bring-in and limits. Walk the hand street by street, dealing each up-card yourself or at random.

  • Exact play from 5th street

    When a heads-up hand reaches 5th street, the rest of it is solved exactly for the line you are on, and keeps sharpening while you read it.

  • Every hand, three ways

    A down-card chart that reads ace low, hand classes in Razz terms (7-low, 8-low, paired), and hand by hand, each with its EV.

  • Your own spots

    Set up any heads-up 5th-, 6th- or 7th-street spot: the up-cards, the dead cards, the pot and each seat’s range. Its exploitability and both seats’ EVs show as it solves.

  • Saved, on your machine

    Hands and spots save and reopen like every other HydraSolver solve. It all runs on your own computer.

More proofs

Measured with the solver in HydraSolver 1.1.96 (October 13, 2026). Razz is in beta in that version. Exploitability is the average of what a best response wins against each seat’s strategy, as a share of the pot at the start of the spot.