Back to Selecting the Right Distribution
Chapter 10

Hurdle Models

Separating participation from performance

Hurdle Models for "Any vs. None"

While ZIP models two sources of zeros, Hurdle models take a different approach: they treat zero as its own distinct outcome, then model positive results separately using a zero-truncated distribution.

The Hurdle Concept

Think of a Hurdle model as answering two sequential questions:

  1. Did the player "clear the hurdle"? (Any positive outcome at all?)
  2. If yes, how much did they produce? (What's the size of the positive outcome?)

Key Insight

Hurdle models are ideal when zero is qualitatively different from positive outcomes, and once the player is "involved," positive counts follow a separate pattern.

ZIP vs. Hurdle: The Key Difference

AspectZIPHurdle
Zero sourceTwo sources (structural + count process)Single source (didn't clear hurdle)
Zero from count process?Yes, can get zero even in active stateNo, once active you're guaranteed positive
Best for"No opportunity" scenarios"Any vs. none" decisions

In ZIP: A player can enter the "count state" and still produce zero (because Poisson can generate 0).

In Hurdle: Once you clear the hurdle, zero is no longer possible—you're drawing from a zero-truncated distribution.

The Hurdle Model Structure

Parameters:

  • π: Probability of zero (did not clear the hurdle)
  • 1 - π: Probability of clearing the hurdle
  • λ: Parameter for the zero-truncated Poisson (positive outcomes)

Hurdle Probabilities:

Hurdle: Probability of Zero

P(Y = 0) = π
Excel: =C1

For positive integers k ≥ 1:

Hurdle: Probability of k (for k ≥ 1)

P(Y = k) = (1 - π) × [λ^k × e^(-λ)] / [k! × (1 - e^(-λ))]
Excel: =(1-C1)*POISSON.DIST(A1,D1,FALSE)/(1-EXP(-D1))

The denominator (1 - e^(-λ)) normalizes the Poisson distribution by removing the probability of zero, ensuring the positive outcomes sum to 1.

Case Study: Stafford Rushing Yards (Hurdle Approach)

Let's apply the Hurdle model to Stafford's rushing yards:

Given:

  • Observed hurdle rate: π = P(Y ≤ 0) ≈ 0.647 (65% of games non-positive)

Calculation:

For this specific bet (Over 0.5), the hurdle model simplifies dramatically:

P(Y = 0) = π = 0.647
P(Y ≥ 1) = 1 - π = 0.353 (35.3%)

Important insight: For a 0.5 threshold, the exact positive-count distribution barely matters for the win probability. All that matters is whether you clear into Y ≥ 1 at all.

Expected Value:

EV = P(Over) × profit - P(Under) × stake
EV = 0.353 × 134 - 0.647 × 100
EV = 47.30 - 64.70
EV = -$17.40

Tip

For 0.5 lines, Hurdle models highlight that the bet is mostly about "probability of any positive outcome," not the size of the positive outcome. This simplifies analysis considerably.

ZIP vs. Hurdle: Nearly Identical for 0.5 Lines

Notice how close the results are:

ModelP(Y ≥ 1)EV on Over
ZIP34.7%-$18.80
Hurdle35.3%-$17.40

For props with 0.5 thresholds, ZIP and Hurdle often converge because:

  • Both anchor heavily on the structural zero probability (π)
  • The difference in how they handle "count-state zeros" has minimal impact when the question is simply "any vs. none"

Key Insight

For a 0.5 threshold, hurdle models highlight that the bet is mostly about "probability of any positive outcome," not the size of the positive outcome.

When to Use Hurdle (Instead of ZIP)

Use Hurdle when:

  1. Zero is qualitatively different from positive outcomes
  2. Once "involved," the player will almost certainly produce something positive
  3. The key question is "any vs. none" rather than "how much"

Best Applications for Hurdle

SportProp TypeWhy Hurdle Works
NHLGoalsZero very common, but once scoring they're on the ice
NHLAssistsSimilar logic—either involved in scoring or not
MLBRBIsZero common, but player had plate appearances
MLBStolen basesMany games with zero, but player was on base
NBABench player pointsEither gets garbage time or doesn't
NBABlocks (guards)Zero common, but they're playing full minutes

Tip

In the Stafford example, Hurdle corresponds to: "First decide if he clears into Y ≥ 1. If yes, model how big it gets."

Choosing Between ZIP and Hurdle

Here's a practical decision guide:

Choose ZIP When:

  • You can identify distinct "no opportunity" games
  • The structural zero rate is independent of the player's skill/effort
  • Examples: Backup RB reception props (blocker-only games), pocket QB rushing (game plan dependent)

Choose Hurdle When:

  • Zero is simply "the player didn't produce" without a clear opportunity distinction
  • The question is fundamentally "did they do it or not?"
  • Examples: Goals, RBIs, assists—player is active but outcome is binary

The Modeling Warning

When adjusting projections, be clear about where the change is coming from:

Scenario: Your mean projection rises from 1.0 to 1.5

Two possible stories:

  1. Opportunity increases (lower π): The player will be involved more often

    • π drops from 0.60 to 0.40
    • λ stays roughly the same
    • P(Over 0.5) increases significantly
  2. Production increases (higher λ): When involved, the player produces more

    • π stays at 0.60
    • λ increases
    • P(Over 0.5) barely changes

Warning

If you keep π fixed while raising the mean, you're implicitly asserting: "The chance of a positive outcome stays the same, but the average positive-game outcome increases." That's a valid scenario, but it should be stated explicitly.


📝 Exercise

Instructions

Exercise: ZIP vs. Hurdle Decision Making

For each scenario, determine whether ZIP or Hurdle is more appropriate, and explain why.

An NHL forward's goals prop. He plays full minutes but goals are rare (0 in 70% of games). When he does score, it's usually 1 goal.

A backup running back's reception prop. He's listed as the RB2 and splits time with the starter. Some games he runs 15 routes; others he's used only as a blocker.

An MLB batter's RBI prop. He bats 6th in the lineup and gets 3-4 at-bats every game, but RBIs depend on runners being on base.

Your mean projection for a player rises from 0.8 to 1.2 yards. You believe this is because the team's new offensive coordinator calls more designed runs for this QB. Which parameter should change?