Quote:
Originally Posted by Steve
Are you getting that number from 1326 starting hands x approx 20,000 flops x 47 turn cards x 46 river cards (or something like that)?
Yes, and to geek out a bit here, there's only 1176 hands left in a deck after a flop has been dealt. 22100 flops * 1176 hands * 47 turns * 46 rivers = 56,189,515,200. Alternately, there's only 19600 flops possible after you've been dealt two cards: 1326 hands * 19600 flops * 47 turns * 46 rivers is also 56,189,515,200.
Anyway, using that dataset I statistically identify the likelihood of each hand having value by the river, aggregate those results, and then pick the best draws from those aggregates, which is much faster than grinding through the whole dataset every time RangeVisor builds a model.
Quote:
Originally Posted by Steve
What do you do about hands that have a mixture of both drawing potential and value on the flop?
Great question, thanks! RangeVisor assigns value hands first and then picks its draws from whatever is left of your preflop range (or your previous street's continuation range). So if it's a monochrome flop and you're holding AA with the A of flush, RangeVisor still assigns that hand to the Value Range and tries to build a Drawing Range of the requested size.
Those draws will tend to include some second- and/or middle-pair hands, especially if they have straight- or flush-draw potential. So if you tell it you want to build a Flop continuation range with 20% value hands and 40% draws, the remaining 40% of your preflop range gets assigned to a checking range (presumably the check-folding range).
Building a model kicks off these steps:
- Discard the dead hands from your preflop range that are blocked by the board
- Rank value hands according to their current value. The top 20% (from the 20% Value Continuation Percent we requested) are assigned to the value range, the rest are considered to be drawing candidates.
- Draw candidates then get scored for their potential value by the river. This is where the aggregates I mentioned above come in and RangeVisor uses that data to pick the best draws. It also factors blocker strength in here so draws that also block value hands get ranked higher than the same draw without the blocker potential. Based off that drawing index and the 40% Draw Continuation Percent we asked for, the best 40% get assigned to the drawing range.
- Those Value and Drawing ranges get combined into the combined Continuation Range.
- The remainder gets allocated to the checking range
All of this repeats from street to street where the flop continuation range becomes the previous range for the turn, etc. The only difference is that on the river, we're assigning bluffs (not draws); RangeVisor considers the hands with the least actual value and the best blocker strength to be the best bluffs. I'd argue in this case the checking range ceases to be a check-folding range and some of the hands in RangeVisor's river checking ranges should be treated as check-calls instead.
See below for an illustration of the process: