For many of my start-upy, technical friends, this is a common scenario. You work for a company, lets call it Alpha, and it pays you well. Then another company, a new startup called Beta, comes along and offers you a job. However, because Beta is new, they can’t pay you the high salary that Alpha can. So, instead, they offer you a modest salary plus stock options that vest over a period of time. They also present good evidence that the value of those options will grow fast and that by the end of the vesting period they will be worth more than enough to compensate for your reduced salary.
Assuming you like everything about Beta (great location, cool people, neat projects, etc), and this question of compensation is the only remaining factor in your decision to accept or reject the offer, how can you think about it analytically?
One way is to think about it in terms of gambling. If you accept the job, you are in effect placing a bet. Your hope is that, for the cost of your bet, the gamble works out in your favor, and you are awarded a payoff. In this scenario, the bet is the money you are losing by accepting the lower salary, and the payoff, is the value of the options, at the end of vesting period.
Lets say, for the sake of argument, that the vesting period is 5 years, and you believe there is a high chance your options will be worth $500,000 by the end of it. Lets also say that you are making $100,000/year now, and that Beta is offering $80,000.
Finally, lets put a concrete value on your confidence that those options really will be worth $500,000 after 5 years. After a lot of research, you’ve determined that there is an 80% chance that things will pan out in your favor. That you will “win the bet”.
With this in hand, you have all the pieces needed to apply the Kelly Formula.
The Kelly Criterion (or Kelly Formula, or Kelly Bet), is a formula that can answer questions of the form,
“If you have $100, how much of that should you bet for a 60% chance to win $50?”.
The Kelly Formula gives the mathematically optimal answer. In our case, the question is something like,
“If I make $100,000 a year, how much salary reduction should I accept for an 80% chance of earning $500,000?”
To summarize our scenario above, we have the following:
Current Salary = $100,000/year
Reduced Salary = $80,000/year
Vesting Period = 5 years
Predicted Vested Value = $500,000
Chance of True Prediction = 80%
By accepting this offer, you are making a “bet” of 5 * $20,000 = $100,000, on an 80% chance to get $500,000, in return. We can use the Kelly Formula to tell us if this is a good idea.
The Kelly Formula is:
x = (PW - L) / P
Here, W is the chance of “winning”, in our case 80%. L is the chance of losing, which would be 20%, and P is the “Payout” which is how much is earned back for every dollar spent. In our case the Payout would be 4, since we are losing $100,000, but winning $500,000, for a net profit of $400,000, or a 4:1 return.
The result you get, x, is how much you should bet, as a percentage of your current bankroll. So, in our case, the math works out as follows:
x = (4 * .8 - .2) / 4
= 0.75
This is saying that for an 80% chance to earn back money at a ratio of 4:1, you should be willing to bet 75% of your bankroll. In our case our bankroll is your current salary over 5 years, or $100,000 * 5 = $500,000. 75% of that is $375,000.
But, in our scenario, the offer from Beta proposes just a 20% salary reduction, which is $100,000 - a significantly smaller bet than the $375,000 that Kelly Formula says you can optimally make. By the math, this is a great deal, and you should take it.
Well, maybe. Although the math says you should be willing to accept a 75% salary reduction for an 80% chance to earn back at a rate of 4:1, there is a big problem with this, which is that, like anything involving probability, the correct outcome only emerges after many trials. Just like how I could win a single hand of poker against Phil Ivey, but could never beat him in a match, a single application of the Kelly Formula could still end up being a loss for you, even if multiple applications is a mathematically optimal strategy and a near guaranteed win.
So, in practical use, the Kelly Formula is best employed in situations where there are repeated trials, such as the stock market, or actual gambling. Using it to make decisions on single trial situations, such as a job offer, is probably not the best idea.
Still, I don’t think it’s entirely useless in this context. The math says you should be willing to lose up to 75% of your salary for the potential return. I think this says something about the strength of that potential, and I think it puts into better context just how good or bad the proposed 20% salary reduction actually is.
Here’s some example code. It’s generic and not specifically tailored to the example above, but still, it may be a good starting point for your own explorations.
# Kelly Criterion is:
# x = (PW-L)/P
#
# or equivalently
# x = W-(L/P) # see https://en.wikipedia.org/wiki/Kelly_criterion#Gambling_formula
#
# Where:
# x = percent of bankroll to bet
# P = payout (ie, how much money is made or lost for every dollar bet, given as "P to 1" or "P:1".
# So for a 2:1 payout, P=2 and on a bet of $1, a win earns $3, that is you get $1 back plus an additional $2).
# W = percent chance of winning
# L = percent chance of losing (1 - W)
#
# Useful references:
# "How to Calculate the Kelly Formula"
# https://www.fool.com/investing/value/2006/10/31/how-to-calculate-the-kelly-formula.aspx
# "Christopher_Vaughn_Mathematics of Gambling the Kelly Formula"
# https://www.youtube.com/watch?v=k6gqlK6UZhQ
def PrintStats(P, W, x):
print("\nOn {:.0f} percent chance of $1 becoming ${:.0f}".format(W*100, P+1))
print(" Payout: {:.2f}:1 ".format(P))
print(" Win Probability: {:.2f}".format(W))
print(" % of bankroll: {:.4f}".format(x))
def CalculateKelly(P, W):
L = (1.0 - W)
x = ((P * W) - L) / P
return x
def AnalyzeOffer():
# On possibility of $1 becomes $2.
P = 1
W = 0.6
x = CalculateKelly(P, W)
PrintStats(P, W, x)
# On possibility of $1 becomes $4.
P = 3
W = 0.15
x = CalculateKelly(P, W)
PrintStats(P, W, x)
# On possibility of $1 becomes $8.
P = 7
W = 0.05
x = CalculateKelly(P, W)
PrintStats(P, W, x)
#On possibility of $1 becomes $16.
P = 15
W = 0.01
x = CalculateKelly(P, W)
PrintStats(P, W, x)
AnalyzeOffer()If you’d like to learn more, I recommend these resources.
“Understanding Kelly Criterion”, by SbrJustin
This gives a good understanding/intuition for usage.
“Mathematics of Gambling: the Kelly Formula”, by Christopher Scott Vaughen
This shows how the formula is derived, and as a result of understanding the derivation, it explains why it works. This video is excellent - exactly what I was looking for to understand the concept.