# What’s an Opt-Out Worth?

After Manny Machado and Bryce Harper signed their gargantuan free agent deals, dominos began to fall left and right across baseball — if you’re of sound body and mind, you probably recently signed a multi-year extension with a major league franchise. When a star signs a new contract of any type, articles analyzing the contract’s value are never far behind, and this recent extension spree has been no exception. I wanted to get in on the action, but the analysis has already been done for the most part. Search for a player who recently signed a contract, and you’ll find FanGraphs analysis of it, likely with some dollars-per-WAR analysis. Chris Sale? Jay Jaffe’s got you. Kiley McDaniel covered Eloy Jimenez’s extension. Justin Verlander? Jaffe again. You get the idea. Craig Edwards even wrote about Harper vs. Machado in an exhaustive level of depth, down to figuring out state taxes.

What’s an author to do? Well, there’s one angle that hasn’t been covered for a while, believe it or not. More accurately, it’s been covered by a combination of shrugs and mathematical hand waves: the value of the opt-out in Machado’s (and Nolan Arenado’s) contract. The reason these haven’t been sufficiently covered is simple — they’re difficult to value. If we want to figure out how many wins a player projects for, a methodology exists for that exercise. Sprinkle in a little of the aging curve and the dollar value of the contract, and there’s one level of analysis. If you want to put everything in present-day dollars, it’s just more arithmetic, but the basic shape remains similar. Introducing opt-outs, however, is a step in a wholly different direction.

The chief difficulty in placing a monetary value on a player option is that it depends on uncertainty and on multiple possible states of the world. The other things that go into contract valuation are just point estimates. How many WAR will this player be worth on average? What’s he being paid? How many years? These are single numbers. How often will a player opt out? That’s nowhere near as straightforward. It requires modeling, whether formalized or just done through iteration. Well, I built a little toy model to approximate the value of opt-outs. Is it perfect? Most definitely not. I think it’s broadly accurate though, and the process of making it was fun and educational for me, so I thought I’d share it here.

I’m going to lay out the ugly details of the way I built it in the subsequent paragraphs, but if you just want to see the conclusion, head down to the bottom. I should note that I’m far from the first person to attempt to value player options. Over at The Hardball Times, Matt Swartz outlined a blueprint for thinking about opt-out costs that roughly mirrors the bare bones of my approach, though done via formula instead of iteration. FanGraphs alum Eno Sarris took a shot at estimating the value of David Price’s contract using a percentile-based method. Lastly, Jeff Quinton discussed the reasons teams and players might prefer opt-outs from a psychological standpoint. These are all great resources, and I think my research complements theirs nicely.

### Methodology

The first thing to do is to define the structure of a contract with an opt-out. Let’s keep it simple — a player gets a set salary for a given number of years. At the end of those years, he can choose to become a free agent. If he does, that’s it, he’s a free agent. If he doesn’t, a new salary (could be the same, could be different) kicks in for a set number of years. In Machado’s case, he’s making $30 million a year for the first five years of his contract, at which point he can opt out. If he does, it was a 5-year, $150 million contract. If not, he locks himself into another five years at $30 million a year, for a total of 10 years and $300 million.

Next, we need to figure out how players’ projections change over time. I write for FanGraphs now (still feels strange to say), so I could presumably sneak into the super-secret author’s lounge and pester Dan for the keys to the ZiPS castle, but I actually already had the data for this before writing here. Why? Because Dan publishes ZiPS projections online every year via his Twitter. What a guy. In any case, I found the YoY standard deviation in ZiPS estimates (for above-average regulars, players projected for more than 2.5 WAR in year one) to be around 1.4 wins. I did a little bit of checking to make sure I wasn’t making any crazy assumptions — old players don’t seem to be significantly more volatile than young players, and stars don’t seem differently volatile than more run-of-the-mill good players.

Those are obviously subjects that could be investigated more — in his piece, Matt Swartz found an average change in WAR between .7 and 1, which would imply a standard deviation between 1 and 1.4, though, so it seems we’re in the right ballpark. While we’re at it, let’s toss in aging — half a WAR a year for every year 30 and up. This model is going to be for position players, because pitcher aging is too weird and discontinuous.

Armed with the definition of a contract and a rough sketch of variation in player ability, we next need to figure out why a player would opt out. In one sense, it’s very straightforward — they will opt out if they could secure a new contract larger than the post-opt-out period of their current one. Let’s say, for example, that Machado thinks he will be able to get a 5-year, $200 million contract after 2023. He’d be a fool not to opt out, as he’s making $50 million by doing it. Conversely, if he projects to receive only a 5-year, $100 million dollar contract, he should stick with his current deal.

The past offseason obviously raises questions about what teams will pay for free agents, but for the sake of modeling simplicity, I’m assuming teams will pay a market rate per WAR. What market rate? Well, I started with $8 million per WAR. Looking at past estimations of WAR cost led me to estimate that the cost of a win increases by around $250,000 a year, with some noise around that, which I modeled as an $800,000 standard deviation. When a player reaches his opt out, we can work out how many WAR he projects to be worth over the balance of the contract, apply a dollar value to that, and compare it to his current contract. If the value of his prospective new contract is higher than what’s remaining on his first contract, he opts out. Otherwise, everyone stays one big happy family until the end of the original contract.

That, in a nutshell, is a stylized way of thinking about whether a player opts out. There’s still one problem to be solved, and that’s scale. The plan — to randomly bump a player’s skill level based on a normal distribution and an aging curve, then randomly bump the cost of a win based on a normal distribution and some drift, and repeat until you get to the option year — makes sense. The process needs to be done many (many, many) times in order to yield meaningful results, however, which is where computer programming comes in.

The Monte Carlo Method is designed exactly for problems like these. In essence, it runs the process millions of times and takes the average result. There’s good intuitive sense in that — the expected value of something is what you’d expect it to be worth, on average, over time. What better way to find what something is worth on average over time than by literally projecting it 10 million times and averaging the results? I’ve written up a Python script to run exactly the process described above if you’re inclined to dig into the minutiae.

If you’re reading through the script, I’ll quickly explain one little mathematical flourish (I do like to show off that I know math sometimes). Let’s say we have a 3.5-WAR player at age 33 and we want to project the wins they accrue from age 34 to 37. One way to do it would be to go through and iterate a half-WAR-a-year penalty, like so: 3, 2.5, 2, 1.5. That’s not a very generalizable method, though, and it’s inelegant. Instead, I thought of it like this — what if you took the total 4-year projection as 3+3+3+3 and then subtracted out some total aging penalty? The amount of wins that get subtracted by year are easy to work out — .5, 1, 1.5, 2, etc. That makes the sum total of wins lost to aging after n years look like this: .5, 1.5, 3, 5, and so on. Luckily, that’s half of the series of triangular numbers, and that series can be expressed as n(n+1)/2. This has been today’s edition of Ben Knows Some Math.

### Application

Now that we have a model, let’s use it! A quick look at ZiPS shows Machado projected for 5.4 WAR this year. Using a naive aging curve and assuming no opt-outs, here’s what his contract would look like:

Year | WAR | Salary ($m) | $/WAR |
---|---|---|---|

2019 | 5.4 | 30 | 5.6 |

2020 | 5.4 | 30 | 5.6 |

2021 | 5.4 | 30 | 5.6 |

2022 | 5.4 | 30 | 5.6 |

2023 | 4.9 | 30 | 6.1 |

2024 | 4.4 | 30 | 6.8 |

2025 | 3.9 | 30 | 7.7 |

2026 | 3.4 | 30 | 8.8 |

2027 | 2.9 | 30 | 10.3 |

2028 | 2.4 | 30 | 12.5 |

Total | 43.5 | 300 | 6.9 |

Looks like a steal, right? $6.9 million per WAR seems like a bargain even after this winter’s free agency slowdown. Let’s do the same for Harper and Arenado:

Year | WAR | Salary ($m) | $/WAR |
---|---|---|---|

2019 | 4.8 | 30 | 6.3 |

2020 | 4.8 | 26 | 5.4 |

2021 | 4.8 | 26 | 5.4 |

2022 | 4.8 | 26 | 5.4 |

2023 | 4.3 | 26 | 6 |

2024 | 3.8 | 26 | 6.8 |

2025 | 3.3 | 26 | 7.9 |

2026 | 2.8 | 26 | 9.3 |

2027 | 2.3 | 26 | 11.3 |

2028 | 1.8 | 26 | 14.4 |

2029 | 1.3 | 22 | 16.9 |

2030 | 0.8 | 22 | 27.5 |

2031 | 0.3 | 22 | 73.3 |

Total | 39.9 | 330 | 8.3 |

Year | WAR | Salary ($m) | $/WAR |
---|---|---|---|

2019 | 5.2 | 26 | 5 |

2020 | 5.2 | 35 | 6.7 |

2021 | 4.7 | 35 | 7.4 |

2022 | 4.2 | 35 | 8.3 |

2023 | 3.7 | 35 | 9.5 |

2024 | 3.2 | 35 | 10.9 |

2025 | 2.7 | 32 | 11.9 |

2026 | 2.2 | 27 | 12.3 |

Total | 31.1 | 260 | 8.4 |

Harper and Arenado both come in right around my initial assumption for the cost of a win, which is a good sign. With this no-option math done, let’s start thinking about what happens if they opt out. Machado projects to opt out of his contract about half the time. Let’s break down those two possibilities. In the average case where Machado opts out after five years, he accumulates 31.3 WAR in those years. That’s a phenomenal level of production, which makes sense when you consider that it’s more or less the 75th-percentile outcome for Machado (the average of the top half of outcomes), give or take the difference between mean and median. In those cases, the Padres get an absolute steal — they pay about $4.8 million per win. What’s not to like?

Well, in the other half of cases, Machado’s 10-year WAR total (all 10 years, to be clear) comes out to 26.3 WAR on average. That’s right — in the cases where Machado stays, he’s worth less over his full contract than he’s worth in the first five years in the good case. As you might surmise, that’s a much worse deal for the Padres — $11.4 million per win, in fact, though they of course still get to enjoy his 26.3 WAR worth of production. Here’s that data in a table, along with the aggregate cost of the deal accounting for the optionality:

Condition | Odds | WAR | Salary ($m) | $/WAR |
---|---|---|---|---|

Opts Out | 50.3% | 31.3 | 150 | 4.8 |

Stays | 49.7% | 26.3 | 300 | 11.4 |

Overall | 100% | 28.8 | 224.6 | 7.8 |

This comes a lot closer to looking like an efficient market. Machado’s contract will pay him roughly $7.8 million per WAR if you believe my model and my interpretation of the ZiPS projections, within hailing distance of Harper’s $8.3 million per WAR. If you think ZiPS overrates Machado or underrates Harper, or even if you just want to give Harper, the 2019 MLB The Show cover athlete, a little extra credit for marketability, the two deals look very competitive with each other.

There’s still one issue to clean up, though — what about Arenado’s contract? He has an earlier opt-out, and his contract was already comparable to Harper’s in cost-per-WAR. First of all, he appears to be less likely to opt out than Machado. While that might seem odd given that his opt-out is sooner, there are a few mitigating factors: He’s older than Machado, his contract carries a higher average annual value in the back half, and he projects worse than Machado today. All three of these combine to tilt him towards staying more often than Machado does. How does that look over both possibilities?

Condition | Odds | WAR | Salary ($m) | $/WAR |
---|---|---|---|---|

Opts Out | 40% | 17.4 | 96 | 5.5 |

Stays | 60% | 22.1 | 260 | 11.8 |

Overall | 100% | 20.2 | 194.4 | 9.6 |

If I’m valuing the opt-outs correctly, Arenado’s deal compensates him significantly more per WAR than Harper’s or Machado’s. To some extent, this makes sense — the Rockies surely felt a lot of pressure to extend the face of their franchise, and they did it by compensating him well enough that he wasn’t tempted to wait for free agency. On the other hand, wait, what? Free agency is supposed to give you more leverage because you get to negotiate with more teams. Maybe the Rockies are higher on Arenado than ZiPS. Maybe my model’s wrong (again, I don’t think so). Most likely, though, the Rockies decided they were going to go out and sign Nolan Arenado, and he said he wanted eight years and $260 million with an opt-out.

Sometimes, for all the modeling and theorizing, baseball is simple that way. One of the best players in Rockies history is going to remain a Rockie, and in that sense, it seems like a pretty good deal for everyone involved. We math nerds can have our fun building theoretical models, and Rockies fans get to see Arenado for the next eight (or three!) years.

Ben is a writer at FanGraphs. He can be found on Twitter @_Ben_Clemens.

An alternative way of doing this is using binomial trees (basically positing an “up” state and a “down” state that average out to the projected WAR of the player). I did this with Tanaka and Kershaw when they simultaneously signed deals with opt-out clauses: https://community.fangraphs.com/comparing-kershaw-and-tanakas-opt-out-clauses/. I didn’t put a lot of effort into getting the trees perfect, because I was going for an order-of-magnitude estimate.

Yeah, this makes sense. The Eno article I linked to was basically using a polynomial tree (it split out 10 different outcomes and weighted across those). That method is appealing because you can do it without having to brute force it in code, and it seems to get to similar outcomes, so if you’re trying to get orders of magnitude it definitely is in the same ballpark (baseball joke bam). I just couldn’t resist dressing it up a little and doing the continuous probability distribution way instead of trees, but I think we’re both using a similar method, and would probably get to similar outcomes.

Like the guy above said, you should use binomial or trinomial trees for pricing the option of an opt-out. However, it will require some difficulty as you’ll need two volatility parameters: player value vol and win value vol, since the price of wins will also impact the opt-out. This actually intrigues me, so i’m going to mock up something later, thanks for the inspiration!