Featured post

Textbook: Writing for Statistics and Data Science

If you are looking for my textbook Writing for Statistics and Data Science here it is for free in the Open Educational Resource Commons. Wri...

Thursday 21 January 2021

Fantasy Sports Explained

Information on fantasy sports ranges from the overly broad or impossible to apply like personal stories about how fantasy sports changed lives, to extremely narrow or short-lived like opinions on players recent performances. This article is intended to cover some of the middle ground to help you understand the basics of fantasy with a worked example of how you might choose players at the beginning of a league.

 

This article may appear later in my coursepack "Statistics, Gambling, and Games of Chance". Here I mostly talk about fantasy leagues that last one or more seasons, as opposed to daily fantasy, which will be covered in a later article.

Before we start..

If you want to try fantasy, just try it. Don't be intimidated. The best time to join a league is just before the start of a season, but public website have leagues starting all the time. You don't need to know the players, or even have any sports knowledge; the autopilot features on popular websites will make reasonable drafting decisions for you. Similarly, your team will play with or without your input, so you're not obligated to play through the season. 

 Fantasy generally falls into two main categories called season long and daily fantasy.

Season long fantasy

In season long fantasy, you take the role of a manager in a league of 5-15 teams. A season long fantasy experience is meant to mimic the experience of being an actual manager in the sport in question. Fantasy managers draft your players close to the beginning of the regular season of the real-life league.

A player can only belong to a single manager at a time, they can be traded to other managers, or released to make room for other players. Sometimes there are restrictions on the number of trades to minimize the advantage of more active managers. Sometimes, there is a fantasy trade deadline that corresponds with the trade deadline in the real sport. Some leagues run across multiple years and managers keep the players they had drafted or traded for in previous years. Sometimes there are also limits on the salary that a fantasy team can have, where a fantasy salary is often based on the players' actual salaries.

In a formal draft, all the players in the league take turns selecting one player each for their team in rounds, usually in a 'snake format'. For example, consider a 10-team league where the manager that chooses the first player is Manager A, the second one is Manager B, ... , all the way to Manager J. The first round of ten players would go to managers A,B,C, ... , H,I,J. The next round of ten players would go to the managers in the opposite order: J,I,H, ... , C,B,A. So manager A would select the 1st player, 20th player, 21st player, 40th player, 41st player, and so on. Meanwhile, Manager C would select the 3rd, 18th, 23rd, 38th, and 43rd players.

All of these restrictions and factors make player selection very complex, and it's best to go into a formal draft prepared with a pick list. A pick list is an ordered list of players that you want in a draft. When it's your turn to choose a player, you simply choose the highest-ranked player among those still available.

Adhering to the pick list isn't perfect because you might end up with too many of one position and not enough of another, or be stuck with a suboptimal choice for a given position. These considerations are relatively easy to account for during the draft just by tracking how many of each position you need. It's about opportunity cost, and there are tools online to do mock drafts to practice to get the most out of your pick list.

 

In season long fantasy, competition is head-to-head. Each week, managers decide which players they own will be active, meaning that their actions are the ones that count towards the fantasy team's score that week. A typical fantasy team has more players than they will actively use each week to account for player injuries; it's up to the manager to guess which of their players will perform best in any week. 

The score of a fantasy team is measured against another fantasy team in the league to determine which team plays that week. The fantasy teams with the best win-loss record often have a playoffs of a few weeks at the end of the regular season.

 

 

Season long - player scoring

 

Player scoring in season long fantasy can take on either a points system or best-of-category system. In a points system, each event that a player does is worth a certain number of points. In hockey, a goal might be worth 10 points, an assist 8 points, a penalty could be worth 3 (or negative 3) points per minute. Scoring varies between sports and between fantasy leagues within a sport.

 

In a best-of-category system, stats are aggregated across active players. These stats could be simple events like number of goals or number of assists, or they could be more complex like plus/minus or save percentage. (or in, say, American football, pass completion percentage). Whichever fantasy team does better on the most categories in a week is the winner.

 

Daily fantasy

 

In daily fantasy, a team is selected from all the players available for all events in a short period, usually a single day or tournament. There can be thousands of managers in a single daily fantasy competition. Participation in a daily fantasy competition is much simpler than in season-long fantasy competitions.

 

In daily fantasy, there is no formal draft process, there is no trading between players, and every player selected is actively used for that competition. Managers can enter at any time before the real sporting action starts, managers can select a player even if other managers have selected that player. Usually, the only player-selection restrictions are that managers can only select one copy of a player, that they need to fill a certain number of each role, and that they have keep their selections below a certain maximum salary.

 

Daily fantasy sports use a scoring-based system where every event is worth a certain number of points. Competition is a free-for-all instead of head-to-head, and prizes are often given to the top performers of the day. For example, a top prize might be given to highest scoring team, while the diminishing prizes might be given for lower places down until the top 10-20% are compensated.

 

A simple strategy would be to simply pick the players with the highest expected number of points within the salary restrictions. However, since prizes tend to be heavily concentrated on the top performers, it often makes more sense to select players that are almost as good, but have been selected by a smaller proportion of players already entered. If you simply choose the best, most popular players (called a 'chalky' strategy in daily fantasy and a loosely related betting structure called a bracket), you are likely to maximize you expected score, but since your score will be strongly correlated with that of other fantasy managers, you will be unlikely to get a very high ranking.

 

Brackets and playoff drafts

Brackets are a multiple-day version of fantasy that lasts as long as a playoff tournament. In brackets you have to predict which teams will move on at each around, and which ones will be eliminated. In playoff drafts, player selections are made similar to daily fantasy, but you stick with your player choices throughout the playoffs. Brackets and playoff drafts will be addressed in another article, but a good discussion of strategy can be found in "Optimal Drafting in Hockey Pools" at  https://www.sfu.ca/~tswartz/papers/hockey.pdf by Amy E. Summers, Tim B. Swartz and Richard A. Lockhart.

 

 

Worked example: NHL Hockey on Yahoo! Sports.

As a reminder, please don't be intimidated by the details here. This was just an attempt to approach fantasy scientifically and to repurpose data that had already been collected and processed for other projects. Your approach does not need to be anything close to this complicated, and the 'autopilot' features of popular websites can guide you through the drafting process just fine.

 

Yahoo! Sports hosts free-to-play season long fantasy leagues for several sports, including NHL Ice Hockey. By default the league rules are set up as follows:

- There are 4-20 managers in a league, matches are head-to-head.

- There is a formal draft before the regular season. Trades can happen up until real life trade deadline.

- Scoring is based on the following 10 categories:

For skaters - Goals (G), Assists (A), Plus/Minus (PM), Powerplay Points (PPP), Shots on Goal (SOG), Hits (HIT)

For Goaltenders - Wins (W), Goals Against Average (GAA), Save Percentage (SV), Shutouts (SHO).

- Each team has 2 centers, 2 left wingers, 2 right wingers, 4 defenders, 2 goalies, 4 bench spots, and space to retain 2 injured players.

In private leagues, changes to these rules can be made, such as including other categories like shorthanded goals, as well using a points-based system to score matchups instead of best of categories.

Figure 1 has the scores from a category-based league.

 


Figure 2 has the scores from a points-based league, and Figure 3 has an example points breakdown for a player.

 


 


Each week, you pick players from your team, and their aggregate in each of those categories determines who wins. So a manager with better G, A , PM, SOG, HIT, and W in a week would get 6 points, beating their opponent who can get at most 4 points from PPP, GAA, SV, and SHO.

To prepare, I've used Sportlogiq's data to make some picklists. I assigned each player a value based on these ten categories. Skaters will get 0 for the goalie-based categories. Some are simple (Goal value is based on the number of goals a player gets), others are trickier (Plus-Minus is based on defensive measures like dumpouts, shots and passes blocked, and shots interfered with)

I've also assigned players a "soft" value based on playmaking events that don't fit any specific category. These are events like faceoffs, loose puck recoveries, controlled zone entries, and (negative) penalties received. These are probably useful, but it's hard to stick them to a particular category.

For goalies, "wins" and "shutouts" are partially based on the general ability of the team that the goalies play for. This is because they're partially a reflection of the team's ability to produce goals and avoid shots against.

To prevent the effect of players only appearing for a few good games, and to make sure my players would be available to play most of the time, I scaled all these values based on the number of games in the last three regular seasons that each player had appeared in.

The formula that I used to evaluate skating players was:

Player Value = sqrt(Regulation games in last 3 years) * [beta_G * Goal value + beta_A *Assist value + beta_PP *Powerplay value + beta_PM *Plus-Minus value + beta_SOG * Shots Value + beta_HIT *Hits Value + beta_S * Soft value]

where

Goal value = Goals / game

Assist value = 1/3 * (puck protections + dumpins + passes)  / game

Plus-minus value = 1/4 * (dumpouts + shots blocked + passes blocked + shots pressured) / game

Powerplay value = goal value + assist value – 5v5 goals

Shots  value = 1/3 * (2*shots on goal + shot attempts) / game

Hits value = Checks /game

Soft value = 1/2 * (loose puck recoveries + blue line carries + pass receptions + faceoff wins – faceoff losses – penalies) / game

and where

Beta_G, Beta_A, beta_PP, ... are normalizing factors based on league averages. For example, there are 10-20 hits for every goal in a game, so beta_G is 10-20 times as large as beta_HIT, and a goal counts for 10-20 times as much in player valuation.

 

The formula that I used to evaluate goalies was:

Player Value = sqrt(Regulation games on roster, last 3 years) * [beta_W * Wins value + beta_GAA *Goals against value + 2*beta_SV *Save Percentage value + beta_SHO * Shutout value]

where

Wins value = Elo-rating of goalie's team

Goals against value = 1 / goalie's goals against average

Save percentage value = goalie's saves / goal

Shutout rating = goalie's shutout percentage, last 40 starts

and where

Beta_W, Beta_GAA, beta_SV, and beta_SHO are normalizing factors based on league averages.

Note that save percentage counts for twice as much as every other value because it's the only one that is reflection of only the goalie and not the team they play for.

After I applied these formulas for each player, I applied weights to each factor (on top of the normalizing factors) to get got an aggregate value for each player. I don't know in advance what the weightings should be, so I messed with them ad-hoc until the 'tiers' of the pick list resembled the 'average draft position' (ADP) across several popular fantasy websites, including Yahoo! Sports. I found these at https://www.fantasypros.com/nhl/adp/overall.php

The aim here isn't to replicate last year's draft positions, but to approximate the relative importance of forwards, defenders, and goalkeepers.


Going from tiers of 50 players each, the crowd picks positions with the following breakdown.

Tier

Defenders

Forwards

Goalies

1st – 50th

8

34

8

51st – 100th

13

28

9

101st – 150th

18

27

5

151st – 200th

19

24

7

201st – 250th

12

34

4

 

My weighted sums based on raw event counts produced this:

Tier

Defenders

Forwards

Goalies

1st – 50th

4

40

6

51st – 100th

10

37

3

101st – 150th

14

30

6

151st – 200th

17

25

8

201st – 250th

15

29

6

 

 

My weighted sums based on 'proportion of team's output' produced this:

Tier

Defenders

Forwards

Goalies

1st – 50th

4

40

6

51st – 100th

9

37

4

101st – 150th

12

21

7

151st – 200th

17

23

10

201st – 250th

17

29

4

 

 

Also, the top ten picks of each method and the crowd look like this

 

Rank

Crowd

Raw Output Method

% of Team Output Method

1

Nikita Kucherov RW

Alex Ovechkin LW

Leon Draisaitl C

2

Connor McDavid C

Connor McDavid C

Connor McDavid C

3

Alex Ovechkin LW

Nikita Kucherov RW

Alex Ovechkin LW

4

Nathan MacKinnon C

Auston Matthews C

Jack Eichel C

5

Patrick Kane RW

Leon Draisaitl C

David Pastrnak RW

6

Brad Marchand LW

Nathan MacKinnon C

Auston Matthews C

7

David Pastrnak RW

David Pastrnak RW

Mika Zibanejad C

8

Sidney Crosby C

Patrick Kane RW

Anze Kopitar C

9

Brent Burns D

John Tavares C

Patrick Kane RW

10

Leon Draisaitl C

Jack Eichel C

Nathan MacKinnon C

 

Finally, the distribution of values by rank is shown in Figure 4. Here, a few players at the top are much more valuable than the rest, implying that the opportunity cost of missing one of these elite players in the first few rounds is much more important than position-balancing considerations, which can be done in later rounds when the drop off in output is not so steep.

 


 

We’ll see as the league progresses how well this all works, it’s just mostly a toy example of what’s possible to show how it all works.

 I opted for the raw output method for three different leagues.

"Pronogistotron Alpha" plays in a public league of 12 managers. I drafted 1st (then 24th, 25th, 48th,…).

"Pronogistotron Beta" plays in a private league of 8 managers among friends. I drafted 1st (then 16th, 17th, 32nd,…).

"Pronogistotron Gamma" plays in a private league of 14 managers among Sportlogiq colleagues. I drafted 12th (then 16th, 40th, 44th,…).

 

As "Alpha", I took the highest-valued player that was available until all position requirements were filled, then I chose the highest-valued player left. Also, I accidentally autodrafted in my first round as I was trying to learn the system.

As "Beta", I used the system, but also avoided injured players, and lowered the priority for defensive players to try and adapt to the league's scoring system.

As "Gamma", I used the updated system, but also tried to avoid backup goalies to make sure I had goalies who actually played each week. I also sought players on strong teams to improve my plus-minus and assist results.

Two goalies, Allen and Grubauer, are in all three leagues (bold and italic), these represent the picks that my system rates substantially higher than other managers' systems.

 

Picks

Alpha

Beta

Gamma

1

McDavid (EDM – C)

Ovechkin (WAS – LW)

P. Kane (CHI – RW)

2

Kucherov (TB – RW)

P. Kane (CHI – RW)

Tavares (TOR – C)

3

Pastrnak (BOS – RW)

Tavares (TOR – C)

Kopitar (LA – C)

4

Barkov (FLA – C)

Malkin (PIT – C)

Markstrom (CGY – G)

5

Allen (MTL – G)

Allen (MTL – G)

Grubauer (COL – G)

6

Grubauer (COL – G)

Grubauer (COL – G)

E. Kane (SJ – LW)

7

Letang (PIT – D)

Giroux (PHI – LW, C)

Letang (PIT – D)

8

Benn (DAL – C, LW)

Pastrnak (BOS – RW)

DeBrincat (CHI – LW,RW)

9

Giordano (CGY – D)

Kopitar (LA – C)

Karlsson (VGK – C)

10

Ehlers (WPG – LW, RW)

Werenski (CBJ – D)

Benn (DAL – C, LW)

11

Doughty (LA – D)

Ekman-Larsson (ARI – D)

Spurgeon (MIN – D)

12

Subban (NJ – D)

Doughty (LA – D)

Rakell (ANA – LW, RW)

13

Rakell (ANA – LW, RW)

Barrie (EDM – D)

Allen (MTL – G)

14

Zucker (PIT – LW, RW)

Fleury (VGK – G)

Ekholm (NSH – D)

15

Ekholm (NSH - D)

Dadonov (OTT – LW, RW)

Gustafsson (PHI- D)

16

Jones (SJ – G)

Gustafsson (PHI- D)

Faulk (STL – D)


It's early in the season, so results are minimal. However, there are a few other improvements to be made before taking this seriously, or to consider before tackling daily fantasy sports.

 

·         Customizing player valuation for each league. Not just to the rules (e.g. points vs categories).

·         Making penalties their own value apart from "soft", so that their value could be either negative, positive, or neutral, depending on the rules of the league.

·         Including more events directly, like assists, plus-minus and shorthanded goals, there are some other improvements to be made.

·         Evaluations for plus-minus should account for the team that a player is on.

·         Discounts applied based on a player's injury status at the beginning of the year. A player that is going to be out of commission for a few months looks exactly the same as any other player here.

·         The number of games a player starts as a goalie isn't considered.

·         Considerations for players that fit into more than one role, like a LW/RW.

·         Opportunity cost based on position isn't considered yet. In other words, how much are you losing by leaving a player unpicked until the next round? It's a lot if there's nobody as good as them left, and not much if there are many players like them remaining. This is probably much more complicated than other improvements on this list.


Bibliography:

Episode 01.26 of the Too Many Men podcast and Alexandra Mandrycky of the Seattle Kraken for their insights into drafting.

Fantasy Life by Matthew Berry

 

I used Sportlogiq data here, but given that this isn't a very deep or high-quality analysis, you could recreate something just as good or better with the data that MoneyPuck offers for free at http://www.moneypuck.com/data.htm

No comments:

Post a Comment