WOW! What a season…
If you don’t already know who I am, my name is Kieran AKA @berryhorse29 on Twitter. I do a lot of things, but most people reading this likely know about me because I’ve built, shared, maintained and posted about an MLB projection model intended to be used in betting markets.
I made a report fairly similar to this at the All-Star Break, and you can read it here if you’re interested.
This post is intended to be equal parts insightful, entertaining, and nostalgic for those who followed the model during the season with me. I don’t recommend taking any actionable ideas from it, and as always this is certainly not investment advice.
What even is “The Model”?
The model is just a projection system used to calculate an estimated probability of a baseball team winning against a certain opponent. Most of the analysis below will be of the specific betting system that I used to track its performance and manage my own personal fund or bankroll. There is a HUGE distinction between evaluating a model and evaluating a betting system associated with it.
There are infinite ways to attempt to maximize profit using an underlying model. All of the options carry trade-offs between stability, efficiency, and returns. None are “right” or “wrong” – I view staking systems and bankroll management as an extremely personal topic that depends on an individual’s risk tolerance, and specific situation in life.
The system that I tracked worked like this:
- All bets were on the money-line of the team with value
- Bets were placed on all teams with a greater than 5% edge in implied probability
- “Units” were exactly equivalent to the %-edge of a team. So if a team had 7.25% edge in a game, the unit size would be 7.25 units for that game.
- “Units” were “to win” on favorites and “risk” on underdogs. So a bet on a +150 underdog with 6% edge would be 6 units risked to win 9 units, and a bet on a -150 favorite with 6% edge would be 9 units risked to win 6 units.
- I am a human being. I do not (yet) have a script to automatically place bets for me when lines move or daily lineups are released. Because of this, betting and tracking the system required a good amount of human effort. I did not uniformly use all “opening lines” or all “closing lines” to track the system’s performance. Once daily lineups were released and my model adjusted for them – I would bet/track a game (and subsequently tweet it to my twitter followers) at any line that had value as soon as I saw it.
- I did not ever try to “time” my bet by anticipating a favorable line move to create even more value
- As a young guy with many hobbies and interests outside of clicking “refresh” on the screen in the middle of the day, every single day this summer, there were a handful of scenarios where my schedule precluded me from identifying value in a game before first pitch (I recall four specific scenarios). In these situations, I tracked the bet using the closing line at Pinnacle – if it met the 5% threshold. If the line moved across the 5% threshold while I was busy and missed it, but then moved back to being less than 5%-edge and closed there, I would not track the bet at all (I personally missed the value).
- All lines used were from Pinnacle.
- All of the above criteria were selected in an effort to make it “tougher” on myself and the model. Beating Pinnacle in the long run is harder than most other books. Beating closing and intermediate lines in the long run is harder than beating opening or early-morning lines. Given the consistent closing line value on the bets from this system, the performance would be even better with a script that optimized to place bets ASAP. If the model can succeed consistently under the conditions I used, I’m confident that anyone consuming or using it can do as well, or better, with it.
- As explained in the mid-season report, the model and system are designed to be used up to September, but not through it. It is heavily based on projections and so the disagreements in September are likely to be nonsensical and mostly useless.
How did it do?
Really well actually.
Some might say incredibly well.
Here are the results of betting the system described above from April 16 to September 2 (when the last week of August ended).
You’ll notice an arrow marking the date that I decided to make my first public post about this: May 20, 2018. It’s important for me to be transparent about what is publicly verifiable.
Every single bet since then has been posted on my Twitter (other than the 4 games I missed because of scheduling conflicts – though I believe I even tweeted out three of those after catching it in the 2nd or 3rd inning for those interested in live-betting) – you’re welcome to go through and verify the timestamps on them. I even believe the results from April 16 through May 20 can be verified in the edit history of the Google Doc tracking all of this if you really insist on doubting me and think that 14 thousand people decided to follow me in 5 months because I’m a lying and fraudulent loser with evil intentions.
The peak, in earnings, of the season was after the games on August 4 – where the record stood at 175-145, +539.8147 units, +22.00% ROI (this last number really satisfies my OCD). The biggest fall from this peak was to +377.6284 units on August 24th – a drop of 162.1863 units or 30.0% of the peak value on August 4.
For some investors, this volatility is undesirable because humans are emotional and it is difficult to psychologically endure negative streaks like those middle weeks of August. I will present some potential alternate bankroll strategies later below for those unwilling to assume that amount of risk. I’ll also share some of the strategies that I used which were even riskier/greedier than the one I tracked.
One promising aspect of the betting system that I tracked was the relationship between %-edge and ROI. Below are the sub-sets of results on games with a greater than 7.5% edge and 10% edge respectively.
The reduced sample size, particularly with the >10 unit bets, is less than ideal but I do think the results paint a positive picture of the model’s ability to gauge “confidence” in a bet.
One other very encouraging sign about the model: in the 417 games with more than 5%-edge, the sum of the model’s probabilities of the teams it bet on was 214.9. As shown above, 214 of them actually won. I think it’s awesome that the model came within a single game of nailing the exact number of games it expected to win (yes, it often bets on games it “expects” to lose).
How did each team do?
In my very first “Hello World” post on May 20th, before any of this began, I included the note: “I refuse to bet on the royals or orioles because after watching many of their games I’ve concluded that they are a special type of shitty that no model can quantify.”
This phrasing may come across as extremely lazy and degenerate, but it was my best way to convey “these teams suck” without bombarding everyone with a bunch of sabermetrics they don’t understand. Below are the results of the betting system with bets on those two teams removed.
I cannot emphasize enough that this is not a “normal” protocol. I do NOT want to encourage anyone to copy it. I never go into a season thinking “I wonder if I can identify the two worst teams in the league before the season starts, and just black-list them from my model this year.” It just so happened that in 2018, there were two teams who could be reasonably predicted to have historically horrible seasons by analyzing some key stats. This rarely happens.
As for the other 28 teams with Major League players on them, here’s a breakdown of the earnings and ROI from betting on each team:
- Anyone who followed the model this season knew that Tampa Bay and Detroit would be the two biggest winners, but it is interesting to see just how much they won. For every $1.00 we risked on the Rays this year, we got $1.82 back…
- One cool quirk is that only six teams lost more than a full unit on the season.
- Amazingly, the model found value exactly 0 times betting on Atlanta. It does make sense – as a team that “overachieved” this year, the projection system did not really account for them being as good as they were. It continued to doubt them while the market was quick to (c)hop on the bandwagon.
- I am surprised at how the A’s were so low, although all of this was skewed by a –22 unit swing on the weirdest walk-off of the season and a blown save by the best closer in baseball.
And here is the breakdown by team of the best “fades” this season – the results for betting against each of the 30 MLB teams.
- Again, no surprise to any long-time follower here: the Angels stand head and shoulders above everyone else on this list. Perhaps it was the international popularity of Ohtani, or people’s appreciation of Mike Trout. Who knows why, but the Angels were being priced as a 95 or 100-win team for most of the season until September. Not complaining…
- Somehow it never bet against the White Sox – I think this has almost all to do with the market consistently underrating them. The model was not particularly high on them at all, so the fact that there was never an opportunity to bet against them means that the market was REALLY low on them.
- There was often a lot of pushback when fading the Red Sox, Yankees, or Astros. You’ll see in this graph that fading NYY and HOU netted nearly 70 units, while BOS only cost us 9 (and fading BOS was actually fairly profitable when excluding the ever-avoidable BAL losses).
- It bet against ATL a ton, to a good amount of success. I don’t have this answer readily available, but I’m willing to bet that 85+% of the ATL fades were when Kurt Suzuki was subbing in for Tyler Flowers at catcher. This downgrade is one of the biggest among position players in the MLB per my model, and is not at all captured in the market. It paid off handsomely.
TELL ME WHAT A UNIT IS ALREADY!!!
Again, I’m never going to “answer” this question without a measured interview and audit of someone’s life and financial situations. It is not my job to manage risk for others (it’s really not my job to do a single thing for anybody reading this, actually, considering it’s all free and I work for no one).
Here are some potential ways to make the betting system I’ve proposed less, or more risky.
If we’re aiming for the convention of having the average bet size rest between 1% and 3% of a bettor’s bankroll, using 1 unit = 0.25% of bankroll is a good starting point. With this strategy the returns look like this:
The fund still returns more than 122% over four and half months, ending at 222.02 units after starting at 100 (I think that’s good?) and pretty significantly minimizes the downside. It would require an apocalyptically bad stretch of luck for the fund to ever be threatened, and the volatility is reduced as well. On August 4th the fund peaks at 234.95 before falling as low as 193.35 on August 23. This 41.6 drop is only 17% of the fund now, compared to the 30% of the system explained above. Another way to potentially reduce volatility and risk is to use a threshold higher than 5% as the cut off. As documented above, win-rate and return on risk increases as the threshold does.
For those brave souls who want an even greedier methodology than the one I tracked – perhaps consider reducing the threshold for increased volume but decreased ROI. Perhaps you can scale the unit sizing more than linearly with the %-edge. Anything more than quadratic would be completely reckless and make the smaller bets meaningless, but something slightly super-linear may make sense if you truly are ready to “risk it all.” Maybe you can test the efficacy of betting -1.5 run-lines and reverse run-lines for increased return. There are a billion ways to get clever around designing betting systems for this model. The one I’ve tracked is not optimal for everyone – it may not even be optimal for anyone.
Time to say goodbye
If you’re still reading this, I KNOW you were a follower during the regular season. Everyone new would have closed this post by now after doubting the results above or growing tired of reading about how great our summer was. I totally understand that we’re all in different situations, but if using this model helped you make any money at all, I think it’d be really cool to give some back to those who need it. I’ll link some baseball-related charities below, but if you have one that means extra to you, that’s awesome too.
Tampa Bay (Go Rays!): Joshua House – a safe haven for abused, abandoned and neglected children.
Dallas/Arlington (Rangers): Miracle League – provides an opportunity for children with disabilities to fulfill their dream of playing baseball.
Cincinnati (Reds): Crayons 2 Computers – bridges the gap between families in need and education.
Detroit (Tigers) JRLA – an open enrollment, public charter high school on the northwest side of Detroit.
Stand Up To Cancer – funds and develops the newest and most promising cancer treatments to help patients today.
Getting to this point means you at least have a computer or phone and access to the internet – life can’t be THAT tough. I hope you can find even just $5 to pass along.
THANK YOU, THANK YOU, THANK YOU to everyone. It’s amazing how many people cared to follow along this summer. Whether the model changed your perspective on projection systems and betting, helped you make some extra gas or golf money, or even if you were throwing around dimes on the games, I hope it was able to provide at least a little bit of value to you.
And of course, I can think of no better way to tie a bow on the epic 2018 MLB Season than with one more pic of Alexis Ren. No matter what improvements I make in future iterations of my work, she will always be the greatest model on Earth (for context: she became the official “Mrs. Horse” halfway through the year as a celebratory .gif).
I realize this is extremely juvenile and makes me lose credibility, but I’m 23, filled with testosterone and, frankly, don’t give a fuck what you think about it.
Just 147 days until Opening Day 2019!
– Kieran (berryhorse)