Tennis Match Moneyline Model
Prices full-match ML with SGW/RGW, surface, conditions, and optional nudges. Best-of-3 or Best-of-5. WordPress-safe, scoped styles.
Match Inputs
Loads baseline SGW/RGW/volatility and sets the surface. You can edit after applying.
Core Performance (by surface)
Context & Nudges
Advanced nudges (optional)
Negative favors A (fresher A), positive favors B.
Scoped styles
Outputs
P(A wins match)
—
No-vig fair probability.
P(B wins match)
—
1 − P(A).
Fair Odds (A ML)
—
American odds from probability.
Fair Odds (B ML)
—
American odds from probability.
How this model prices ML
– Converts SGW and opponent RGW into hold probabilities, adjusted for surface, altitude/indoor, wind, injury, fatigue, second-serve edges, and a small conversion nudge.
– Simulates sets and full matches (Bo3 or Bo5) with volatility/correlation to capture momentum and shared conditions.
– Outputs fair match win probabilities and American odds. Enter book odds to see value edges.
– Simulates sets and full matches (Bo3 or Bo5) with volatility/correlation to capture momentum and shared conditions.
– Outputs fair match win probabilities and American odds. Enter book odds to see value edges.
Tennis Match Moneyline Model — User Guide
What this tool does
- Prices the full match moneyline (A vs B) for Best-of-3 or Best-of-5.
- Uses Service Games Won% (SGW) and Return Games Won% (RGW) as core inputs, adjusted for surface and conditions.
- Runs a Monte Carlo simulation of full matches to output:
- P(A wins match), P(B wins match)
- Fair American odds for both sides
- Optional “value” vs your sportsbook odds
Key inputs
- Preset: Loads ATP/WTA surface baselines for SGW/RGW and volatility (Hard, Clay, Grass, Indoor).
- Format: Best of 3 or Best of 5. Favorites widen in Bo5.
- Surface: Affects base hold rates and tiebreak tendency (faster → higher holds).
- Players A/B names: For labeling only.
- SGW%: Service Games Won% by surface (last 12–24 months preferred).
- RGW%: Return Games Won% by surface.
- Volatility proxy: Aces + double-faults per service game (higher tends to increase randomness).
- Conditions:
- Altitude/Indoor boost: Faster conditions slightly increase holds.
- Wind: Reduces holds; lowers tiebreak rates.
- Injury/fitness nudge: Small shift toward the fitter player.
- Advanced (optional):
- Second-serve edges: A’s 2nd-serve points won on serve vs B’s 2nd-serve return vs 2nd (and vice versa).
- Conversion nudge: Slight bias on big points toward returners (+) or servers (−).
- Fatigue/Travel: Negative favors A (fresher A), positive favors B (fresher B).
- Monte Carlo controls:
- Volatility: Match-to-match variability; higher for big servers or unstable form.
- Correlation: Shared swings (e.g., wind affects both); increases set-to-set co-movement.
- Samples: Number of simulations (higher = smoother results).
- Book Odds (optional): Enter American (e.g., -135, +120) or decimal (e.g., 1.74, 2.20) to see value edges.
How to use it (quick workflow)
- Choose a preset (ATP/WTA + surface).
- Confirm or enter SGW% and RGW% for both players (surface-specific if possible).
- Set format (Bo3/Bo5) and surface if different from the preset.
- Adjust conditions: Altitude/Indoor and Wind; add Injury if relevant.
- Optional: Add second-serve numbers, a conversion nudge, and fatigue if you have reliable info.
- Click Calculate to get:
- P(A wins), P(B wins)
- Fair American odds for A and B
- Enter book odds to see “value” badges showing your edge in probability points.
Interpreting outputs
- P(A wins match): No-vig probability that A wins, given inputs.
- Fair odds: Derived from those probabilities; compare to book odds.
- Value badges: Show the difference between your fair probability and the book’s implied (e.g., +3.1 pts ≈ 3.1% edge).
Best practices for inputs
- Use recent, surface-weighted SGW/RGW (12–24 months). If only overall is available, start from a preset and nudge ±1–2%.
- Keep Injury/Fatigue adjustments modest unless well-supported.
- Wind matters: moderate/strong wind can cut holds and narrow favorite edges.
- Bo5 inflates edges for favorites; if switching Bo3 → Bo5, re-check value.
Common scenarios and how to adjust
- Big server favorite on fast court:
- Altitude/Indoor: Slightly faster
- Wind: Calm
- Expect higher P(A wins), especially in Bo5; volatility can be set a bit higher.
- Elite returner vs shaky second serve:
- Use second-serve nudges to depress the opponent’s hold.
- Consider a small “returners favored” conversion nudge.
- Grind on slow clay with wind:
- Set Wind to Light/Moderate; no Altitude boost.
- Lower tiebreak propensity; favorites’ edge may shrink.
Troubleshooting
- Outputs look too favorite-heavy:
- Reduce Altitude/Indoor; add Wind.
- Check that SGW% isn’t pulled from a fast-surface sample for a clay match.
- Outputs look too returner-heavy:
- Ensure RGW% is realistic for the surface/time window.
- Set Conversion to Neutral if you’re unsure.
- Performance:
- Lower samples to 10–15k while tuning; raise to 30–80k to finalize.


