a market-making project you can do today

Friends,

I tweeted something the other day that I want to expand on because it’s one of those ideas that’s simple on the surface but points to an exercise that would teach viscerally market-making.

https://x.com/KrisAbdelmessih/status/2035025124102217780

 

Polymarket has a contract “Will crude oil settle above $90?” It was priced around 73 cents. That’s an implied probability. We also know that the value of a tight call spread around the $90 strike represents a tradeable probability.

💡See a deeper understanding of vertical spreads

If you price a 89.5/90.5 call spread in Black-Scholes at 90 IV with a month to expiry, you get a “fair” probability that CL settles above $90. That number moves smoothly as the futures price moves. Technically, it has sensitivity to implied volatility (aka vega) and time to expiry BUT the vega of the spread is negligible and the time to expiry component is mirrored in the poly contract too. Both the contract and the spread are driven by what’s the chance of oil being above or below $90 at expiry with no consideration of how far above or below $90 we are which is more of a volatility question.

The Poly contract tracks the same fundamental question but if it around due to sentiment and order flow faster than what a basic random walk option model places the probability at you have a tradable idea.

You can measure how much it bounces relative to the underlying by computing its implied delta (how many probability points it moves per $1 in CL) and comparing that to the call spread delta.

If the Poly delta is steeper than the call spread delta, the market is overpricing per-dollar sensitivity. You’d sell the Poly contract and hedge with futures (or the call spread). If it’s cheaper, you buy it.

[How you actually manage the risk is part of the market-making lesson. The tradeoff between risk reduction and hedging costs become palpable.]

I do believe this simple example of “market-making around a fair value” is an incredibly powerful way to take the mystery out of what market-making is. It makes it very obvious that the business of market-making has nothing to do with prediction. I vibed a little sim that shows this in action.

The heartbeat chart on the left shows Poly odds bouncing around the call spread fair value as oil moves, and the scatter on the right plots both against the oil price, where the slope of the regression line is the delta. You can see the Poly line is steeper (by my construction). The difference in slopes creates the market-making opportunity. In this case Poly flows overreact to the futures prices.

If you want to build this with live data, you could use the Poly API and a feed for the futures price. I’ll argue that you don’t need a live feed of the call spread market.

Why?

You can just look up the implied vol for a strike near $90 from settlements that correspond to the Poly expiration and reprice the spread analytically as S moves. 2 of the four BSM inputs (T, K) are quasi-static, a third (implied vol) has little impact because it’s canceled out by the spread of long one option and short the other. Just track S in real time and recompute.

I’ve never built a market-making bot so I can’t speak to the execution side, but even building such a monitor would go a long way to teaching you about pricing, delta, and risk. All from one contract on Polymarket, a futures price and the Black-Scholes formula.


Are Traders on Kalshi Being Profiled? 9 min read

Andrew’s fantastic post uses a simple taxonomy to classify participants on an exchange:

  • squares (uninformed)
  • sharps (informed)
  • dealers (liquidity providers)

Using Kalshi and Poly’s market design choices, he makes the broader point that exchange rules are dials that shift the balance of power among these three groups.

Anonymity and fee structure influence who shows up, who gets picked off, and how efficiently prices incorporate information. Anyone who has dealt with the labyrinth of option exchange fee, allocation, order book priority, and crossing rules will nod along.

Of special note is Andrew’s warning to those trying to “copy-trade” perceived sharps.

Sharp traders could respond to this by fragmenting their trading across multiple accounts. They may have an account that has negative PNL on a certain market type. This account is unlikely to be copy-traded. When building a position, they would prefer to use this relatively anonymous account, rather than suffer the price impact of having their trades copied before they’ve built their position. If copy-traders are too aggressive following the sharp account, this creates an incentive to build the position on the anonymous account, and then trade in the followed account, generating further price impact and increasing profits. Is this manipulation or simply smart situational awareness of the impact of your trades? If the intent was to buy a large position anonymously, then buy on the main account to trigger copy-trading, and then sell at higher prices to those copy-traders in a third account….. that sounds like the kind of thing you eventually read about in an enforcement action, at least if it happened on a regulated market.

I would be cautious about using simple copy-trading strategies. The lesson is not to ignore all counterparty information, but to recognize that sophisticated traders are aware of it and can adapt.

approximating gamma in your head

By now y’all know option traders have the ATM straddle approximation burned into their retina:

straddle ≈ .8 Sσ √T

A useful approximation I did not explain in the interview is the similar-looking ATM gamma formula for a Black-Scholes straddle:

Γ ≈ .8 / (Sσ√T)

The three things that shrink gamma are in the denominator:

Higher S (price): The same $1 move is a smaller percentage move on a more expensive underlying.

Higher σ (vol): The option is already “priced for action.” The curvature of the price function gets spread over a wider range of expected outcomes. More vol → flatter curvature near the money → less gamma.

Higher T (time): Same logic as vol. More time spreads the curvature out. The more time to expiry the less a given move influences the delta of the option. The delta of 10-year option is not going to change much based on how the underlying changes day-to-day.

A couple of educational points:

  • Take note of the scaling. Double the vol, gamma roughly halves. You need to quadruple DTE to get the same effect.
  • As always, a good habit when trying to understand greek levers, is to take examples to extremes. If you raise DTE or vol to infinity, all options go to their maximum value. For calls, that’s the spot price itself. For puts, it’s their strike price. That means calls go to 100% delta since they move dollar-for-dollar with the spot. Puts go to 0 delta. It doesn’t matter where the spot price goes, the option is already at its max value. It doesn’t change. If a call is 100% delta and a put is 0% delta, the option has no gamma. Its delta doesn’t change with respect to the spot.

Going back to those formulas for a moment:

straddle ≈ .8 Sσ √T

Γ ≈ .8 / (Sσ√T)

The denominator of gamma = straddle/.8

Substituting:

Γ ≈ .8 /(straddle/.8)

Γ ≈ .8 /(straddle/.8)

Γ ≈ .64 /straddle

So when you want to do mental math you take “2/3 of the inverse of the straddle.”

This might sound obtuse, but taking inverse or “1 over” some number should be one of the fastest mental math operations anyone dealing with investing does. After all, when you see any ratio like P/E or P/FCF you are immediately flipping that to a yield where it can be compared with things like interest rates or cap rates.

If a straddle is $5, the gamma is 2/3 of $.20 or ~.13

And we know that doubling the straddle halves the gamma so you can just memorize that a $10 straddle has ~6.6 cents of gamma and linearly estimate gamma for any straddle price relative to that (ie $20 straddle is about 3.3 cents of gamma and $15 straddle is in the middle of 3.3 and 6.6).

And of course there’s time scaling. To find an option that has double the gamma you need to cut the DTE by 1/4.

Keep flipping this stuff over in your head, it’s satisfying, and it thickens the myelin around whatever brain cells you sacrifice to options damage.

oil options and the raw gamma paradox

The single biggest adjustment to get my head around when I crossed the chasm from equity options trading to commodity futures options was the idea that every option expiry was actually its own underlying.

In equities, a 3-month option on TSLA and a 1-month option on TSLA refer to the same underlying. The 3-month vol encompasses the 1-month vol. A 3-month option with the same strike as a 1-month option cannot trade cheaper than the 1-month option. Said otherwise, the calendar cannot trade below zero (well, with American-style options anyway).

This is not true in commodity options. A 3-month 75 call on WTI can technically trade below a 1-month 75 call on WTI even if they are the same IV simply because the 1-month future could be $15 higher than the 3-month future and therefore have $15 more intrinsic value. That example feels like cheating though.

Consider a more interesting case. I’m writing on the evening of 3/10/26:

The Nov16’ 2027 expiry 66 call, which is close to ATM, is about $6.25 at ~17.5% IV

The Nov17’ 2026 70 call, also close to ATM, is about $9.25 at ~ 42% vol

The shorter-dated call, which has less than half the DTE of the longer-dated call, is 50% more expensive! The futures price is 70/66 or 6% higher so it’s not the futures price driving the bulk of the difference.

It’s the extreme vol differential. If this was an equity, the implied forward volatility would be negative! Another way of saying this would be arbitrage.

Your equity option intuition is of no help here.

[A personal note here…this is also my favorite stuff. Equity options with their corporate actions and dividend headaches. Meh. Give me futures spreads and options on commodities all day. I loved building infra for this and trading these things. Those markets are very smart at pricing options but it also teaches you a lot about vol and risk.]

Measuring the forward vol in commodity options is a tricky problem. It was a pretty hefty component of how I’d trade commodity vol. I’m not giving away how I’d do it although I’ve hinted in prior futures-related posts at things that could get one started. This post will even fall under that category, but I’ll leave it at that.

Still, without getting into forward vols, there is a lot to understand about the risk of an option time spread in commodities. WTI, here and now, is putting on a clinic for I’m sure countless clueless option punters. And when it eventually dies down, many time spreaders are going to find themselves unpleasantly surprised as the surface finds a way to reveal that the obvious trade was but a trap.

Here’s a snapshot of 1M and 12M constant maturity IVs from CME QuikStrike. On March 9th, the ATM vol spread was 80 points wide. Prefer ratios? Fine, M1 was 3.5x the IV of M12

I’m going to look at realized vol data for the past year, data that is more conservative than this insane snapshot, to show how crazy you would be to think that this time spread is any way tradeable in a relative value sense.

What to expect today:

  • How gamma works differently when your two legs settle into different futures contracts.
  • h²: a single number that tells you how much gamma work your back-month leg is actually doing in front-month terms.
  • I walk through what I’ll call the raw gamma paradox: M12 actually has more gamma per contract than M1. Except it’s a mirage.
  • Why the fix of just buy more M12 vol detonates your vega and what this means for trading time spreads.

Data study setup

The analysis in this post is based on WTI M1 and M12 futures from
March 2025 to March 2026. The details and code can be found in the appendix.

The key features is we construct our own continuous contract for M1 and M12 and we estimate the gamma corresponding to constant maturity 1-month and 1-year ATM calls

Address the temptation head-on

You’re looking at crude oil options. We’ll take the vols down a notch, but if you receive my points with this more benign treatment, then it will make the current oil landscape hit that much harder.

Say M1 implied vol is sitting north of 60%. M12 is under 20%. You come from equity vol land, every instinct screams buy the back, sell the front. Look, this section is behind the paywall so there shouldn’t be any kids around:

Well, minister, don’t sully the cloak for a dream. The only prophesy your filling is the inevitable penance when M1 vol rips higher and M12 just sits there. Two things are working against you simultaneously. One of them shows up in your vega P&L.

The other one hides in a measure I refer to as .

You need this measure to weight your option model’s gamma. To derive it, we’ll combine several concepts I’ve written extensively about.

Gamma revisited

A quick review is in order.

Gamma is curvature. Your P&L on a delta-hedged option over a single move is:

P/L = ½ · Γ · (ΔS)²

The ATM gamma formula for a Black-Scholes option:

Γ ≈ .4 / (S · σ · √T)

The three things that shrink gamma are in the denominator:

Higher S (price): The same $1 move is a smaller percentage move on a more expensive underlying.

Higher σ (vol): The option is already “priced for action.” The curvature of the price function gets spread over a wider range of expected outcomes. More vol → flatter curvature near the money → less gamma.

Higher T (time): Same logic as vol. More time spreads the curvature out. The more time to expiry the less a given move influences the delta of the option. The delta of 10-year option is not going to change much based on how the underlying changes day-to-day.

A couple of educational points:

  • Take note of the scaling. Double the vol, gamma roughly halves. You need to quadruple DTE to get the same effect.
  • As always, a good habit when trying to understand greek levers, is to take examples to extremes. If you raise DTE or vol to infinity, all options go to their maximum value. For calls, that’s the spot price itself. For puts, it’s their strike price. That means calls go to 100% delta since they move dollar-for-dollar with the spot. Puts go to 0 delta. It doesn’t matter where the spot price goes, the option is already at its max value. It doesn’t change. If a call is 100% delta and a put is 0% delta, the option has no gamma. Its delta doesn’t change with respect to the spot.

Back to our setup, you’d expect the long-dated M12 option to have less gamma than the short-dated M1 option since there is more time in the denominator. But in WTI right now, M12’s 1-year ATM gamma is actually higher than M1’s 30-day ATM gamma. Per contract, the back month has more curvature.

It will come back to that denominator in 2 ways:

  1. The 12-month price is lower
  2. Remember the scaling, DTE effect on gamma is less than vol’s effect

But we can account for all of this by updating hedge ratios.

We are going to review then expand on what exactly a hedge ratio is.

Hedge Ratio Squared: Mapping M12 Gamma Into M1 Move Space

To compare gamma across two different underlyings, you need a translation layer. You need to know: when M1 moves $1, how much does M12 move? In practical terms, if you’re long 1 M1 contract and want to be gamma-neutral with M12, how many M12 contracts do you need on the other side?

We start by recalling that beta (𝛽) is a vol ratio times correlation. A correlation of .70 means:

“If A moves 1 standard deviation, B moves .7 of its own standard deviation”

The vol ratio effectively normalizes the standard deviations of each asset. If the vol ratio is 1, then if A moves 1% then B moves .70%.

Review: From CAPM to Hedging

This allows us to express M12 exposures entirely in terms of M1 price moves.

This chart pulls all of this together.

  • We see that the # of M12 contracts (1/h) you need to hedge M1 is exploding as the beta collapses.
  • Beta is collapsing mostly due to the vol ratio plummeting as opposed to the dip in price ratio and correlation.

h is the hedge ratio for delta.

Before we derive hedge ratio for gamma, we need a quick review of gamma p/l.

Gamma P/L

M1-Equivalent Gamma

The M1-equivalent gamma of the M12 option is therefore:

Notice how:

  • Delta scales with h
  • Gamma scales with h²

Based on our data, and letting realized vols also stand-in for implied vols, we get this table:

h² has collapsed to its all-time low in this dataset. The 1-year mean is 38.6%. We’re at 2.15%:

We have a very practical question we need to answer with all this arithmetic:

What does this mean for the risk of a time spread?

The Raw Gamma Paradox

The adjustment of “hedge ratio squared” is so powerful it can flip a sign.

Look at the raw gamma numbers:

M1 30-day ATM gamma: 0.0241 per $1 move

M12 1-year ATM gamma: 0.0315 per $1 move.

M12 has 1.3x more gamma per contract than M1. And this is comparing a 1-year M12 option to a 30-day M1 option.

The longer-dated option has more curvature.

How?

Remember the formula: Γ ≈ .4 / (S · σ · √T)

M12 has a lower price ($67 vs $85) and much lower vol (18.7% vs 66.9%). Both of those boost gamma. The price and vol effects are swamping the time-to-expiry effect. M1’s 30-day option should have screaming gamma from the short DTE, but the vol is so high it crushes the curvature. Meanwhile, M12 is a lower-priced, lower-vol contract where the gamma can concentrate even at the 1-year tenor.

You might look at that and think: great, I’m long the gamma-rich leg…until, of course, we impose the h² adjustment.

The hedge ratio (h) is only .0215.

M12 1y gamma in M1-equivalent terms = 0.0315 × 0.0215 = 0.000677.

Instead of the back month having 30% more raw gamma per contract (ie .0315 vs .0241) it has 97% less (.00067 vs .0315).

You need .0315/.00067 or about 46x more M12 contracts than M1 contracts to be “gamma-neutral”. In other words, you need “the square of the hedge ratio” quantity of contracts to be gamma neutral.

💡In the context of turning the hedge ratio into contract, quantity we use the inverse (ie recpriocal) of the hedge ratio. The hedge ratio (h) is telling us that M12 is only offsetting ~2% of the risk of M1 so we need 1/2% or ~50 contracts to hedge

Typically, h is about 1.4, requiring only a 2:1 option hedge ratio (1.4² = 2)

What does this do to your vega?

The vega of a 12-month ATM option is √12 or ~3.5 greater than the vega of a 1-month ATM option. If you are long a 1-year option time spread you are long vega. But if we assume that vol changes themselves are proportional to √T then you could argue that your scaled or normalized vega is flat.

If you want to be gamma-neutral, you’d typically need about 2x as many 12-month options because of the typical h². You can’t solve for being gamma-neutral without being long vega. But now the conceit becomes especially ridiculous when h² collapses to .0215. You’d need to be long an outrageous amount of vega to be gamma-neutral.

The position being completely uncomfortable tells you something. These options have nothing to do with each other. The two risks are knotted together by h², and when h² is at 0.0215, they’re not touching. You might as well be spreading options on 2 different assets.

It’s the same problem with pair trading vols. In a normal circumstance, 2 assets might have a reasonably strong correlation. But once one leg has an idiosyncratic episode, it turns into the equivalent of M1 in our analogy. You can mitigate some of this by not pair trading vols on individual equities, as inter-equity correlations will be more volatile than inter-sector or inter-index.

[For folks on exotic vol desks, you will remember some pretty insane dispersions in international index vols circa 2018 coming out of the worldwide vol depression of 2017].

Spread Gamma

Mechanically, your unadjusted option model might show your long time spread is long gamma. But as oil rallies and your front month delta gets short relative to your back months, you are, in the parlance of commodity trading, “short spreads”. You are short M1 and long M12 due to gammas as M1 goes up much faster than M12. So your headline greeks might say you are “long gamma” but a commodity trader would immediately recognize that this position is short “spread gamma”. It’s not exactly the same as being short calendar spread options (topic for another day) but it’s similar so long as the spreads have a positive beta to the M1 future. In other words, if M1 always moves more in dollar terms than the months behind it, whether it’s to the upside or downside.

Real-life risk

One of the great features in the ICE Option Analytics software (formerly Whentech) was the multiplier column in the futures configuration. It allowed you to enter a hedge ratio for each term. So, for example, if you thought that M12’s hedge ratio was .50 then your software would say that long 100 M1 and short 200 M2 was a flat delta in the summary risk. You would, of course, still pay attention to the spreads you had underneath.

On any given day, the futures spreads might underperform or outperform the hedge ratio parameter, introducing noise into the p/l you expected for a given futures move. But critically, the software also adjusted your gammas in each term by the square of the hedge ratio.

[You can thank me for this. When the product was still in beta days (no pun) around 2005, I was the one who spotted that gammas were only being adjusted for the hedge ratio, not its square. You notice these things when your p/l doesn’t seem to line up with your expectations based on your greeks.]

Manually updating the h’s in your model is a hands-on way to feel just how volatile they can be. I would keep a separate spreadsheet with realized vols and correlations and revise the hedge ratios once a week or so.

[For seasonal commodities, h is not just a noisy function of DTE, but depends critically on what month you are in. A “3-month” option in WTI is always kinda the same thing, but a 3-month option on corn in Sep is very different from a 3-month option on corn in May. That spreadsheet had more hair on it for the seasonal names.]

Wrapping up

Today you learned how to properly weight your model gammas. If you plan to trade option portfolios in a professional setting you will impale yourself without understanding how gammas stack.

These ideas will help you group gammas in related names to summarize risk more intelligently, but it will also alert you to when the risks that you think are related simply aren’t.


Appendix


METHODOLOGY
===========

Universe:        WTI crude oil futures, M1 (front month) and M12 (12th month)
                 Contracts roll monthly (CLK5, CLN5, CLJ6, etc.)

Period:          2025-03-28 to 2026-03-09 (237 trading days with complete data)

Returns:         Daily log returns on M1 and M12 settlement prices
 
Realized vol:    20-day trailing annualized based on daily close-to-close
                 Computed separately for M1 and M12

Beta:            20-day rolling return correlation * vol ratio 12m/1m

Hedge ratio(h):  M12 contracts needed to delta-hedge 1 M1 contract
                 1/(beta * 12m price / 1m price)

h²:              gamma multiplier
                 Γ_M12 in M1-equivalent terms = Γ_M12 × h²

Gamma:           Black-Scholes gamma for ATM call option on [M1,M12]
                 S = price, σ = trailing 20d RV, T = [30/365, 365/365], r = 0

Caution:         Implied vol set equal to trailing 20d realized vol
                 (i.e. options are priced at current realized, not market implied)

Code:            https://github.com/Kris-SF/data-pipelines/blob/main/wti-futures/wti_m1_m12_returns.ipynb

Data Source:     IB API

Example of “measurement not prediction” in the wild

A reader replied enthusiastically to my 2-week-old post when logic and proportion have fallen sloppy dead giving me credit for calling that a strike on Iran would lift oil prices 14%.

He wants to know what I think now.

Slow down. This is a great example to clarify:

I don’t know anything material about geopolitics, military strategy, the supply/demand response function for light, sweet crude slated for delivery at Cushing, Oklahoma. I don’t have an opinion now or when I wrote the post.

I only have eyes to see the present. To look at a price and try to reverse engineer how it could make sense. The details are in that post, but the specifics matter less than the approach. In fact, I even mention why my approach is probably exactly wrong, but what a more correct one could look like.

This cuts to the heart of what I think trading is. It’s something pretty light on “opinions”. That’s for VCs and crystal ball investors, me, I’m a donkey.

I try to invert prices to reason about what the point spreads are, then try to find a contradiction. The whole “measurement not prediction” thing*. Measurement is hard enough. Prices tell you things if you can measure. You can separate probabilities from magnitudes. You can know what the consensus is for how correlated assets are to each other. You can divine when the market thinks we will attack Iran. This is all just sitting there.

You can protest that prices are dumb and wrong, but you are only allowed to make such pronouncements from your private jet otherwise, I can’t hear you.

So as oil goes, I have no opinion, but I can pull up a few screens and tell you what one of the smartest, most efficient markets in the world might think. Maybe there are prices in dumber or less liquid or harder-to-access corners of the world that disagree. Trading means different things to different people. I think it’s the art of turning contradictions into cash.

*Related:

I was listening to Citrini chat with Risk of Ruin’s John Reeder when John said:

I have heard Citrini repeat something that George Soros says, which is, I’m not predicting, I’m observing. Paying attention to what’s happening.

You’ll discover Citrini’s key to observing is how he filters, a skill that is increasingly difficult but always growing in value.

the math of investing

As I’ve shared here before, I spun up an investing class for middle and high school kids locally. I am teaching my 12-year-old as it is, so I figured if I formalize it a touch so others could learn as well.

The materials for all the classes live here:

https://notion.moontowermeta.com/investment-beginnings-course

There are a few weeks between each session since there’s a fair amount of prep even with AI helping with:

  • Claude in PowerPoint was released recently so I gave it a spin. I gave it a stylesheet of colors and fonts as well as an unformatted draft of the lecture, and let it cook. You can see the result below.
  • The interactive spreadsheet has a bunch of JavaScript behind it

The class we did this week was a lot of fun. There’s even a video to prove it below (I masked any faces. There were 16 kids in attendance). Most importantly, the kids learned a ton. Parents were texting me with their feedback and it felt good to hear their kids’ gears were turning.

For what it’s worth, I think there was a lot of material in here that parents don’t know either but I’ll leave you to guess what some of that might be.

Investment Beginnings — Class 2: The Math of Investing

Class 1 was about building a business.

Class 2 flips the perspective — you’re the investor now.

Someone is asking you for money. What should you pay for shares? What’s the lowest rate you’d lend at? How do you know if it’s a good deal?

This session covers the foundational math that underpins every investment decision you’ll ever make.

What we covered:

✅ The power of compounding (FV = PV × (1 + r)^n)
✅ The lily pad riddle: why most of the action happens at the end
✅ Early Bird vs Late Starter: why starting 10 years earlier beats investing 3x more money
✅ Warren Buffett: 99% of his wealth came after age 50
✅ Total Return vs CAGR: why doubling your money in 10 years is ~7%/yr, not 10%
✅ The Rule of 72: quick trick to estimate how long to double your money
✅ P/E ratio (multiple) and earnings yield (the reciprocal)
✅ The two levers of stock returns: earnings growth vs multiple expansion/contraction
✅ Zoom case study: great earnings, terrible return — how you can pay too much
✅ The asymmetry of losses: why losing 50% requires a 100% gain to recover

Hands-on:

🕹️ Live bidding exercise: students not only bid on shares of Lamorinda Sneaker Co knowing only that it earns $10/share, but quoted the lowest rates they’d lend at.
🕹️ P/E guessing game: guess the real-world multiples for Tesla, Chipotle, Shake Shack, Lululemon, Nike, and more

Homework:

🔨 Inflation Scavenger Hunt — look up prices from the year you were born vs today🔨 Fee Impact Calculator — compare 0.03% vs 1% fees over 40 years
🔨 P/E Return Decomposition — Pick 5 stocks. For each, look up the price and EPS 5 years ago vs today. 1) How much of the total return came from P/E multiple change vs EPS growth? 2) Then compute the current earnings yield (E/P). Compare it to the trailing 5-year CAGR. 3) Using the Rule of 72: if the 5-yr CAGR continued, how long to double your money? If you earned the earnings yield instead, how long to double?
🔨 Compounding Frequency — calculate FV compounded annually vs semi-annually

Resources:

📊 Slides
📈 Spreadsheet (File → Make a copy to get your own editable version; scripts may trigger a security warning — just advance through it)

Full video:

Money Angle For Masochists

Junior Masochists

Let’s review 2 examples from the class that demonstrate how markets are hard because prices are already forward-looking.

The kids learned how to decompose returns into change in earnings vs change in multiple. Or “what happened” vs “the future” or what I sometimes referred to as “sentiment”.

When I asked the class what stock would have been all the rage during Covid (when many of these kids were only 6 years old 🥹), one boy immediately and correctly responded, “ZOOM!”

I pulled up ZM’s price chart:

I asked…”what do you think happened?”

Kids suggested that less people used Zoom as people went back to offices. I explained that ZM’s earnings actually did skyrocket for the past few years so that’s not the culprit behind the horrible return.

Look at the revenues from this Twitter post:

It’s not just the revenues that are up (although you can see how revenue growth has slowed). EPS has also skyrocketed.

The multiple just got hammered. Great business, but investors just paid too much for it.

Earnings were up >35x, but the multiple is down 99%.

A handy decomposition:

Price return = (1+ percent change in EPS) * (1 + percent change in multiple) – 1

The point of the formula is that your return depends on changes in fundamentals (actual earnings) AND change in sentiment around future growth prospects.

A quick caveat. This is not complete. Imagine a situation where a company is $5/share and EPS of $1 for a P/E of 5. Over the next year, the company’s earnings don’t grow and the stock price doesn’t change. The price return is zero. But the company did earn $1. It’s assets have grown by 20%. You are economically richer by 20% but if they don’t distribute it by other paying a dividend or buying back shares (which would raise EPS) then the formula above did not account for a more holistic total return.

You could estimate:

Total return = (1+ percent change in EPS) * (1 + percent change in multiple) + earnings yield – 1

That would capture the idea that you are economically better off even if it’s not paid out, although management’s allocation decisions are a matter of concern.

As a class, we stumbled into a situation on the opposite side of the spectrum. A boy mentioned he bought Delta Airlines 5 years ago for ~$35. I pulled up the chart and noticed the stock doubled.

First of all, great teaching moment as we covered rule of 72 minutes earlier so I immediately asked the class, what the annual return must be? Proud dad moment as Zak is the first one to say 14.4% which I know he figured by thinking “72 divided by 10, times 2” which is better than I would have done as I would reach for 70/5.

Mental math aside, I asked our young investor, “Why did Delta do well, did the earnings increase or the multiple?” With zero hesitation, he responds that the earnings haven’t grown. So a perfect anti-Zoom example for the class. Delta Airlines coming out of Covid years had sour vibes but even if the earnings didn’t grow, you could make a nice return on the sentiment and therefore multiple improving.

I did go back after the class to see DAL earnings and stock history and I think it makes more sense that the kid bought the stock just 2 years ago, since that is the point in time where the earnings were about the same to now and the stock was about $35.

A crap business that investors sold too cheap.

For our regular Masochists

Since we are talking fundamentals, a mutual on X pointed out that HRB (H&R Block) has recently gotten trashed and that its shareholder yield is ~15%.

Shareholder yield is dividends + net share repurchase + debt reduction as a percent of market value.

News flash, HRB is not a growth business. It doesn’t re-invest much of its earnings versus just distributing the cash. I do find it amusing that the stock could be trashed along with other AI disruption stories when it has already survived the transition from brick & mortar to the internet, the popularity of TurboTax, and the growth of the standard deduction, relieving a wider proportion of the population from filing. With a P/E of 7 and a management that pays out the earnings you make ~15% if its already crap business stays the same.

Shedding 1/3 of its market cap since the start of the year, the implied vol is unsurprisingly jacked. I’m a little nuts and decided this was enough to launch some puts with the “I’ll take the shares if I’m wrong”. I normally don’t like this mentality, but part of the vol selling attitude is that the stock probably doesn’t have a lot of upside which reduces the regret possibility from “I was right on this stock and all I collected was some put premium”. In other words, if the upside is abridged, that’s a statement about the vol of the stock being lower.

Selling puts for yield is pretty aligned with what I’m trading the stock for in the first place — yield. I’m just taking it in the form of options intead of buying the stock because the option market is giving me that, but if the price falls a lot further well, I’ll have to go for that yield in the form of assigned shares.

Never financial advice, I’m just sharing my thinking aloud. As options go I’m currently short covered calls in silver and short cash-secured puts in HRB and long options on TSLA and IBIT. Overall, vols are on the higher end of their range across the market (outside of bond vols), but there’s always relatively cheap and relatively expensive in any market cross-section.

the moontower bridge

I sent this to our moontower.ai list this week:

If you run a trading or investment book that uses options but don’t have or need the weapons-grade (and weapons-cost) infrastructure that options market-makers have, then you are in our position. We built moontower.ai for us, which means it’s for you.

The various dimensions of options across expiries, strikes, and symbols are impossible to make sense of without the right lens.

Moontower is a bridge.

Everything we build is designed to be “opinionated” — pulling things together the way a vol PM sees them. Not a sea of contract premiums. A coherent picture of what’s typical and, critically, what’s not. What we call “analytics with a point of view”.

Explore Moontower Plans

“Hey, this looks expensive compared to its own history, but cheap relative to prevailing volatility surfaces across the market.”

If you understand that options are about volatility, then that is the type of statement you can make with this lens.

Take It With Your Coffee

We launched the Today’s Markets page in the past few weeks to be the first stop when opening your option view.

Your watchlist loads and the metrics snap to that universe.

  • Volume List shows what’s trading.
  • Trade Ideas classifies tickers by vol surface signatures into preset ideas.
  • Skew Extremes shows 25 delta calls and puts at extreme percentiles
  • Filters can exclude earnings and illiquid names to clean the cross-section.

Sector Performance can flag when vol moves against expectations.

Today, the Sector Performance surfaced an unusual dynamic. Crypto implied vols are up on the rally, while SLV vols are down on an up day. Opposite of what you’d expect for both!

The numbers on the bar show the price change in standard deviations;at the number on the end of the bar shows the change in implied strike vol for 1-month options.

Most option users are not dyed-in-the-wool vol traders first. If you are a professional manager refining your option expressions, reach out to hello@moontower.ai or visit us online.

links between options and event prediction markets

Oil vols and calls skews were up a lot this week as the expectation of the US striking Iran increases. A few pictures:

Polymarket implies only 38% chance that the U.S. does NOT strike Iran by March 31.

Risk reversals, which measure the premium of puts to calls, in USO have shot sharply negative this month.

USO vols are elevated and strongly inverted across the term structure.

Implied vols until late March are ~53%.

You already know to use the free event volatility extractor to compute trading day volatility by removing an expected earnings move from an expiration. Let’s use the calculator in reverse. If we assume a typical trading day volatility of 30%, then if we were certain a strike were to occur, we guess-and-test our way to an 11.3% move size to make the term vol fair at 53%

But this is not earnings. We don’t know if the “event” will occur. We can use the Polymarket probability of 62% that an attack will occur before the end of March. We’ll need to expand the equation we normally use to account for p.

We recall the basic identity:

Term variance = expected event variance + accumulated daily variance.

In math:

where:

DTE = business days til expiry =26

p = probability of strike = 62%*

TermVol = ATM IV from March 27 expiry = 53%

EventVol = annualized vol of strike day = 224%

DailyVol = annualized vol of regular business day = ❓

*Notice in the case where P =1, the equation would be exactly the same as the one behind the calculator.

Solving for DailyVol:

DailyVol = 40.7%

But, wait, we want to fix the DailyVol to be 30%. We need the event vol that generates a DailyVol of 30% assuming that event only happens 62% of the time, not 100%, as our first calcs assumed.

It turns out to be 14.4% or 285% annualized

💡Annualizing a move to a vol

  • 14.4% x 1.25 x √251
  • Why 1.25? Because a straddle or move size is only 80% of the volatility or standard deviation. See The MAD Straddle

In sum, if we treat an Iran strike that satisfies Polymarket’s definition AND we believe the Polymarket odds AND we think it manifests as one large single-day move, then 53% IV suggests that oil will move as normal at ~30% vol but have a single-day shock of ~14%.

This is a highly skewed way of decomposing 53% vol. To assume there’s a bunch of variance concentrated in just a single day. But that 53% vol is also not the market assuming we move ~ 3.25% per day either. It’s some mix of:

  • “realized vol is elevated right now because there’s uncertainty”
  • “at some point in the near-ish future there’s going to be a lump of variance as oil either relaxes lower (which could easily be 10%) or much higher. The current price of oil is a compromise between 2 states of the world but it’s not the right price in either of them and we don’t know which state it’s going to be”

Thoughts on the Polymarket price

Here’s a more up-to-date snapshot (Substack has a Polymarket integration!)

 

I have zero insight on geopolitics so I’m just going to offer thoughts on prices:

EDIT: The Polymarket prices updated from when this email post sent (a Sunday) and when I wrote it (Friday night)

  • The market thinks a strike is coming soon. March 31 is 64% and June 30 is only 68%. Conditional on a strike happening, the market implies 64/68 ~94% chance it happens before the end of March. You can buy June, sell March and only risk $4.
  • The dollar volume on these things is small but there are many papers supporting the “marginal trader hypothesis” that it only take a handful of active, well-informed traders to make a market more efficient. This is not suprising. If we played a mock trading game for even zero stakes it wouldn’t take long for you to see how quickly a market converges to a reasonable fair value.
  • The volatility risk premium across many liquid markets isn’t abnormal. The market either doesn’t care what oil and Polymarket says or a strike on Iran is not expected to have a material effect on the volatility of equity shares. However, defense names have implied vols in high percentiles (while PLTR vols are tanked btw)

Here’s my off-the-cuff impression of the 64% price:

The real odds are probably higher. If this contract were trading for say 10% I’d guess it was overestimating the true probability because of lotto-ticket bias but also because there needs to be a healthy risk premium for seller to enter a highly negative skew trade.

I wouldn’t guess that a bunch of yolo-punting puts a price to 64% for lolz. When someone bids 64%, they are laying odds. Betting nearly $2 to win $1. The price of this contract has doubled in a week…it’s the buyer who likely brings more caution to the order book now.

I could imagine someone buying these as part of a relative value trade against selling oil options but the dollars available means it would need to be retail size and that kind of trade (oil vega vs prediction market?!) doesn’t seem like the kind of thing that would excite the class of trader who expects 20x leverage on crypto perps to get them outta bed in the morning.

If Polymarket depth was big enough to influence stock markets, there’d probably be some interesting scenarios of incinerating a few million bucks, maybe less, to influence the Poly price so you can influence the price of defense stocks where you could make tens of millions. The informational and liquidity linkages between prediction markets and traditional markets will be fascinating (appalling?) to watch as they continue to grow.

 

sticky vs floating strike

Last week, in embedding spot-vol correlation in option deltas, I showed how vol paths use anticipated changes in implied vol as the spot moves around to estimate more accurate deltas. It’s a maneuver that respects delta fully as a hedge ratio rather than its narrow textbook sensitivity of “change option price per change in underlying price, all else equal”. We are sure (enough) that all else ain’t gonna be equal, so we can use the knowledge to improve the hedge ratio.

The post explains how a “vol path” takes a slope parameter that dictates how ATM vol changes as spot moves. For example, a slope of -3.0 means a 1% rally drops ATM vol by 3% (ie from 20% to 19.4%, not 3 clicks such as 20% to 17%). It’s like a “vol beta”. We can even see -3.0 slope by looking at a 1-year beta between SPY and VXX based on daily samples.

A stylized view of how this works:

The vol path only affects the ATM vol. If the smile remains the same shape along the path, the vols of all the options also change. That’s not all. The skew, measured as normalized skew or the percent premium/discount of OTM strike vs the ATM strike, is also changing if the shape stays the same but ATM changes.

While vol paths describe the ATM vol, there are skew models that describe how all the options for a given expiry will change. Just like the vol path concept, the goal is to make better predictions of how a portfolio of options will react to stock movements without pretending that vols don’t change. This is an opportune moment to remind you that the presence of a smile in the first place is a patch to the faulty Black-Scholes assumption that vol is constant. If the strike vols don’t change as the spot moves, the ATM vol still does since you have “moved along the smile”.

The entire branch of quant devoted to modeling option surfaces stems from the knowledge that vols change as the underlying moves and that there is value in trying to forecast those changes rather than accept a null prediction of “vols won’t change”.

There’s no controversy about whether there is value in modeling the dynamics of option surfaces. Better models improve:

  1. Risk measures. VAR needs assumptions about how the surface reprices when spot moves. Your hedge ratios are direct outputs from portfolio scenario shocks and their assumptions.
  2. Market-making. Sound models mean the ability to recognize abnormal kinks within a name or cross-sectional divergences between names. A model gives you a baseline from which to judge “how strange is this surface change”? If the skew rips by X, do I expect that to pop back into line or is this within the realm of normal, given the market’s movements?
  3. Option pricing on illiquid names. How do I estimate option values in a name with sparse quotes? A good model fills in the blanks.

My goal with this post, like all of my posts, is not to give it an academic treatment but the non-quant practitioner’s perspective. To offer an intuitive angle to either better organize your understanding, whether this is new to you or if you come from a similar vantage point OR complement the textbook rigor that some readers possess.

As the title suggests, we are going to reduce the topic to 2 basic types of skew modeling approaches — “sticky strike” versus “floating”. The fact that there are 2 is a hint that neither is fully “correct”. Just like skew itself is a kluge, the entire domain of surface modeling is basically a kluge. Beyond hard arbitrage boundaries, the relationships of options to one another is a collection of informed guesses mediating a constantly evolving conversation between models and behavior.

The typical George Boxism “all models are wrong, some are useful” applies. Models are toys by necessity — if they were actual simulations of reality then the reality is simple enough to not need a model. Nothing about the future of a security price satisfies that requirement.

Our procedure here is to assert the model, see what they would predict if they were true, and then watch them break by hypothesizing the trading strategy that would profit from the models NOT breaking (which of course is a blueprint for why they must break).

The nice part is that this is mostly a visual exercise so don’t be discouraged by the post being too long to fit in the email…it’s a lot of pictures.


Floating Skew

A floating skew model says that the percent skew by delta* stays constant. The 25-delta put is always, say, 25% above ATM vol.

Note: Floating skew models are also referred to as “sticky delta” keeping consistent nomenclature with their counterpart “sticky strike”. I always found this similarity in names to be confusing but YMMV.

*Delta is a stand-in for any normalized measure of moneyness. 

Log or percent moneyness itself (ie “a 5% OTM put”) is not normalized for volatility. A 5% OTM option on TSLA is a lot “closer” to ATM then 5% OTM on SPY because TSLA is so much more volatile. 

Delta is a vol-aware unit of distance, but it has the problem of being recursive. We need a volatility to measure distance to measure the vol premium on a strike BUT we delta depends on the very volatility we are looking to parameterize. 

You can use standard deviation based on ATM or .50 delta volatility to measure distance as I do here. I admit this might be cope as I’m just drinking the Heisenberg poison I’ve built immunity to. 

The stylized demos in this post are using the base smile from last week’s post from a SPY snapshot.

Spot = $695
ATM vol = 12.4%
DTE = 31

We also maintain the -3.0 vol path (ie a 1% rally drops ATM vol ~3% and vice versa). This model says the percent premium/discount of a strike’s given delta is preserved.

Looks sensible if we plot vols by delta for green (stock up ~1% to $702) and red (stock down ~1% to $688):

Smile by delta floating

Let’s plot vol by strike:

IV curve full

Hmm.

Let’s look closer. Again, the purple curve is the base curve. The green curve represents the smile if SPY jumps from $695 to $702, or ~1%, and the red curve represents the smile with an ATM strike of $688.

I’ll narrate observations, but it’s best to pre-load your own observations if you’re trying to learn (you’re enabling the technique of ‘hypercorrection’ or ‘surprise learning’).

IV curve zoomed

Observations and notes on breaking

  • The down move where vol increases due to vol path, actually leaves us with a lower ATM and downside vols! It’s because the vol path itself is not tangent to the slope of the actual skew of the purple line. In this model, unless the vol path is tangent, vol will underperform on the downside while the OTM calls will outperform. As the stock rallies, vols across the board outperform because the vol path is not as steep as the implied skew.
  • If there were no vol path at all (ie vol slope = 0) then these under- and outperformances would be even more egregious. In fact, if that’s how surfaces behaved you would simply sell the slightly OTM puts and buy the OTM calls knowing that whenever the spot moved, the IV spread you had on would profit since the vol would always underperform on the way to your short and vice versa. It’s true that you’d still be exposed to changes in realized vol, but you’d have a giant IV tailwind as compensation.
  • If the vol path was as steep as the skew, you’d be much closer to a sticky strike model to be discussed below, along with its own caveats, of course.
  • A floating model is incoherent in the extremes. If ATM vol doubles/halves, all strike vols must double/half. Leading the witness a bit, but tails are sticky…which means skew flattens when vols get extremely high, and steepens when it gets its extremely cheap. The floor on a .10d put vol is proportionally higher than the realistic floor of an ATM IV. At the extremes, a single penny can be several vol points as prices get sticky (especially since transaction costs are fixed dollar amounts — think of the fee to sell an option at a “cabinet”.)

By asserting the same percent skew premiums/discounts across the curve, the strike vols themselves are left to vary as our chart shows. This view shows how the strike vols change from the base curve depending on whether the stock went up or down:

Change in strike vols

 


Sticky Strike

A sticky strike model asserts that vols do not change as the spot moves. The $680 put trades at the same vol whether SPY is $695 or $702.

If we fix the strike vol, what happens to skew?

If strike vols are fixed but spot rallies 1%, your 25-delta put is now a 20-delta put. Same vol. Different delta.

This chart is percent skew by call delta for the base curve. For the shape rotators in the audience, go ahead and guess what happens to the skew at the .75 delta when it becomes a higher delta call after a stock rally.

Skew by delta

As a wordcel myself, I’m just going to display the answer.

Sticky strike ATM

Zooming in on the actual skew changes:

Sticky strike skew change

Put skew flattens (ie gets smaller) on sell-offs while call skew gets trashed. On rallies, put skew firms* and call skew flattens (becomes much less discounted).

*A 2% shift in normalized skew is “small”. If skew is 20% premium and ATM vol is 30%, that’s 6 points of premium. A 20% to 22% move in the degree of premium is 0.6 vol points. Matters to a market-maker but it’s noise to most participants.

Picture of SPY 1m .25d skew for the past year:

Skew timeseries

Zoomed in, you can see how it flattened during the late Feb to late March sell-off and bottoming ahead of Liberation Day before spiking!

I’m not making stories, but pointing out that it collapsed again on the second leg-down, marking the bottom for the remainder of the year. All hindsight stuff, but overall you can see the range for .25d put skew was about 15% for the year(from about 14 to 29% premium to ATM vol).

In case you need a reminder for why I don’t like trading skew for vol reasons:

a sense of proportion around skew


Reality

Sticky strike predicts flat strike vols.

Floating strike predicts unchanged skew, which describes how strike vols change.

Let’s pause for a second. I’ve done something subtle in how I’ve framed this discussion which might be lost on more novice readers (although I’m not sure just how novice anyone who has gotten this far might be).

Without saying so directly, I am putting a lot of emphasis on what happens to strike vols. For traders as opposed to onlookers who just talk about what vol or VIX is doing, strike vols are the closest thing to what matters — option premium. Strike vols influence option prices directly and prices of contracts determine p/l. “Vol went up today” means nothing if strike vols were unchanged and the stock is simply lower. Telling me that ATM vol is higher doesn’t tell me if a floating model just slid down the curve. “Vol” is an abstraction of strike vol is an abstraction of option premium.

With that out of the way, relating these models to reality starts with observation of strike vols. In fact, this is how such models are generated in the first place. Noticing, then fitting.

You could go crazy with examples, but I will do just a couple to give you enough fodder for your own consideration.

This was a SPY snapshot on 1/20/26 with shares down ~2%

Strike vols are up across the board.

SPY IV visualizer

Notice:

  • Sticky strike wasn’t true. Strike vols moved.
  • Floating skew didn’t hold either. If the strike vols were all up in an approximately even fashion in clicks (ie all vols up 1.5 points give or take .3 for near the money) then skew flattened (think of it this way…higher IV options were up a similar amount to lower IV options).
  • You could describe the change as a parallel shift in sticky strike vols. A sticky strike type movement means the skew changes. In this case, the put skew flattened and the immediate call skew became less negative.

A 2% move in SPY is 2 standard deviations. I’m not surprised the surface didn’t adhere neatly to a model. Even vol paths are extremely local (a vol path of slope -3.0 would predict that a 2% sell off would lead to a 6% increase in vol and IV on the original ATM went up double that amount from 13% to 14.5%).

Let’s look at IBIT March expiry on Monday’s selloff. IBIT fell ~6%, about a 2 standard deviation move as well.

Here’s the change in strike vols.

IBIT IV visualizer

In the belly of the curve, sticky strike was a great description of what happened. Strike vols barely budged, while the signature of the strike vol changes for options that are now OTM calls and puts looks like what a down move with a floating strike model would predict. Call vols up and puts vols down. Sticky strike in the belly, floating skew for OTM.

And while the SPY move looks like it rattled the market as the surface shifted higher, the BTC move had little effect on its surface despite both moves being ~ 2 standard deviations. The SPY move seemed unstable, while the BTC move was stable.


What do you do with this?

If all of this sounds confusing, it’s because it is! This is good news for vol traders. If it weren’t, the market would just be more efficient. In this example, BTC vols underperformed SPY for the same exact type of move. Inverting, that means there’s an opportunity for discernment, as you had 2 assets which had highly correlated underlying behavior but mismatched volatility behavior.

A question to consider given the vol moves…if you buy the now at-the-money BTC vols that haven’t budged or even the OTM puts which actually declined in vol to sell upside SPX or BTC calls, is this an opportunity? This is what vol traders think about for a living. You have desks that see the flow in everything and combine that info with the relative strength and weakness across parts of the surface (it’s the whole idea behind the vol scanner tool).

If you’re a market-maker, you don’t have the luxury of just scanning the markets to cherry-pick. You are deeply embedded in the price formation process since you must post a market. In illiquid names, you must do this with limited flow information. Having a vol surface model to generate fair values to quote around is not optional.

In commodity options, I toggled between sticky strike, floating models with vol paths, and hybrids (basically a floating model with a vol path and a skew correlation that allowed you to rotate or tilt the shape of the curve forward and backward).

Just like a vol slope parameter, these models affect your deltas.

I remember a particularly brutal period where vol was so heavily offered on up moves that when I eventually gave in and ran a much steeper negative vol slope, the change flipped my delta from being flat to short $20mm of oil. And of course, if you are long vol as it’s getting pummeled on the rally, that means your model is now saying you are short on the highs. After all, that’s the problem. The market is rallying, your calls are massively underperforming their delta and you are short futures against them!

But this sensitivity means you can’t be toggling your models all the time because how you model affects your risk. The goal is to model reality, but if you keep changing models like your name is DiCaprio, you’re going to put your risk in a blender.

This is a good place for judgment. You build an understanding of how the surface changes for various types of moves while acknowledging that this depends on the market context and open interest. If investors are well-hedged to the downside like they were in 2022 (the market sell-off and rise in interest rates were extremely well telegraphed), then you might expect put skew to underperform on the way down. You certainly don’t want to run a fixed strike model in that case.

You let the market’s surface changes act as a tell. If the market acts differently on a small sell-off and a big-selloff that’s expected. You don’t really gain information. There’s no null to reject. But if both types of sell-offs have muted reactions, that’s interesting. This is an orderly, expected, and perhaps even stabilizing event.

On the other hand, a stock up-vol up surface move is unexpected. That should inform the model you run. There’s an art to this. How long or how persistent should a behavior be before you can classify which model you should run? There’s no simple answer (again, thankfully!). Open interest and expectations are convolutions that direct whether something is a surprise or not. Surfaces react to surprise. Remember they already know that vol is not constant — it’s the delta in expectations about how volatile the volatility itself is that substantiates new surface behavior. Surfaces anticipate a band of random behavior without reacting because randomness is embedded in volatility.

Sometimes interest rates rise because of growth expectations. But stagflation will do that too. The vol surface will likely care about the difference. Oil might be rallying steadily because China is booming and the global economy looks rosy. It can also rally because there is no peace in the Middle East. The vol surfaces will distinguish between the 2 types of rallies. Your deltas will be vastly different for the same nominal options position depending on the backdrop.

I’ll leave you with this summary that captures what I generally, but loosely, expect when I see the stock market up or down and whether I think the move is stabilizing vs destabilizing:

 

embedding spot-vol correlation in option deltas

Before we get to the heart of today’s education, this is a video follow up to yesterday’s HOOD: A Case Study in “Renting the Straddle”.

I talk about oil volatility as well and how it shows up in the Trade Ideas tool.


This concept of “spot-vol correlation” gets a lot of airtime from different angles even when it’s not explicit. The mass financial media doesn’t use the exact words but they know enough to call the VIX the “fear gauge”. VIX is a complicated formula that aggregates values representing annualized standard deviations from a strip of inverted Black-Scholes numerical searches with quadratic weights. But all of this gets translated to:

“when stock go down, that number go up”

That travels a lot faster. Even your cat knows that market volatility has an inverse relationship with stock returns.

The more your paycheck depends on option greeks, the more you will need to zoom in on this concept. Mostly because the relationship between vol and prices changes your actual risk. The Black-Scholes world assumes vol is constant, but we know better. The sensitivity of options to various market inputs (greeks are measures of risk) is naive without adjusting for behavior that is predictable enough for your cat make a better guess than random about what will happen to vol when stocks move.

How can use this cat knowledge to estimate better deltas so when our model says we are long $50mm worth of SPY, we aren’t suprised when it seems to act like we are only long $40mm worth?

There isn’t a single way to do this but I’m going to show you how I did it as a calculus-challenged orangutan.

Before we get to numbers and pictures, I want to mention one last thing.

There’s a riddle in the world’s best trading book Financial Hacking. An imaginary bank trader calls a meeting with management and says he’s found “greatest trade in the world”. He sits them down for a presentation and says he can buy calls for 20 vol and sell puts at 40 vol, delta hedge until expiry, and make a 20 point “arb”.

What’s the problem?

There are several, perhaps many, option traders reading this right now who have thought about the holy grail of long gamma, collecting theta. Look you can go do this right now.

  1. Sell a strangle on 1-month oil futures and buy a ratio’d amount of 12-month CL straddles.
  2. Buy a ratio time spread in a name that has a major event coming up
  3. Trade SPY risk reversals

All of these trades will give you the “desired greeks”. But these are illusions. In order:

  1. The lower vol on the deferred future makes the gamma of those options look higher than it is, but you need to weight the gamma by the lower beta those futures have to spot oil prices
  2. The decay you think you collect on the near-dated short is unadjusted for the “shadow theta” or glide path of IV increasing as the upcoming event is a greater proportion of the variance remaining as each second elapses
  3. Spot-vol correlation means that theta number is not just the cost of gamma but vanna. The owner of the put is getting more than gamma.

Ok, time for less words and more F9.

I grabbed a SPY IV curve from earlier this week. 31 DTE.

The spot price was $695.27 at the snapshot time but we are just going to keep things simple by ignoring any cost of carry and saying that spot is $695. I just wanted a sensible IV curve for demonstration purposes.

The ATM IV on the $695 strike is 12.40%

Fetching the strike vols and using a vanilla Black-Scholes calculator with 0% cost of carry and 31 DTE, we get this self-explanatory table:

The Naive POV

Those deltas answer the question:

“How much will the cValue change if the stock goes up $1?”

But those deltas don’t know what our cat knows? Vol will fall if the market goes up. It’s not a certainty, but I’m happy to lay you even odds on the proposition if you think it’s random.

If vol falls, the option is going to underperform roughly by the change in vol on the strike * option vega.

Greeks are useful insofar as they describe our actual risk. If my cat-instincts know that the call will underperform if the market goes up, then I probably don’t want to sell quite as many shares against it to be neutral on a naive delta.

Likewise, if I sell those calls and the market falls, the increase in vol will mean I won’t make as much money on my call short as the naive delta predicted.

Notice that whether I buy or sell the call, I am better off having hedged it with less delta than the naive model predicts.

We are just trying to incorporate what the cat already knows to dial in better hedge quantities. We are folding expected vega p/l into delta because the empirical relationship between spot and vol changes is strong enough to bet on it.

We need some parameter, some concept of beta, that describes the strength and sign of the relationship between spot change and vol change. In SPY, the sign is negative because of the inverse relationship. In silver, the sign is positive. It is a “spot up, vol up market”.

An important note. We are speaking in generalities — any market has a general spot-vol signature, but it can flip for periods of time and the strength of the relationship also bounces around. These empirical relationships reflect flows. The supply and demand of options as the spot moves around. God doesn’t assign them. Academics will talk in terms of capital structure and how when a company falls, it’s more levered, and therefore mechanically more volatile, equity is a call option on the highest and best use of the company’s assets, yadda yadda. There’s truth to this, but its not the most useful lens for thinking about option surfaces which are tangible projections of an order book of shares across price and time.

A detour with a purpose

I started in commodity options just before the listing of electronic options markets. When I first stepped into the trading ring, many market-makers were still using paper sheets. We had spreadsheets on a tablet computer, but heard of a fledgling software called Whentech. Its founder, Dave Wender, was an options trader who saw the opportunity. I demo’d the product, and despite it being a glorified spreadsheet, it centralized a lot of busy work. It had an extensive library of option models and it was integrated with the exchange’s security master so its “sheets” were customized to the asset you wanted to trade.

I started using it right away. Since it was a small company, I was able to have lots of access to Dave with whom I’ve remained friends. I even helped with some of their calculations (weighted gamma was my most important contribution). I was a customer up until I left full-time trading. [Dave sold the company to the ICE in the early 2010s. It’s been called ICE Option Analytics or IOA for over a decade.]

The product evolved closely with the markets themselves. Its nomenclature even became the lingua franca of the floor. Everyone would refer to the daily implied move as a “breakeven” or the amount you needed the futures to move to breakeven on your gamma (most market-makers were long gamma). Breakeven was a field in the option model. Ari Pine’s twitter name is a callback to those days. Commodity traders didn’t even speak in terms of vols. They spoke of breakevens expanding and contracting.

What does this history have to do with a spot-vol correlation parameter?

This period of time, mid-aughts, was special in the oil markets. It was the decade of China’s hypergrowth. The commodity super-cycle. Exxon becoming the largest company in the world. (Today, energy’s share of the SPY is a tiny fraction of what it was 20 years ago.)

Oil options were booming along with open interest in “paper barrels” as Goldman carried on about commodities as an asset class. But what comes with financialization and passive investing?

Option selling. Especially calls.

Absent any political turmoil, resting call offers piled on the order books, vol coming in on every uptick as the futures climbed higher throughout the decade.

A little option theory goes a long way. Holding time and vol constant, what determines the price of an ATM straddle?

The underlying price itself: S

straddle = .8 * S *σ√T

If the market rallies 1%, you expect the straddle price at the new ATM strike to be 1% higher than the ATM straddle when the futures were lower. Since the “breakeven” is just the straddle / 16, you expect the breakeven to also expand by 1%.

But that’s not what was happening.

The breakevens would stay roughly the same as the market moved up and down.

If the breakevens stay the same, that means if the futures go up 1%, then the vol must be falling by 1% (ie 30 vol falling to 29.7 vol)

It dawned us. Our deltas are wrong.

If we are long vol, we need to be net long delta to actually be flat.

When your risk manager says why are you long delta and you explain “I need to lean long” to actually be flat, you can imagine the next question:

“Ok then, how many futures do you need to be extra long for this fudge factor?”

We need to bake this directly into the model because it’s getting hard to keep track of. Every asset and even every expiry within each asset seems to have different sensitivities between vol and spot. The risk report can’t be covered in asterisks detailing thumb-in-the-air trader leans.

Whentech listened.

Vol paths

Whentech introduced a new skew model that allowed traders to specify a slope parameter that dictated the path of ATM IV. Their approach was simple and numerical. It was some version of this:

ATM Vol path = ATM IV × (100% + vol slope × moneyness)

Let’s say I set my vol slope parameter to -1.0

SPY ATM vol is 12.4%

If SPY goes up 1%, what’s the new ATM IV?

New ATM Vol = 12.4% x (1+ -1*1%)
New ATM Vol = 12.4% x (99%)
New ATM Vol = 12.28%

A -1.0 vol slope corresponds to a “constant breakeven” regime. If the stock is up 1%, vol falls 1%.

This is a table of vol paths for different vol slope parameters:

Keep in mind that the vol path is only for ATM vol. You can think of the ATM region of a smile sliding up and down a ramp of slope -1.0, -3.0, and so forth.

💡Notice that all of these ATM vol paths suggest a lower vol ATM vol at say the $675 strike than the actual smile implies. That is really a separate discussion, since skew is not really a “predictor” of vol anymore than a back-month future is a predictor of spot price. It is just a value that clears the market so it has risk-premiums embedded. It’s just another example of “real-world probabilities do not equal risk-neutral probabilities”. Even if that’s not satisfying, you could think of the skew as needing to average any number of price paths approaching a strike. If we drop $40 overnight, ATM IV is going to be higher than what the current $40 OTM put vol. If it takes 2 weeks, maybe not.

SPY skew is quite steep compared to most assets. A vol path that is tangent to the skew curve (-9.0 parameter) would be a very aggressive spot-vol correlation, especially considering that -1.0 is constant breakeven. Anything more negative means, as you rally, the value of an ATM straddle shrinks. That’s a strong clue that this slope idea is highly localized. If SPY doubles, the new ATM straddle isn’t going to be worth less than the current one, nevermind 0.

Zooming in on the strikes that are $5 around the ATM $695 strike:

How vol paths affect your delta

Once we’ve chosen a vol slope, we can compute the vol path, which in turn alters our model deltas. We can do this numerically, instead of deriving new formulas for greeks.

We are going to make a simplification, which is to assume that for a small spot move, changes in vol affect all the strikes by the same proportion. You are invited to think of what that would mean for implied skew. I plan to tackle that in a later article, but we’re building up in steps.

Let’s zoom in on the 695 call in the case when SPY goes up $1.

In the naive model, the 695 call goes up by its delta or $.507

But based on the different vol slopes, we know IV is going to fall from 12.4% to anything from 12.38% (-1.0 slope) to 12.24% (-9.0 slope). When we reprice the option with the lower vol, we see our profit is less than $.507. The difference, which is mechanically due to negative vega p/l, is being used to convey an “effective delta”.

If the market behaves as if the vol slope is -5.0, then instead of hedging the ATM call on a .507 delta, you should have used .44 delta.

[This is the topic I’m talking about at minute 37 in the context of estimating dealer hedging flows]

I show the vega p/l just to make the decomposition tie out between the recomputing of the option vs what it’s worth if IV was unchanged.

Vol beta

We’ll close by tying this dynamic back to hedge ratios in “delta one” vol products like VIX futures and ETPs.

VIX depends on a strip of options, not just ATM. But let’s stick with our simplification that IV changes proportionally across strikes such that if ATM vol decreases 10%, VIX falls 10% (not 10 percentage points but 10%…like 20 vol going to 18).

This is our IV projections according to different vol slopes for SPY shares up 1%:

The vol slope parameter can be thought of as a vol beta. As in, what’s the beta of VXX shares to SPY?

[ I wrote about this last year during Liberation Day because on the sell-off, I bought both ES futures and VX futures but I needed to estimate the right ratio to buy them in.]

Running the regression for the past year in moontower.ai shows a VXX/SPY beta of -3.25:

The rolling one-month beta is more volatile and would correspond to vol slopes between -1.5 to -5

Related video:

📺VXX Beta explained via Moontower Hedge Ratio Tool

how taxes can influence option trades

I bought June/Feb13 put calendar in SLV a few weeks ago when the vol spread inversion went nuclear.

That was a disaster.

SLV dumped 30% 2 days later.

The Feb puts I’m short are of course 100 delta, so the effective position is long a June OTM call synthetically.

💡If a stock is $80 and you own the 100 put for $25 and 100 deltas worth of the stock, then you are synthetically long the 100 call for $5. If you don’t believe me, look at your p/l payoff for the portfolio of long puts and stock at expiry for stock prices of $90, $103, and $120 vs what it would be if you just owned the 100 call.

We understand the position and the risk. But we don’t talk about taxes much here so I’ll use this example to introduce the complexity of the real-world.

Let’s say I roll my June puts.

Consider the tax implications.

I will realize a gain on the appreciated puts.

The puts I’m short that are now the risk equivalent of being long shares because they are so far ITM. I have a mark-to-market loss on these puts, but it’s not realized. This is a problem. The entire trade has been a loser, but if I roll my June put,s I crystallize a short-term tax gain. Ideally, I need to crystallize the short-term loss on the puts I’m short by buying them back.

If I don’t buy them back and get assigned, I don’t realize the loss. Instead, I acquire shares with a basis of the strike price minus the premium I collected when I sold them. If I sold the 100 put at $5, my cost basis is $95. The shares are $70, but my loss is still unrealized until I sell the shares.

The problem might not be immediately obvious, so let me break it down.

  • If I roll my June puts instead of closing the entire position out, I have a trade that has been a loser, but the tax accounting shows a short-term gain + an unrealized loss.
  • To crystallize the loss, I must buy my put back or sell the shares once I’m assigned. But, both of these trades sell lots of SLV delta. If my intention is to maintain a synthetic long call position (long stock + long ITM puts) I’m stuck with an accounting gain.

⛔Because of the wash sale rule I cannot sell my SLV shares then immediately buy them back.

  • You can envision a scenario where SLV rallies up again, my synthetic call position recovers the economic loss but I have a taxable gain on the rally. My p/l on all the activity is a wash BUT I have loads of short-term taxable income!

Not picking up your matched short-term loss is leaving a dead soldier behind.

(Ok, that was dramatic. I’m sorry enough to say so, but not enough to delete it. I want to imprint it.)

There are a few choices whereby you can roll the puts, achieve the desired risk exposure but I’m not an accountant and this is not advice. There’s no wink here. Talk to an accountant.

Goal: crystallize short-term loss without getting rid of your long silver delta

Possible solutions

  1. Once you are assigned, sell your SLV shares and replace the long with a highly correlated silver proxy such as other ETFs or silver futures. From an IRS interpretation of the wash sale rule, the futures are probably safer since COMEX is NY silver and SLV is London deliverable. But again, not an accountant.
  2. Replace your length with assets highly correlated to silver, like miner stocks. The basis risk is obvious.
  3. Close your puts and buy the stock at the same time, effectively buying a worthless synthetic call.

Let’s talk about #3 a bit more.

If the stock is $70 and the 100 put is only worth intrinsic (ie there’s no time value left in the 100 call), then that package is worth $100. The stock price plus the $30 put. Now you wouldn’t expect a market-maker to fill you at fair value.

I figured a market-maker might fill me for a penny of edge. When I was looking at the quote montage, the 99 strike call was offered at a penny so by arbitrage the 100 call should be offered at $.01

I tried to pay $100.01 for the package.

No dice. Nobody wanted the free money. I didn’t raise my bid, figuring I would try again on expiration day since perhaps a seller didn’t want to bother with the inventory. If they traded it on expiration day, the whole position would offset at settlement, and they would collect their easy penny.

Well, what happened?

My short put got exercised early! I got stuck with the shares and now have to sell the shares to crystallize the loss.

The interesting thing to point out is that paying up a penny to lock in a short-term accounting loss is a type of trade that’s win-win. The market maker sells a worthless synthetic option, I get my tax situation aligned.

This is a screenshare constructing a synthetic call in IB’s strategy builder, then adding it to the quote panel so you can see the bid/ask for the structure.