{
  "schemaVersion": 1,
  "modelVersion": "1.0.0",
  "published": "2026-09-04",
  "generatedBy": "scripts/generate-river-block-bet-data.mjs",
  "question": "For a constructed heads-up river node, how does the complete EV of a 25% pot lead compare with checking when every response branch is counted?",
  "units": "Pot units. The pot is normalized to 100 before either player invests new river chips.",
  "referenceNode": {
    "pot": 100,
    "leadSize": 25,
    "raiseTo": 100,
    "opponentBetSizeAfterCheck": 75,
    "leadAsPercentOfPot": 25,
    "raiseToAsPercentOfStartingPot": 100,
    "finalPotAfterRaiseCall": 300
  },
  "formulas": {
    "check": "EV(check) = c * e_checkback * P + (1 - c) * max(0, e_vs_bet * (P + 2x) - x)",
    "lead": "EV(lead) = f * P + k * (e_vs_call * (P + 2b) - b) + r * max(-b, e_vs_raise * (P + 2y) - y)",
    "responseConstraint": "f + k + r = 1",
    "symbols": {
      "P": "Pot before the river decision.",
      "c": "Opponent check-back frequency after hero checks.",
      "x": "Opponent bet size after hero checks.",
      "b": "Hero lead size.",
      "y": "Opponent total raise-to amount after hero leads; it includes the amount called from b.",
      "f": "Opponent fold frequency versus the lead.",
      "k": "Opponent call frequency versus the lead.",
      "r": "Opponent raise frequency versus the lead.",
      "e_checkback": "Hero showdown equity when the river checks through.",
      "e_vs_bet": "Hero equity conditional on facing the modeled bet after checking.",
      "e_vs_call": "Hero equity conditional on the lead being called.",
      "e_vs_raise": "Hero equity conditional on facing the modeled raise."
    }
  },
  "assumptions": [
    "This is a constructed sensitivity model, not solver output, a population estimate, or a universal strategy recommendation.",
    "The hand is heads-up on the river, so there are no future streets and no future positional decisions.",
    "Every EV is measured from the decision point before hero invests new river chips; folding after leading therefore loses b.",
    "The starting pot excludes both players’ modeled river wagers. A called raise-to y produces a final pot of P + 2y.",
    "Fold, call, and raise frequencies are conditional responses to the lead and must sum to one.",
    "Equities are conditional on their named branches. Ties, if any, are already represented as half-pot equity.",
    "After checking, hero chooses the better of folding and calling versus one modeled bet size x; check-raising is outside this model.",
    "After leading and facing one modeled raise-to size y, hero chooses the better of folding and calling; re-raising is outside this model.",
    "Rake, jackpot drops, side pots, and card-removal inference between response branches are excluded."
  ],
  "thresholds": {
    "zeroEquityLeadRequiredFoldFrequency": {
      "value": 0.2,
      "percent": 20,
      "equation": "b / (P + b) = 25 / 125 = 0.20",
      "meaning": "Minimum folds for a zero-equity 25-unit lead to break even when every non-fold branch loses the lead."
    },
    "zeroEquityBluffRaiseRequiredFoldFrequency": {
      "value": 0.444444,
      "percent": 44.444444,
      "equation": "y / (P + b + y) = 100 / 225 = 0.444444...",
      "meaning": "Minimum hero folds for an opponent’s zero-equity raise-to-100 bluff to break even after the 25-unit lead."
    },
    "equityRequiredToCallRaiseInsteadOfFold": {
      "value": 0.25,
      "percent": 25,
      "equation": "(y - b) / (P + 2y) = 75 / 300 = 0.25",
      "meaning": "Hero equity needed to call 75 more rather than surrender the 25-unit lead, before rake."
    }
  },
  "baseline": {
    "label": "Illustrative branch-complete comparison",
    "inputs": {
      "check": {
        "pot": 100,
        "checkBackFrequency": 0.5,
        "equityWhenCheckedBack": 0.65,
        "opponentBetSize": 75,
        "equityFacingBet": 0.32
      },
      "lead": {
        "pot": 100,
        "leadSize": 25,
        "raiseTo": 100,
        "foldFrequency": 0.2,
        "callFrequency": 0.7,
        "raiseFrequency": 0.1,
        "equityWhenCalled": 0.55,
        "equityFacingRaise": 0.1
      }
    },
    "result": {
      "check": {
        "ev": 35,
        "checkBackBranchEv": 65,
        "callFacingBetEv": 5,
        "foldFacingBetEv": 0,
        "bestFacingBetEv": 5,
        "responseFacingBet": "call",
        "weightedCheckBackContribution": 32.5,
        "weightedBetContribution": 2.5
      },
      "lead": {
        "ev": 57.75,
        "foldBranchEv": 100,
        "callBranchEv": 57.5,
        "foldFacingRaiseEv": -25,
        "callFacingRaiseEv": -70,
        "bestFacingRaiseEv": -25,
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 40.25,
        "weightedRaiseContribution": -2.5
      },
      "deltaLeadMinusCheck": 22.75,
      "preferredAction": "lead"
    }
  },
  "sensitivity": {
    "variedInputs": "Hero equity against the calling range and opponent raise frequency. Fold frequency stays at 20%; call frequency is 0.80 - raise frequency.",
    "heldConstant": {
      "checkInputs": {
        "pot": 100,
        "checkBackFrequency": 0.5,
        "equityWhenCheckedBack": 0.65,
        "opponentBetSize": 75,
        "equityFacingBet": 0.32
      },
      "leadInputsExceptResponseFrequencies": {
        "pot": 100,
        "leadSize": 25,
        "raiseTo": 100,
        "equityFacingRaise": 0.1,
        "foldFrequency": 0.2
      }
    },
    "axes": {
      "equityWhenCalled": [
        0.25,
        0.35,
        0.45,
        0.55
      ],
      "raiseFrequencies": [
        0.05,
        0.15,
        0.25,
        0.35
      ]
    },
    "rowCount": 16,
    "outcomeCounts": {
      "lead": 8,
      "check": 8,
      "tie": 0
    },
    "rows": [
      {
        "id": "call-equity-25-raise-5",
        "foldFrequency": 0.2,
        "callFrequency": 0.75,
        "raiseFrequency": 0.05,
        "equityWhenCalled": 0.25,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 28.125,
        "deltaLeadMinusCheck": -6.875,
        "preferredAction": "check",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 9.375,
        "weightedRaiseContribution": -1.25
      },
      {
        "id": "call-equity-25-raise-15",
        "foldFrequency": 0.2,
        "callFrequency": 0.65,
        "raiseFrequency": 0.15,
        "equityWhenCalled": 0.25,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 24.375,
        "deltaLeadMinusCheck": -10.625,
        "preferredAction": "check",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 8.125,
        "weightedRaiseContribution": -3.75
      },
      {
        "id": "call-equity-25-raise-25",
        "foldFrequency": 0.2,
        "callFrequency": 0.55,
        "raiseFrequency": 0.25,
        "equityWhenCalled": 0.25,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 20.625,
        "deltaLeadMinusCheck": -14.375,
        "preferredAction": "check",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 6.875,
        "weightedRaiseContribution": -6.25
      },
      {
        "id": "call-equity-25-raise-35",
        "foldFrequency": 0.2,
        "callFrequency": 0.45,
        "raiseFrequency": 0.35,
        "equityWhenCalled": 0.25,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 16.875,
        "deltaLeadMinusCheck": -18.125,
        "preferredAction": "check",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 5.625,
        "weightedRaiseContribution": -8.75
      },
      {
        "id": "call-equity-35-raise-5",
        "foldFrequency": 0.2,
        "callFrequency": 0.75,
        "raiseFrequency": 0.05,
        "equityWhenCalled": 0.35,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 39.375,
        "deltaLeadMinusCheck": 4.375,
        "preferredAction": "lead",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 20.625,
        "weightedRaiseContribution": -1.25
      },
      {
        "id": "call-equity-35-raise-15",
        "foldFrequency": 0.2,
        "callFrequency": 0.65,
        "raiseFrequency": 0.15,
        "equityWhenCalled": 0.35,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 34.125,
        "deltaLeadMinusCheck": -0.875,
        "preferredAction": "check",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 17.875,
        "weightedRaiseContribution": -3.75
      },
      {
        "id": "call-equity-35-raise-25",
        "foldFrequency": 0.2,
        "callFrequency": 0.55,
        "raiseFrequency": 0.25,
        "equityWhenCalled": 0.35,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 28.875,
        "deltaLeadMinusCheck": -6.125,
        "preferredAction": "check",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 15.125,
        "weightedRaiseContribution": -6.25
      },
      {
        "id": "call-equity-35-raise-35",
        "foldFrequency": 0.2,
        "callFrequency": 0.45,
        "raiseFrequency": 0.35,
        "equityWhenCalled": 0.35,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 23.625,
        "deltaLeadMinusCheck": -11.375,
        "preferredAction": "check",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 12.375,
        "weightedRaiseContribution": -8.75
      },
      {
        "id": "call-equity-45-raise-5",
        "foldFrequency": 0.2,
        "callFrequency": 0.75,
        "raiseFrequency": 0.05,
        "equityWhenCalled": 0.45,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 50.625,
        "deltaLeadMinusCheck": 15.625,
        "preferredAction": "lead",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 31.875,
        "weightedRaiseContribution": -1.25
      },
      {
        "id": "call-equity-45-raise-15",
        "foldFrequency": 0.2,
        "callFrequency": 0.65,
        "raiseFrequency": 0.15,
        "equityWhenCalled": 0.45,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 43.875,
        "deltaLeadMinusCheck": 8.875,
        "preferredAction": "lead",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 27.625,
        "weightedRaiseContribution": -3.75
      },
      {
        "id": "call-equity-45-raise-25",
        "foldFrequency": 0.2,
        "callFrequency": 0.55,
        "raiseFrequency": 0.25,
        "equityWhenCalled": 0.45,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 37.125,
        "deltaLeadMinusCheck": 2.125,
        "preferredAction": "lead",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 23.375,
        "weightedRaiseContribution": -6.25
      },
      {
        "id": "call-equity-45-raise-35",
        "foldFrequency": 0.2,
        "callFrequency": 0.45,
        "raiseFrequency": 0.35,
        "equityWhenCalled": 0.45,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 30.375,
        "deltaLeadMinusCheck": -4.625,
        "preferredAction": "check",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 19.125,
        "weightedRaiseContribution": -8.75
      },
      {
        "id": "call-equity-55-raise-5",
        "foldFrequency": 0.2,
        "callFrequency": 0.75,
        "raiseFrequency": 0.05,
        "equityWhenCalled": 0.55,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 61.875,
        "deltaLeadMinusCheck": 26.875,
        "preferredAction": "lead",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 43.125,
        "weightedRaiseContribution": -1.25
      },
      {
        "id": "call-equity-55-raise-15",
        "foldFrequency": 0.2,
        "callFrequency": 0.65,
        "raiseFrequency": 0.15,
        "equityWhenCalled": 0.55,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 53.625,
        "deltaLeadMinusCheck": 18.625,
        "preferredAction": "lead",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 37.375,
        "weightedRaiseContribution": -3.75
      },
      {
        "id": "call-equity-55-raise-25",
        "foldFrequency": 0.2,
        "callFrequency": 0.55,
        "raiseFrequency": 0.25,
        "equityWhenCalled": 0.55,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 45.375,
        "deltaLeadMinusCheck": 10.375,
        "preferredAction": "lead",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 31.625,
        "weightedRaiseContribution": -6.25
      },
      {
        "id": "call-equity-55-raise-35",
        "foldFrequency": 0.2,
        "callFrequency": 0.45,
        "raiseFrequency": 0.35,
        "equityWhenCalled": 0.55,
        "equityFacingRaise": 0.1,
        "evCheck": 35,
        "evLead": 37.125,
        "deltaLeadMinusCheck": 2.125,
        "preferredAction": "lead",
        "responseFacingRaise": "fold",
        "weightedFoldContribution": 20,
        "weightedCallContribution": 25.875,
        "weightedRaiseContribution": -8.75
      }
    ]
  },
  "visualTextEquivalent": {
    "title": "Branch-complete EV tree for a 25% pot river lead versus checking",
    "baselineSummary": "In the illustrative baseline, checking returns 35 pot units. Leading 25 returns 57.75, so leading gains 22.75 pot units in the model.",
    "checkBranches": [
      "Opponent checks back 50%: branch EV is 65; weighted contribution is 32.5.",
      "Opponent bets 75 into 100 50%: calling with 32% equity has EV 5; weighted contribution is 2.5."
    ],
    "leadBranches": [
      "Opponent folds 20%: branch EV is 100; weighted contribution is 20.",
      "Opponent calls 70%: 55% equity in a 150-unit final pot gives branch EV 57.5; weighted contribution is 40.25.",
      "Opponent raises to 100 10%: calling with 10% equity has EV -70, while folding has EV -25; hero folds, for a weighted contribution of -2.5."
    ],
    "sensitivitySummary": "The grid contains 16 constructed call-equity/raise combinations: the lead has higher modeled EV in 8, checking in 8, and they tie in 0. These counts describe this input grid only."
  },
  "interpretationBoundary": "The arithmetic can show which assumptions make a lead outperform a check. It cannot establish real-player frequencies, assign a specific hand to a strategy, prove equilibrium play, or make the opponent’s raise option disappear."
}
