Designing the Fantasy Surfer Viz
Well-designed information visualizations should begin with a clear understanding of what the visualization will help users do. For the Fantasy Surfer vis, I wanted to design a tool that would help me make fantasy surfer picks by predicting which surfers would do well at each event on the world tour. While this gets at what I want to achieve, it’s not quite specific enough to build a design around. I brainstormed some specific tasks that would help me do well at fantasy surfer:
1. Explore surfers’ past performance at each event.
2. Compare surfer’s average Fantasy Surfer points earned at each event with their Fantasy Surfer price.
3. Explore the relationship between a surfer’s performances at two different events.
4. Explore the relationship between performances across all events.
5. Explore how a surfer’s ranking changes over the course of the season
Of these tasks, I decided to focus on 1 and 2 as a starting point for the vis. They’re all useful tasks that get at slightly different dimensions of predicting success, but the first two are relatively easy to visualize and should provide some predictive value.
Task one seems to me to be a pretty obvious starting point for a fantasy surfer vis—knowing how a surfer has placed at a given event in the past gives you a basis for predicting how they’ll do at that event in the future, and it’s simple to illustrate. The image above is a first draft of the visualization for this task. The events on the world tour are in chronological order on the x-axis, and the surfer’s result from each year is plotted on the y-axis. The horizontal line in each event column is their median ranking, and the grey cell represents the upper and lower quartiles centered around the median, providing a visual reference of their average performance at a given event and their consistency. Darker points are more recent events.
For task two, I built a scatterplot that plots each surfer’s average Fantasy Surfer points earned against their current Fantasy Surfer cost. Because the goal of Fantasy Surfer is to build a team that earns the most points within a budget, being able to compare value and expected points is an essential component of building a team. The line running through the middle is the regression line with a 95% confidence interval plotted around it, which shows a slight positive correlation, indicating that more costly surfers tend to earn more points on average. Surfers above the regression line earn more points than other surfers in their price range, and surfers below the line earn fewer points than other surfers in their price range.
Using the viz to make my Bells picks
I hastily assembled this vis before Bells, the second event of the world tour, and used it to pick my team for the event. Each team is allotted eight surfers or $50 million in salary, whichever is reached first. As shown in the figure below, Fantasy Surfer points have a skewed distribution where a first place finish is worth approximately 2x as much as a quarterfinal finish (a 4th place result), and 20x more valuable than being eliminated in the first round. Accordingly, the ideal team would have all eight top finishers. Having any surfer on your team that finishes outside of the top 8 leads to dramatic point losses; for example, a team composed of all top eight finishers would earn ~1000 points, but not picking the eventual winner and having a team composed of the surfers who finished 2nd through 9th would earn only ~880 points. That being said, the salary cap of $50 million makes it unlikely you’d be able to afford to assemble a team of the top 8 finishers (for example, a team of the top eight surfers at the Gold Coast would cost $73.5 million at current prices). Instead, building a team of surfers that earn more points on average relative to other surfers in their price range seems like a reasonable strategy to start with.
To pick my team, I started at the cost vs average points plot and looked for the surfers that were above the regression line and outside the confidence interval, which indicates over-performance relative to their cost.
There are a few standouts here, with one of the most notable ones being Italo Ferreira. While he’s in the most expensive price bracket ($12 million), he also has the highest average point score at Bells (162.5, or averaging better than a 2nd place finish). In my eyes, this makes him an obvious choice for this event. His high price is outweighed by his even higher average finish.
Another standout is Sebastian Zietz, with an average point earning of 115.3 (better than quarterfinals, on average) and a mid-range price of $6.5 million.
However, when you look at all of his performances in the individual ranking plots, it appears he’s not quite as good of a buy as you’d expect. His median result is actually a 9th place finish, with two 9ths, a 13th and one event win. That win is a major outlier, and it distorts his averages to make him look like a better buy than he actually is. With that eliminated, his average drops below 80 points, putting him much closer to the average value for surfers in his price range.
To assemble my team, I used the relatively simple strategy of picking surfers who showed the greatest deviation above the regression line (the overperformers) until I ran out of budget. Eliminating Zietz, this left me with the following seven surfers: Italo Ferreira, Julian Wilson, Ezekial Lau, Caio Ibelli, Jordy Smith, John John Florence, Jessie Mendez, and Leo Fioravanti as my alternate.
Obviously, there are a few issues with the vis as it stands. For one, there’s almost no information about the rookies, because they usually don’t have results from past years. I think there’s an argument to be made that rookies are generally a bad Fantasy Surfer pick, because they don’t tend to be top performers, but it’s still a shortcoming that I want to address as the season goes on.
Another issue is that the data I’ve used is very gross. Looking only at average rankings doesn’t tell you much about how that ranking came to be—it’s possible that a surfer could be in top form and get knocked out in the first round by the eventual event winner, which would misrepresent their performance for that event as worse than it might have actually been. Average heat score over the course of the contest (especially if it’s normalized against everyone’s average heat score for the contest) might be a better indicator of performance. As it stands, that data is hard to extract from the WSL’s website and I’d have to do a bit of digging to pull it out and add it to the tool.
Historic surf conditions and how they relate to individual performances would also be interesting to look at. For example, if an upcoming contest was forecast to have waves in the waist-high and smaller range, I would pay more attention to performance in similarly small conditions and place less emphasis on results from years where the surf was bigger or heavier.
In sum, there’s a lot to improve on with this visualization, but it provides a starting point for predicting performance and building a fantasy surfer team. Bells will wrap up by tomorrow evening, and I’ll have my first set of results to look over and begin to make changes from there.