Alex is an options trader you should follow in case he ever tweets a lot. Because he doesn’t, when he posted the question below a year ago, it got few responses. I took the liberty of posting it myself this week.
This was fun because it led to a lot of discussion on the timeline and DMs. I was told it sparked a bunch of quant debate on one trader’s desk.
The most popular answer, which was still less than 1/3 of the responses, was the correct answer.
Why?
The maximum value of a put is the strike. The maximum value of a call is the stock price.
Straddle is C + P so $100+$100 = $200
Notice how this means all call spreads go to zero since the calls are worth the same — the stock price. All put spreads go to their max value— the distance between strikes because the puts themselves are worth the strikes.
Logic for delta:
Delta is the change in option price per change in stock.
But the put’s strike is fixed, so the value of the put doesn’t depend on the stock price. The put has zero delta. It’s always worth $100. Which means it has no gamma either
The call is $100 because the max value of the call is the stock price. The call value moves 1-to-1 with the stock, so it has a delta of 1 or 100%
The max value of a straddle is therefore the stock price plus the strike price.
If you sell the straddle or either option at max value and hedge on its delta one time (this is known as a static hedge in contrast to dynamic hedging where you would rebalance as your hedge ratio changes), you cannot lose. It is that simple fact of arbitrage that makes it the upper bound.
To address the second most popular response in the poll, those who said the straddle is $100 (wrong) and has a 1.00 delta (correct), we will demonstrate why this is incorrect.
What’s your p/l if you sell 1 straddle at $100 and buy 100 shares against, if the stock goes to $300?
The straddle will be worth $400, so you lose $300 but make $200 on your long share.
Hmm, maybe I’m just underhedged. Fine, what if I hedge on a 200 delta?
In that case, you actually make money; you win $400 on your 2 shares more than offsetting the $300 straddle loss. But what if the stock went to zero?
Your straddle p/l is unchanged, but you lost $200 on the long stock position. Arbitrage max value means you cannot lose if you sell at that price. Since we found a losing scenario, the price is not the maximum arbitrage bound. If you sell the straddle at $200 and buy a single share of stock, there’s no scenario where you lose. It is the lowest straddle value for which this no-lose scenario is true, thus it’s the arbitrage bound.
Of course, this is but a toy problem where the call and put go to their maximum values because it’s a degenerate case of infinite time or vol. But learning how a function (an option price is just a function) behaves by observing its boundaries is good for intuition. You did this in 9th grade. Khan Academy can jog your memory:
In the real world, you can fleetingly find options that trade beyond their arbitrage values:
Earlier in the week, @DeepDishEnjoyer aka p4 wrote a thread about a dividend mispricing.
It led to some back and forth with passersbys who use options but appear to have large gaps in the fundamentals.
Between the maximum value poll and p4’s dividend lesson, it’s worth saying it:
In a proper option education, you spend a lot of time on arbitrage relationships, cost of carry, and synthetics before you ever hear the word “volatility”.
I didn’t study formal math but I imagine there’s a lot in common with the process of proofs. Arbitrages rest heavily on assumptions. So to understand the relationships, you are forced into an intimate familiarity with the assumptions. And in the extremes of everything, it’s the failure to examine assumptions that leads to being blindsided. But also, when things get extreme, to go on the attack means asking yourself, “Who’s on autopilot? Is this price resting on a stale assumption?” The arbitrage relationships give you the highest conceptual ROI that derivatives offer, you never learn the most useful thing derivatives can teach…passage over the “bridge of asses”.
If you want to see more examples of why option basics are so key to understanding assumptions and opportunities when things get weird:
Everything below is derived from these definitions. They’re the raw material — average squared deviation for variance, average product of deviations for covariance. When a derivation feels stuck, come back here and plug in.
Variance — average squared deviation from the mean
Var(X) = E[(X− μ)2] μ = E[X]
Covariance — average product of deviations
Cov(X, Y) = E[(X− μX)(Y− μY)]
Sum of squared deviations (the un-averaged version)
SS = Σ (xi− μ)2Var = SSn
Variance is just SS divided by n (or n−1 for a sample). Same object, before you average.
The move in every derivation: plug into one of these, expand the square or product (pure algebra), apply E using linearity, then recognize the Var/Cov patterns that fall out. The computational forms below (E[X2] − (E[X])2, E[XY] −E[X]E[Y]) are results of doing this, not starting points.
The identities
Variance from the definition
Var(X) = E[(X− μ)2] = E[X2] − (E[X])2
Average of the squares minus the square of the average. Worth showing where that second form comes from, since every later grind reuses this exact collapse. Start from the deviation definition and expand the square:
1nΣ(xi−x)2 = 1nΣ(xi2− 2xix + x2)
Average term by term. The key is that x is a constant (already computed), so it pulls out of the sums:
Last term: (1/n)Σx2 = x2 = (E[X])2 (averaging a constant returns the constant)
Put them together — and notice the last term carries a coefficient of 1, not 2:
E[X2] − 2(E[X])2 + (E[X])2 = E[X2] − (E[X])2
The −2 and +1 combine to −1. That collapse — middle and last terms both becoming (E[X])2 and partially cancelling — is the same move behind every Var/Cov identity on this sheet.
Covariance from the definition
Cov(X, Y) = E[(X− μX)(Y− μY)] = E[XY] −E[X]E[Y]
Average of the products minus the product of the averages.
Here a and b are the amounts held of each asset. They’re portfolio weights when they sum to 1. Var(X+Y) above is just this formula with a = b = 1 — one unit of each, no weighting lever. The weights are what turn a raw sum into a portfolio.
Worked example. Two assets: σX = 20%, σY = 10%, ρ = 0.3. Equal weights a = b = 0.5.
Compare to the naive weighted-average vol, 0.5·20% + 0.5·10% = 15%. The cross term (with ρ < 1) is what pulls portfolio vol below the average of the two vols. That gap is the diversification benefit.
Variance of a difference (spread variance / pair-trading formula)
Var(X−Y) = Var(X) + Var(Y) − 2 ·Cov(X, Y)
Same as Var(X+Y) but cross term flips sign. When X and Y are highly correlated, spread variance is small — the math behind why pair trades work.
Bilinearity of covariance
Cov(X, A + B) = Cov(X, A) + Cov(X, B)
Same in the first slot by symmetry.
Where it’s used. This is the move that lets you compute an asset’s covariance with a whole portfolio without re-deriving anything. Say a portfolio P = 0.5A + 0.5B and you want how asset A co-moves with the portfolio it sits in:
Distribute across the sum, pull the weights out. That number — an asset’s covariance with its own portfolio — is its marginal contribution to portfolio risk, and it’s exactly what you FOIL out when you expand Var(w1X1 + … + wnXn) into the full covariance matrix. Bilinearity is the engine under every portfolio-variance calculation.
Variance of a binomial
Var(H) = np(1−p) where H = ΣXi
Derived in two steps, both from scratch.
Step 1 — variance of a single flip. One flip X is 1 with probability p, 0 with probability (1−p). Mean is E[X] = p. Plug into the squared-deviation definition — deviations are (1−p) for heads and (0−p) = −p for tails, each weighted by its probability:
Var(X) = p(1−p)2 + (1−p)p2
Factor out p(1−p): the bracket is (1−p) + p = 1, so
Var(X) = p(1−p)
(Peaks at p = 0.5, value 0.25 — the fair coin is the most uncertain, most variance per flip.)
Step 2 — n flips. Write H as a sum of n independent single flips, H = X1 + … + Xn. Variance of a sum adds the pairwise Cov terms, but independent flips have Cov(Xi, Xj) = 0, so every cross term drops. The n identical variances just add:
Var(H) = ΣVar(Xi) = n·p(1−p)
The np(1−p) isn’t handed to you — it falls out of one Bernoulli’s p(1−p) times n, because independence kills the covariances.
Standard deviation scaling
StDev(aX) = |a| ·StDev(X)
Correlation definition
ρ = Cov(X, Y)σX· σY
When ρ = 1: Cov(X, Y)2 = Var(X) · Var(Y).
The derivation recipe
Every identity in this neighborhood comes out of the same five moves. When you see a Var or Cov of something built from linear combinations of random variables, this is the procedure.
Plug into the definition. Use Var(Z) = E[Z2] − (E[Z])2 or Cov(X, Y) = E[XY] −E[X]E[Y] depending on what you’re computing.
Expand squares and products. Pure algebra on the random variables. FOIL out any binomials. No expectations yet.
Apply E using linearity. Distribute E across sums, pull constants out of expectations. This is the step that does the most work. Always handle linearity first when you have the chance — squaring is not linear, so you simplify E first and let the square wrap what’s left.
Group matching terms. Line up the things that share factors (a2 terms together, ab terms together, b2 terms together, etc.).
Factor and recognize. Pull out shared factors and spot the patterns: (E[X2] − (E[X])2) is Var(X), and (E[XY] −E[X]E[Y]) is Cov(X, Y).
The reason this recipe always closes: variances and covariances are quadratic in the underlying random variables, so expanding any square or product of linear combinations only generates more variances and covariances. Step 5 is recognition, not computation. There’s nowhere else for the algebra to land.
Two applications
Interview problem: E[H·T] for n coin flips
Flip a fair coin n = 100 times. H = heads, T = tails. Find E[H·T]. Worked slowly, because the one-line answer hides about six moves.
Step 1 — first reach, and why it fails. The instinct is E[H·T] = E[H] ·E[T] = 50 · 50 = 2,500. But splitting a product of expectations like that is only legal when the two variables are independent. Check the precondition: H + T = 100, so knowing H pins down T exactly. Not independent. The naive split is off by a correction.
Step 2 — name the correction. That correction is what covariance is. Rearranging Cov(X, Y) = E[XY] −E[X]E[Y]:
E[H·T] = E[H] ·E[T] + Cov(H, T)
Independent → Cov = 0 → naive split exact. Locked → Cov ≠ 0 → you need the term.
Step 3 — get the sign first.H + T = 100, so when H is above its mean, T is forced below. They move opposite, always. So Cov(H, T) is negative, and the true answer lands below 2,500.
Step 4 — compute Cov(H, T) via substitution. Since T = 100 −H, write Cov(H, T) = Cov(H, 100 −H) and split with bilinearity:
Cov(H, 100 −H) = Cov(H, 100) + Cov(H, −H)
First term is covariance with a constant → 0. Second term, pull out the −1 (scaling rule, ab = 1 · (−1) = −1):
= 0 −Cov(H, H) = −Var(H)
So Cov(H, T) = −Var(H). Now it’s earned, not asserted.
Step 5 — Var(H) is the binomial variance.H is the count of heads in n flips, so Var(H) = np(1−p) = 100 · 0.5 · 0.5 = 25.
Step 6 — land it.
E[H·T] = 2,500 − 25 = 2,475
Where n(n−1) comes from. Keep everything in symbols instead of plugging in. E[H] = np and E[T] = n(1−p), so E[H]·E[T] = n2p(1−p), and Var(H) = np(1−p). Then:
Why this is the instructive form. Weights are fixed (50/50) and both vols are fixed (σ). The only thing left moving is ρ. So the entire diversification effect is carried by the single factor (1 + ρ)/2 — a clean dial from 0 to 1 that multiplies the single-name variance. Sweep ρ and read what correlation actually does:
ρ
Var(P)
σP (vol)
vs. one stock
+1
σ2
σ
no benefit — identical names
+0.5
0.75σ2
0.87σ
13% vol cut
0
0.5σ2
0.71σ
29% vol cut (the √½ case)
−0.5
0.25σ2
0.5σ
half the vol
−1
0
0
risk fully cancels
The variance scales linearly in ρ, but the thing you feel — vol, σP = σ√((1+ρ)/2) — scales as the square root, so the first chunk of decorrelation buys more than the last. Going from ρ = 1 to ρ = 0.5 already takes 13% off your vol. You do not need negative correlation to diversify; anything below +1 helps. Negative correlation is just the strong form, and ρ = −1 is the perfect hedge where the two positions cancel outright.
The whole two-name diversification story lives in that (1 + ρ)/2 factor. Same vols, same weights, and correlation alone moves you from “no benefit” to “risk gone.”
Two-stock unequal-weight portfolio with equal variances σ2 and correlation ρ
Var(P) = σ2 [1 − 2w(1−w)(1−ρ)]
Diversification benefit is the product of a weight piece (2w(1−w), maxed at w = 0.5) and a correlation piece (1−ρ). Need both to get benefit. With equal variances, equal weighting is optimal — any tilt from 50/50 sacrifices diversification.
Now drop the equal-variance assumption. Keep σX2 and σY2 separate. Weights w and (1−w):
Var(P) = w2σX2 + (1−w)2σY2 + 2w(1−w)ρσXσY
Minimize over w. Var(P) is an upward parabola in w (positive coefficient on w2), so the critical point is the min. Differentiate term by term and set to zero:
2wσX2− 2(1−w)σY2 + 2(1−2w)ρσXσY = 0
Divide by 2, expand, collect the w terms on the left and constants on the right, factor w out:
w(σX2 + σY2− 2ρσXσY) = σY2− ρσXσY
w* = σY2− ρσXσYσX2 + σY2− 2ρσXσY
The denominator is Var(X−Y) — the spread variance from earlier. The numerator is σY2− Cov(X, Y).
The payoff — set ρ = 0 (independent names):
w* = σY2σX2 + σY2 = 1/σX21/σX2 + 1/σY2
That’s inverse-variance weighting: each asset’s weight is its inverse variance over the sum of inverse variances. The quieter asset gets more money. This is the result behind Kalman filters, weighted least squares, and meta-analysis — anywhere you optimally combine noisy estimates, you weight by precision (1/variance). It’s also the “optimal” cousin of the inverse-vol risk-parity heuristic, which ignores correlations.
Intuition — hold σX fixed at 20% (σX2 = 0.04), turn the σY knob:
σY
σY2
w* on X
0
0
0
10%
0.01
0.20
20%
0.04
0.50
40%
0.16
0.80
∞
∞
→ 1
X’s weight is driven by Y’s variance, not its own. The noisier the alternative, the more you pile into X. Three anchors: σY2 = 0 → w* = 0 (Y is riskless, hold only Y); σY2 = σX2 → w* = 0.5 (equal variances recover equal weighting); σY2 → ∞ → w* → 1 (Y is pure noise, flee into X). The cleanest limit: if σX2 = 0, then w* = 1 — a riskless X takes the whole book. Precision is just quietness, and you trust the quiet estimate more.
Three-variable portfolio variance → why the matrix shows up
Same Form A grind, one more variable. Expand (aX + bY + cZ)2, apply E, subtract the squared-mean term. Every squared term becomes a variance, every cross term a covariance:
n variance terms — one per asset (the ai2 Var pieces)
nC2 = n(n−1)/2 covariance pairs — one per distinct pair
Total = n + nC2. For n = 3: 3 + 3 = 6. For n = 100: 100 variances + 4,950 covariance pairs. The cross terms grow as n2, which is exactly why nobody writes portfolio variance longhand past n = 3 — you switch to the matrix form.
The double-sum / matrix form. Organize every term into a grid indexed by asset pairs. With weights wi and returns ri:
Var(P) = ΣiΣjwiwjCov(ri, rj) = w⊤Σw
Reading the double sum: the outer Σ over i and the inner Σ over j together form every ordered pair (i, j). For each pair you drop in one term, wiwjCov(ri, rj), and add them all up. For n = 3 that’s 3 × 3 = 9 cells:
X (j=1)
Y (j=2)
Z (j=3)
X (i=1)
a2Var(X)
ab Cov(X,Y)
ac Cov(X,Z)
Y (i=2)
ab Cov(X,Y)
b2Var(Y)
bc Cov(Y,Z)
Z (i=3)
ac Cov(X,Z)
bc Cov(Y,Z)
c2Var(Z)
Sum all nine cells and you get the six-term formula above. Two things to see:
Diagonal (i = j, shaded): Cov(ri, ri) = Var(ri), so the diagonal is the n variance terms.
Off-diagonal (i ≠ j): each unordered pair appears twice — cell (X,Y) and cell (Y,X) are identical — and those two copies are exactly where the factor of 2 on each covariance comes from. You never write the 2 by hand; the grid double-counts it for you.
So Σ is the covariance matrix: variances down the diagonal, covariances off it. w⊤Σw just says “sweep every cell of the grid, weight it, sum it.” The n + nC2 count is the matrix — diagonal plus (doubled) upper triangle. You’ve already discovered why the matrix form is inevitable; it’s just bookkeeping for the term explosion.
Figure — the double sum is the matrix: one sweep, three views
Figure — three forms of the same variance, and where the 2s go
Notation you’ll see in practice: w⊤Σw. You’ll run into this constantly in risk models, optimizers, and quant papers. It’s the same portfolio variance, packaged as a matrix operation. Reading it piece by piece:
w — the weight vector, weights stacked in a column.
w⊤ — “w transpose,” the same weights laid flat as a row. Transpose just tips a column over into a row.
Σ — the covariance matrix (the grid above). Watch out: this capital-sigma is the matrix, not a summation sign. Variances on the diagonal, covariances off it.
So w⊤Σw is row-of-weights × matrix × column-of-weights, which multiplies out to a single number — the portfolio variance. It’s identical to the double sum, and in a spreadsheet it’s literally =MMULT(MMULT(TRANSPOSE(w), Σ), w).
Why bother, when the double sum already shows everything? Three practical reasons, none of them “it’s more correct.” It doesn’t grow — three symbols whether n is 2 or 2,000, where the double sum for 500 names is 250,000 terms. It’s how software actually computes portfolio variance (one fast matrix op). And optimization only speaks matrix: the minimum-variance weights come out as Σ−11 normalized, and the inverse Σ−1 has no double-sum spelling. The two-asset inverse-variance weighting derived above is Σ−1 for n = 2 — the matrix form is how that generalizes. For understanding, the double sum is enough; this is the notation for doing things with it.
The ladder
Each rung is built from the one before it — the definition first, then the algebra of scaling and adding, then portfolios, then the jump to the matrix. Nothing is assumed that wasn’t derived earlier.
1. Variance as average squared deviation
2. Var(X) = E[X2] − (E[X])2 — from the definition
3. Cov(X, Y) = E[XY] −E[X]E[Y] — from the definition
4. Var(aX) = a2·Var(X)
5. Cov(aX, bY) = ab·Cov(X, Y)
6. Cov(X + c, Y) = Cov(X, Y) and Cov(X, c) = 0
7. Var(X + Y) = Var(X) + Var(Y) + 2·Cov(X, Y)
8. Var(aX + bY) — the full weighted-sum workhorse
9. Two-stock equal-weight portfolio variance → the (1+ρ)/2 diversification factor
14. Var(aX + bY + cZ) — three variables, and the n + nC2 term count
15. General n-asset portfolio variance — the w⊤Σw matrix form
Is this one lesson in a math course?
No. This would be roughly half a semester of a first probability course, or a full chapter and a half of a more applied stats book.
Rough mapping to a standard curriculum:
Variance from the definition, E[X2] identity: one lecture, plus a problem set
Covariance and the product identity: one lecture
Scaling rules, bilinearity, variance of a sum: one to two lectures
Portfolio variance, weighted sums, correlation: one lecture in the probability course, or the opening week of a finance/portfolio-theory course
Binomial variance, applications: another lecture or two
So this is the equivalent of maybe four to six lectures of material, plus the problem sets that go with them. The reason it feels like a lot is that this sheet does the whole pipeline — derivation, intuition, numerical examples, applications — for each piece, instead of showing a formula and moving on.
The trade-off is real: this is slower but produces durable understanding. A typical math course shows you Var(aX + bY) on day one, leaves the “why it’s that and not something else” fuzzy, and you pattern-match for the rest of the semester. Done this way, when σ2· (1+ρ)/2 turns up in a textbook two years later, you see the bilinearity FOIL behind it instead of recognizing a memorized formula.
One of the most important concepts in risk-taking is bet sizing. Which is unfortunate because people are quite bad at it, while the effort to be way above average is quite low.
A jarring and famous demonstration of this is the Haghani-Dewey Coin Flipping study, which showed how even college grads with business, economic, and technical backgrounds incinerated their capital or massively underperformed the expected profits presented to them by a game they knew was rigged in their favor.
For a binary wager (ie win or lose), if you know the payoffs and the probability of winning, both of which were known to the participants, the solution is to use the Kelly Criterion.
The tragedy is that it is incredibly simple to compute and applies to many conventional gambles and decisions (the examples in the quiz will span various life situations!).
If something is both easy and widely relevant, it should be common knowledge. So let’s fix that today. I’ll show you how easy it is to use, and you’ll forever be able to do it in your head.
First, a succinct definition:
Kelly is the bet size, as a fraction of bankroll, that maximizes the long-run compounded growth rate of your wealth. It’s a mathematical solution to bet size that doesn’t seek to maximize expected profit per trial, but the size that optimally balances compounding rate and survival.
If you want to go deep on this, see Moontowerquant’s Kelly Criterion Resources, but today’s focus is on getting straight to usability.
We will use this formulation of Kelly because it’s general:
f* = p − q/b
where:
p = probability of winning
q = 1−p or probability of losing
b = the odds you’re getting → what you win divided by what you risk
The easiest way to learn it is just jump right in with a few worked examples:
Fair coin wager (even odds style bet)
p =50%
q= 50%
b =1 (ie even money, for a $1 bet you either lose a $1 or make a $1 profit)
f* = 50% – 50% / 1 = 0 → bet nothing, zero edge
Coin biased in your favor (even odds style bet)
p =60%
q= 40%
b =1 (ie even money, for a $1 bet you either lose a $1 or make a $1 profit)
f* = 60% – 40% / 1 = .20 → bet 20% of your bankroll
Roll a 6 on a die (underdog bet where you get odds)
p =1/6
q= 5/6
b =8 (for a $1 bet, you either lose a $1 or make an $8 profit)
f* = 1/6 – (5/6) / 8
f* =8/48 – 5/48 = 3/48 → bet 6.25% of your bankroll
If f* is 0 or negative, you have no edge, so not betting is prescribed
Sports moneyline (betting as a favorite where you lay odds)
A −200 favorite. You risk $2 to win $1, and the line implies 2/3, but you think it’s closer to 3 in 4.
p = 75%
q = 25%
b = 0.5 (getting 50% return on the amount you risk)
f* = 75% − 25% / 0.5 = 75% − 50% = 25% → bet 25% of your bankroll
Wait a minute, these are large bets?!!
If these bet sizes seem surprisingly large for the given advantages, then your senses are well-tuned. For most people, “full” Kelly is too big!
Kelly maximizes long-run growth on the assumption your probability is correct. Well, it probably isn’t because the world is messy. We can inject some humility by using a fraction of Kelly:
“Half Kelly” gives up about a quarter of the growth rate and roughly halves the drawdowns. If you invert that, you see that the Kelly scaling law means as you bet bigger, you get diminishing returns per unit of risk. Extrapolating that logic, betting more than “full Kelly” is incinerating compounded wealth even if the individual bet has positive EV.
“Quarter Kelly” or less is far more common in practice.
Please don’t let the equation scare you, it’s intuitive and easy to remember
Look at the equation again:
f* = p − q/b
It’s just “how often you win” minus “how often you lose.” It’s just that the second term incorporates the payoff. The loss term gets divided by b, which represents the return you collect when you’re right.
When b = 1, you’re getting even money. A 100% return. Dividing by 1 leaves q alone, and the equation collapses to pure hit rate: p − q. That’s the coin case where you bet $1 to make $1.
When b > 1, you’re getting long odds. The division shrinks the loss term. This is why the die works. You lose 5 out of 6 rolls. Straight subtraction says you’re down 66 cents on the dollar and should never play, but you’re paid 8-to-1, so that 5/6 becomes 5/48, and suddenly the 1/6 win percentage is the bigger number. Long odds forgive a bad hit rate.
When b < 1, you’re laying odds. Now division stretches the loss term. The moneyline: you only lose a quarter of the time, but at −200 each loss costs you two units to earn back one, so that 25% loss percentage behaves like 50%. Being right three times out of four barely clears the bar. Lay enough odds and even a very good record is a losing proposition.
The graphic shows how you can think of the odds (the denominator) as shrinking or inflating q, as you collapse your thinking to a comparison of p vs q.
A word on b
b trips people up because “odds” is loaded gambler jargon. A wider interpretation of b is that it’s a percent return.
It’s what you make divided by what you risk. Even money is b = 1: risk a dollar, make a dollar. That’s a 100% return on the amount at stake. 3-to-1 is b = 3, a 300% return. Laying −200 is b = 0.5 because if you risk two to make one, it’s a 50% return.
[Return is a profit, while multiples don’t subtract your initial risk. It’s the difference between “I 2x’d my money” vs “I made 100%” or “I 10x’d my money” vs “I made 900%”. The percent return is the multiple minus one because we subtract our initial risk.]
The reason it’s a return and not just “the odds” is that Kelly assumes a loss wipes out the whole stake. The denominator is always the same number: everything you put up. b is comparable across a coin, a die, and a moneyline because it’s the return on risk, always measured against a total loss.
b = 1 is a natural reference point. At 100% return, a win exactly cancels a loss, so you need to win more than half the time. The breakeven hit rate changes with b.
Set f* = 0 and you get p = 1/(1+b).
Read the table as a menu of the hit rates you’re allowed to have. At b = 24 you can be wrong 24 times out of 25 and still be flat. At b = 0.25 you can be right four out of five and still be flat
Applying to real life: when is Kelly the right tool?
Kelly needs a few inputs: a bankroll, a payoff you know, and a probability estimate.
Which of these is a Kelly problem?
A prediction market contract trading at 30¢. You think it’s worth 45¢.
You’re all-in-or-fold on the river with a read that you’re good 40% of the time, getting 3-to-1 from the pot.
How much of your 401(k) to put in equities.
Writing checks as an angel investor across 30 startups.
Buying a weekly call on a biotech ahead of an FDA decision date.
Whether to take the new job.
Your buddy offers you 5-to-1 that it rains in Oakland tomorrow. The forecast says 30%.
Buying homeowners insurance. The premium is clearly more than the expected loss — that’s how the insurer stays in business.
Your neighbor doesn’t carry homeowners coverage. She banks the premium instead.
Your auto policy offers a $500 deductible or a $2,500 deductible, for a $340/yr discount on the premium.
You’ve got vested startup options. Exercising costs $40k out of pocket in strike, and you think there’s maybe a 15% chance the company gets somewhere that makes them worth $1M.
A merger arb spread. Target’s at $46, deal price is $50, and it trades back to $38 if the deal breaks. You think it closes 90% of the time.
Your agency spends 20 hours of unbilled time on a speculative pitch. You win about a quarter of them, and a win is worth 80 billable hours.
Solutions to Kelly Problems
Yes. Cleanest case there is. Binary, known payoff, and the price provides b directly. Risk 30¢ to make 70¢, so b = 2.33. f* = 45% − 55%/2.33 = 21%.
Yes. This is the canonical one. p = 40%, b = 3, f* = 40% − 60%/3 = 20% of your stack. The wrinkle is that in poker your stack isn’t really your bankroll. There’s a whole literature on pros using Kelly for bankroll management across sessions rather than for a single river decision.
No. Not this version of it. Stock returns aren’t generally binary so there’s no p, q, or b. There’s a continuous analog called Merton’s Share, which is similarly rooted in reward vs variance. What Gamblers Can Teach the Buy-and-Hold Crowd can get you started.
Sort of. The structure is right: repeated, roughly binary, long odds. The problem is that p is a guess and b is a bigger guess, and Kelly is violently sensitive to overestimating your edge. Garbage in, garbage out.
Approximately. If you treat it as approve/reject it’s binary enough to size with. If the expiry aligns with the date such that you are betting strictly on the terminal intrinsic value, the option piece will inherit the binary modeling you imposed on the stock.
No. The variables are too opaque.
Yes. p = 30%, b = 5, f* = 30% − 70%/5 = 16%. Note, you’ll lose this bet more than twice as often as you win it, so your most likely scenario is losing 16%. You can shrink the Kelly fraction if this makes you uncomfortable.
Wrong side of the equation. Run f* on this and you get a negative number, because you’re buying a negative-EV bet.
Yes. It’s the same policy, so notice that the bet only exists on the insurer’s side of it! Every year your neighbor doesn’t buy, she collects a premium and writes a tail. Rebuild cost $500k, premium $3,000, call it a 1-in-500 chance of a total loss.
p = 99.8%
q = 0.2%
b = 3,000 / 500,000 = 0.006 (risk $500k to win $3,000)
f* = 99.8% − 0.2%/0.006 = 99.8% − 33.3% = 66.5%
Positive, as expected since insurers price premiums well above fair value. In this case, her bet size is the $500k house. If the house is most of her net worth, she’s at 100% on a bet capped at 66%. Rather than overbet, she should buy the policy. If she’s worth $5M, she’s betting 10% when she’s allowed 66%, which puts her near quarter Kelly (~14%), and she could skip the insurance. If she’s worth $1mm, it’s a 50% bet, which is more than half Kelly. I’d say take the insurance but I’m a wimp. There are other considerations (would she have the liquidity to rebuild the home or maybe taking the insurance with a high deductible is a better fit), but just doing this exercise gives you a sense of how risky or conservative your choices are relative to the bet share that maximizes long-term wealth.
Yes. Raising the deductible is like you writing a $2,000 policy and collecting $340 a year for it. You’re the insurer again, so work out what you need to believe. Take the high deductible and save $340. Have a claim, and you’re out $2,000 more, but you already banked the $340, so the loss is $1,660.
b = 340 / 1,660 = 0.205
f* = p − q/0.205 = p − 4.88q
Set that to zero, and you get p = 4.88q, which, with p + q = 1, means q = 17%. Your breakeven is a claim every 5.9 years. Anything less frequent and you’re the one with the edge.
Let’s say real-world collision frequency is more like 6%. So p = 94%:
f* = 94% − 6%/0.205 = 94% − 29.3% = 64.7%
Which says risk at most ~65% of your bankroll. The risk here is $1,660. That clears as long as you have about $2,600 in liquid savings, which is to say the sizing check is trivially satisfied for almost everyone so you should generally opt for the higher deductible. For quarter Kelly, we’d need savings of $1,660/(.647 * .25) = $10,262.
Approximately. It’s not truly binary, but if you frame it in a way where you are comfortable with the no consolation prize of a medium outcome, you can see it as paying $40k for a 15% shot at $1M. b = 24, so f* = 15% − 85%/24 = 11.5% of your liquid net worth. This is quite sensitive to your estimate of p of course.
Yes, a classic example of binary-type risk in markets. You risk $8 to make $4, so b = 0.5 — you’re laying odds, same as the moneyline. f* = 90% − 10%/0.5 = 70%. That number is only as good as the 90%. Revise p to 75% and f* is 25%.
Yes, in a subtle way! Your bankroll is capacity, not cash. b = 80/20 = 4, so f* = 25% − 75%/4 = 6.25%. Twenty hours has to be 6% of what you’re working with, which means you can’t run this pitch out of a 100-hour month. If you’re the manager, you can put it in dollar terms by converting to wages.
Finally, I strongly recommend William Poundstone’s book Fortune’s Formula: The Untold Story of the Scientific Betting System That Beat the Casinos and Wall Street
Description:
In 1956, two Bell Labs scientists discovered the scientific formula for getting rich. One was mathematician Claude Shannon, neurotic father of our digital age, whose genius is ranked with Einstein’s. The other was John L. Kelly Jr., a Texas-born, gun-toting physicist. Together they applied the science of information theory—the basis of computers and the Internet—to the problem of making as much money as possible, as fast as possible.
Shannon and MIT mathematician Edward O. Thorp took the “Kelly formula” to Las Vegas. It worked. They realized that there was even more money to be made in the stock market. Thorp used the Kelly system with his phenomenally successful hedge fund, Princeton-Newport Partners. Shannon became a successful investor, too, topping even Warren Buffett’s rate of return. Fortune’s Formula traces how the Kelly formula sparked controversy even as it made fortunes at racetracks, casinos, and trading desks. It reveals the dark side of this alluring scheme, which is founded on exploiting an insider’s edge.
Shannon believed it was possible for a smart investor to beat the market—and William Poundstone’s Fortune’s Formula will convince you that he was right.
a gripping narrative full of 20th century trivia that ties together the birth of information theory, some of the greatest scientific minds of the 1900s, the rise of quantitative finance, and the role of organized crime. These topics come alive in a fresh, memorable way when discovered through the lens of its colorful characters.
It chronicles the history of the efficient market hypothesis (MIT, U Chicago, Paul Samuelson). You can organize its conclusion around this excerpt:
There is much truth in the efficient market hypothesis. The controversy has always been over just how far the claim can be pressed. Asking whether markets are efficient is like asking whether the world is round. The best way to answer depends on the expectations and sophistication of the questioner. If someone is asking whether the world is round or flat, as fifteenth-century Europeans might have asked, then “round” is a better answer. If someone knows that and is asking whether the earth is a geometrically perfect sphere, the answer is no.
Return Stacked’s RSSB gives you a dollar of global equities and a dollar of Treasuries on the same dollar of capital. They just listed options on it this week. It will be a useful option market to watch if it gathers liquidity because its implied vol allows you to back out an implied stock-bond correlation since we know the vol of the legs.
Risk-parity funds and strategies are diversified, which gives them cover to use leverage but also means they are structurally short stock-bond correlation. In theory, they should be natural buyers of RSSB vol. If they actually did that, I’d expect the implied vol to trade at a healthy risk premium since it’s a one-way risk. There’s no real natural seller of that correlation.
I asked the Moontower Agent to work out the details and generate a deck (which is also a heat check on its abilities.) It produced a deck I could download, walking through the variance identity, a IEF-for-GOVT proxy swap, a scenario table for implied ρ across RSSB IV levels, and the noise associated with realized correlation.
This made me look up a time series of the correlation between stocks and bonds using VTI and IEF as respective representatives of the asset classes. The 30-day came back +0.43, the 1-year at +0.28.
The agent volunteered the following statistical insight:
N=22 daily returns is a small sample. The 95% confidence interval on a correlation of +0.43 with N=22 is roughly [+0.02, +0.72] — wide. You cannot confidently distinguish +0.43 from +0.20 or +0.60 at that sample size. The 1Y number (N=251) is statistically much tighter — CI roughly [+0.16, +0.39].
Normally, when you compute a confidence interval, you effectively make a market by scaling the standard deviation to your desired confidence (so 1.96 or “2 sigma” for ~95% confidence)
But take notice of the first interval: +0.02 to +0.72 isn’t centered on +0.43. The upper tail runs 0.29 above, the lower tail 0.41 below. Weird. You wouldn’t see lopsided error bars if the math was something like “estimate ± 1.96 × standard error”.
Agent teach me what you did and why.
The problem is that the error bar’s width depends on the answer
Correlation lives on [−1, +1]. Bounded. If the true ρ is 0.9, your sample estimates can’t overshoot by much (the ceiling is 1.0) but they can undershoot plenty.
That boundedness shows up in the standard error of r itself, which runs about (1 − r²)/√(N − 1). Look at what that does. At r = 0.43 with N = 22 the SE is 0.177. At r = 0.9 with the same 22 observations it’s 0.042, four times tighter. Not because you learned more, but because you got squeezed against the wall.
The agent used something it called Fisher’s fix to move to a coordinate system where the standard error stops depending on r, do the easy symmetric thing there, and come back.
The recipe
1. Transform the point estimate: z = arctanh(r) = ½ · ln[(1 + r) / (1 − r)]
2. Take the standard error in z-space: SE = 1/√(N − 3). Note what’s missing. No r. Sample size is the only input.
3. Build the interval symmetrically, the boring way you already know: z ± 1.96 · SE
4. Recover each endpoint separately: tanh(z_low) and tanh(z_high)
Broadly educational bits to notice
Step 1 does almost nothing to the estimate.
0.4332 becomes 0.4635. The transform is only there to get the r out of the standard error in step 2.
Step 4 is where the lopsidedness comes from.
Both 30-day endpoints sit exactly 0.4497 away from the center in z-space. Perfectly symmetric. But tanh squashes hard once you’re out past 0.5 but does almost nothing near the origin, so the top end at 0.9131 gets crushed down to +0.72 while the bottom end at 0.0139 is nearly untouched at +0.014. What matters is each endpoint’s distance from zero, not its distance from your estimate.
Step 2 accounts for sample size
Ten times the sample and the standard error only comes down by a factor of 3.6. At large N the confidence grows by √N scaling, but at small N, subtracting 3 makes the confidence grow slower than square root scaling.
2 lessons
The object-level lesson: Correlations are volatile and because they are bounded from [-1,1] we need to recenter our point estimates before cuffing their ranges
The meta-lesson: LLMs are great math tutors so when they volunteer info of the “I don’t know what I don’t know” variety they can hold your hand. I’ve shared how I use LLMs as a tutor before in Socrates 2026: how to use highlights
The high vol is a gift to the natural holders. Millennial employees can lock in their unborn grandkids’ inheritance.
A non-technical way to appreciate how high vol creates this opportunity in upside call vs downside put differentials: Imagine a stock starts at $100. It gets to $125. From $125 to $150 is only 20%. But if the stock fell to $75 the distance from $75 to $50 is 33%. Both $50 and $150 are 50% from the initial price, but in a compounding sense 150 is much “closer” to the starting value than $50. The higher the vol the less “distance” a fixed dollar move represents. As implied vol increases OTM calls grow faster in value than OTM puts. This is the source of the attractive pricing you see in the risk reversal (ie option collar).
That pricing falls out of the risk-neutral world that rests on “no-arbitrage” assumptions. In fact, the lognormal return process, described in the quote without ever using the word “lognormal”, is only one of many assumptions. The forward price of the stock is also assumed to be a function of the risk-free rate, which pushes the price that the options are based on higher than the spot price. This, of course, pushes up calls and puts down by their respective deltas. These assumptions conspire to make calls look quite expensive relative to puts to someone comparing the risk-reward of options intuitively.
Warren Buffett sells the long-dated puts because he believes the no-arbitrage assumption of the risk-free rate underestimates real-world forward prices. The option trader he faces is quite content to buy those puts since they are looking for an easy flip in the vol market.
FX carry. The speculator holds the future for the risky but generous profit the risk-neutral price creates. The derivatives trader is content to make a penny of arbitrage profit.
This is an admittedly mind-bending state of affairs, but it creates disagreement because of different horizons. This is the basis for trade!
The collars (also known as risk reversals or fences depending on the trading floor you grew up on) are another example of risk-neutral assumptions presenting wacky prices to those who don’t require arbitrage to trade.
The arbitrageur prices the collar like a contractor bidding a job. The daily hedges are materials and labor. The replication price is a manufacturing cost. Call it $500 per square foot. But the client trading the collar is looking at the finished house represented by the payoff of where the stock lands. They are happy to pay $500/ sq ft if the final product is worth $800/ft. The derivatives trader is not underwriting the final value but operating a cost plus business. They have no view on the value of the final product. It’s literally none of their business.
If you want to tangle with this deeper, you are welcome to revisit how to get arbed with perfect information (again)but take heart that you aren’t alone if you struggle with the idea of no-arbitrage replication. I always say it’s the “bridge of asses” for finance.
Collar Shopping
Dean’s tweets highlighted stocks where the calls you overwrite can finance a fairly high strike put, creating an attractive hedge and therefore risk-reward to a long position.
Consider an example where you buy a $100 stock and a 1-year 20% out-of-the-money put while selling a 1-year 40% out-of-the-money call at the same price as the put. In other words, a “zero-cost” collar. The most you can lose is 20% in the case where the stock tanks. Your upside is capped at 40% before your shares would be called away. If you think the stock has a symmetrical distribution where it’s going up or going down are the same probability this looks like a good bet because you are getting 2-1 odds.
If the collar costs $2 or 2% of the stock price, we can roll that into the basis (so $102). Now you are risking 22% to make 38%, a risk reward (R:R) of 1.73 to 1.
This is a snapshot from the Moontower Collars Workflow on 8/11/26 for options with about 3 months to expiry.
Every row on the screen prices the package of buying the .25 delta put, selling the .25 delta call, and buying the stock.
You can restrict your universe to certain sectors and re-sort. You can filter for stocks a certain threshold above their moving average or stocks that are strongly correlated to each other to hunt for the best bang for your buck for a given beta, or just any number of screens to narrow your candidates.
A thread for the masochists
The strikes here are delta-defined, so the vol gap between names is already baked in. You could imagine beta-adjusting the strikes to go a step further (although you’d need to use the API/MCP).
Beta is correlation times the vol ratio. So if correlation < 1.0, beta-adjusting pulls the call strike in toward at-the-money. You’re short that call in a collar, so a nearer strike prints fatter making the risk-reward look better. But it’s a trade-off. The result comes from truncating idiosyncratic upside that is not captured in beta.
Defensive-minded investors should take note (as Dean clearly has). The multi-year highs in deferred interest rates (pushes up forward prices) and the fact that high-flying stocks that have made concentrated investors quite rich are also relatively high-volatility presents those of us in the real (not risk-neutral) world an attractive menu of hedges.
A final puzzle for the masochists
Collared stock has the same hockey stock diagram as owning a call spread of the same strikes but the total cost will vary by some amount. How much is the amount and why? The hint lies in put-call parity. Solving this should feel like a puzzle and is a step on the “bridge of asses”.
If you construct a portfolio from 2 stocks and one is $100 and the other is $10, buying a share of each means the first will dominate your portfolio’s risk, assuming they have the same volatility.
If you have $100,000 to invest, you can balance the risk by equal-weighting the holdings: $50k into each stock. You buy 500 shares of A and 5,000 shares of B.
But what if they aren’t the same volatility?
Equal-weighting means the most volatile stocks determine performance. If your $100,000 is split equally between the 2 stocks and A moves 10% per day while B moves 1% per day, you aren’t diversified. Stock A will mostly determine your returns.
We can achieve more balance via equal-risk-weighting, which adjusts how many dollars go into each stock based on its volatility.
Weight each stock by 1/vol:
Stock A gets 1/10
Stock B gets 1/1.
Divide by the total (1/10 + 1 = 1.1) and you get about 9% in A and 91% in B. Stock A is 10x as risky, so it gets about 1/10th the dollars.
On $100,000 that’s roughly $9k of A and $91k of B, corresponding to
91 shares of A
9,100 shares of B
Compared to the equal-dollar portfolio, the equal-risk portfolio requires you’d sell about 409 shares of A and buy about 4,100 shares of B, moving roughly 41% of your total portfolio value from the jumpy stock to the calm one.
No masochism for the kids but in case you’re interested…
Equal risk weighting is the starting point for so-called risk parity weighting. The difference is that instead of only considering the volatility a holding adds to the portfolio, the correlation is considered. A stock highly correlated with the rest of your portfolio contributes a lot of risk, while an anti-correlated one does a better job diversifying and reducing total portfolio risk. The effect can be so strong that even a highly volatile but anti-correlated stock can reduce total risk.
Computing a correlation-aware risk contribution requires a full covariance matrix and an optimizer — i.e., a guess-and-test calculator — to find the portfolio weights, since there’s no closed-form solution. If the kids can grok equal vol-weighting I feel like I’ve done my job, and they can discover risk parity on their own if they’re so inclined.)
Your own Portfolio HQ Spreadsheet
This workbook is designed to organize and monitor your first portfolio.
We recently added multi-leg support to our Attribution Visualizer, our tool for allowing you to track an option contract’s p/l assuming you hedged the delta daily. The tool breaks out the p/l according to gamma + theta (which sum to realized p/l) and to implied vol (vega p/l).
With multi-leg support, you can now entertain yourself with countless questions. Like “how would a masochistic skew trade work out if I trade a risk reversal and hedge daily?”
I ran a few risk reversals through the attribution tool.
Initial hedge: Short 73 shares per risk reversal (the RR had .73 delta)
The war had already flipped the skew hard toward upside strikes. The $140 call traded 94% vol against the $100 put’s 83% IV. It cost $5.83 in option premium.
At expiration, the stock expired at $114.87
So how did it work out to buy the premium IV?
moontower.ai
moontower.ai
Not good. The cumulative delta-hedged p/l was a loss of over $4.50 as you lost to both realized vol and vega. At the initiation of the trade, paying the premium vol meant you were flattish gamma but paying theta.
You were also long vega because, despite the options being equidistant, at a generally elevated vol level the lognormality of the underlying distribution and its associated positive skew pumps up the delta of calls. In fact, the 140 call was ~.47 while the 100 put, which is closer in dollar space, was only .27d. The higher call delta says the 140 strike is much “closer in vol space”. That’s why the equidistant risk reversal cost so much premium to buy the call. You are buying at OTM that has a delta that we usually associate with near ATM options!
Let’s adjust the strikes so that our call and put are both ~.25d
To equalize deltas against the $100 put you have to buy…drum roll please…
The $190 call! 58% OTM for 101% IV. Now you collect a $2.17 credit to own the call and short the 100 put. Your initial Greeks mostly vanish.
The trade still loses, but it fares much better as the loss is only $1.29.
It’s tempting to conclude paying a premium vol doesn’t work. But if you bought the much cheaper call and shorted the put on a hedged riskie in SPY before the war started, then you got smoked if you chose April 30th expiry (SPY bottomed the last day of Q1), recovered once the market started rallying, only to lose again as the market…continued rallying! SPY riskie:
moonotwer.ai
I’ve said it repeatedly over the years in different ways, but riskies are the whips and leather of the option world. If you bought the call on the SPY Feb 720/650 risk reversal on the first trading day of the year and hedged daily until expiration, you actually would have lost $.25 despite the following:
the trade collected about $2.75 in premium at the outset
the stock’s closing prices stayed inside the range of $675-$700
the call you bought was 10.2% IV and the put you sold was 16.8% IV
moontower.ai
In Financial Hacking, Philip Maymin invents an optimistic junior trading assistant who sits down his bosses at the bank to explain that he has found an infinite money machine. Selling the high IVs in SPY puts and buying the cheap IV in SPY calls. Maymin asks the reader to figure out why this logic doesn’t work.
Our tool provides the day-by-day audit which feeds the charts. Armed with that, Claude does an admirable job of not only answering Maymin’s prompt to the reader but also pinpointing exactly which days carry the biggest weight in the answer.
If you buy options implying a daily vol of 2% per day and it moves 4% per day, your expectancy is positive regardless of whether you hedge or not. That doesn’t mean you will win any more than it means you will win if you flip a fair coin and receive 2-1 odds. You have made Sklansky bucks, not necessarily real bucks.
Hedging reduces the p/l variation around the expectancy.
In Financial Hacking, Philip Maymin explains
The inability to hedge perfectly continuously impacts your trading by introducing random risk. This risk decreases if you hedge more frequently, but only as fast as the square root. Therefore, if you want to halve your risk, you have to hedge four times as often.
He makes this tangible and practical when he says:
Noise from hedging a one-year option on a daily basis instead of continuously is about the same as one volatility point. If you make one volatility point in expected profit and the standard deviation of your profit is one volatility point, then your Sharpe ratio is about one.
His final point echoes my argument that a requirement to hedge to isolate vol is a misconception:
The risk from not hedging continuously can be diversified away.
I built a simulator so you can see this scaling law in action.
An oblique insight can be witnessed if you set up the simulation with negative expectancy, ie pay 24% vol for a stock that realizes 20%. The more you hedge the more certain you lock in negative expectancy.
Doug Costa actually showed that happen in the toy example above. The investor who bought the 110 calls based on the real-world probability but then hedged by shorting the mispriced security actually assured themselves of a loss.
If you have no edge, variance is your friend. Not financial advice.
In a random walk where trials are independent, variance scales linearly with time. Since standard deviation is the square root of variance, volatility scales with sqrt(T).
This sublinear power law scaling gets smuggled into option math that answers practical questions. For example, assuming implied vol is constant, a 12-month ATF straddle is twice the price of a 3-month ATF straddle because sqrt (12/3) = 2.
This scaling is commonly used to convert raw vega into weighted vega. Raw vega is an extremely low-resolution number. If you own 50k 12-month vega vs being short 40k 3-month vega then it appears like you are long vol. But 12-month IV doesn’t whip around as much as 3-month IV, so this position will not act like it’s long vol on a large move higher in vol as the term structure will not “parallel shift” higher. The 3-month will increase faster as the term structure steepens into a downward sloping shape. A shape referred to as “inverted” or “backwardated”.
A simple way to modify raw vega is to scale all your monthly vegas by 1/sqrt(T) by normalizing them to a fixed DTE, for example 3 months. In that case, using the same math we did above, a 12-month vega is cut in half relative to the 3-month.
So your re-weighted vega is now short 15k vega instead of being long 10k vega!
12-month vega x scaling factor relative to 3m vega = +50k * 1/sqrt(12/3) = +25k
3-month vega x scaling factor relative to 3m vega = -40k * 1/sqrt(3/3) = -40k
Net: -15k
That volatility changes should move in proportion to 1/sqrt(T) is not a commandment brought down from Moses. It’s a convenient scaling factor that corresponds better, even if imperfectly, to empirical vol surface behavior. It also has a handy interpretation. If IV’s change in proportion to 1/sqrt(T) then ATM time spreads are unchanged (net of theta). In other words, the 3m/12month straddle spread is unchanged in such a regime.
Again, this scaling doesn’t need to hold. Sometimes we have parallel shifts in term structure and sometimes term structures steepen faster or slower than sqrt(T) scaling would predict. But the scaling is still a better prediction than the raw vega measure, which would have you believe IVs from all months are directly comparable without adjusting for how slow long-dated IVs change or how fast a weekly IV can move.
Random walks and the derivative pricing theory built upon them assume returns are independent. In hindsight, random walks still exhibit stretches that can be labeled “trend” (like a run of heads) or “mean reversion” (period of frequent alternating). But it’s one thing to label these stretches and hindsight vs predict them.
It should be self-evident that being able to predict trends or reversion would be marvelously profitable for a directional trader. But, direction aside, it would be a gift to volatility traders as well. It would influence not only how they priced vertical spreads and time spreads but the deltas in their models and their delta-hedging strategies. In other words, it would change everything if you had an edge on the probability of the next move being up or down, even if you did not have an edge on the fair value of the stock (this would occur if you had an edge on probability but not on the magnitude of up move vs down move). Option structures allow fine-grained bets that can isolate probability from magnitude.
If an asset trends over weeks or months, you will underestimate its volatility by scaling its daily volatility by sqrt(T). That makes sense. If it trended, that’s similar to saying the moves were auto-correlated and therefore dependent. Again, this is descriptive, not predictive, but relating measures of volatility to this interdependence lets us see how sensitive option pricing is to the random walk assumption. A few articles I’ve written in this vein:
These articles have a unifying concern. If prices are random, then sure, the power function that specifies how volatility scales is the familiar:
But if prices trend or mean-revert, the exponent is no longer 1/2.
Over any historical sample, H can be observed to be something other than 1/2. For it to be 1/2 would mean that annualized volatility over 2 different sampling windows was identical. In hindsight, that will rarely occur. But it’s also true for any exponent you pick. It’s hard to make the persistent case for a value other than 1/2, especially when it carries the financial totem of randomness.
In Retail Options Trading, Euan Sinclair says markets aren’t random, but they’re close to random. The question of whether there’s enough life growing in the gap between “random” and “almost random” for a skilled hunter to eat is existential professional investors’ careers.
We need to examine randomness.
Returning to the context of volatility scaling and its relationship to randomness, Euan reaches for a popular quant tool. The Hurst exponent. That’s why I picked H for the exponent in the general version of the volatility power law.
Euan’s definitions:
H = 0.5 is a random walk. No memory.
H < 0.5 is mean-reverting. Up tends to be followed by down.
H > 0.5 is trending, or “persistent.” Up tends to be followed by more up.
It’s time to do some learning moontower-style and start with the basics.
What The Hurst Exponent Actually Measures
Our Favorite Starting Point: Coin Flips
Flip a fair coin 100 times. Score +1 for heads, −1 for tails, and keep a running sum.
After 100 flips, how far from zero is that running sum?
Three stylized regimes to compare:
Perfectly correlated flips (every flip copies the last one): the running sum after 100 flips is ±100. It grows linearly with N.
Perfectly anti-correlated flips (+1, −1, +1, −1, …): the running sum never escapes ±1. It doesn’t grow with N at all.
Independent flips: the running sum lands around ±√N or in this case ±10.
Think of these as regimes that correspond to three scaling exponents:
Correlated (trending) N^1
Anti-correlated (mean-reverting): N^0
Independent (random walk) N^0.5
The exponent is the answer to “what power of N does the cumulative range scale with?”
Strip out the step size to isolate the regime
The ±1 coin gave a running sum with range around √N. If the coin paid ±10 instead, the range would be 10·√N. Bigger steps, bigger range. We want to strip out that distortion. If we measured price range on raw market data, a jumpy stock would always look more “trending” than a calm one, just because its steps are bigger. We’d be measuring volatility tangled up with regime, when we want regime alone.
The fix is to divide the range by the standard deviation of the steps: R/S
For the ±1 coin, R ≈ √N and S = 1, so R/S ≈ √N.
For the ±10 coin, R ≈ 10·√N and S = 10, so R/S ≈ √N. Same answer. The step size cancels out.
That’s the rescaled range. R/S only cares about the regime of the series, not its scale.
From coins to assets
Now we can adapt this to asset returns.
So we have two measurements over a window of T days of log returns:
S = the standard deviation of the returns (the step size in the coin example)
R = the range (max − min) of the cumulative sum of the de-meaned returns. How far the running total wandered between its high and its low.
We de-mean before computing R, so we strip out drift. We don’t care that the thing went up over the window, we care how it wandered around that trend. We divide by S to strip out the volatility scale.
The √T Benchmark
If returns are independent, R/S also grows like √T for the same underlying reason:
The variances of independent things add, so the spread grows by √T.
Now generalize it. Instead of forcing the exponent to be 0.5, let the data tell you:
R/S ~ T^H
H = 0.5: matches √T. Independent.
H > 0.5: R/S grows faster than √T. Trending. Moves reinforce each other.
H < 0.5: R/S grows slower than √T. Mean-reverting. Moves fight each other.
Reading H Off A Plot
The scaled range takes the functional form of a power law. If we take logs of both sides, the power law becomes a straight line, and the exponent H becomes the slope of the line.
log₂(R/S) = H · log₂(T)
Compute R/S at a few different T’s, plot them log-log, and the slope is H. It doesn’t matter which type of log we use. We could choose log₁₀ or ln, but using log₂ gives a clean way to narrate it: every time you double T, R/S multiplies by 2^H.
H = 0.5: each doubling multiplies R/S by √2 ≈ 1.41
H = 1.0: each doubling doubles R/S
H = 0.0: each doubling leaves R/S untouched
The Implementation Recipe
Pick several T’s (say 5, 10, 20, 40).
At each T, chop the sample into non-overlapping chunks. (see appendix)
For each chunk: de-mean, cumulative sum, R = max − min, S = std dev, then R/S.
Average R/S across the chunks at that T.
Fit a line through the (log₂T, log₂(R/S)) points. The slope is H.
Worked Examples
Computing one R/S by hand
Take a single 5-day chunk of returns, in %: +1, +3, −2, +4, −1.
Mean: (1 + 3 − 2 + 4 − 1) / 5 = +1%
De-mean (subtract the mean from each): 0, +2, −3, +3, −2
Cumulative sum (running total of the de-meaned series): 0, +2, −1, +2, 0
R is the range of that running total: max − min = (+2) − (−1) = 3
S is the standard deviation of the original five returns ≈ 2.28 (population stdev, STDEV.P)
R/S = 3 / 2.28 ≈ 1.32
That 1.32 is one chunk’s R/S.
Notice that since √5 ≈ 2.24, this little stretch wandered less than a random walk would, so it reads mean-reverting
We just repeat this for several windows.
Say you’ve got 80 days of returns.
Compute R/S at T = 5, 10, 20, 40:
The Hurst exponent, H ≈ 0.43, is extracted as the slope from the log-log plot, which is is linear transformation of a power function.
H<.50 corresponds to mean-reversion. Every doubling of T multiplies R/S by 2^0.43 ≈ 1.35, a hair under the 1.41 you’d get from a pure random walk. The wandering is growing slower than random diffusion would predict.
Applications of H
If H isn’t 0.5, then √T annualization is wrong for that asset. H > 0.5 means your long-horizon vol is higher than √252 × daily vol claims. H < 0.5 means it’s lower.
The articles I linked to in the intro wrestle with this same idea but in a simpler point-to-point manner in the form of a trend ratio (ie vol sampled weekly ÷ vol sampled daily).
If you assume the asset is “self-similar,” then the exponent H governs the scaling at every horizon then besides looking for trend or mean reversion strategies you can now research a world of option relationships that are potentially mispriced if the assumption of independence is strongly embedded in volatility scaling models.
To be reductionist, my trend ratio calcs were a two-point estimate of H. Autocorrelation patches function as a lagged estimate of the same thing. Hurst is the version that uses the whole curve instead of two points or one lag.
The assumption that markets are self-similar is wrong. The more wrong it is, the less you have to gain from Hurst vs point-to-point extrapolations, but all of this is dominated by the biggest elephant in the room. Can past data help you predict trend or mean-reversion at all? Which just circles back to Euan. If you are going to bother trading, you must believe, at worst, they are merely “almost random”.
A Sense Of Proportion
H looks like a number between 0 and 1, so a move from 0.50 to 0.55 feels insignificant. The vol-annualization lens is the cleanest way to debunk that.
Consider a stock with 1% daily vol.
At H = 0.50: 1% × 252^0.5 = 15.9% annual
At H = 0.55: 1% × 252^0.55 = 19.4% annual
A 0.05 bump in H means a 22% increase in annualized vol. This obviously affects your opinion of option prices but it’s also meaningful for position sizing and risk or VaR.
Most equity-index Hurst estimates sit in a narrow-looking 0.45 to 0.55 band, but that “small” band obscures significant differences.
The Catch: The Naive Number Lies
Now go back to Sinclair’s warning, because this is where it earns its keep.
Classic R/S — the recipe above, the one in his book, the one everybody reaches for first — is biased. Run it on a series you know is a memoryless random walk, at a 252-day window, and it does not hand you back 0.5. It hands you back something noticeably higher. The estimator manufactures a little fake memory all on its own, before the data even gets a vote.
So when SPY’s rolling H sits below 0.5, you have to ask how much of that is the market and how much is the ruler. This isn’t a fringe complaint. Lo built a modified R/S statistic back in 1991 precisely because the classic version confuses genuine long memory with garden-variety short-range stuff like volatility clustering, and equity returns are drowning in volatility clustering.
The fix is not exotic. Simulate a big pile of random walks the same length as your estimation window, run the exact same R/S recipe on them, and see what H the estimator coughs up on data you built to have none. Whatever offset it shows is the lie. Subtract it. Now a true random walk reads 0.5, and a reading that survives the correction is one you can actually look at.
This is the same humility you already preach about your own VRP work. A single rolling-window H is one draw. Treating it as gospel is exactly the “sample size of 1” trap. Calibrate it or don’t believe it.
Sandbox
I’ve heard of many traders, including option traders using Hurst in their research. It feels like it’s accelerated in the past 5 years. I didn’t take a harder look at it until Euan gave a brief intro to it in Retail Options Trading and LLM’s made it easier to tutor yourself on a quant method. It’s a technique that’s well-known, but anecdotally I’ve heard a wide range of mileage from it (I’m guessing every pro option trader in a seat today has at least heard of it in trading contexts).
If autocorrelation adnrealized vol ratios at different frequencies are worth looking at then Hurst is worth at least “spaghetti on the wall”. I built a Jupyter notebook to tinker using yfinance data. You can use it, fork it, whatever:
If I were to bring this “in the lab” to see how it can become a metric or even signal I’d start with tinkering to see how it its output jives with my intuition of how a certain asset behaved over a particular period.
Once I had a feel for it, I’d throw the metric up on a scatterplot against other metrics to develop a sense of what is normal. Are there any correlations between H and IV skews or IV term structures? How do changes in Hurst coincide with changes in realized vol (rv is an input to R/S therefore and ultimately H so maybe we are hunting for a residual variable to track?)
If you have organized data, in the world of LLMs all of this work is more fun and faster. For now, I hope this primer on Hurst was a digestible first step for explaining the theory behind it and why it can be relevant.
You can find additional notes below.
Appendix: What “chop into non-overlapping chunks” really means
T is a window length, just how many days of wandering you measure at once. You pick several because H isn’t a property of any single window. It’s the rate at which R/S grows as the window lengthens. A handful of T’s gives you points to fit a slope through.
You have 251 daily returns. You want one number, H. That’s the entire goal.
Pick a few window sizes: 5, 10, 20, 40.
For each window size you do the exact same thing:
T = 5: chop the 251 days into back-to-back groups of 5. You get 50 groups. Compute R/S for each group, then average all 50. That’s your R/S at 5.
T = 10: chop into groups of 10. You get 25 groups. R/S for each, average them. R/S at 10.
T = 20: groups of 20, so 12 groups. Average. R/S at 20.
T = 40: groups of 40, so 6 groups. Average. R/S at 40.
Now you have four points: (5, R/S@5), (10, R/S@10), (20, R/S@20), (40, R/S@40). Plot them log-log, draw the best-fit line, and the slope is H.
You want enough windows to fit a line, but longer windows are comprised of fewer blocks (like the T=40 window) so they’re shakier sample from which you are computing an average R/S.
Appendix: Bias
The body said classic R/S reads high on a random walk.
The finite-sample problem
Even on a true coin-flip walk, R/S over a short window doesn’t average to exactly √T. It sits a little above. Hurst, Anis, and Lloyd worked out the expected R/S of a random walk in closed form back in the 70s, so one fix is to divide your measured R/S by that expected value at each T before you fit. It’s conceptually similar to the familiar Bessel n−1 adjustment done to sample variance since we don’t know the true population variance.
Claude suggested 2 ways to apply a correction:
Use the closed-form expected R/S directly
Simulate a pile of random walks and measure what your exact regression spits out.
They differ because the log of an average isn’t the average of a log (Jensen’s inequality). The closed-form route leaves a residual bias of a few hundredths. The simulation route, because it runs the identical regression you use in practice, lands a true random walk back at 0.5.
After much back-and-forth, I took Claude’s rec and had the notebook use the simulation route.
The nice thing about LLMs is they know a lot of the academic history of a measure. Like I said this is a starting point for your own exploration.
Better estimators exist.
Classic R/S is the cleanest to teach and the weakest to trade. Lo’s modified R/S (1991) is built to ignore short-range dependence like volatility clustering, which plain R/S happily mislabels as memory. Detrended Fluctuation Analysis (Peng et al., 1994) is the workhorse in the econophysics literature. If you ever size a position off an H, cross-check it with one of those rather than lean on R/S alone.