Skip to content

Add 3-bet/4-bet range models - #9

Merged
testtest126 merged 4 commits into
mainfrom
feature/three-bet-four-bet-ranges
Jul 21, 2026
Merged

Add 3-bet/4-bet range models#9
testtest126 merged 4 commits into
mainfrom
feature/three-bet-four-bet-ranges

Conversation

@testtest126

Copy link
Copy Markdown
Owner

Summary

  • New ThreeBetRange/FourBetRange models: polarized value+bluff fold/call/3-bet(4-bet) decisions, reusing ChenScore, PushFoldRange's threshold pipeline, and OpeningRange's numbers rather than inventing new primitives.
  • Sourced anchors: BB 3-bet vs. BTN ≈13% (100bb), CO-vs-BTN 4-bet continue 67% (50% call / 17% four-bet, ~100bb). Everything else scales off these via the same ratio technique CallingRange already uses.
  • Fixed a real bug caught by premiumHandAlways3BetsForValue: narrow spots (e.g. a deep non-blind defender vs. a tight UTG open) could have a total 3-bet/4-bet percentage smaller than the fixed bluff-combo carve-out, which incorrectly blocked any value action — even for AA. Fixed by gating bluff inclusion on the range actually having room for bluffs, matching this project's own cited guidance ("if your value range is tight, you don't need bluffs").
  • PreflopGrid.threeBetDecisions/fourBetDecisions follow the existing callingDecisions/openDefenseDecisions pattern.
  • PreflopRangeView gets two new modes (3-Bet, 4-Bet) with a third cell color for bluff combos and on-screen caveats about the polarized structure and stack-depth bluff cutoffs (20bb for 3-bet, 40bb for 4-bet). 4-Bet mode inverts the existing defender-vs-opener control shape since hero is the original opener there.
  • RANGES.md documents the sourced anchors, what's hand-tuned vs sourced, and a "Two opinions, on purpose" section reconciling ThreeBetRange's 13% with CallingRange.decideVsOpen's cruder ~21% at the identical BB-vs-BTN spot — disclosed, not silently overridden.

Test plan

  • swift test (PokerKit): 208/208 green, no lost tests.
  • App build succeeds on simulator (iPhone 17, iOS 27.0, Xcode 27 beta).
  • App UI test suite: 15/15 green (excludes BankrollTrackerUITests.testLogSessionUpdatesListAndSummary, confirmed pre-existing/flaky on a clean main checkout — unrelated to this branch, reproduced identically before and after stashing this branch's changes).
  • New PreflopRangeUITests coverage for both 3-Bet and 4-Bet modes.

🤖 Generated with Claude Code

Polarized value+bluff models for the 3-bet and 4-bet decision points,
alongside CallingRange's flatter existing opinion on the same spots (the
two deliberately disagree — see RANGES.md). Reuses ChenScore, PushFoldRange's
threshold pipeline, and OpeningRange's own numbers rather than inventing new
primitives.
Adds threeBetDecisions/fourBetDecisions grid enumerations following the
existing callingDecisions/openDefenseDecisions pattern.
New range-mode picker entries render ThreeBetRange/FourBetRange through
PreflopGrid, with a third cell color for bluff combos and on-screen caveats
about the polarized structure and stack-depth bluff cutoffs. 4-Bet mode
inverts the existing defender-vs-opener control shape (hero is the Position
opener, opponent is the DefendingPosition who 3-bet them).
Sourced anchors (BB 3-bet vs BTN 13%, CO-vs-BTN 4-bet 67%/17%), what's
hand-tuned vs sourced, and a "Two opinions, on purpose" note reconciling
ThreeBetRange's 13% with CallingRange.decideVsOpen's cruder ~21% at the same
spot.
@testtest126
testtest126 merged commit 64f2d9c into main Jul 21, 2026
2 checks passed
@testtest126
testtest126 deleted the feature/three-bet-four-bet-ranges branch July 21, 2026 18:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant