2023-04-07 · Fantasy basketball

Setting Vegas Odds for Our Fantasy League

If a sportsbook took action on our league, what would the lines be, and would betting the favorite every week pay? Part two of Finding the Best Elo. Originally an email to my league from the 2022–23 season, so every number below is as of then.

Now that we know the best Elo and what the margin of error is, we can look at things from a gambling perspective. A casino sets their vig at double the margin of error. What happens if you bet the money line on who’s favored every week? American odds are nice and easy to calculate. We also know that you should win betting on the spread about 50% of the time. The spread is simple enough to “predict” by multiplying the predicted probability by 18, rounding, and then dividing by 2 to get the score out of 9 including half points for category ties.

I’ll take the 3 best Elo systems by RMSE, #s 2 and 3 being (60, 20) and (60, 40) respectively, and use the Central Limit Theorem to find the mean and standard deviation of error, setting the margin of error at μ+2·σ=e, since 95% of results are within two standard deviations of the mean. Double that to get the vig, and then run them through this calculation to get the American odds on the moneyline:

∓100·P· 1+vQ

For the spread, we do the opposite. Instead of juicing the odds, we curtail the prediction by running it through this formula so that it predicts half points. It’s a simplified version of the rounding described above, written for the ideal case where there are no ties:

S= ⌊18·(P−.5)·(1−v)⌋ 9

And then we compare those to 9 times the true score minus 0.5 to see how each system performed against the spread for a bettor. We’ll split these out by season and playoffs, as casinos normally do.

For regular season, the default setup yields a mean of 2.5% and a standard deviation of .037, giving us a vig of 9.99% over the dataset. That’s just under the average Las Vegas casino rate of 10%. The next two best setups are .8 and .24% higher, so practically it’s a negligible difference when it comes to actually setting the odds for the league. For the playoffs, the larger mean of 3.5% and standard deviation of .048 gives us a vig of 13.15%. If memory serves, because unlike SOME PEOPLE I no longer gamble during the playoffs, casinos usually bump the vig up to 15% for the playoffs. Given both the volatility and lower game volume, this is a sensible way to give themselves a lower risk profile and possibly increase how attractive certain betting propositions are.

Betting the favorite

Now, we have to make some assumptions in order to get even a little meaningful analysis out of this. The biggest assumption is the betting pattern. Since the Elos have done a great job of predicting winners, we will use the simplest betting pattern: always bet on the best team to win. In cases where the prediction is 50/50, I just didn’t have a bet placed. I’d like to redo this analysis with other betting patterns at a later date, but for now let’s stick with the basics. If we bet the moneyline favorite to win every week and additionally for the same team (because it will always be the same team) to cover the spread in eligible weeks, we’ll be able to see in the long run how much money one stands to gain or lose.

Over the 808 regular season matchups in the 8 years that this dataset covers, if you bet $1 on the favored team every game, you’d win about $72.93 on the moneyline, and lose about $9.94 on the 34 games where the spread was offered as a bet. That’s a pretty abysmal return on the spread, but pretty phenomenal for moneyline. For comparison, the expected return to player (RTP) on Blackjack or Slots is 98.7%; betting the moneyline favorite here returns about 109.6%. On average you’d be winning $9.11 a season over the course of your 480 wins and 280 losses.

season bettor’s moneyline winnings
2014 $25.98
2015 −$6.67
2016 $30.12
2017 $18.80
2018 $6.61
2019 $2.34
2020 −$10.64
2021 $6.38

Going through the seasons, the most profitable for the bettor was the 2016 season, while the most profitable for the book was the 2020 season. The bettor winning out in 2016 is interesting, because it was the last year we had a points league. The incredibly predictable matchups had the lowest RMSE of any season, with the 2nd being the other points season in 2014. Obviously these are the only two seasons with no ties. Since RMSE is a measure of how close the actual result was to the predicted result and we are measuring error as a function of how close to predicted points share is Elo share, it’s interesting to see that it would err so often on one side rather than the other. For the 2014 season it’s clear that the best teams in the league throughout the season were the ones driving upset wins; Violet’s team never really went through a significant win or loss streak and stayed steady the whole season. Looking closely at 2016, that seems to be the prevailing driver in the points seasons. The Elo rating doesn’t catch up to talent because it’s a late predictor, but it is very close. Looking at 2017 as well, the only categories season with fewer than 30 wins by the house, shows similar results.

The same moneyline winnings, split by week of the season (numbered from 0):

week bettor’s moneyline winnings
0 $0.00
1 −$2.36
2 $3.17
3 −$2.80
4 $1.88
5 $3.53
6 $5.59
7 $6.05
8 −$1.54
9 $1.31
10 $5.71
11 $6.40
12 $9.85
13 $1.26
14 $6.28
15 $7.99
16 $6.99
17 $0.80
18 $7.57
19 $3.13
20 $2.65
21 −$0.54

Managers

Looking at individual managers, Arjun is the only one with a positive win-rate when he’s favored in a matchup. He had 13 wins across 19 matchups, and was favored in 11 of those wins. So it seems that, even when betting on the favored team is a winning strategy, teams are actually losing when they are favored more often than not. This seems to me like a classic example of Simpson’s paradox. There is a clear trend for when it’s profitable to bet against the favored team, but streaks don’t happen that often.

manager matchups spread games wins wins as favorite spread covers win % won as favorite % spread cover %
(push) 808 34 23 0 0 2.85% 0.0% 0.0%
Violet 158 8 55 24 5 34.81% 15.19% 62.5%
Andrew 81 7 31 21 4 38.27% 25.93% 57.14%
Chris 158 6 81 52 2 51.27% 32.91% 33.33%
John 158 6 107 77 3 67.72% 48.73% 50.0%
James W 21 6 1 0 3 4.76% 0.0% 50.0%
Ravi 136 6 80 42 2 58.82% 30.88% 33.33%
Rohan 158 5 87 49 3 55.06% 31.01% 60.0%
Alex K 77 5 25 13 4 32.47% 16.88% 80.0%
Neil 116 4 62 37 3 53.45% 31.9% 75.0%
Sahil 97 3 50 34 2 51.55% 35.05% 66.67%
Arjun 19 3 13 11 0 68.42% 57.89% 0.0%
Guillem 98 2 64 47 1 65.31% 47.96% 50.0%
Ben 78 2 43 33 1 55.13% 42.31% 50.0%
Amrit 19 2 3 0 1 15.79% 0.0% 50.0%
James C 38 2 24 14 0 63.16% 36.84% 0.0%
Austin 20 1 6 2 0 30.0% 10.0% 0.0%
Jeremy 19 0 1 0 0 5.26% 0.0% —
DuckHead 20 0 3 2 0 15.0% 10.0% —
Alex W 38 0 18 5 0 47.37% 13.16% —
Aaron 21 0 11 5 0 52.38% 23.81% —
Justin 22 0 1 0 0 4.55% 0.0% —
Sandeep 22 0 13 9 0 59.09% 40.91% —
Chris S 42 0 6 3 0 14.29% 7.14% —
(bets not won) 0 0 0 328 0 — — —

And where the moneyline winnings came from: what a bettor won backing each manager as the favorite, season by season, with every losing bet pooled into one line.

favorite 2014 2015 2016 2017 2018 2019 2020 2021
John $10.64 $3.67 $8.82 $6.46 $8.02 $1.70 $7.28 $9.04
Chris $9.47 $9.29 $3.93 $1.62 $1.61 $5.59 $0.82 $7.44
Rohan $9.52 $2.80 $6.76 $4.72 $2.72 $3.25 $1.68 $4.64
Guillem — $6.17 $9.89 $5.88 $8.96 $4.19 — —
Ravi — $6.06 $3.43 $3.93 $2.81 $7.17 $0.90 $5.36
Neil — — $3.36 $8.81 $2.49 $2.91 $2.87 $6.09
Ben — — $9.68 $7.91 $1.46 $5.02 — —
Sahil — — — $3.13 $9.26 $2.26 $6.45 $2.86
Violet $5.27 $2.26 — $2.32 $2.80 — $2.38 $2.84
Andrew $4.06 $4.79 $8.24 — — — — —
James C — — — — — — $2.32 $8.05
Alex K — — — — $1.48 $4.70 $2.43 $0.87
Arjun — — — — — $7.55 — —
Sandeep $6.81 — — — — — — —
Aaron — — — — — — — $3.79
Alex W — — — — — — $2.23 $1.41
Chris S $2.21 — — — — — — —
DuckHead — $1.77 — — — — — —
Austin — $1.51 — — — — — —
bets lost −$22.00 −$45.00 −$24.00 −$26.00 −$35.00 −$42.00 −$40.00 −$46.00
net $25.98 −$6.67 $30.12 $18.80 $6.61 $2.34 −$10.64 $6.38

← Part one: Finding the Best Elo for Our Fantasy League

→ The Elo System project, the package these ratings grew into