A pricing model for CryptoCup bets (my attempt at doing sports for a living)
Just from the look of the profile picture above this article I’m sure you've figured out that my VO2 max is not competitive for the Tour de France. So here's an alternative plan.
My friend Federico, who was my cofounder at Sherpals, has been working since earlier this year on CryptoCup. CryptoCup is an Ethereum Dapp version of a traditional office betting game that is played in Argentina during the FIFA World Cup (the world championship for the type of football that is actually played with feet).
The classic game is called “PRODE” (short for Prónostico Deportivo, spanish for Sports Forecast) and the way it's usually played involves a fragile and intricate Excel spreadsheet that someone created ages ago. People pay a nominal amount of money that goes into a pot, then fill in their predictions into the spreadsheet.
As the World Cup progresses, the Spreadsheet of Doom rewards them with points for each correct prediction. At the end of the World Cup, whoever got the most points wins the entire pot. More importantly, the winner gets bragging rights. In this primitive ritual, Homo Sapiens Officius Argentiniensis seeks to establish his dominance over the rest of his tribe (if you didn't read that in David Attenborough’s voice, you should have).
From what I hear, USians have their own version of this phenomenon with the NCAA March Madness, to a similar effect.The fundamental thing to understand is that players of the PRODE game predict the entire World Cup (all 64 matches) and playing is therefore a complicated endeavor that can take more than an hour.
CryptoCup is similar to its office ancestor, except you play it on a Web3 enabled browser, by paying to play and receiving prizes in Ether. There's also a twist to the original game, because CryptoCup has two stages:
- The betting phase: People can pay to purchase a ticket and fill in their predictions. This stage finishes a few hours before the beginning of the World Cup (and it's been over for approximately a week as I write this).
- The marketplace phase: Even though people can't buy new tickets once the World Cup begins, they are able to trade their bets by buying or selling other people’s bets on a marketplace. This is the phase we are in right now.
I have to say that in my personal, highly biased opinion, CryptoCup is a huge success. Around 800 people bought tickets and are disputing their share of a pot of 56 eth (over $30K these days). But the best part is that as a player you suddenly start caring about the results of every single game, and you get to talk about them and complain about bad referee calls with other crazy people in a 2000-strong Telegram group.
Analyzing the market
During the betting phase the winning strategy is clear: make the most accurate bets. But that was then and this is now. Is it possible to make a profit by discovering underpriced bets in the marketplace and buying them?
As I’m writing this, there are 87 tickets for sale in the CryptoCup Marketplace. My informal, at a glance analysis of the market during the last few days told me that the prices at which tickets were being sold ranged from “overpriced” to “get the fuck out”. Still, properly establishing a reasonable price for a bet is complicated.
For example, this guy (n0x) has done a solid job so far and is ranked in the 5th position. He has 85 points so far. According to the leaderboard, his current position, should he keep it until the end of the game, would determine a reward of 1.89 eth. Yet for some reason the token is listed at 20 eth. To make matters worse, the largest possible payout for a single ticket based on the amount of people that have played the game is around 10 eth.
One of the interesting things about a game built on the Ethereum blockchain is that it's entirely transparent. All the rules are public, and all the player interactions are public. This means we know:
- What each bet predicted in terms of match results (there's even an API!)
- What the exact mechanism for scoring the bets is
- What the exact mechanism for distributing rewards is
- What price each ticket is being sold at
- The results of the matches that have been completed until now
Really, the only thing we don't know is how the remaining matches are going to go. Or do we?
Kicking it up a notch
Here's the unsurprising fact of the day: I suck at predicting football results. But some friends at the University of Buenos Aires have been doing this kind of thing for a while and recently put out a website called 301060 where they publish some very useful information about their models of FIFA World Cup games.
So long story short: last Sunday I called my friend Saveliy Vasiliev who had been working on the 301060 website and asked him if he could run some simulations for me. Using their model, they can generate World Cup results with a realistic distribution, and we can use that to see how the different bets on CryptoCup score and what kind of payout they get.
The process is something like this:
- Generate a full World Cup simulation, including the known results so far
- Score every existing ticket in CryptoCup for that World Cup outcome
- With that score, rank the tickets
- Calculate the payouts for each ticket based on the ranking
- Repeat the process a few thousand times and get some average payouts for each ticket
Once we have that, we can compare the expected reward for a given ticket to the price that it's being offered at. If we can buy something for cheaper than its expected value, we should expect a positive return. Yes, I realize there are at least 25 billion implicit assumptions in this paragraph. Yes, I can read your mind. No, we can't continue this mental conversation, please continue reading.
Becoming an overnight millionaire
How's that for some wishful thinking? Unsurprisingly, it turns out that according to Saveliy’s simulation most tokens available for sale are indeed very overpriced right now. As a matter of fact, there is exactly one CryptoCup ticket that is being sold below its expected value right now. So there goes my sports betting career.
Here are some interesting data points:
- Ticket #239, currently at 619th, is the only underpriced ticket for sale right now (expected payout of 0.05 eth, but for sale at 0.033 eth)
- Ticket #254, currently at 91st, is the most overpriced ticket (selling at 2 eth, 2817x its expected payout of 0.0007 eth)
- Ticket #46, currently at 7th, is the best ticket in the game at this point with an expected payout of 0.528 eth (current price: 2 eth).
But wait, there's more! The code for generating these simulations is Open Source, plus you get to have the entire spreadsheet to screw around.
So what now?
Generally speaking, the expected payout for every ticket is very low at this point. As can be seen in the chart below, almost all tickets have an expected value under 0.3 eth. The reason for this is that the way the game is designed, most of the CryptoCup points will be awarded later in the World Cup. The current top ranking bets are still under 100 points, whereas the maximum theoretical number of points a single ticket can receive is 1895.
There are many other caveats about this analysis. Other than the very likely possibility that the simulations are fatally flawed because of shitty bugs, there are some simplifications in the code that might affect the final result. Red/Yellow cards are not considered (and they award 40 points). The probabilities taken from 301060 are as dubious as any sports prediction. If I’m totally honest, a cursory look at Ticket #254 (most overpriced) gives me some doubts about the correctness of the results. But hey, Publish or Perish! Finally, the actual match results for the simulation are included up to Wednesday June 20, 2018. So chances are by the time you are reading this, they are outdated already.
That being said, here's my market making offer:
I hereby offer to purchase any CryptoCup ticket at 60% of its expected payout value according to the model above.*
(*) Unless your ticket predicts Argentina to be the champion, based on extremely recent developments. Fuck.
Last but not least
I would like to thank Saveliy for his help as well as all the researchers behind 301060, which I find to be an incredibly cool project. This blog post is truly a case of standing on the shoulders of giants, as the only reason we could put this together in a few days is that the research had been going on for years already.
I’m pretty interested in feedback about this pricing math, or about the article itself. If you have questions or comments, feel free to reach out!