Why the Kelly Criterion Kinda Sucks

We are now officially in the political betting off-season! I think I predicted this is about when it would feel like PredictIt was entering the doldrums, and also I think I promised to do some more data-focused blog posts when this time rolled around. This is sort of going to be one of these, but only sort of. This will be a general betting strategy blog, wherein I gently pick on the famous Kelly criterion. Here’s what I’ll say:

  1. The Kelly criterion doesn’t actually suck, it’s quite mathematically sound and if its inputs are computed correctly it will produce optimal wealth growth.
  2. That said, it’s really hard to achieve or even approach optimality, because many situations require the bettor to generate their own fairly complex functions for calculating the various parameters that go into the Kelly formula.
  3. There are a few situations where it breaks altogether.
  4. If math is not your thing (it’s not really my thing!) you can get by just fine by internalizing some simple lessons that Kelly teaches like “The further the market’s price is from your odds, the more you should bet” or “Don’t blow it all on one bet like an absolute donkey” or “The more certain you are of an outcome, the more you can bet”. At the end of the day, even really good bettors just go on instinct most of the time anyway.

What is Kelly?

Kelly is a way of managing your bet sizing invented by (get this) a guy who’s last name was Kelly. He was a pretty smart fellow, I gather, who did some proper math and wrote a function that will calculate for you the optimal amount of your bankroll to bet on any given proposition in order to maximize your wealth in the magical “long run”. In betting, sizing is a rather critical part of the game! If it makes sense to you that you should bet more when your edge is huge and less when it’s small, congrats, you’ve already internalized the lessons of Kelly. But exactly how much, and how does it vary according to the odds you’re betting? The formula is:

f = p/a – q/b


f = fraction of bankroll you ought to wager

p = the real probability that the proposition happens

a = the fraction of your wager you’d lose if it doesn’t (for a bet at the race track, this is generally 1).

q = 1 – p (or the probability that you lose)

b = the fractional return on your wager if you win. In its simplest form, you can calculate it at a fractional probability price point P as follows:

b = (PsPb) / Pb where

Pb is the average price at which you intend to buy your position and Ps is the average price at which you intend to sell (let’s assume for now that you’re holding until resolution, so Ps = 1).

(So for Pb = 0.5, or 50c, your b is 0.5/0.5 or 1. For Pb = 0.7, or 70c, your b is 0.3/0.7 or 0.43. For Pb = 0.1, your b is 0.9/0.1 or 9. For PredictIt, you’d multiply the (PsPb) term on top by 0.9 to account for the fee on profits).

You can (and should) read through the wiki, but here’s my toy example showing how it works:

Let’s say it’s 2017 and you’re betting on PredictIt on the following question: “Will FCC reverse net neutrality rule in 2017?” It’s November 16th. The market has been pretty quiet, but has suddenly spiked today from 16c YES all the way to 59c. Now there’s a big offer sitting at 37c, meaning you can buy a full $850 worth at 63c if you want it. Should you buy? If so, how much?

(Here’s where we were in the market’s history at that time, I’ve covered up what happens next – will it go up? down? both?).

So we have b already. That is, if we pay 63c for NO we will earn 33.3c per share (37c – 3.7c for fees). 33c / 63c = 0.53. We’re getting a 53% return if it hits! This is not so hard to calculate.

But what about p? What are the odds we give this event of transpiring? Well, you’re a pretty sharp bettor, by which I mean that you can read and you can think a little bit, so you notice that the rules stipulate that in order for YES to resolve, the FCC “shall publish a final rule” to do with eliminating net neutrality. That’s interesting language! What does it mean to “publish a final rule”? Well, rules are written by agencies and then voted on and then submitted to the Federal Register where they are published as final rules. Generally, rules aren’t in effect until published in the Register. Even better, you know that PredictIt had a 2015 market on this same question that resolved according to the Federal Register. There’s just one more piece of the puzzle, which you also happen to know, which is that it takes a while, usually 4-8 weeks, for a rule to go from agreed to by the agency to be finally published in the Register. Armed with this knowledge and the knowledge that the FCC isn’t meeting to consider the rule in question until Thursday, December 14, you now know that it’s incredibly unlikely the final rule will be published by the end of 2017.

Being the sharp bettor you are, you set your p at 0.98 that the contract resolves NO – maybe it gets published before the end of the year but this is extremely unlikely in your view (and you are correct! The market does resolve NO in the end). This also gives us q: 0.02.

You’re also willing to buy and hold, which means that if you’re wrong, you’ll lose everything: a is 1. How much should you wager?

f = 0.98/1 – 0.02/0.53

f = 0.94, or 94% of your bankroll.

Wow, that’s a lot! But it makes sense. After all, this is virtually certain, but it’s not guaranteed so you’re not gonna blow everything on it. You make the bet, filling the order at 37c for YES and taking 63c NO, and, six weeks later, you win. Neato!

You could have bet 100% of your bankroll and made more, but in the long run this would cost you money as those 2%-of-the-time losses would eat into your gains. (Practically speaking, the PI max bet limit means there’s very little difference in the long run between a “full” Kelly bet, a 90% Kelly bet or even an over-Kelly bet.)

What Kelly is good for

The Kelly criterion is best understood (and used) in the gambling world by people betting on horse races (it can be adapted to multi-outcome events) or sports outcomes. You go to the sportsbook, you’re offered a line, and you decide whether to bet and if so, how much. Kelly tells you how much. [Now, many will swear by “half Kelly” or “quarter Kelly” which is only betting half what Kelly says (and so on) with the idea that reducing your sizing minimizes any risk you would otherwise incur for things like miscalculating your edge (i.e. getting p wrong).]

Kelly absolutely and mathematically works. It also jives with common sense. Big edge -> big bet. Little edge -> little bet. It’s particularly useful if you’re a set-it-and-forget-it bettor. But things do get more complicated when you’re trying to apply it to actual prediction market trading (which is what I and many of you readers do). Let’s take a stroll through the practical and theoretical limitations:

What makes Kelly hard to use in a prediction market

1. What is the real probability p anyway? If you think the odds of a fair coin flip are 75/25, you’re gonna lose money betting on coin flips using the Kelly criterion. Bad parameters -> bad results. If your model (which could just be a gut feeling) is off, the formula ain’t gonna save you.

2. The other parameters. You might think getting p right is the hard part (it is a lot of the game!). But getting the other parts right (b and a) is just as important. Think of these two as containing, among other things, information on when you bet. Kelly tells you how much to bet (but just as a fraction of bankroll, more on that later!) but it does not tell you if the price facing you is the price you should pay now or if you should wait until later. Remember net neutrality? Turns out you weren’t that sharp. The real sharps knew the market wouldn’t figure out the Federal Register requirement (not explicit in the rules!) and that the market would spike on the December 14th meeting as illiterate lemmings would gleefully throw themselves off the financial cliff. While 94% of your bankroll was invested at 63c, the real sharps got in 97% of their bankrolls at 25c (okay, you both maxed for $850 but they nearly tripled their money while you only got ~1.5x yours). That’s a big difference!

(A Kelly optimal strategy depends on you getting the parameters right – if you’re off on your entry timing, your return could be too small! Here, entering at 63c for NO was way too premature.)

Now – you can definitely include predictions of price movements into a Kelly framework. You can imagine predicting a probability distribution over prices that you would be able to enter a position at and use these to generate your Pb and thus your b. But that process, getting the entry right, is not covered in Kelly. You have to do that on your own, and there’s not going to be an easily google-able formula for it. Remember that if you’re working on an order book market system (like PredictIt) even the act of placing offers will influence the probability that those offers get filled. It’s not as simple as looking at the market price and plugging that into your Kelly calculator (same logic holds for sports betting – just because a line exists doesn’t mean you should bet it, even if you have an edge at that line… you might hold out in case the line keeps moving into your favor).

To restate: a Kelly strategy is “optimal” if and only if it is parametrized optimally.

3. In a prediction market, you can sell prior to resolution either for a profit or a loss. This not only affects b (whether or not you’re holding to expiry or planning to sell obviously changes your Ps and thus your return) but also means you need to have a really solid way of calculating a. Are you really going to let your position go to zero if the odds move? Or are you going to mitigate your losses by always selling a certain price point? Now your a will be a function of the probability that the price hits your stop-loss and the probability that you don’t change your mind and actually stick with your plan. Again, it’s possible to model this, but as the number of parameters increases so too does the likelihood that you’ll fuck something up. You might be tempted to say “okay fine, I’ll just stick to straight-up bets where if I win I win and if I lose I lose” and you will find Kelly incredibly easy to use in this scenario – but that will come with the tradeoff of not using a better-tuned parameter set (see the FCC market example). Your bets will be optimal but only within the constraints of the style you’ve chosen. Your play won’t reflect the optimal overall strategy if you’re ignoring, for example, future price movements or future changes to liquidity/volume.

4. Real odds change. Kelly adherents tend to come from the sports betting world where lines do move around before the event but usually within a relatively narrow range. You want to end up getting the best of the line (closing line value) most of the time at a sizing set by whatever Kelly fraction you’re betting if the limits permit. Great. But if you’re betting on stuff like politics, lines can move across an enormous range. In fact, the real probability of the event can and does move with time fairly substantially. Kelly tells you how much to bet for a given moment in time, which will commit some of your bankroll at that time. If, later, the real odds have moved (your own p has changed), Kelly may tell you a larger or smaller sizing is appropriate. If larger, no big deal, you can always add more (remember to adjust your b to account for what’s already been bet). If smaller, you may face a decision that the wikipedia version of the Kelly criterion or an online calculator isn’t going to help you with, particularly if you’re underwater. Many are the captains that go down with their ships saying “well, I still have an edge so there’s no point in me selling.” [You can probably adapt the formula somehow to tell you how much to dump, if any, if Kelly tells you that you have too much invested, I don’t do math but it seems possible to me.]

5. Kelly doesn’t account for what you’re betting on. Using a Kelly strategy to bet on the outcomes of elections will absolutely work in the “long run” (side note: if you’re just betting on US presidential elections the long run is like 20 events in your betting lifetime at most so I hope you like variance). As will using a strategy of betting outcomes generally in PredictIt markets or PolyMarket markets or I’m sure Kalshi markets when that launches (please launch). But betting outcomes is just one subset of betting on price movements. Your strategy may be “optimal” but that doesn’t mean it will earn you more money than correctly predicting each and every flip of that market and betting on those swings (using Kelly for sizing, if you’d like!). One other benefit of betting on price movements: as there are lot more of these than there are outcomes (by definition, and often by an order of magnitude), you approach the long run a lot faster, which means you learn a lot faster. The disadvantage: it takes more time.

Sometimes Kelly breaks

1. Let’s imagine I’m penny-flipping shares from 1c to 2c in some VP contender. What fraction of my bet is at risk (the a parameter)? Honestly, not a lot of it! If I know that I’m always gonna be able to dump most of my position for cost, a will approach 0. As a approaches zero, well, the first term in the Kelly formula approaches undefined territory and the whole thing blows up. And if you think about it, the lower your risk, the more Kelly is going to tell you to bet, which makes sense but also fails to account for things like liquidity and volume, which brings us to…

2. Kelly gets very weird in the situation where your risk a is itself a function of f. For example, when penny-flipping in a high-volume market, I know for a fact my risk on 1000 shares is pretty much zero. But if I’m 10k shares deep, well… now it’s going to be hard to exit that at cost if I see the tide turning (with PredictIt’s liquidity). So at n% of my bankroll, Kelly would tell me to bet my entire bankroll, but if I were to bet my entire portfolio, Kelly would tell me not to. It melts my puny mind. Idk. You tell me if there’s a good way to solve for f in this equation (or maybe you’re just supposed to maximize b?):

f = p/a(f) – q/b

(I mean even if I were a math guy I think if I ran into x = f(x) in a dark alley I’d just throw my wallet at it and run.)

3. There is an uncommon (but certainly not unheard of) situation in which a bettor placing a bet actually affects the overall market (and I don’t just mean that the price reflects the price of their trade). For example, if a sharp walks into a sports book and hits a line fairly hard, the bookie may move that line more than if a fish hit it at the same size. You can imagine this creates a situation where you could hit a line at one shop, move the entire market that thinks you have something (shops react to each other’s movements and maybe you have a reputation for getting player injury details faster than everyone) and then cover back the other way at another shop. In this case your b is actually a function of f, as this move is less likely to work at smaller sizings. This kind of exploitative play is particularly interesting on a place like Polymarket, where every trader can see what every account is doing. Is a big profitable whale entering a position? That might cause some minnows to follow, allowing the whale to exit.

4. Kelly cannot anticipate future needs for your bankroll. This is actually a huge point – if the whole goal is to figure out what your sizing should be, every bet you make needs to also consider your opportunity cost on other bets you won’t be able to make with the money you invest – again b starts to become a function of f. Let’s return to the FCC market. Yes, it’s Kelly-optimal to bet 94% of your bankroll at 63c for something worth 98c. But now that you’ve blown your wad on those FCC shares, you won’t have anything left to play any other number of hot markets that might already exist or that might be created in the six weeks between now and payout. (In late 2017, these missed opportunities would have included a lot of the action in the Jones v Moore election!). On PredictIt, this is a very very real issue for most users that only really goes away at very large bankrolls. In other markets without limits, it can affect a bankroll of any size. Now, you can rewrite the formula to consider all possible markets available to you at a given time, but unless you’re literally God you’re gonna have a lot of problems optimally modeling what future markets might be created or what wild news will break.

5. Sometimes, Kelly is just impractical at a basic implementation level. If you see a breaking news tweet that’s gonna move a market, often you really don’t have time to do anything other than mash the buy or sell button. Yeah I guess you can imagine a bot that spits out some stuff but like… nah. In real life, when prices are moving fast, you just gotta develop a good touch in order to capture value.

Wow this is a lot of words about a mathematical formula huh

Okay, okay, yes. I don’t use it (for the limitations above) and I don’t know anyone who religiously use it. Whenever you hear the word “Kelly” from a PM trader it’s from someone saying “ugh I think Kelly would have me betting more here” (for spots where they’re in good but scared of going bigger) or “I can’t bet anymore because I’ve hit my Kelly maximum” (for spots where there’s no way the guy has actually calculated their Kelly max, but because they simply intuitively feel like they don’t want to put more on it). But Kelly is an influential part of many betting strategies and it’s something intermediate traders may come across as they start thinking about how to improve. The point of this blog is just to show that actually applying rigorously it to PMs ranges from very difficult (given the uncertainties that go into each parameter) to the impossible (in the semi-edge cases mentioned in the third section). Finally, there are real bankroll management issues that aren’t addressed by Kelly at all and are probably a lot more important anyway.

All of that said, you can still learn a lot from Kelly. It’s not a tool to tell you when to bet, or what to bet on. But it is a tool that can confirm your intuition about how much to buy in some scenarios relative to others. If you think something is worth 99c and the market’s price is 95c, it’s going to have you put down a fair chunk of your bankroll: f = 0.99 – 0.01/.0526 = 80%. On the other hand if you think something is worth 15c and the market is at 10c, you’re only going to put down f = 0.15 – 0.85/9 = 5.5%. That’s useful conceptually: even with the same raw edge (~5c), you’re going to be betting a lot less if you’re likely to lose even than if you’re likely to win.

Long story short? There’s no easy formula that will tell you how to win.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s