“you can’t change minds” — an interview with Victor Haghani

A great Munchie today. As usual, I highlight the parts I want to keepsake and inject my own comments here and there.

LTCM Co-founder Victor Haghani: โ€œTaking Risk Is Always a Negativeโ€ | 1 hr 12 min watch

LTCM: right and ruined (01:27)

Itโ€™s good to think about investing as being two decisions: what to invest in and how much. And almost all of the focus of financial media, training, education, financial education is on what we should invest in… And at LTCM, we found some really good whats to invest in. But the sizing decision, how much of those good things is the right amount of good things, is equally critical, and is actually an easier decision to get right. But you have to realize how critical it is and that it deserves focus, and enough focus. And I think at LTCM, thatโ€™s where the mistake was, was on the sizing. It wasnโ€™t on the selection of the trades, it was on the sizing.

EV โ‰  risk-adjusted value (03:00)

Consider a 60/40 coin in your favor, but you must play 20 flips. This is a great โ€œwhatโ€ to invest in. But how much? Betting everything on every flip maximizes expected wealth, but you almost certainly end up broke.

The strategy that gives you the highest expected wealth at the end is actually to bet all of your money on heads each of the 20 flips. You have almost no chance of coming out of it with any wealth left… People donโ€™t realize thatโ€™s the highest expected value thing to do, but it really shows you that expected value and risk-adjusted value are two different things. And itโ€™s this risk-adjusted value that we want to maximize.

Risk-adjusted value is another way to say compounded return. Compounding naturally incorporates risk because the math of compounding is highly sensitive to variance. Weโ€™ll get to that later.

How the coin-flip players blew it (05:15)

  • Players came from graduate finance programs and Wall Street PM seats
  • They treated independent flips as dependent: bet heads after a run of tails, bet tails after five heads

Some people just bet a dollar every time. They just figured, โ€œWell, if I bet a dollar, Iโ€™ll never go bankruptโ€… and they really didnโ€™t maximize the opportunity that they were given. And then other people were too aggressive and actually went bankrupt. They got their $25 down to like $3 and then they just started to YOLO it, out of impatience or whatever.

A good way to play this game is to bet a constant proportion of your bankroll on each flip. Bet on heads every time. Bet as fast as you can, like hit the buttons as fast as you can. And what should that constant fraction be? …between 10 and 20%. Like 20% is Kelly, and maybe you want to be a bit less…

And once we told people that, everybody accepted it. It was beautiful to see. It was like, โ€œOh gosh, I just wish somebody had told me that before.โ€

Sizing is non-zero-sum (08:20)

I really like this point:

Getting your sizing right is not a zero-sum activity. For you to be right, nobody needs to be wrong. We can all be correct together. But if you want to beat the market, you can only beat the market by choosing investments that you find that other people have not found and are doing worse than the market. The only way to beat the market is for somebody to underperform the market. Itโ€™s zero-sum.

Risk as an internal fee (12:55)

I plan to write a bit more on this idea myself. The โ€œfeeโ€ framing Victor uses is fantastically plain, which I love, but I suspect people donโ€™t believe this. Iโ€™m working on a post to step readers through the idea. As weโ€™ll see later in this interview, my hopes arenโ€™t high that it will convince anyone. Still, I believe itโ€™s a profoundly worthy idea to flesh out.

There is a cost of risk which is the same as paying a fee. So when youโ€™re paying an investment management fee to somebody, you pay that fee and you see that fee… And so if somebody turns up to most investors and says, โ€œIโ€™ve got this S&P 500 fund and the fee is 75 basis points,โ€ people are like, โ€œCome on, give me a break.โ€ …Taking risk, you should think about taking risk as also paying a fee… The problem is that itโ€™s kind of like youโ€™re paying it to yourself. Thereโ€™s nobody charging it to your account and itโ€™s going out. Itโ€™s an internal accounting metric that you need to have.

For typical degrees of risk aversion for people, I would say you could think of that charge as just being equal to the variance of your portfolio. So if you have a portfolio that has 15% standard deviation… then Iโ€™m saying that you should be thinking that the cost of risk that youโ€™re paying is 0.15 squared, is 15% squared, which is 2ยผ%.

His rule of thumb: cost of risk = ฮณฯƒยฒ/2.

This formula comes from something called the โ€œMerton Ruleโ€ and itโ€™s basically Kelly adapted for non-discrete-style betting, more akin to typical investing contexts in stocks and bonds.

A typical investor (ฮณ โ‰ˆ 2) pays ฯƒยฒ while a Kelly bettor (ฮณ = 1) pays ฯƒยฒ/2. Remember prescribed Kelly sizing is optimal for maximizing long-term CAGR, but itโ€™s also very risky.

The Kelly bettor is a bit of a mythical being out there… I think that the typical guy is somewhere between what I described and 50% more risk averse actually.

Concentrated stock math (16:30)

If you have this concentrated stock portfolio that has 30% volatility, then you should be charging yourself, whatโ€™s 30% squared? Itโ€™s unbelievable. Itโ€™s 9%, right? Itโ€™s four times as much as 15 squared.

Iโ€™m willing to accept that the idiosyncratic risk is 50/50. Of course, thereโ€™s somebody on the other side of your hopeful 50/50 bet, and probably that other person is smarter than me anyway. So I donโ€™t want to do it. I donโ€™t want to have D. E. Shaw or Renaissance or whatever on the other side of my trades… Once I recognize that, itโ€™s like, โ€œWait a second, Iโ€™ve got to make an extra 7% on those trades, an extra 7% just to break even and get a higher risk-adjusted return.โ€

Thatโ€™s quite a hurdle considering that in a relatively efficient market youโ€™re a coin flip to have bet right.

He talks a lot more about this in the interview so you can check that out on your own.

โ€œHow do I become a billionaireโ€ is the wrong question (22:20)

When young people at a VC firm that invited them in to talk about his bookโ€ฆ

Itโ€™s the right answer to the wrong question. Thatโ€™s whatโ€™s going on here, right? If the question is, โ€œHow do I become a billionaire?โ€ The right answer is take a lot of risk. Take a ton of risk… What do I need to do to become a billionaire is the wrong question. Thatโ€™s the wrong objective.

The right objective for people is that you want to have the highest smooth, risk-adjusted, or we call it sustainable, lifetime spending and giving of money, adjusted for inflation, cost of living… The objective is not whoever dies with the most wealth wins. The objective is not I want to maximize the probability of having enough to retire. Itโ€™s not I want to die broke. Well, dying broke is easy. You spend all your money tomorrow and take a pill.

A few of the people said like, โ€œBut if I do what youโ€™re saying to do, how am I ever going to become a billionaire?โ€ And itโ€™s like, thatโ€™s not the right question.

The only thing in a bear market is risk-aversion lol.

Crystal Ball, humans (27:25)

Victor saw a Taleb tweet:

He tweeted that if you gave people the front page of the Wall Street Journal one day ahead of time, they would all go bust in a year… They would be so overconfident. They would be so greedy. They wouldnโ€™t size the trades right. They wouldnโ€™t recognize that sometimes the employment report is hot and bonds go up.

The Elm team hired an intern to build a program to test this idea.

  • Business-school round: about 100 players staked $50 each, about $5,000 total. Elm paid out about $5,300, so with the next dayโ€™s news they eeked out a small profit. About 1/6 went bust, and the hit ratio was 52%. Some players ran 20x leverage.
  • In the web version: about 50k players with $1M of play money. The results were predictably unimpressive.
  • Six macro pros averaged about a 60% hit ratio and +70%, and all six made money:

Most of them were very selective. Like they only bet on six or seven of the 15 days. They didnโ€™t always bet on stocks and bonds… They were just looking for something that they were really confident in and then they bet pretty big.

This reminds me of the โ€œmost importantโ€ gambling topic.

Crystal Ball, LLMs (34:55)

His prediction for head-to-head play:

Totally different experience because all you want to do is beat the AI. So you lose your mind… Itโ€™s like, โ€œHow can I beat Grok? Iโ€™ve got to at least be able to beat Grok.โ€ Like Claude gets ahead, but itโ€™s like, โ€œOkay, Iโ€™ve got to at least get ahead of Grok.โ€

The paper confirmed his hunch. Head-to-head players used 30x average gross leverage versus 25x solo, and maxed their leverage on 10% of plays versus 6%

All of them are too aggressive and risk-taking… Claude is getting like just over a 60% hit ratio.

This doesnโ€™t mean that they can beat the market, but it does mean that theyโ€™re doing better than the average human that comes to play the game… Most of whatโ€™s going on right now is people are running AIs to see if they can beat the market, but theyโ€™re not really comparing it to the average investor.

Paper companion numbers:

  • Base models ended at Claude $2.59M, ChatGPT $1.47M, Grok $968k, Gemini $492k
  • Stock sizing averaged 7โ€“12x, and the market has moved more than 5% on 23 days since 2000
  • Merton share implies 7.5โ€“15% daily ฯƒ; the AIs ran 20โ€“40%
  • Gemini and Grok had positive Sharpe ratios and still lost money from overbetting
  • All four knew Kelly from the coin flip but didnโ€™t connect it to stocks and bonds
  • After reading the book, sizing became far more appropriate and prediction skill stayed the same

Elmโ€™s sizing question (47:40)

The main question weโ€™re asking people is saying like, imagine that stocks have an expected return 4% higher than safe bonds. How much of your wealth do you want in stocks if that were the case? So that answers the risk aversion question and their view of the riskiness of stocks all in one go… And then we say, โ€œWell, if stocks only have a 2% expected return above bonds, what do you want to do then?โ€ And theyโ€™re like, โ€œIโ€™m happy to have 37.5% in stocks.โ€

Notice that the 4% โ†’ 75% allocation answer implies ฮณ โ‰ˆ 2 at about 16% equity vol. This is the โ€œtypical guyโ€ as his ฯƒยฒ rule.

Remember Merton: w = ERP / (ฮณฯƒยฒ)

ERP is โ€œequity risk premiumโ€

(Just fyi: Elm charges 12 bps; its ETF runs a 75% equity baseline)

You canโ€™t change minds (1:02:45)

Iโ€™ve got similar stories up the wazoo:

One thing Iโ€™ve learned in doing what weโ€™ve been doing for the last 15 years is that you just donโ€™t change anybodyโ€™s mind about anything.

My mother day trades stocks. Sheโ€™s 92 years old… Sheโ€™s only been day trading since commissions went to zero. But for 20 years, Iโ€™ve been telling her to invest in index funds, that sheโ€™s a nonprofessional investor, that she should just own index funds and not worry about it. But every day sheโ€™s day trading now, in the morning, in the evening. Itโ€™s taking up a couple of hours of every one of her days. She loves it. She thinks sheโ€™s doing well. And nothing that I could say, no amount of time I could spend with her, would convince her to not be a day trader and would convince her that sheโ€™s not doing well.

And she thinks that Iโ€™m intelligent. Like she doesnโ€™t think Iโ€™m her stupid son. She thinks that Iโ€™m intelligent. She knows I work in finance. She knows that some people listen to me. She knows I wrote a book, right? So she knows that, and she knows that thereโ€™s no conflict of interest, that I want to help her. Like, she knows that I donโ€™t benefit in any way from her not day trading. So itโ€™s really hard to change anybodyโ€™s mind.

Iron Condor Destroyer

Workflows are Moontowerโ€™s screeners organized around what youโ€™re trying to do: sell premium (Income), buy protection (Defensive), finance that protection with your upside (Collars).

We just released a new one to help directional traders scan across the market for the best payoff for a given move: Verticals

About the Verticals Workflow

It starts from a simple need:

How do I compare payoffs across tickers in volatility-adjusted terms?

You donโ€™t want to screen across names for the best bang-for-your-buck on a 10% rally because 10% means something very different in SPY vs MU or TSLA.

Instead we use standard deviations computed from the nameโ€™s own surface. Pick a move, say +1 SD by the November expiry, and ask the same question of every name: whatโ€™s the cheapest vertical that pays in full if the stock gets there?

The Verticals workflow returns the answer in a grid based on the watchlist you care about.

Letโ€™s see how it works (and learn some option math in the process).

Two knobs

You set two things:

  1. An expiry. The picker lists every expiry any name in your list carries, with a count of how many names list it. Every row in the grid is the same maturity, so youโ€™re comparing like with like.
  2. A signed move. ยฑ0.5, ยฑ1 or ยฑ1.5 SD. Positive means call spreads, negative means put spreads.

For each name, the grid shows the tightest vertical that is fully in the money at that move. Tightest means adjacent listed strikes. Fully in the money means if the stock lands exactly on the target at expiry, you collect the whole strike width.

Finding the breakpoint

The target strike for a z-SD move is:

Then pick strikes:

  • Calls: the short strike is the closest listed strike at or below K_z. The long strike is the next one down.
  • Puts: the short strike is the closest listed strike at or above K_z. The long strike is the next one up.

Both rules keep the whole spread inside the target, so a stock that gets to the breakpoint maximizes the max spread value (ie it pays the width of the strikes.)

Marking the spread

The obvious price is the spreadโ€™s mid, but itโ€™s far too noisy if each leg is 40 cents wide and the spread is worth 30 cents.

Collecting an accurate mark for a spread is a bit of an art, combining curve fitting and option pricing. In the app, the Price you see for the spread is not mid but a Moontower fair value which lives within the bid-ask.

moontower.ai

Reading the grid

The headline number is Payout:

 

A 1-point spread priced at $0.20 pays 4 to 1 if the stock gets to the target.

Payout is the first column your eye goes to, but we include several columns to judge how much to trust a mark.

Filtering for confident markets

  • Spread bid / ask: the spreadโ€™s own market.
  • Mkt width: the legged market, both legsโ€™ bid/ask widths added together. Itโ€™s what youโ€™d pay to cross both legs.
  • Mkt / strike width: Mkt width as a share of the strike width. A 20-cent-wide market on a $1 vertical might be hard to execute nearfair value.
  • Leg width / vol: the wider legโ€™s bid/ask expressed in vol points, as a share of its IV. It puts a 20-cent market on a $400 stock and a 20-cent market on a $30 stock on the same footing.
  • Mid: Compare with Price. When these two sit close together, the market and the model agree. When theyโ€™re far apart, the Moontower fair value is probably more reliable.
  • Liq: the nameโ€™s liquidity tier, which we provide in all our filters. Itโ€™sa function of how wide the markets as a percent of vol allowing us to compare across names.

The grid also drops names whose markets are too wide to mark at all. Theyโ€™re counted in the โ€œN names excludedโ€ line under the grid, so you can see what got left out.

A few screens to start with

  • Tight markets only. Mkt / strike width under 20%, Liq High, sorted by Payout. This is the honest version of the leaderboard.
  • Where the market and the model agree. Add the Mid column and keep rows where Price is within a few cents of it.
  • Cheap upside: +1 SD, Call skew %tile low, sorted by Payout.

Everything filters, groups and sorts like the other workflows, and your choices persist between visits.

This tool will let you look at the market and answer where the cheapest put spread or call spread to bet on a .5 or 1 standard deviation move by some expiry date.

You can also just reverse sort if youโ€™re looking for spreads to sell. Knowing how much people love to sell options, I should probably rebrand this as the iron condor destroyer (an iron condor is a package of 2 OTM vertical spreads typically marketed as a less risky way to sell a strangle).

the farmer’s almanac for investing

Exponential Wealth: Centuries of Stock and Bond Returns free PDF ยท 380 pp.

In 1976, Roger Ibbotson and Rex Sinquefield published โ€œStocks, Bonds, Bills, and Inflationโ€ (SBBI), the first long-run total-return history of the major asset classes. Economists had talked about the equity risk premium for years but as Ibbotson puts it, โ€œSBBI gave us a measure of it.โ€ The data became the standard reference for historical return assumptions, from asset allocation to cost-of-capital work.

This is the 50th-anniversary update, rebuilt from CRSP after Morningstar discontinued the original indices, with the dataset now spanning a full century, 1926โ€“2025.

It recaps what stocks, bonds, bills, and inflation have delivered, then widens out to global markets since 1900, the US before 1926, commodity futures since 1871, bubbles and crashes since 1792, and a forecast to 2050.

Itโ€™s a free, encyclopedic reference I recommend adding to your favorite LLMโ€™s investing project folder. Itโ€™s like the Farmerโ€™s Almanac for money.

Itโ€™s also a great reference for methodologies since the studies entail constructing price series and indices, measuring their statistical features, and addressing pitfalls such as survivorship bias, float vs full-cap weighting, shifting size definitions, overlapping observations, and effective sample sizes.

A sprinkling of fun facts:

  • $1 in US large caps in 1926 โ†’ $14,751 by end of 2025; $814 after inflation. Long Treasuries: $117 nominal, under $8 real. T-bills: $25 nominal, under $2 real.
  • Real compound returns: stocks 6.9%, long Treasuries 1.9%, bills 0.3%.
  • About a third of the century was spent below a prior real high: 1929โ€“WWII, 1966โ€“82 (16 years of zero real growth), 2000โ€“2012.
  • A 50% three-year run-up was followed by another 50% run-up ~3x as often as by a full reversal (144 vs 50 of 394 episodes, 1792โ€“2024). Crashes were followed by full recovery even more reliably.
  • Top 25 companies are ~50% of US market cap, a level last seen in the 1930s. Tech is ~40% of cap.
  • This is a non-obvious logical bit: Index total return is attainable by any investor but not all investors, for example dividend reinvestment canโ€™t scale to everyone. Reminds me of these fallacy of composition peculiarities like โ€œparadox of thriftโ€ or treating government finances as if they are a household.
  • Investors had the least cash when expected returns are highest.
  • Micro cap: 16.5% arithmetic, 11.1% geometric, ฯƒ = 37%. Mid cap matches micro on compound return with ฯƒ = 24%. Post-1976, micro had the lowest compound return of any size bucket.
  • October 1987 was a 1-in-10ยนยฒโธ event under lognormal i.i.d. The chapter links fat tails to the persistent apparent overpricing of OTM S&P puts.

The book closes with a forecast for 2026โ€“2050, using the same approach Ibbotson and Sinquefield used in 1976. It has 3 steps:

  1. They anchor interest rates and inflation to todayโ€™s Treasury yield curve.
  2. Resample historical risk premiums.
  3. Simulate thousands of possible paths.

How did this method fare from 1976 to today?

Pretty well, actually. Although the composition of the return wasnโ€™t quite what they expected.

From 1976 to 2025, the forecast called for a median of ~13.3% a year, but stocks only returned ~11.9%. However, it assumed ~6.7% inflation (it was the 70s after all) when actual inflation was only a bit more than half at 3.6%. Which means nominal returns fell short of the forecast while real returns beat it (~8.1% vs ~6.2%).

At this time, inflation and rates are closer to their 100-year averages, so the yield curve isnโ€™t pushing the forecast much in either direction. What does it say about 2026โ€“2050?

  • On raw US history: 9.5% nominal, 7.0% real per year.
  • The authors think that bakes in an unusually fortunate US century, so they pull the mean toward the global historical experience.
  • Preferred forecast: 8.0% nominal, 5.6% real, implying an equity risk premium of about 4.7% over cash. In their words, a premium โ€œvery close to what it always has been.โ€

Seems rosy. Weโ€™re not allowed to be this optimistic. Letโ€™s get a second opinion. This one comes from the market itself as translated by Elm Wealth. Their capital markets assumptions, out this week, are implied from current bond yields and valuations (a cyclically adjusted earnings yield) instead of historical premiums.

[Whether CAPE is a more or less reliable forecasting tool is up for debate, but any attempt to forecast returns feels about as ill-fitting as using a vacuum to pull out a splinter. Iโ€™m in the camp that itโ€™s a pointless exercise, while vols are more predictable and therefore a sounder basis for โ€œknow nothingโ€ sizing, which I need because I know nothing.]

Elm reports as of September 30:

  • US stocks: 2.92% real, 5.30% nominal
  • Non-US stocks: 5.78% real, 8.15% nominal
  • 10-year TIPS: 2.91% real
  • US equity risk premium over TIPS: 0.01%

Where do Elm and the authors agree?

  • Both take the rate and inflation pieces from market yields.
  • Both lean away from projecting the US past forward. Ibbotson adjusts toward global history.

Where do they depart from each other?

  • The equity premium. History says ~4.7% over cash. Todayโ€™s valuations say roughly zero over TIPS. Measured against the same TIPS yield, Ibbotsonโ€™s forecast is still ~2.7 points above it.
  • Ibbotson does address valuation. The chapter flags P/E expansion as inflating the historical record and tests stripping it out, but that actually lowered the forecast less than the global adjustment did. In other words, using global historical valuation was more conservative.
  • Thereโ€™s some timing mismatch. Ibbotson uses the end-2025 curve while Elmโ€™s publishing 9 months later when we know 10-year real yields are up over a full 100 bps.

Caveats both sides attach

  • Elm: the risk premium is a poor predictor of near-term direction; momentum is positive and its risk indicator reads low.
  • Ibbotson: a forecast is the center of a wide distribution, โ€œnot a guarantee.โ€

A lazy manโ€™s framing

Ibbotson forecasts 5.7% real equity returns for a couple of decades. The CAPE method is close to 0. Split the difference, and you are close to the current 2.90% 10-year TIPS yield you can lock in now (for reference, Treasuries returned 1.9% real over the last 100 years.)

The market in general doesnโ€™t appear to be especially frothy, but the risk-reward in bonds has gotten far more attractive with the latest surge in yields. If AI turns out to be deflationary and hurts employment at the same time that housing rolls over because the cost to own and finance has skyrocketed, then bonds will have looked like insurance policies with ex-ante positive carry. In English, a pretty sweet deal.

But I get it, itโ€™s no spaceship outta the underclass.

Itโ€™s funny, when you learn about investing, you associate greed with bullishness. Turns out the textbooks have it exactly backwards in the context of our modern economic pathology psychology.

vibey vs discrete trades

At the Robinhood Summit last week, Mat Cashman and I hosted a โ€œTrading Labโ€ emphasizing that options are surgical tools. You only want to reach for them when you have a specific view. While their payoff is highly levered to nailing a particular timing, they are unforgiving to vague forecasts like โ€œI generally want to be long this stockโ€. If you buy the stock instead, you know your exposure. Your delta is 1.00 and doesnโ€™t change.

If you buy an option, your exposure changes due to time passing alone. So that initial decision thrusts you into a series of future decisions, each one challenging you to tighten your thesis and face yet another bid/ask spread.

To demonstrate an appropriate use of options we stepped through a highly specific example during the lab and even executed the trade live!

Iโ€™m going to walk you through it here today.

Setup

The session was on Wednesday, September 30th. Nike (NKE) reports earnings after the close Thursday, October 1st.

Some context:

โœ”๏ธNKE is down ~75% since its lifetime peak which occurred 5 years ago. While falling short of the peak, it did stage a large rally from late 2022 into 2023, before resuming its downward March which accelerated this year with the stock down >40% YTD at the time of the session.

โœ”๏ธNKE typically pays about $1.40/yr in dividends or greater than 4% yield at recent stock prices. However, it can no longer fund the dividend from current cash flows. They could fund it from balance sheet assets (ie dip into their savings) to be able to pay it for several more years. I learned this from Brett Caughranโ€™s tweet:

โœ”๏ธI used moontower.aiโ€™s MCP (which is now included with individual plans ๐Ÿ˜‰) to ask Claude if the options market was anticipating a cut. It turns out the implied dividend about 1 year out is 50% of what NKE has been paying. NKEโ€™s woes are out in the open, the stock and options markets see them.

With such a backdrop, we expect this to be an important earnings call. After all, if a plane is nosediving, we expect the captain to say something. (We know the content of the words will be reassuring, but weโ€™ll listen to the tone of his voice to infer how scared or optimistic we should be.)

Pulling up the option chain

With the above context in mind, we load the October 2nd option chain. This is clean as a market gets around an earnings move since the options expire 24 hours after the earnings call.

During the session, I reason aloud through what Iโ€™m looking at.

The stock is ~$36. The 36 straddle, which can be interpreted as the average expected move size, is ~$3 or 8% of the stock price. Earnings are a big deal.

I gracefully elide the question of whether you should be bullish or bearish. If I was privy to such information, Iโ€™d be a Market Wizard. But many people have views and wanna bet. I can help you reason through your choices given you have a view. So letโ€™s get specific.

What are you paying for?

We arbitrarily side with the bulls, but the analysis that follows works for bears as well if they substitute different contracts.

If the 36 straddle is at-the-money, meaning the stock is also $36, then the 36 call is half the straddle or $1.50.

If the stock experiences the expected move to the upside those calls will double your money as they will be worth $3 of intrinsic value at expiry. In the language of odds, you get paid 1-1 on an 8% up move.

But if this is our specific bet, can we find an expression of the trade with more octane?

We load up the 38.5/39 call spread. Itโ€™s marked for $.12 and if NKE expires $39 or higher, it will be worth $.50.

You risk $.12 to make $.38 so you are getting just over 3-1 odds for the same $39 outcome.

Why does this sound so much better than getting 1-1 if we just buy the 36 call for $1.50?

Because the outright call continues to pay off if the stock climbs more than 8%. You are paying for the extra profit potential if NKE goes up 10, 15, 20 percent. Being vague leads you to pay for more margin of error. But if youโ€™re specific, you can get extra leverage on being right. Of course, this is risky because if youโ€™re wrong most scenarios lead to total loss.

Letโ€™s deal with the risk

The setup of the session was that we have $5,000 of capital.

If we are wrong on the vertical spread and the stock doesnโ€™t clear $39 then we likely lose our entire premium.

We get a 3-to-1 payoff when we are right.

This type of binary outcome is a perfect setup to use Kelly sizing. The nice thingabout Kelly is that it assumes you have a total loss when you are wrong, so the sizing itself is the risk management. Youโ€™ve already budgeted for the maximum risk.

Weโ€™ll get to the sizing in a second but just for building fluency in thinking probabilistically, letโ€™s acknowledge a few heuristics:

1. We know from the derivation of the straddle approximation, that the straddle is 80% of 1 standard deviation. Therefore, it encompasses ~79% of the distribution assuming normality. Therefore the upper tail, where NKE goes up more than $3, is expected 21% of the time. To get 3-1 odds would require a minimum probability of 25% to be a positive EV bet. But, normality is doing a lot of lifting in that sentence. Earnings are more likely a binary outcome, and while itโ€™s too simplistic to say thereโ€™s a 50/50 chance of the stock going up or down 8% (which would make this vertical spread seem irresistibly cheap), itโ€™s not unreasonable to think the probability of that spread hitting is greater than 25% (or for that matter, for the symmetrical downside put spread for those with a bearish view).

In the name of walking you through sizing GIVEN you already have the bull view, weโ€™ll presume you believe thereโ€™s a 40% chance the stock pops higher by the amount of the straddle or $3 to $39.

How much should we bet on the vertical spread if we are getting 3-1?

Kelly:

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

Plug and chug:

f* = .40 – .60/3 = 20% or $1,000 of the allotted capital

Converting to contracts:

Each option contract is $.12 or $12 once we adjust for the 100 share multipler.

$1,000/$12 ~ 83 contracts

We donโ€™t want to risk overbetting if we overestimate our p (i.e., probability of winning), so letโ€™s size to about half Kelly and only buy 40 contracts.

We actually bought the vertical spreads live during the session.

Postscript

NKE ended up falling after earnings. The equivalent put spread on the downside would have been the 33.50/33 put spread, looking to get paid if NKE fell $3.

NKE closed Friday at $33.90, so the put spread would have expired worthless. At one point, the stock touched $32.09, so the spread would have been deep in-the-money, but because there was still some time value remaining, you wouldnโ€™t have been able to capture its maximum value, although you probably could have flipped out of it and tripled your money, from $.12 to $.36

But it would have been hard to do since, with the stock sitting around $32 you have theta on your side, and youโ€™d probably be thinking, โ€œeven if the stock rallies $1 or 3% intraday, Iโ€™ll have turned my $.12 into $.50.โ€

Alas, the stock ripped 6% intraday after bottoming, leaving the put spread worthless!

Notice how tricky this is for everyone. If you were short the spreads, you ended up collecting the full $.12 of premium, but the path would have greyed your hair as it looked like youโ€™d face maximum loss or feel forced to cover only to later watch NKE stage a heroic rally.

Closing words

Options are surgical. I think of them like term life insurance. I have a specific thing Iโ€™m trying to mitigate or take advantage. If I buy them and lose, it may or may not have been a good outcome depending on what the counterfactual would have been. The term life analogy is an obvious demonstration of benchmarking to the right outcome.

The more tightly you can wrap an option expression around a terminal value thesis, the easier the risk management is because you can budget for total loss and let sizing do the heavy work.

Thinking probabilistically is a habit of mind. Reasoning between whatโ€™s in a price and your own confidence intervals around scenarios will develop not just discipline but it gives you metrics, even if they are finger-in-the-air estimates, to journal or track, allowing you to get a bit more calibrated with each rep.

2 option ideas from the Robinhood Summit 2026

Mat Cashman and I did a teach-in session to a large audience of conference-goers who use options. Hereโ€™s one idea from that session.

What does optionality actually buy you?

The simplest way to understand the value of buying an option for directional reasons is to benchmark it to the counterfactual: how do I perform relative to โ€œif I just bought the stock?โ€

If you buy a call, you do better in the large up move OR the large down move vs just buying the stock. You have more upside leverage, and if the stock craters, you only lose your premium. The tradeoff is that the option strategy underperforms owning the shares on intermediate-sized moves. Thatโ€™s why we say owning an option is โ€œlong volatilityโ€ even if someone resists thinking in such admittedly abstract terms.

The chart subtracts the P/L of 100 shares from the P/L of ~2.2 calls on the 1-year 110 strike, at expiry. The calls cost $2,194 and carry the same delta as shares that cost $10,000 (100 shares of a $100 stock).

๐Ÿ”จExercise: Solve for what delta the calls are

The shares win between roughly $78 and $137. The gap is widest at $110, where the calls expire worthless and the shares are up $1,000, a $3,200 difference. Below $78, the calls lose $2,194 at most while the shares keep falling. Above $110 the calls behave like 217 shares instead of 100.

If you buy a call and lose your premium, you canโ€™t evaluate if this is a good or bad outcome without considering the counterfactual.

The INTC calls and a possible Micron sympathy trade

This was one of the examples I discussed in the live stream session where we talked about combining sources of data to reason through trade ideas.

  1. The print. On Sep 28th, there was notable size buying in INTC October 16 130 calls.
  2. An odd expiry. It was a lot of premium spent on high gamma & theta calls which expire a week ahead of Intelโ€™s October 23 earnings call. Why spend that much premium on a short-dated bet that rolls off before the stockโ€™s own catalyst?
  3. The sympathy hypothesis. Micron was reporting on the day I was talking after the close, Sep 30th. Maybe the buyer was using INTC as a semis proxy, owning short-dated calls to catch a sympathy move off Micronโ€™s print. Itโ€™s one possible story, not something I can confirm.
  4. Did the seller make a mistake? A seller may think โ€œthese donโ€™t capture earnings, so they donโ€™t deserve a premium,โ€ or INTC shouldnโ€™t move much in the quiet blackout period before an earnings report, ignoring possible spillover effects from MUโ€™s bellwether report and guidance.
  5. The next question. Is Micron earnings even a big deal? Look at Micronโ€™s earnings straddle. If the implied move is small, the market isnโ€™t expecting Micron to move much. Then the sympathy thesis loses most of its appeal, since thereโ€™s less distance for INTC to get dragged along. Turn out MU earnings were priced cheaply compared to the last few years.
  6. Then look at what INTC vol already costs. Implied vol was middle-of-the-road but high cross-sectionally (ie relative to other stocks in the current market regime). Call skew was rich, though not extreme.
  7. Put it together. Rich vol plus a firm call skew, the primary market for MU volatility saying earnings are going to be a non-event, and a possible story for putting the INTC buyer โ€œon a handโ€ adds up to making me more inclined to want to fade the INTC call buyer. Possible trades are selling INTC straddles or, if you already own the stock, writing calls against it.
  8. You donโ€™t have to sell the 130s to fade the 130 buyer. Heavy buying in one strike lifts vol across that whole expiry. Strikes near each other move together, so the bid in the 130 calls shows up in the 125s, the 135s, and the at-the-money options too. Selling the straddle, or whatever structure fits your book, still takes the other side of this buyer. Donโ€™t anchor on the exact strike that printed. Put-call parity ensures the entire surface gets richer.

Finally, an analogy I didnโ€™t make at the conference, but notice how much like poker the chain of thought is. The cards you can see (ie the flop) are the measurables like IV rank or call skew. The quantity of options purchased is the bet size. The expiry is like thinking about the position they bet from (ie โ€œunder the gunโ€ or right after the button to last position or โ€œdealerโ€). One of the market-makersโ€™ advantages is that they keep tabs on notable flow, like a poker bot which examines online playersโ€™ hand histories and tendencies.

Taylor Expansion โ€” Cheatsheet


The idea in one sentence

Stand at one spot on a curve, measure everything you can there, and use those measurements to guess the height somewhere else.

You’d do this when the curve is hard to compute everywhere but easy to measure at one point, or when you want to see what drives a change. A bond’s price is a familiar case: you know its yield and duration today and want to know what happens if rates move.

The guess is built in layers. Each layer uses one more thing you measured at the anchor. The first layer is a straight line. The second bends it. The third bends the bend. You stop when the layers stop mattering, or when you run out of measurements.


Worked example: guess xยณ at x = 1.2 using only what you know at x = 1

The curve is y = xยณ. You are standing at x = 1. The true answer is 1.2ยณ = 1.728, but pretend you can’t compute it.

What you know at x = 1

ThingHow you get itValue at x = 1
Heightxยณ1
Slopederivative, 3xยฒ3
How fast the slope changesderivative of that, 6x6
How fast that changesderivative of that6
Anything furtherderivative of a constant0

The walk. Destination minus start: 1.2 โˆ’ 1 = 0.2. Call it h.

Layer 1: pretend the slope stays 3. Guess = height + slope ร— walk = 1 + 3 ร— 0.2 = 1.6. Off by 0.128.

Layer 2: the slope drifts. It goes up at 6 per unit, so over the walk it rises from 3 to 3 + 6 ร— 0.2 = 4.2. Use the average slope, 3.6, instead of 3. Guess = 1 + 3.6 ร— 0.2 = 1.72. Off by 0.008.

Written as a separate correction: the new piece is ยฝ ร— 6 ร— 0.2ยฒ = 0.12, added to the 1.6.

Layer 3: the drift rate drifts. Same move one level deeper. The correction is 6 ร— 0.2ยณ รท 6 = 0.008. Guess = 1.728. Off by exactly 0.

Layer 4 and beyond: the measurement is 0, so every further correction is 0.

The guess is now perfect at x = 1.2, and it’s perfect at every other x too. xยณ only has three pieces of information in it. Use all three and you have rebuilt the function.

Try it at x = 3 (walk h = 2): 1 + 3(2) + 3(2)ยฒ + (2)ยณ = 1 + 6 + 12 + 8 = 27 = 3ยณ. Still exact, even two units from the anchor.

Three layers rebuild xยณ exactly, everywhereHeight y; the dashed vertical is the anchor x = 1-50510152025-10123xxยณ = layer 3 27layer 1 7layer 2 19

Layer 1 is the tangent line. Layer 2 bends it into a parabola that hugs the curve near x = 1 but misses on both sides. Layer 3 (dashed) lies on top of the black xยณ curve at every x, which is the whole point: for a polynomial, enough layers is exactly the function.


Why you divide by 2, then 6, then 24

Each layer’s measurement gets divided before it’s used: layer 1 by 1, layer 2 by 2, layer 3 by 6, layer 4 by 24. Those are 1!, 2!, 3!, 4!. Two ways to see why.

The averaging picture. Layer 2 used the average slope over the walk. The slope was a ramp going from 3 to 4.2, and the average of a ramp is halfway: that’s the รท2. Layer 3 needs the average of something that grows like a parabola, and a parabola from zero spends most of the walk being small, so its average is only a third of its end value: another รท3. Stack them: 2 ร— 3 = 6. One more level and the average of a cubic is a quarter: 2 ร— 3 ร— 4 = 24.

Check the parabola claim with numbers. Sample tยฒ at t = 0.1, 0.2, โ€ฆ, 1.0: you get 0.01, 0.04, 0.09, 0.16, 0.25, 0.36, 0.49, 0.64, 0.81, 1.00. They add to 3.85, average 0.385, and with finer sampling it settles to โ…“.

The power-raising picture. Differentiating hโฟ gives n ร— hโฟโปยน: lowering a power by one multiplies by that power. So raising a power by one divides by it. To turn a constant measurement into a term in hยณ you raise the power three times, paying รท1, รท2, รท3 along the way. That product is 3! = 6.

LayerMeasurement (xยณ at 1)Divide byTerm
1313h
2623hยฒ
366hยณ
40240

Worked example: ln x, where the corrections stop helping

Same game, anchor at x = 1. Height is ln 1 = 0. Slope is 1/x, so 1 at the anchor.

What you know at x = 1

LayerDerivativeValue at 1Divide byTerm
11/x11h
2โˆ’1/xยฒโˆ’12โˆ’hยฒ/2
32/xยณ26hยณ/3
4โˆ’6/xโดโˆ’624โˆ’hโด/4
524/xโต24120hโต/5
6โˆ’120/xโถโˆ’120720โˆ’hโถ/6

The measurements never hit zero. They alternate sign and grow. So there is always another correction, forever. Whether the corrections help depends on how far you walk.

Short walk: x = 1.5, so h = 0.5. True value ln 1.5 = 0.4055.

Layers usedGuessGap
10.50.0945
20.3750.0305
30.41670.0112
40.40100.0044
50.40730.0018
60.40470.0008

Each layer roughly halves the gap. Keep going and it heads to zero.

Long walk: x = 2.5, so h = 1.5. True value ln 2.5 = 0.9163.

Layers usedGuessGap
11.50.5837
20.3750.5413
31.50.5837
40.23440.6819
51.75310.8368
6โˆ’0.14531.0616

The gap gets worse. Each term is ยฑhแต/k, and with h = 1.5 the hแต grows faster than the k can shrink it: 1.5, 1.125, 1.125, 1.27, 1.52, 1.90, โ€ฆ The guess swings wider and wider around the truth.

Past x = 2, more layers make the ln x guess worseHeight y; anchor at x = 1; shaded band = radius of convergence, 0 to 2layers helplayers hurt-3-2-101230.511.522.533.54xlayer 1layer 2layer 3layer 4layer 5layer 6ln x

Inside the band the colored curves pile onto the black one, each layer tighter than the last. Right of x = 2 they fan out: layer 3 shoots up, layer 4 dives, layer 5 shoots higher, layer 6 dives harder. Every extra layer swings further from ln x instead of closer.

The rule. For ln x about 1, the corrections help when |h| < 1 and hurt when |h| > 1. That distance, 1, is the radius of convergence. It’s set by where the function itself breaks: ln x blows up at x = 0, exactly one unit left of the anchor, and the series can’t reach further right than it can reach left.

xยณ had no such limit because its corrections ran out before they could misbehave. That is the difference between a polynomial and everything else.


The formula, decoded

Everything above, written the standard way:

Pโ‚™(x) = ฮฃโ‚–โ‚Œโ‚€โฟ fโฝแตโพ(xโ‚€) / k! ยท (x โˆ’ xโ‚€)แต

Spelled out for the first few terms:

Pโ‚™(x) = f(xโ‚€) + fโ€ฒ(xโ‚€)(x โˆ’ xโ‚€) + fโ€ณ(xโ‚€)/2 ยท (x โˆ’ xโ‚€)ยฒ + fโ€ด(xโ‚€)/6 ยท (x โˆ’ xโ‚€)ยณ + โ‹ฏ

Every symbol, in the order it appears:

SymbolRead it asWhat it isIn the xยณ example
f“the function”the curve you’re guessing; f(x) is its height at xxยณ
x“x”the destination, any point on the horizontal axis1.2
xโ‚€“x-nought”the anchor, where you stood and took measurements1
x โˆ’ xโ‚€“the walk”destination minus start, also written h0.2
P“the polynomial”the guess; a polynomial because it’s a sum of powers of the walk1 + 3h + 3hยฒ + hยณ
n“n”how many layers you used; the highest power in the guess3
Pโ‚™(x)“P-n of x”the guess using n layers, evaluated at xPโ‚ƒ(1.2) = 1.728
k“k”the counter: which layer you’re on, running 0, 1, 2, โ€ฆ up to n0, 1, 2, 3
ฮฃโ‚–โ‚Œโ‚€โฟ“sum from k = 0 to n”add up the term for every k from 0 through nfour terms
fโ€ฒ, fโ€ณ, fโ€ด“f-prime, double-prime, triple-prime”first, second, third derivative: slope, rate of slope, rate of that3xยฒ, 6x, 6
fโฝแตโพ“f-k”the k-th derivative; fโฝโฐโพ is f itself, fโฝยนโพ is fโ€ฒ, and so onfโฝยฒโพ = 6x
fโฝแตโพ(xโ‚€)“f-k at x-nought”the k-th derivative evaluated at the anchor, a plain number1, 3, 6, 6
k!“k factorial”1 ร— 2 ร— โ€ฆ ร— k, the divide-by column; 0! = 11, 1, 2, 6
(x โˆ’ xโ‚€)แต“the walk to the k”the walk raised to the layer number1, 0.2, 0.04, 0.008
f(x) โˆ’ Pโ‚™(x)“the gap”true height minus guess0
ฮพ“xi” (Greek letter)some unknown point between xโ‚€ and x; used only in the error formulasomewhere in [1, 1.2]

So the k = 2 term of the sum is: take the second derivative (6x), evaluate at the anchor (6), divide by 2! (3), multiply by the walk squared (0.04). That’s 0.12, the layer-2 correction from the worked example.

How big is the gap? It’s controlled by the next measurement you didn’t use, taken somewhere along the walk:

f(x) โˆ’ Pโ‚™(x) = fโฝโฟโบยนโพ(ฮพ) / (n+1)! ยท (x โˆ’ xโ‚€)โฟโบยน for some ฮพ between xโ‚€ and x

Read it as: the gap is small when the walk is short (the hโฟโบยน is tiny), when the next derivative is tame, or when n is large enough that (n+1)! dominates. The gap is large when the walk is long and the higher derivatives are big, which is exactly what happened to ln x at x = 2.5.


Real-world uses

Four places you’ve met this without the name. Each is worked with numbers.

Bond prices: duration and convexity. A 10-year zero at a 4% yield is priced 100/1.04ยนโฐ = 67.56. The anchor is 4%. The two measurements are duration (layer 1, slope) = 10/1.04 = 9.62 and convexity (layer 2) = 10 ร— 11/1.04ยฒ = 101.7.

Yield rises 1%, so the walk is 0.01:

LayersGuessTrue priceGap
1 (duration only)67.56 ร— (1 โˆ’ 9.62 ร— 0.01) = 61.0661.390.33
2 (add convexity)61.06 + 67.56 ร— ยฝ ร— 101.7 ร— 0.01ยฒ = 61.4061.390.01

Yield rises 3%, walk 0.03: duration alone says 48.07, convexity pulls it to 51.16, true is 50.83. The gap is 30 times larger than for the 1% move. That’s the long walk. Traders quote duration and convexity for exactly the reason your tool quotes delta and gamma.

How a calculator computes sin. There’s no sin key inside the chip; it sums the series about 0: x โˆ’ xยณ/6 + xโต/120 โˆ’ xโท/5040 + โ€ฆ.

sin(0.5): 0.5 โˆ’ 0.0208 + 0.0003 = 0.4794. True value 0.4794. Three terms.

sin(3): 3 โˆ’ 4.5 + 2.025 โˆ’ 0.434 + 0.050 โˆ’ 0.004 = 0.137. True value 0.141. Six terms and still off in the third decimal. The series converges everywhere, unlike ln x, but a long walk needs many more layers. Calculators dodge this by folding the input back to a small angle first, which is the “walk less” strategy.

Pendulum clocks. The textbook period T = 2ฯ€โˆš(L/g) comes from replacing sin ฮธ with ฮธ, which is layer 1 of the sine series. The next layer says the true period is longer by a factor of about 1 + ฮธโ‚€ยฒ/16, where ฮธโ‚€ is the swing in radians.

Swingฮธโ‚€ in radiansCorrectionPeriod error if you ignore it
5ยฐ0.0871.00050.05%
20ยฐ0.3491.00760.8%
60ยฐ1.0471.0697%

A clock built on layer 1 keeps time at small swings and drifts at big ones. Same story: the anchor is ฮธ = 0 and the walk is the amplitude.

Compound growth. (1 + r)โฟ about r = 0 is 1 + nr + n(nโˆ’1)rยฒ/2 + โ€ฆ. For 5% over 10 years: layer 1 says 1.50, layer 2 says 1.50 + 45 ร— 0.0025 = 1.61, true is 1.63. Layer 1 alone is the “simple interest” mental shortcut, and the layer-2 term is exactly how much compounding beats it.

All four break the same way ln x did. Past some size of move the layers you kept stop describing the function, and the fix is either more layers, a shorter walk, or computing the real thing.


Quick reference

Recipe for any function about any anchor

  1. Pick the anchor xโ‚€. Compute the walk h = x โˆ’ xโ‚€.
  2. Take derivatives of f until you have as many as you want, and evaluate each at xโ‚€.
  3. Divide the k-th one by k!, multiply by hแต.
  4. Add them up. That’s the guess. The leftover is the gap.
  5. If the derivatives hit zero, the guess becomes exact. If they don’t, check whether the terms are shrinking; if not, you walked too far.

The two examples side by side

xยณ about 1ln x about 1
Derivatives at anchor1, 3, 6, 6, 0, 0, โ€ฆ0, 1, โˆ’1, 2, โˆ’6, 24, โ€ฆ
k-th term3h, 3hยฒ, hยณ, then 0(โˆ’1)แตโบยน hแต / k
Exact after3 layersnever
Works forevery x0 < x < 2 only
Whypolynomial: information runs outln x breaks at 0, one unit from the anchor

Factorials

kk!Average of tแต over [0, h]
11h/2
22hยฒ/3
36hยณ/4
424hโด/5
5120hโต/6

Common series about 0, for reference

FunctionSeriesConverges for
eหฃ1 + x + xยฒ/2 + xยณ/6 + โ€ฆall x
sin xx โˆ’ xยณ/6 + xโต/120 โˆ’ โ€ฆall x
cos x1 โˆ’ xยฒ/2 + xโด/24 โˆ’ โ€ฆall x
1/(1โˆ’x)1 + x + xยฒ + xยณ + โ€ฆ|x| < 1
ln(1+x)x โˆ’ xยฒ/2 + xยณ/3 โˆ’ โ€ฆโˆ’1 < x โ‰ค 1

The last two have a radius because the function breaks at x = 1 or x = โˆ’1. The first three never break, so the series works everywhere even though it never terminates.


Key Insights

WhatWhy it matters
Anchor and walkEverything is measured at one point; the guess only ever knows about that point
Layers = derivativesEach derivative at the anchor buys one more correction; that is all the information you have
Divide by k!Raising a power costs a division each time; averaging a ramp, parabola, cubic costs รท2, รท3, รท4
Polynomials terminateDerivatives hit zero, so finitely many layers rebuild the function exactly, everywhere
Radius of convergenceFor everything else, past the distance to the nearest breakdown the layers make the guess worse
The gap formulaThe error is the first term you dropped, evaluated somewhere on the walk

Kelly Criterion โ€” Cheatsheet Derivation

Kelly Criterion โ€” Cheatsheet Derivation


Step 1 One Period Expectancy

E = pB โˆ’ q

where p = win probability, q = 1โˆ’p = loss probability, B = net odds (win B per unit staked, lose 1).

Why: Weighted average of outcomes. Win B with probability p, lose 1 with probability q.


Step 2 Per-Flip Wealth Multipliers

Bet fraction f of current wealth W:

  • Win: Wโ‚ = W(1+Bf)
  • Lose: Wโ‚ = W(1โˆ’f)

Why: You keep the unbet portion W(1โˆ’f) regardless. On a win you collect B times your stake Wf on top. On a loss your stake Wf is gone.


Step 3 Wealth After n Flips

After h wins and (nโˆ’h) losses:

Wโ‚™ = Wโ‚€(1+Bf)h(1โˆ’f)nโˆ’h

Why: The flips compound โ€” each one rescales whatever the previous left. That means multiply, not add. Order doesn’t matter, only h and nโˆ’h.


Step 4 Per-Flip Growth Rate G

Take the nth root of total growth to extract the per-period rate:

G = (Wโ‚™/Wโ‚€)1/n = (1+Bf)h/n ยท (1โˆ’f)(nโˆ’h)/n

As n โ†’ โˆž, law of large numbers: h/n โ†’ p, (nโˆ’h)/n โ†’ q.

G = (1+Bf)p(1โˆ’f)q

Why nth root: Same logic as extracting r from (1+r)n = total growth. Geometric mean, not arithmetic, because the process is multiplicative.


Step 5 Take ln Before Differentiating

Define g = ln(G). Since ln is monotonically increasing, maximizing g gives the same f* as maximizing G.

Apply two log rules:

  • ln(AB) = ln(A) + ln(B)  โ†’  product becomes sum
  • ln(Ap) = pยทln(A)  โ†’  exponent drops to coefficient
g = pยทln(1+Bf) + qยทln(1โˆ’f)

Why: Differentiating a product of powers is a mess. A sum of logs is trivial. Valid because ln is monotone โ€” same maximum, easier math.


Step 6 Differentiate and Set to Zero

Rule: ddx[ln(x)] = 1x. Chain rule: multiply by derivative of the inside.

  • ddf[pยทln(1+Bf)] = pB1+Bf  โ† chain rule gives B from inside (1+Bf)
  • ddf[qยทln(1โˆ’f)] = โˆ’q1โˆ’f  โ† chain rule gives โˆ’1 from inside (1โˆ’f)

Set dg/df = 0:

pB1+Bf โˆ’ q1โˆ’f = 0

Step 7 Solve for f*

Cross-multiply:

pB(1โˆ’f) = q(1+Bf)

Expand:

pB โˆ’ pBf = q + qBf

Collect f terms:

pB โˆ’ q = pBf + qBf = Bf(p+q)

Since p+q = 1:

f* = pBโˆ’qB = p โˆ’ qB

The Answer

f* = pB โˆ’ qB

Read as: edge / odds

  • Numerator pBโˆ’q is your expected profit per unit bet
  • Denominator B scales it by the odds

Special case B=1 (even money): f* = pโˆ’q

Your optimal bet equals your raw edge.


Key Insights

What Why it matters
Multiplicative wealth function One bad bet can’t be offset by other bets โ€” sizing matters
Geometric mean not arithmetic Compounding processes need per-period rates, not averages
ln transform Turns product into sum without moving the maximum
Chain rule on ln(1โˆ’f) The โˆ’1 derivative is what creates a finite optimum
p+q=1 The simplification that closes the algebra cleanly

“end behavior”

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.

Article content

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:

Article content

In the real world, you can fleetingly find options that trade beyond their arbitrage values:

Article content

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:

Variance & Covariance Cheat Sheet

Variance & Covariance Cheat Sheet

Starting points (where every derivation begins)

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 โˆ’ ฮผ)2    Var = 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:

  • First term: (1/n)ฮฃxi2 = E[X2]
  • Middle term: (1/n)ฮฃ(โˆ’2xix) = โˆ’2x ยท (1/n)ฮฃxi = โˆ’2x ยท x = โˆ’2(E[X])2
  • 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.

Variance is covariance with itself
Cov(X, X) = Var(X)
Scaling rule for variance
Var(aX) = a2 ยท Var(X)

Constants pull out as their square.

Scaling rule for covariance
Cov(aX, bY) = ab ยท Cov(X, Y)
Shifting rule for covariance
Cov(X + c, Y) = Cov(X, Y)

Adding a constant doesn’t change covariance.

Covariance with a constant is zero
Cov(X, c) = 0

Constants don’t co-vary.

Variance of a sum
Var(X + Y) = Var(X) + Var(Y) + 2 ยท Cov(X, Y)
Variance of a weighted sum (the workhorse)
Var(aX + bY) = a2 Var(X) + b2 Var(Y) + 2ab ยท Cov(X, Y)

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.
  • Var(X) = 0.04,   Var(Y) = 0.01
  • Cov(X, Y) = ฯ ยท ฯƒX ยท ฯƒY = 0.3 ยท 0.2 ยท 0.1 = 0.006
  • Var(P) = 0.25ยท0.04 + 0.25ยท0.01 + 2ยท0.5ยท0.5ยท0.006 = 0.01 + 0.0025 + 0.003 = 0.0155
  • ฯƒP = โˆš0.0155 โ‰ˆ 12.4%
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:
Cov(A, P) = Cov(A, 0.5A + 0.5B) = 0.5 Var(A) + 0.5 Cov(A, B)
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.

  1. 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.
  2. Expand squares and products. Pure algebra on the random variables. FOIL out any binomials. No expectations yet.
  3. 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.
  4. Group matching terms. Line up the things that share factors (a2 terms together, ab terms together, b2 terms together, etc.).
  5. 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:

E[H ยท T] = n2p(1โˆ’p) โˆ’ np(1โˆ’p) = p(1โˆ’p)[n2 โˆ’ n] = n(nโˆ’1)p(1โˆ’p)
The n2 is the naive product, the โˆ’n is the variance shortfall, and factoring out p(1โˆ’p) leaves n(nโˆ’1). Sanity check: 100 ยท 99 ยท 0.25 = 2,475. โœ“

The through-line: the answer falls short of E[H]ยทE[T] by exactly Var(H), because Cov(H, T) = โˆ’Var(H) whenever H and T sum to a constant.

Two-stock equal-weight portfolio with equal variances ฯƒ2 and correlation ฯ

Start from the workhorse with a = b = 0.5:

Var(P) = 0.25 Var(X) + 0.25 Var(Y) + 2(0.5)(0.5) Cov(X, Y)

Impose equal variances Var(X) = Var(Y) = ฯƒ2, and write the cross term with correlation, Cov(X, Y) = ฯฯƒ2 (since Cov = ฯ ยท ฯƒX ยท ฯƒY and both vols are ฯƒ):

Var(P) = 0.25ฯƒ2 + 0.25ฯƒ2 + 0.5ฯฯƒ2 = 0.5ฯƒ2 + 0.5ฯฯƒ2

Factor out 0.5ฯƒ2:

Var(P) =  ฯƒ2(1 + ฯ)2
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.50.75ฯƒ20.87ฯƒ13% vol cut
00.5ฯƒ20.71ฯƒ29% vol cut (the โˆšยฝ case)
โˆ’0.50.25ฯƒ20.5ฯƒhalf the vol
โˆ’100risk 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.

Two-stock unequal-variance portfolio โ†’ inverse-variance weighting

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
000
10%0.010.20
20%0.040.50
40%0.160.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:

Var(aX + bY + cZ) = a2Var(X) + b2Var(Y) + c2Var(Z) + 2ab Cov(X,Y) + 2ac Cov(X,Z) + 2bc Cov(Y,Z)

Counting the terms. For n assets you always get:

  • 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 ฮฃj wi wj Cov(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
Var(P) = ฮฃi ฮฃj wiwj Cov(ri, rj) an instruction for sweeping a grid: for every row i, for every column j, add that cell inner ฮฃ over j → picks the column X (j=1) Y (j=2) Z (j=3) outer ฮฃ over i → picks the row X (i=1) Y (i=2) Z (i=3) w1² Var(X) w1w2 Cov(X,Y) w1w3 Cov(X,Z) w2w1 Cov(X,Y) w2² Var(Y) w2w3 Cov(Y,Z) w3w1 Cov(X,Z) w3w2 Cov(Y,Z) w3² Var(Z) Diagonal (i = j): Cov(ri, ri) = Var(ri) — the 3 variance terms. Twin cells (i,j) & (j,i): identical — every covariance is visited twice. That double-count is the ×2 you wrote by hand. The grid supplies it for free. add all 9 cells = wT ฮฃ w ฮฃ is the covariance matrix: variances on the diagonal, covariances off it. n assets = the same sweep on an n×n grid. Nothing new happens; the grid just grows.
Figure โ€” three forms of the same variance, and where the 2s go
โ‘  ALGEBRAIC — you write the 2s by hand a²Var(X) + b²Var(Y) + c²Var(Z) 2ab Cov(X,Y) + 2ac Cov(X,Z) + 2bc Cov(Y,Z) โ‘ก MATRIX — the 2s vanish into the symmetry Var(P) = wT ฮฃ w,   where ฮฃ = Var(X) Cov(X,Y) Cov(X,Z) Cov(X,Y) Var(Y) Cov(Y,Z) Cov(X,Z) Cov(Y,Z) Var(Z) Each covariance sits in two matched-color cells (mirrored across the diagonal). Summed, the two cells are the 2 from Stage 1. Variances (diagonal, purple) have no mirror — that’s why they’re never doubled. โ‘ข DOUBLE SUM — the matrix written in math Var(P) = ฮฃ n i=1 ฮฃ n j=1 wiwj Cov(ri, rj) Cov(ri, ri) = Var(ri) — covariance with itself is just variance, so the diagonal needs no special case. Both sums run 1 to n, so the sweep is n² terms. 10 assets → 100 terms, not 20. That quadratic blow-up is exactly why the compact matrix form earns its keep.
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
10. Two-stock unequal-weight portfolio variance (equal variances)
11. Var(X โˆ’ Y) โ€” spread variance / pair-trading formula
12. Variance of a binomial = np(1โˆ’p)
13. Two-stock unequal-variance portfolio โ†’ inverse-variance weighting
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.

That’s the trade. Slower, but it sticks.

why i’m not more bearish equities compared to 6 months ago

Programming Note: I normally publish Munchies on Wednesday and the paid post on Thursday, but this week I will post both a day early, as they are market-related and I want to get them out ahead of the Fed meeting.


Friends,

Iโ€™ll start with updating some broad market observations I laid out in March and then square that with what option surfaces are telling us in the context of the Fed meeting and beyond. The Fed meeting is a highly skewed event with a 25 bp hike more than about 90% priced in.

The probability of Fed target rate between 3.75% and 4% has shot from 35% to 90% in under 3 weeks

Recent context:

The Jackson Hole keynote was on 8/28/26. The probability of a rate hike shot from 35% to 57% in one day.

The 10-year yield has rallied from 4.67% on 8/26 to 4.96% as I write on 9/14.

In that same window, the SPX is down a mere 50 bps and the NDX is basically unched.

Letโ€™s rewind to my March post trading is like a sudoku puzzle with prices as the given numbers. I compared earnings yields to bond yields to get an equity risk premium. This comparison in the modern era of massive budget deficits, where a large โ€œGโ€ in the Kalecki-Levy world tells us that money ends up as private sector nominal income by identity*, never flatters equities. We can reconcile skinny equity risk premiums the same we reconcile low earnings yield any stockโ€ฆthereโ€™s an expectation of growth.

*While this is reductionist in the sense that the flow doesnโ€™t definitionally have to end up there, it also happens to be where it has ended up.

If we are desensitized to the low absolute level of equity risk premiums, it is because it has been easy to presume nominal growth. We have relatively low unemployment, technology companies growing quickly despite massive scale, and, I almost forgot, A GOVERNMENT THAT IS EXISTENTIALLY POT-COMMITTED TO DEFICIT SPENDING.

โ€œBut, we have a Republican president.โ€

Ok, define Republican. Because if you look closely at our fiscalโ€ฆoh never mind. Nobody cares. Weโ€™re well past fiscal discipline as a political delimiter.

The more money there is, the more surface area there is for theft/grift/graft.

[While this is now quite obvious and exploited by both right and left, Donโ€™s brazenness feels like itโ€™s giving everyone permission. He is a populist wrestling everyoneโ€™s birthright to cheat away from the cloaked political elites who once monopolized it. That sentence is the dressโ€ฆwhether you see blue or gold is up to you.]

Alrighty then, where were we? Ahh, yes, nominal growth as a given, because our society is a passenger in a global economic trolley problem. Fantastic. Instead of fretting over the level of the equity risk premium, we can look at the past 6 months to consider the change or, in a sudoku-esque way, solve for what needs to happen for the risk premium to not get worse.

Thus far, higher energy prices and higher bond yields havenโ€™t produced the equity decline in the scenario I outlined. My hunch is the market got more expensive on a relative basis, but letโ€™s investigate.

First, the updated numbers.

Market quotes below are September 14 intraday observations, taken at different times. The equity calculations use the same snapshot as the charts.

WTI oil is up 18.5% since the March post (March price from 3/27/26)

RBOB gasoline is up ~28%

IEF on a div-adjusted basis is down 1.9%, about half what the duration (which is a snapshot like delta) expects because you picked up over 200 bps of carried interest (ie those divs) in the meantime.

Equity valuation as the missing Sudoku number

In late March, I used an equity earnings yield of roughly 5% vs 4.4% ten-year Treasury yield. This represented a 60 bps nominal equity risk premium and ~300 bps in real terms. My downside scenario considers what might be expected if the Treasury yield reached 5.5% and equities needed to offer another 50 bps above that. The target nominal earnings yield would rise to 6%, requiring roughly 17% equity decline if earnings stayed flat.

On partial probabilities

My thinking was on a subset of causes for yields to rise. I was thinking about the inflation channel via energy price pass-through in the event that futures prices rolled up to war-bolstered petroleum spot prices. This is supply-shock inflation, but there is also demand-pull inflation. Yields can also increase because of concerns about sovereign creditworthiness. Asset prices are complex because they embed expectations about many variables, some of which reinforce each other and some offset. Arrows in every direction. Complex portfolios can be constructed to isolate bets on conditional or partial probabilities.

An example from sports betting:

Say you bet $900 to win $100 on the Seahawks not winning the Super Bowl, and $100 to win $600 on them winning the NFC. If they donโ€™t win the NFC, the bets cancel. If they reach the Super Bowl, you make $700 if they lose and lose $300 if they win. Youโ€™ve constructed a conditional bet: Seattle to lose the Super Bowl, provided they get there.

The prices imply a 10% chance of winning the Super Bowl and a 14.3% chance of getting there. Divide those and you get a 70% chance of winning conditional on getting there. Your combined position bets against that 70%.

The way Iโ€™m reasoning in a macro way is implicitly partial. All relative value bets have this property, but be aware that if you bet on cross-asset, you are not truly isolating bets as cleanly as the Seahawks example. You are hand-waving all the other ways a bond yield, oil price, or stock earnings can change relative to one another. Thereโ€™s no equivalent to โ€œIf they donโ€™t win the NFC, the bets cancelโ€ because the relationships in assets are not deterministic in the same way that winning the Super Bowl encompasses โ€œwinning the NFCโ€.

This undermines all the logic of my trade ideas to the extent that it sets up lots of ways for the market to creatively โ€œmiddleโ€ you, just like the bettor who lays off a sports bet and gets careless about that half a point. But since all relative value trading deserves the error bars Iโ€™m dancing between, I feel a bit better having disclaimed them. Confidence sells, but when it comes to markets itโ€™s craven. Something to keep in mind when youโ€™re listening to your next podcast.

Of course, if earnings growth increased fast enough, equities donโ€™t need to decline at all to maintain the same equity risk premium to bond yields.

That leaves us with two questions:

  • What spread do todayโ€™s earnings estimates offer?
  • How much more earnings would restore the 50 bp equity risk premium?

At SPX 7,637.79, the approximately $397 of earnings expected over the next twelve months gives us a 5.20% earnings yield. Against a 4.96% Treasury yield, thatโ€™s only a 24 bp spread.

To get 50 bps over Treasuries, we need a 5.46% earnings yield:

7,637.79 ร— 5.46% = $417 of annual EPS.

How close are we to earning that much?

The first-half figures total approximately $181 per share, up 39% from the same quarters in 2025. Second-half estimates total approximately $183. The forecast calls for roughly maintaining the first-half earnings level through the rest of 2026, which represents 26% growth over the second half of 2025. Historically high, but a slower pace vs the first halfโ€™s increase over the same period a year earlier.

For the full calendar years, consensus is $362 in 2026 and $417 in 2027. Thatโ€™s another 15% growth after this yearโ€™s expected 32% increase. Together, those forecasts take annual earnings from $275 in 2025 to $417 in 2027โ€”52% growth in two years. These figures come from the same FactSet earnings series.

Back to the valuation. The calendar-2027 estimate already gets us almost exactly to our $417 target and assumes EPS growth of 15%, much more reasonable compared to historical changes and far slower growth than 2026 experienced.

Despite the rise in yields and inflation, consensus equity pricing offers an earnings path that supports approximately the original 50 bp spread benchmark. It requires delivering the rest of 2026 plus โ€œonlyโ€ 15% subsequent growth next year.

The equity risk premium has been skinny, but EPS growth has delivered such that those risk premiums arenโ€™t actually shrinking despite the continued outperformance of equities vs bonds. I wouldnโ€™t call that bullish exactly, but itโ€™s not bearish versus where we were 6 months ago. When I first started this investigation with the high energy prices and rising yields, I expected the โ€œmissing Sudoku numberโ€ of equity risk premium to look even more paltry, but sparkling earnings have bailed the multiples out.

Stay groovy

โ˜ฎ๏ธ


End Notes

Gasoline futures and CPI

Persistently high fuel prices burden consumers and businesses. But keeping the price high doesnโ€™t mean inflation stays high. If gasoline rises from $2 to $3 and stays there, year-over-year inflation is positive until the comparison catches up. Comparing $3 with $3 gives zero inflation.

The spread benchmark

โ€œEquity risk premiumโ€ here is shorthand for earnings yield minus the nominal ten-year Treasury yield. It is a valuation comparison, not a complete estimate of equitiesโ€™ expected excess return. Earnings are not contractual interest payments and are not necessarily distributed to shareholders.

Comparing that earnings yield with the roughly 2% TIPS yield gives a 300 bp difference. That is a comparison with a real bond yield, not a separately calculated real equity risk premium. My mental shorthand for real equity returns is that they typically realize between 300 and 600 bps over the risk-free rate. Equity valuation is on the high side (ie low real earnings yield over CPI), but it has been for a while, as it has been priced for growth which has been repeatedly confirmed.

Market snapshot and forward calculation

The calculations hold SPX at 7,637.79 and the ten-year Treasury yield at 4.96%, using September 14 intraday observations from MarketWatch and Trading Economics. These are not closing prices.

Tracking 2026

FactSet lists Q1 2026 EPS of $80.99 and Q2 EPS of $100.28. Q1 is shown as actual; Q2 remains marked as estimated. The $181.27 first-half total therefore should not be described as entirely finalized.

Index composition

The S&P 500โ€™s membership changes. Depending on how a historical series is constructed, year-over-year earnings changes can reflect additions, deletions and changes in index representation, as well as growth within businesses.

Comparing each periodโ€™s membership differs from comparing a fixed set of companies across both periods. The chart therefore describes the published index earnings series, not a constant-company measure of organic growth. No adjustment for composition has been made.