Chapter 13 Quiz: Value Betting Theory and Practice
Section 1: Multiple Choice (10 questions, 3 points each)
Q1. In the Elo rating system, what does a rating difference of 400 points between two teams imply?
(a) The higher-rated team wins 75% of the time (b) The higher-rated team wins 90% of the time (c) The higher-rated team wins 80% of the time (d) The higher-rated team wins 95% of the time
Answer
**(b) The higher-rated team wins 90% of the time.** Using the Elo formula: $P = 1 / (1 + 10^{-400/400}) = 1 / (1 + 10^{-1}) = 1 / 1.1 = 0.909$, which rounds to approximately 90%.Q2. What is the primary advantage of the Bayesian log-odds combination method over simple linear averaging of model and market probabilities?
(a) It is computationally faster (b) It correctly handles probabilities near 0 and 1 and respects the multiplicative nature of odds (c) It always gives more weight to the model probability (d) It eliminates the need for vig removal
Answer
**(b) It correctly handles probabilities near 0 and 1 and respects the multiplicative nature of odds.** Linear averaging can produce nonsensical results for extreme probabilities. The log-odds (logit) space is the natural domain for combining probability estimates because it maps the bounded (0,1) interval to the unbounded real line, preventing boundary distortions.Q3. A bettor estimates a 48% win probability on a +130 moneyline (implied probability 43.48%). What is their percentage edge?
(a) 4.52% (b) 10.40% (c) 4.48% (d) 9.52%
Answer
**(b) 10.40%.** Edge = (your_prob / implied_prob) - 1 = (0.48 / 0.4348) - 1 = 1.1040 - 1 = 0.1040 = 10.40%.Q4. According to the ValueRating framework in Section 13.2, which classification applies when the lower bound of your 95% confidence interval on edge exceeds 4%?
(a) MARGINAL (b) MODERATE (c) STRONG (d) VERY_STRONG
Answer
**(c) STRONG.** The framework classifies as: VERY_STRONG when edge_lower > 7%, STRONG when edge_lower > 4%, MODERATE when edge_lower > 1%, MARGINAL when only the point estimate exceeds 1%, and NO_VALUE otherwise.Q5. In the multi-factor value scoring system, which factor receives the highest weight?
(a) CLV track record (0.20) (b) Edge size (0.35) (c) Market efficiency (0.15) (d) Liquidity (0.10)
Answer
**(b) Edge size (0.35).** The weights are: edge 0.35, track record 0.20, market efficiency 0.15, liquidity 0.10, diversification 0.10, timing 0.10. Edge is the single most important factor, but the other factors collectively account for 65% of the score, emphasizing that edge alone is not sufficient.Q6. How many bets are approximately needed to confirm a 3% ROI edge at 95% confidence and 80% power for standard -110 bets?
(a) 384 (b) 1,537 (c) 4,268 (d) 9,604
Answer
**(c) 4,268.** The sample size calculation in Section 13.4 demonstrates that a 3% ROI at -110 requires approximately 4,268 bets. This is because the per-bet variance is very high relative to the small expected edge, requiring a large sample to achieve statistical significance.Q7. Which of the following is NOT listed as a recommended field to track for every bet?
(a) Closing odds on the same selection (b) Your estimated probability (c) The final score of the game (d) Sportsbook used
Answer
**(c) The final score of the game.** While final scores may be useful for model calibration, the tracking table in Section 13.3 specifies: date/time, sport, event, market, selection, odds at placement, closing odds, closing spread, stake, sportsbook, result, profit/loss, your estimated probability, model used, confidence level, and notes. The final score is not among the specified fields, though it can be derived or linked separately.Q8. In the context of edge decay detection, what does a negative slope in the rolling ROI regression with p-value < 0.10 indicate?
(a) The bettor's edge is stable (b) Significant edge decay is detected (c) Mild decline that is not statistically significant (d) The bettor should increase bet sizes
Answer
**(b) Significant edge decay is detected.** The `detect_edge_decay` function uses two conditions: slope < -0.001 AND p-value < 0.10 triggers a "SIGNIFICANT DECAY DETECTED" status. If the slope is negative but p > 0.10, it reports "MILD DECLINE (not statistically significant)."Q9. What is the "Red Queen" effect in sports betting?
(a) A strategy for doubling bets after losses (b) The phenomenon where maintaining your edge requires continuous adaptation as markets improve (c) A bias where bettors favor red teams (d) The tendency for closing lines to revert to opening prices
Answer
**(b) The phenomenon where maintaining your edge requires continuous adaptation as markets improve.** Named after the Red Queen in Lewis Carroll's *Through the Looking-Glass* who says "It takes all the running you can do, to keep in the same place." In betting, markets continuously improve through better sportsbook models, more data availability, and competition from other sharp bettors, so you must continuously improve just to maintain your current edge.Q10. In the AdaptiveModel class, what is the purpose of the recency_weight parameter?
(a) It determines how frequently the model is retrained (b) It controls the weight given to recent data versus historical data during retraining (c) It sets the minimum number of observations before training (d) It adjusts the model's learning rate
Answer
**(b) It controls the weight given to recent data versus historical data during retraining.** The `recency_weight` parameter (default 0.7) determines how much emphasis the model places on recent observations. During retraining, sample weights are created using `np.linspace(1 - recency_weight, 1.0, n)`, giving the most recent observations higher weight. This helps the model adapt to changing market conditions.Section 2: True/False (5 questions, 3 points each)
Q11. A model-based approach to probability estimation is always superior to a market-based approach because the model incorporates more features.
Answer
**False.** The chapter explicitly states that market-based approaches (using sharp closing lines) are often more accurate than individual models because the market aggregates information from many sophisticated participants. The comparison table in Section 13.1 notes that model-based approaches require "very high" skill and carry risks of model error and overfitting, while market-based approaches require only "moderate" skill. Many professionals use a hybrid approach.Q12. If a bettor with a true 3% ROI edge places 200 bets, they have approximately a 67% probability of being profitable over that sample.
Answer
**True.** The regression-to-the-mean simulation in Section 13.4 shows that after 200 bets at -110 with a true 3% ROI, approximately 67.0% of simulated paths are profitable. The high variance of individual bets means that even a bettor with a genuine edge will show a loss roughly one-third of the time over 200 bets.Q13. The "Confidence Trap" callout warns that if your model disagrees significantly with the market, the most likely explanation is that you have found a large edge.
Answer
**False.** The callout explicitly warns the opposite: "If your model says a team has a 60% chance of winning and the market says 50%, the most likely explanation is not that you have found a 10% edge -- it is that your model is wrong." The advice is to treat large edge estimates with skepticism unless you can articulate a specific, verifiable reason for the market mispricing.Q14. CLV provides a faster signal of betting skill than win rate because CLV has lower variance per observation.
Answer
**True.** CLV measures the quality of each betting decision against the market's final assessment, providing a continuous signal (not binary). Win rate, by contrast, is a noisy binary outcome where even a high-skill bettor produces outcomes barely distinguishable from chance over small samples. The chapter's Case Study 2 reference demonstrates that CLV achieves statistical significance in 100 bets while win rate may not converge even after 5,000 bets.Q15. A quarterly review should only focus on ROI and profit/loss, since these are the metrics that matter for the bettor's bottom line.
Answer
**False.** The quarterly review framework in Section 13.5 explicitly includes CLV analysis, model version tracking, sportsbook account status, market-specific performance, and a full adaptation checklist. ROI and P&L are lagging indicators; CLV, model performance, and account health are leading indicators that predict future profitability. A review that ignores process metrics will miss early warning signs of edge decay.Section 3: Fill in the Blank (3 questions, 4 points each)
Q16. The standard Elo probability formula is $P(A) = 1 / (1 + 10^{-\Delta / \_\_\_\_\_\_\_\_})$, where $\Delta$ is the rating difference.
Answer
**400** The scaling factor of 400 is a convention from chess. It means that a 400-point rating difference corresponds to a 10:1 odds ratio. This scaling was chosen so that rating changes of practical magnitude (e.g., 10-30 points per game) produce reasonable probability adjustments.Q17. In the Kelly criterion formula $f^* = (pb - q) / b$, the variable $b$ represents the net ________ received on a winning bet (decimal odds minus one).
Answer
**odds** (or equivalently, "payout" or "profit per dollar wagered") The variable $b$ is the net odds, equal to decimal odds minus 1. For a -110 bet, decimal odds are 1.909, so $b = 0.909$. This represents the profit per dollar wagered on a win.Q18. The four stages of the edge lifecycle are: discovery, exploitation, ________, and adaptation.
Answer
**correction** The full lifecycle is: (1) Discovery -- you identify a market inefficiency; (2) Exploitation -- you profit from it; (3) Correction -- the market learns and the inefficiency narrows; (4) Adaptation -- you find new inefficiencies or refine your approach.Section 4: Short Answer (3 questions, 5 points each)
Q19. Explain the difference between model-based and market-based probability estimation. Under what circumstances would you prefer each approach?
Answer
**Model-based estimation** builds an explicit mapping from observable features (team ratings, injuries, weather, etc.) to outcome probabilities. It requires statistical expertise, historical data, and ongoing maintenance. It is preferred when: - You have access to unique or proprietary data not reflected in market prices - The market in question is inefficient (small leagues, props, niche sports) - You have strong domain expertise in a specific sport or market **Market-based estimation** treats the closing line at a sharp sportsbook as the best available probability estimate and looks for deviations at soft books. It is preferred when: - You lack the expertise or data to build a competitive model - The primary market (e.g., NFL spreads) is highly efficient - You want to scale across many sports without building sport-specific models - Speed and simplicity are priorities Many professionals use a **hybrid approach**: they build models to identify which side to bet, then use market-based CLV analysis to validate that their model adds value above the market consensus.Q20. A bettor has a mean CLV of +0.8% over 600 bets but an ROI of -1.5%. How is this possible? What should the bettor conclude?
Answer
This is possible because of **variance over a finite sample**. The bettor's positive CLV (+0.8%) indicates that their betting process is sound -- they are consistently getting better prices than the closing line. However, over 600 bets, the variance in binary outcomes (win/loss) can produce a negative ROI even when the process has genuine positive expected value. The bettor should conclude: 1. **Their process is likely sound.** Positive CLV is a more reliable indicator of skill than ROI over this sample size. 2. **They are experiencing negative variance.** The 600-bet sample is too small to reliably distinguish a +0.8% CLV bettor from breakeven based on ROI alone. 3. **They should continue betting.** If CLV remains stable and positive, the ROI should converge to a positive value over a larger sample. 4. **They should monitor rolling CLV** to ensure the +0.8% is not declining, which would indicate edge decay rather than variance. The expected sample size to confirm a 0.8% edge through ROI alone would be extremely large (15,000+ bets), while the CLV signal at +0.8% over 600 bets may already be statistically significant.Q21. Describe three specific causes of edge decay and the appropriate response to each.
Answer
**Cause 1: Model parameters become stale.** The sports landscape changes (rule changes, personnel turnover, meta shifts), but the model's coefficients remain calibrated to old data. Signal: Brier score increases, CLV declines gradually. Response: Retrain the model on recent data, update situational adjustments, and implement a regular retraining schedule (e.g., monthly or quarterly). **Cause 2: Previously proprietary data becomes publicly available.** An information advantage disappears when other bettors and sportsbooks gain access to the same data source. Signal: Edge disappears relatively quickly across an entire market category. Response: Identify new, unique data sources or proprietary analysis methods. Move to markets where the newly-public data is less impactful, or develop second-order insights (how to *use* the data better, not just *having* it). **Cause 3: Sportsbook account limitations.** Books limit or ban winning accounts, reducing the bettor's ability to get optimal prices. Signal: Average obtained odds worsen, shopping efficiency declines, but model CLV may remain stable against closing lines. Response: Open accounts at new sportsbooks, use bet brokers or P2P exchanges, reduce bet sizes to stay under limitation thresholds, and diversify across more books proactively.Section 5: Code Analysis (2 questions, 6 points each)
Q22. Consider this implementation of the minimum_edge_threshold function:
def minimum_edge_threshold(
confidence_in_estimate: float,
probability_range: tuple,
bet_type: str = 'standard',
kelly_fraction: float = 0.25
) -> float:
base_thresholds = {
'standard': 0.02,
'prop': 0.03,
'live': 0.04,
'futures': 0.05,
}
base = base_thresholds.get(bet_type, 0.03)
required_edge = base / confidence_in_estimate
return required_edge
(a) What minimum edge is required for a standard bet with confidence_in_estimate = 0.6?
(b) Why does dividing by confidence increase the threshold? Explain the intuition.
(c) Identify a limitation of this function. What additional input would make it more robust?
Answer
**(a)** `required_edge = 0.02 / 0.6 = 0.0333`, or approximately **3.33%**. **(b)** Dividing by confidence increases the threshold because **lower confidence means higher uncertainty in your probability estimate**. When you are less certain about your estimate, you need a larger observed edge to be confident that the true edge is positive. If you are only 60% confident, the remaining 40% uncertainty means the true edge could be significantly lower than your point estimate. Requiring a larger threshold compensates for this uncertainty by creating a buffer. **(c)** The function does not actually use the `probability_range` parameter, despite accepting it. This is a significant limitation because the width of the probability range directly measures uncertainty. A better implementation would use the range to compute a conservative edge estimate: calculate the edge using the lower bound of the probability range rather than (or in addition to) just dividing by confidence. Additionally, the `kelly_fraction` parameter is unused. A more robust version would incorporate both the range width and the Kelly fraction to determine whether the expected growth rate justifies the risk.Q23. Analyze this edge decay detection code:
def check_decay(clv_values, window=100):
n = len(clv_values)
windows = []
for i in range(0, n - window + 1, window):
w = clv_values[i:i+window]
windows.append(np.mean(w))
x = np.arange(len(windows))
slope = np.polyfit(x, windows, 1)[0]
if slope < -0.001:
return "DECAY"
elif slope < 0:
return "WATCH"
else:
return "STABLE"
(a) If clv_values has 850 elements and window=100, how many windows will be computed?
(b) What is the step size between windows? Is this overlapping or non-overlapping?
(c) This function is missing an important statistical check. What is it, and why does it matter?
(d) Rewrite the function to include the missing check and handle the edge case of too few windows.
Answer
**(a)** The `range(0, 850 - 100 + 1, 100)` produces `range(0, 751, 100)`, giving start indices [0, 100, 200, 300, 400, 500, 600, 700]. That is **8 windows**. (The last window covers indices 700-799.) **(b)** The step size is `window` (100), so the windows are **non-overlapping**. Each bet appears in exactly one window. **(c)** The function is missing a **p-value or statistical significance test** on the slope. A negative slope could easily arise by chance with only 8 data points. Without a significance test, the function may produce false "DECAY" alerts due to normal variance. The `detect_edge_decay` function in Section 13.5 includes a `linregress` call that returns both the slope and p-value, and requires `p_value < 0.10` before declaring significant decay. **(d)** Improved version:def check_decay(clv_values, window=100, min_windows=5):
n = len(clv_values)
windows = []
for i in range(0, n - window + 1, window):
w = clv_values[i:i+window]
windows.append(np.mean(w))
if len(windows) < min_windows:
return "INSUFFICIENT DATA"
x = np.arange(len(windows))
coeffs = np.polyfit(x, windows, 1)
slope = coeffs[0]
# Compute residuals and p-value
predicted = np.polyval(coeffs, x)
residuals = np.array(windows) - predicted
n_w = len(windows)
se_slope = np.sqrt(np.sum(residuals**2) / (n_w - 2)) / np.sqrt(np.sum((x - x.mean())**2))
t_stat = slope / se_slope if se_slope > 0 else 0
# Approximate p-value
p_value = 1 - _normal_cdf(abs(t_stat)) # two-sided: 2 * p_value
if slope < -0.001 and p_value < 0.05:
return "DECAY"
elif slope < 0:
return "WATCH"
else:
return "STABLE"
Section 6: Applied Problems (2 questions, 8 points each)
Q24. You are evaluating three potential bets for Sunday's NFL slate. Your model and the market provide the following information:
| Bet | Your Prob | Prob Std | Market Prob (no-vig) | Best Odds | Book |
|---|---|---|---|---|---|
| KC -3 | 56% | 3.5% | 53% | -108 | BookA |
| Over 47.5 | 58% | 5.0% | 52% | -110 | BookB |
| BUF ML | 44% | 4.0% | 41% | +150 | BookC |
For each bet: (a) Combine your model probability with the market probability using log-odds weighting (model weight 0.35, market weight 0.65). Show the combined probability. (b) Calculate the edge of the combined probability versus the implied probability from the best odds. (c) Calculate the quarter-Kelly stake as a percentage of a $20,000 bankroll. (d) Assign a ValueRating to each bet. (e) Recommend which bets to place and in what order of priority.
Answer
**(a) Combined probabilities (log-odds weighting):** For KC -3: - logit(0.56) = ln(0.56/0.44) = 0.2412 - logit(0.53) = ln(0.53/0.47) = 0.1200 - Combined logit = 0.35(0.2412) + 0.65(0.1200) = 0.0844 + 0.0780 = 0.1624 - Combined prob = 1/(1+exp(-0.1624)) = **0.5405 (54.05%)** For Over 47.5: - logit(0.58) = ln(0.58/0.42) = 0.3228 - logit(0.52) = ln(0.52/0.48) = 0.0800 - Combined logit = 0.35(0.3228) + 0.65(0.0800) = 0.1130 + 0.0520 = 0.1650 - Combined prob = 1/(1+exp(-0.1650)) = **0.5412 (54.12%)** For BUF ML: - logit(0.44) = ln(0.44/0.56) = -0.2412 - logit(0.41) = ln(0.41/0.59) = -0.3646 - Combined logit = 0.35(-0.2412) + 0.65(-0.3646) = -0.0844 + (-0.2370) = -0.3214 - Combined prob = 1/(1+exp(0.3214)) = **0.4203 (42.03%)** **(b) Edge calculations:** - KC -3: Implied = 51.92% (from -108). Edge = 0.5405/0.5192 - 1 = **+4.10%** - Over 47.5: Implied = 52.38% (from -110). Edge = 0.5412/0.5238 - 1 = **+3.32%** - BUF ML: Implied = 40.00% (from +150). Edge = 0.4203/0.4000 - 1 = **+5.08%** **(c) Quarter-Kelly stakes:** - KC -3: b = 0.926, f* = (0.5405*0.926 - 0.4595)/0.926 = 0.0443, quarter = 1.11%, stake = **$222** - Over 47.5: b = 0.909, f* = (0.5412*0.909 - 0.4588)/0.909 = 0.0361, quarter = 0.90%, stake = **$180** - BUF ML: b = 1.50, f* = (0.4203*1.50 - 0.5797)/1.50 = 0.0340, quarter = 0.85%, stake = **$170** **(d) ValueRatings:** To assign ratings, we need edge_lower (lower bound of 95% CI on edge). Since we combined probabilities, the effective uncertainty is reduced. Using the combined prob std (approximately 0.65 * original std): - KC -3: Combined std ~2.3%. edge_lower at (0.5405 - 1.96*0.023)/0.5192 - 1 = 0.4954/0.5192 - 1 = -4.6%. Rating: **MARGINAL** (point estimate > 1% but lower bound < 0) - Over 47.5: Combined std ~3.3%. edge_lower at (0.5412 - 1.96*0.033)/0.5238 - 1 = 0.4765/0.5238 - 1 = -9.0%. Rating: **MARGINAL** - BUF ML: Combined std ~2.6%. edge_lower at (0.4203 - 1.96*0.026)/0.4000 - 1 = 0.3694/0.4000 - 1 = -7.7%. Rating: **MARGINAL** **(e) Recommendation:** All three bets have positive point-estimate edges (3.3%-5.1%) but wide confidence intervals that include zero. Priority order: (1) **KC -3** -- smallest uncertainty relative to edge, most efficient market for the model's strength; (2) **BUF ML** -- highest raw edge, though higher uncertainty; (3) **Over 47.5** -- lowest edge-to-uncertainty ratio. All bets should be sized conservatively at quarter-Kelly or less given the MARGINAL ratings. The bettor might reasonably skip all three if their confidence threshold requires MODERATE or better ratings.Q25. A bettor provides the following performance data over their first year of betting:
| Quarter | Bets | Win Rate | Avg Odds | ROI | Mean CLV | Books Active |
|---|---|---|---|---|---|---|
| Q1 | 180 | 55.0% | -108 | +4.2% | +2.4% | 7 |
| Q2 | 200 | 52.5% | -109 | +1.1% | +2.0% | 7 |
| Q3 | 210 | 51.4% | -110 | -0.8% | +1.5% | 5 |
| Q4 | 190 | 53.7% | -111 | +1.5% | +1.1% | 4 |
(a) Calculate the full-year aggregate ROI and mean CLV. (b) Is there evidence of edge decay? Cite specific metrics that support your conclusion. (c) The number of active sportsbooks decreased from 7 to 4. How does this explain the observed trends? (d) Design a 5-step action plan for this bettor entering Year 2. Be specific. (e) If the bettor's CLV continues to decline at the observed rate, predict their CLV in Q1 and Q2 of Year 2.
Answer
**(a) Full-year aggregates:** Total bets: 780. We approximate profit per quarter using ROI * (bets * avg_stake). Assuming $100 stakes: - Q1: 180 * $100 * 4.2% = +$756 - Q2: 200 * $100 * 1.1% = +$220 - Q3: 210 * $100 * (-0.8%) = -$168 - Q4: 190 * $100 * 1.5% = +$285 Total profit: $1,093. Total staked: $78,000. **Full-year ROI: +1.40%** Weighted mean CLV: (180*2.4 + 200*2.0 + 210*1.5 + 190*1.1) / 780 = (432 + 400 + 315 + 209) / 780 = 1356 / 780 = **+1.74%** **(b) Evidence of edge decay:** Yes, there is clear evidence: 1. **CLV declined monotonically**: +2.4% -> +2.0% -> +1.5% -> +1.1%, a drop of 1.3 percentage points over 4 quarters. 2. **Average obtained odds worsened**: -108 -> -109 -> -110 -> -111, indicating less favorable pricing. 3. **ROI was volatile but trended downward**: Q3 was negative, and Q4 recovered only partially. 4. The CLV decline is more informative than the ROI pattern because CLV has lower variance. **(c) Impact of losing sportsbooks:** The decline from 7 to 4 active books directly explains the worsening average odds (-108 to -111). With fewer books to compare: - Shopping value decreases (fewer alternatives) - Average obtained odds move toward the worse end of the market - The bettor loses access to books that may have offered the most favorable prices The 3-cent worsening in average odds (from -108 to -111) accounts for approximately 1.4% of implied probability, which closely matches the 1.3% CLV decline. This suggests that **most of the edge decay is attributable to lost book access, not model deterioration**. **(d) 5-step action plan:** 1. **Restore book access immediately.** Open accounts at 3-4 new sportsbooks to replace the lost ones. Target regional books, new market entrants, and any books with promotional pricing. 2. **Retrain the prediction model.** Even though the CLV decline appears driven by book access rather than model quality, a model refresh using the most recent season's data will ensure parameters are current. 3. **Implement proactive limitation avoidance.** At the new books, bet smaller initial amounts, mix in some recreational-looking bet patterns (parlays, popular sides), and avoid placing the maximum on every bet immediately. 4. **Diversify across markets.** If the bettor is concentrated in one sport or market type, expand to additional markets where they can spread their action across more books without triggering limits. 5. **Set up automated CLV monitoring.** Implement the rolling CLV tracker from the chapter to detect future decay early. Set an alert threshold at CLV < +1.0% over a 100-bet window. **(e) CLV projection:** The quarterly CLV values are: 2.4, 2.0, 1.5, 1.1. The average decline per quarter is (2.4 - 1.1) / 3 = 0.433% per quarter. If the decline continues linearly: - **Q1 Year 2: +0.67%** (1.1 - 0.43) - **Q2 Year 2: +0.23%** (0.67 - 0.43) At this rate, CLV would reach zero by approximately Q3 of Year 2. This makes the action plan in part (d) urgent -- without intervention, the bettor's edge will evaporate within 6 months.Scoring Summary
| Section | Questions | Points Each | Subtotal |
|---|---|---|---|
| Multiple Choice | 10 | 3 | 30 |
| True/False | 5 | 3 | 15 |
| Fill in the Blank | 3 | 4 | 12 |
| Short Answer | 3 | 5 | 15 |
| Code Analysis | 2 | 6 | 12 |
| Applied Problems | 2 | 8 | 16 |
| Total | 25 | 100 |