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.

Levered silver flows

In the spirit of spaced repetition, I published The Gamma of Levered ETFs as an article on X. Seemed relevant given silver’s 30% selloff on Friday.

Here’s the short version of the math of levered ETFs. To maintain the mandated exposure the amount of $$ worth of reference asset they need to trade at the close of the business day is

x(x - 1) * percent change in the reference asset * prior day AUM

where x = leverage factor

examples of x:
x=2 double long 
x=-1 inverse ETF
x= 3 triple long
x= -2 double inverse

Applying this to silver:

AGQ, the ProShares Ultra Silver ETF, is 2x long. It had ~$4.5B in assets at the close on Thursday.

For the underlying swap to maintain the mandated exposure, at the close of Friday (assuming no redemptions) the swap provider must trade silver. How much of it?

2(2-1) * -30% * $4.5B

or -60% of $4.5B.

-$2.7B worth of silver in forced flows. Negative = sell.

There’s an UltraShort 2x ETF, ZSL, that had about $300mm of AUM going into Friday.

Rebalance trade:

-2(-2-1) * -30% * $300mm = –$540mm

Assuming no redemptions, these levered ETFs needed to sell ~$3.25B worth of silver into the close.

In a typical environment, silver volumes are mostly split between London’s spot market (LBMA) and COMEX futures (NY deliverable) with Shanghai (SHFE), India (MCX) and SLV (London deliverable, US traded ETF) combining for less than 10% of total volumes.

At the NY close, SLV and COMEX represent all the liquidity that’s open.

Claude

COMEX futures traded nearly $150B of volume Friday and SLV traded ~$50B which is on the order of 10x the dollar volumes silver used to trade a year ago at lower prices. Still, those forced sales, if they are happening in the few hours of trading may represent something like 5-10% of the liquidity.

I’m guessing readers who are actually on metals desks have a better guess.

Silver futures margins, after being raised again this week, are about 15% of the contract value (although your broker may ask for more. IB asks for twice that, which was prescient!)

If Shanghai futures, which were closed, have a similar requirement, that means the exchange doesn’t have enough collateral to cover the 30% move if Shanghai futures match the COMEX move.

I don’t know how that exchange works (many exchanges have an insurance pool where some of the losses are socialized across clearing members), but one thing that would be interesting is if Shanghai exchange officials have the authority, balance sheet, and ability to have sold COMEX futures as a hedge. I doubt that, it’s just a speculative musing, but if such a thing did happen, their Sunday evening unwind trade would be to buy back COMEX futures as they liquidated Shanghai holders. Again, this is just a ridiculous musing, but I look forward to seeing how it all shakes out.

In any case, I think a useful takeaway from all this could be to add expected levered rebalancing flows to your dashboards (of course, this is a recursive problem because the price at any point in time reflects some people’s knowledge of these flows. Pre-positioning always opens the door to backfiring if enough arbs think the same way).

Vol orders and discussion on option execution

Today is about option execution. It’s a blanket response to a host of misunderstandings I find in talking to investing practitioners who don’t come from the market-making side.

Before that we’ll cover a couple things I found interesting.

Option volume explosion

This table is from the OCC:

From 2005-2007 option volume doubled.

It took 13 years, until 2020, to double again.

And just 5 years to double still again.

If you’ve been paying attention to the options world, you know that the last 5 years have seen both a massive increase in retail participation which coincided with the very successful product launch known as 0dte.

A friend with a senior role at a MM has described the last few years as “money raining from the sky”.


Trader Challenges

I loved this post by Rob Carver:

Wordle (TM) and the one simple hack you need to pass funded trader challenges

In fact, I’m going to be meta and write about this post because of its pedagogical value. Rob saw a situation in the wild, turned it into a real-life word problem, and solved it. We’re going to step through what was unsaid because that process would be helpful to learners who want to get better at recognizing the nature of a problem and constructing a solution.

Excerpt from the intro:

There has been some controversy on X/Twitter about ‘pay to play’ prop shops (see this thread and this one) and in particular Raen Trading. It’s fair to say the industry has a bad name, and perhaps this is unfairly tarnishing what may pass for good actors in this space. It’s also perhaps fair to say that many of those criticising these firms, including myself, aren’t as familiar with that part of the trading industry and our ignorance could be problematic.

But putting all that aside, a question I thought I would try and answer is this – How hard is it to actually pass one of these challenges?

The rules of the Raen challenge are this:

  • You must make 20%
  • You can’t lose more than 2% in a single day. There is no maximum trailing drawdown. So if you lose 1.99% every day forever, you’re still in the game.
  • You must trade for at least 30 trading days before passing the challenge
  • It costs $300 a month to do the challenge. This isn’t exactly the same Raen which charges a little more, but as a rounder number it makes it easier to directly see how many months we expect to take by backing out from the cost per month. I assume this is paid at the start of the month.

His post is totally free. You should read it. But I want to branch from this point where he laid out the rules of the challenge.

The first thing you need to recognize

To even begin answering the question of how it is to pass the challenge you need to state it in terms of “how hard is it to pass given some [expected daily return] and [volatility]?”

Since the variables of concern are return and volatility, or reward vs risk, the concept of a Sharpe ratio immediately comes to mind.

If you have an expected daily return of 20% with 0% volatility, then your chance of success is obviously 100%. That’s an infinite (undefined?) SR.

If you are even remotely near the investing world you probably have some sense that the SP500 has something like a .5 SR and an SR of something like 2 would be very high. If SP500 is 15% vol, then you are talking about an investment with SP500 vol but gets you 30% per year. You do that for an extended period of time and everyone knows your name.

We can make a reasonable matrix of values for our 2 values of interest.

Since giving a go at trading involves work and buying SPY does not, then having a SR greater than .50 to warrant the effort sounds table stakes. Any number from 1.0 to 2.0 feels like an appropriate starting point, even if it’s arbitrary. Rob starts with 1.5. Fine.

very sophisticated table

 

Restating the problem:

If you have a Sharpe Ratio of 1.5 and trade with 15% annual volatility, what’s your chance of passing a funded trader challenge that requires:

  • Hitting 20% profit
  • Without any single day losing more than 2%
  • While paying $300/month

Rob recognizes that this is best solved with a simulation, but that’s actually an enlightened reflex. Let’s not take it for granted.

Could you solve this with math in a closed-form way?

Let’s try to solve this with formulas. What we can assume:

Daily returns ~ Normal(μ, σ) where:

  • μ = (SR × Vol) / 252 = (1.5 × 0.15) / 252 = 0.0893% per day
  • σ = Vol / √252 = 0.15 / √252 = 0.945% per day

Question 1: How long to reach 20%?

Simple approach: 20% / 0.0893% = 224 days

Hmm. This seems wrong for several reasons:

  1. You don’t go straight up
  2. The bust-out rule: any day < -2% resets you

We need to bring volatility and path dependency into consideration. We ask another question.

Question 2: Probability of hitting -2% on any given day?

P(return ≤ -2%) = Φ((−0.02 − 0.000893) / 0.00945) = Φ(−2.21) ≈ 1.4%

This seems useful. Now what?

Question 3: What’s the probability of reaching 20% before hitting -2%?

The lyrics to Steppenwolf’s Pusher come to mind:

tombstones in my eyes

I have no idea how you solve this analytically.

Fortunately, this question comes to mind 5000 years since Indian mathematicians invented Arabic numerals and 3 years since Anthropic released the tireless teacher known as Claude.

It (he? she? they?) says:

This is a “gambler’s ruin” problem with two absorbing barriers: +20% (win) and one day at -2% (lose), but after bust-out, you reset to 0% and try again!

He goes on to explain that solving this problem analytically requires:

  • Solving partial differential equations (diffusion processes)
  • Handling the reset mechanism (not a standard boundary condition)
  • Tracking cumulative costs over multiple attempts
  • Computing time-dependent probabilities

But Claude, how would I know this stuff?

Oh young Padawan, if you wanted to solve this without simulation, you’d need to learn:

1. Stochastic Calculus

  • Brownian motion
  • Geometric Brownian motion (for compounding returns)
  • Itô’s lemma
  • First passage time problems

2. Partial Differential Equations

  • Kolmogorov forward/backward equations
  • Boundary value problems
  • Absorbing barriers and reflecting boundaries

3. Renewal Theory

  • For the “reset and try again” mechanism
  • Markov renewal processes
  • Expected costs with renewal

Estimated Learning Time: 1-2 years of graduate-level probability theory

Oh.

It’s gonna take more effort than watching a Veritasium at 2x speed? Bruh, I don’t have cave time on my hands here.

I assume Rob reacted to this trading challenge word problem like a linebacker diagnosing pass vs run in a split second. This is a problem for simulation.

Anyway, I just thought it would be helpful to explicate the unsaid.

And one las thing. Since Rob was generous enough to post his code, I made Claude work overtime for no pay (inner monologue: does this mean I would’ve owned slaves 400 years ago?). Claude’s yield:

https://trading-sim.moontowermeta.com/


Option execution

While stock execution is a vast topic depending on how finicky you want to be about HFT, microstructure, game theory, counterfactuals, lit vs dark, block trading, etc etc, most institutional algos coalesce around some concept of VWAP or TWAP where the goal is to minimize market impact by making sure you are not an outsize percentage of the volume.

Option execution has no equivalently popular Schelling point benchmark such as a VWAP. This is partly because option premiums are themselves moving targets depending on the interplay of time, implied volatility, and moneyness. This is not a big issue, you could harmonize measurements in any number of ways including by the greeks. You’ll get some sense of how we can do that below. But the fact that you can pay more for an option but be purchasing a lower IV is hint enough that VWAP-ing according to premium is incoherent.

The biggest issue is that the intent of an option order has a different time horizon from a typical stock order. If you are an investor, you probably don’t care that it takes 3 days to accumulate your position as long as there are no catalysts in the execution window. But options, when used as they should be, with a basis in volatility assessment (in other words, discernment of the magnitude of a move over a certain period of time), naturally require more time-sensitive execution.

Options are also less liquid, especially outside the top 50 names or so. Given the sheer number of expiries, strikes and symbols, it is far more likely you are selling the 62 DTE, .24 delta call against a market-maker rather than someone else who woke up that morning thinking they’d like to invest that particular option. This means, you want to minimize your encounters with the order book so even if you could VWAP your order, if the counterparty is a MM you are far more likely to be leaking info that you have an order big enough to make piecing it out worthwhile. This information can and will be used against you.

The best you can do with respect to option execution is not be stupid. Your order is easy to spot. It’s the one whose limit doesn’t tick with the stock (we’ll address counters to this below!). You are always going to lose to your execution in expectation. You can tattoo that on your face. We’ll shed some light on what’s happening on those screens.

Edge functions

At any snapshot in time, market-makers have a fair value for what an option is worth. They stream a bid/ask whose width depends on an “edge function”. The general specification for this function is “how many cents of edge to I need to compensate me for hedging the delta and the vol risk”?

Delta risk

If I believe that buying 100,000 shares of stock XYZ will push it up 8 cents from the current stock offer, then I need to pad my option offer in the .25 delta call by $.02 just to breakeven on expected slippage on selling 1000 options. Note that the offer I’m streaming is not using “last sale” or “mid-market” as the S in the option model. It’s using “stock ask”. The call bid I’m streaming, is using the “stock bid” since I will be selling shares to hedge if I buy calls. You can step through this exercise yourself for put bids and put offers.

Vol risk

Let’s say this same option has a vega of $.10 meaning if IV increases by 1 point, the option premium, all else equal, goes up by $.10.

If this is an asset whose IV moves about 1 point per day, I might be fine accepting something like 1/2 a vol point of edge or $.05 cents to open a position. If the IV moves 10 points a day I’ll demand $.50 per contract to compensate me for the vega risk.

So at the very least, the bid/ask spread reflects the market maker’s willingness to warehouse the vol risk and there cost to hedge at the point of sale. Of course, a multitude of dealers with differing fair values and leans creates a tighter market than if there is only a handful.

If the market is more volatile, then slippage assumptions increase not just becasue the underlying shares are wider, but because there will be less liquidity at each price level. The consumer should expect wider spreads. Volatility itself will also more volatile. Again, wider spreads.

Edge functions are a tax on all option-related strategies when markets get crazy. Including strategies that are biased long vol but generally takers. They still need to trade. Edge functions are like COGs. Market-makers’ costs, including their funding spreads, are passed on to everyone else.

Order types

Like stocks, there are limit and market orders in options. But there is a class of contingent orders that makes sense in light of option premiums being moving targets.

Delta-adjusted orders

A delta-adjusted order may take the form of:

“If the stock is $100.50 bid or higher, I’m willing to offer the 99 put as low as $.50”

You can even peg the offer to the stock bid so that it keeps cancel/replacing according to its delta (so if it is .25 delta, every time the stock drops 4 cents your offer increases a penny) down to some ultimate low premium you’d accept.

You can even “auto-hedge” this type of order. So if you get filled on the puts, it triggers an order to sell or short shares on the bid subject to some tolerance. If the stock moves lower quickly after you sell the puts the auto-hedger will have parameters that you set about how far to “chase”. This is important because you should expect to get filled on the puts when the stock drops quickly and a market-maker snipes your stale offer before your broker has a chance to pull.

In other words, your fills are constant reminders of adverse selection. I’ve explained this in the broader discussion of limit orders:

From Reflections on Getting Filled:

My Bayesian analysis of being filled on a limit order vs market order

Imagine a 1 penny-wide bid/ask.

If you bid for a stock with a limit order your minimum loss is 1/2 the bid-ask spread. Frequently you have just lost half a cent as you only get filled when fair value ticks down by a penny (assuming the market maker needs 1/2 cent edge to trade). But if you are bidding, and super bearish news hits the tape (or god forbid your posting limit orders just before the FOMC or DOE announce economic or oil inventory), your buy might be bad by a dollar before you can read the headline.

If you lift an offer with an aggressive limit (don’t use market order which a computer translates at “fill me at any price” which is something no human has ever meant), then your maximum and most likely loss scenario is 1/2 the bid-ask spread.

Do you see the logical asymmetry conditional on being filled?

Passive bid: best case scenario is losing 1/2 cent

Aggressive bid: worst case scenario is losing 1/2 cent

This is why exchanges offer rebates for posting bids/offers — the payment incentivizes liquidity which nobody would ever offer otherwise because of adverse selection concerns. When you are not a market-maker you have the luxury of “laying in the weeds” until you spot the “wrong” price and then strike.

Vol-adjusted orders

This is an order that pegs your option bid or ask to a model implied vol. So if you are 25% vol offer in that 99 put your offer will adjust upwards if the stock goes down, or lower as the stock rallies. It sounds like a delta-adjusted order but it’s slightly different in that the delta adjusted order has no concept of theta embedded in it.

For example, the vol-adjusted offer will automatically accept a lower price at the end of the day vs the start of the day since a 25% vol option is worth less after time passes.

The delta-adjusted order relies on some underlying model’s delta for price adjustments but it’s not affected by the passage of time (well, technically there is some modest charm effect as time passing infuences delta). A delta-adjusted offer will tend to drift away from being marketable as time passes and theta kicks in, as you are effectively offering a higher IV. Likewise, a delta adjusted bid will become more marketable as time passes which effectively means you are bidding a higher volatility. The vol-adjusted order solves this, but lets the premium float (although these order types can sometimes allow additional constraints).

In general, these types of orders try to limit the adverse selection you are guaranteed when you place an ordinary limit order in options, where you only get filled when the stock moves against you. In fact these are the order types market makers themselves use for streaming logic.

More advanced considerations: “Mark to cross section”

This is one I’ve never seen anyone talk about but it’s obvious once I point it out.

Suppose you are working a large bid using a vol order. You want to pay 25% IV for the 40 strike in XYZ. It’s chipping away little by little and then suddenly you are filled on the entire thing at an average of 24.9% vol.

How do you feel?

Like you always feel when you get filled fast. Like the position is what your one-night stand partner looks like in the morning light. You can’t chew your own arm off fast enough to get out of it.

The first thing you’ll check is whether you got picked off because the stock gapped. But you find the stock hasn’t done anything weird. And then you notice a different chart on your dashboard…

The VIX futures have collapsed in the last 30 minutes.

The reason you got filled on your vega is that vol is much lower across the market. And this doesn’t show up in conventional execution metrics like mark-to-arrival. In fact, you got filled better than your vol limit of 25%.

Your order was recognized and when it was clear that vol was much lower, that any number of vols across the market were a good relative buy compared to what you were bidding, the market maker said “Yours”.

In other words, you wish you could mark your fills to the cross-section of other vols in the marketplace (or at the very least maybe VIX or SPY vol).

This is a whole other layer of attribution. If you sold a basket of vols but SP500 vol was down far more than your basket, do you feel good about your vol-picking skills?

It’s the same issue in active investment management. It’s a waste of time to earn beta. You need to outperform on a risk-adjusted basis to justify effort and identify skill.

Discussion

There isn’t so much a solution to execution as there is an understanding of the levers to think about what approaches work best for you.

At the end of the day, there is a price to entice someone else to warehouse a risk they didn’t wake up asking for. You are trying to execute at the lowest price that satisfies that threshold. Every cent you pay above that threshold is additional surplus to the market-maker above the minimum they require.

You can put out feeler orders on small size to probe how far into the bid-ask they are willing to execute. You are sussing out their edge function. It’s not foolproof. They understand that it’s not worth it to give up that information for small size. They may allow a high stale bid to sit because if they hit it they make a negligible amount of expectancy but what if they leave it there?

Let’s make this concrete with a simple, highly stylized example. An option is worth $1.00, and there’s an opaque distribution around where the next bid might come in, centered at $1.00 ± $0.04. If a one-lot bid comes in for $1.01, the market maker earns one cent in expectancy by hitting it.

But now there’s some chance that the next bid is higher than $1.01. And while that probability is below 50%, the expected bid conditional on waiting may actually be higher than it would have been had the $1.01 bid never appeared. And it might be for a larger size. Depending on what that distribution looks like, the market maker may have more “pot equity” in letting the market remain framed as-is rather than pasting a bid for a single contract.

The more liquid a name is, the less room there is for such games. If it’s highly liquid, there will be enough mm or customer flow to just whack that one lot stray.

The question is always, will I get a better average price in vol terms* if I hit or lift, vs going slowly and giving away info so that the screens mold to me. If trading against your order increases a market-maker’s inventory, they will pad their edge functions even more. If it decreases their inventory, then you probably want more market participants to see it so that it hastens their built-in desire to trade against you. If you want a bidding war for your flow, then you want to make sure everyone sees it. Be more inclined to “advertise” it by showing it as opposed to using electronic eyes (delta orders that are hidden and snipe when a marketable order appears against it).

[*Again, practice proper benchmarking. If I get a good price on my order to buy calls, it could be because the stock fell over the window when I was accumulating them, but on a delta-adjusted basis I could have been getting worse fills on the way down. In other words, I paid more in IV terms.]

Improving execution, to find the minimum edge that someone will accept to trade with you, is a hard problem. At a minimum, I’m trying to help you conceptualize the problem better with respect to adverse selection and the basic hygiene of benchmarking aspects of your fill due to vol changes vs delta. Execution is a classic domain where people do “resulting” where they let their outcomes adjudicate whether they made good decisions. The problem is hard enough without inviting that particular mistake to dinner.

Earnings IV Glide Paths

I want to expand briefly on Wednesday’s HOOD: A Case Study in “Renting the Straddle” because HOOD’s implied volatility that contains earnings actually declined for the rest of the week and disentangling that is a good chance to reinforce your understanding.

On Wednesday, Feb 13th HOOD vol (which encompasses earnings on Feb 10) lifted a bit from when I wrote the post. We’ll call it 68% IV.

To make 68% IV fit smoothly with the non-earnings vols from the preceding expirations, we need to assume an earnings move that allow the ex-earnings vol to be ~56%

That corresponds to about a 9.5% earnings move (a bit higher than the average move of 8.55% for the past 8 quarters).

This table shows implied trading day IVs net of various-sized expected earnings moves.

Let’s tie this idea back to theta or option time decay.

A one-day move of 9.5% corresponds to a single-day implied vol of ~119%

9.5% / .80 = 119%

This comes from remembering that an ATM straddle is 80% of the implied vol

As you approach the earnings day, the implied vol of the option will be dominated by the fact that the stock is expected to move 9.5%. Therefore, we know the implied vol is going to increase.

We think of theta as “how much value the option loses as time passes” but because we know that vol is going to steadily rise, we can conclude that the actual experience of theta is going to be much less than the model says. The model doesn’t “know” the implied vol is going to increase, but you do.

As vol increases, the option will gain value that offsets some of the theta. It won’t offset all the theta. If it did, then you would just buy all the options today, have free gamma for a month, and sell them right before earnings.

So much of the theta will be offset?

We can answer this if we hold our assumptions constant:

  • trading day IV is 56%
  • earnings move is 9.5%

(I added the assumption that the earnings date is also the expiration date. It’s stark that all the theta we defer happens on the last day.

You can see how the vega offsets part of the theta.

Just like with any option, the theta still accelerates as you approach expiry but at a slow rate (theta is left axis).

All the theta happens at the end.

Oh, as a matter of pragmatism, I should add that HOOD option markets are wide. And yet there’s millions of contracts of open interest! Amazing for market makers. To quote Alanis…isn’t that ironic?

HOOD: A Case Study in “Renting the Straddle”

On Monday, I noticed that Robinhood ($HOOD) vol screened cheap in the Trade Ideas tool. But that tool uses 30-day constant maturity IV. Since HOOD earnings was just about 30 days out on Monday, the interpolation gave the earnings vol no weight. The pre-earnings vol is in the low 50s, which is, indeed at the bottom of the range for HOOD implied vol.

I looked at the vol that includes earnings.

HOOD reports earnings on February 10th. The February 13th expiry is currently priced at 64% ATM implied volatility.

At first glance, 64% might seem elevated but let’s decompose what the market is actually pricing. When a known event, like earnings, falls within an option’s expiry, the market assigns extra volatility to that expiration. But how much of that IV comes from the event itself versus normal trading day volatility?

I’m gonna lay out the numbers and then get to the process.

• Expected earnings move or straddle: 8.55%

• Event volatility (earnings day): 10.72% single-day vol (169.8% annualized)

Why?

The ATF straddle approximation tells us that a straddle ~ .8 x vol

Well, if we assume the earnings straddle is 8.55% then we just divide that by .80 (or multiply by 1.25 which is the arithmetic burned into trader brain) to get 10.69%

• Trading day volatility (pre-earnings): 54% annualized = 3.41% per day

Where do these numbers come from?

Let’s start with the earnings straddle…why 8.55%?

Here’s a handy secret. A good first guess what the market’s estimate for an earnings moves is the mean move size of the last 4 or even 8 earnings.

I just asked Gemini.

Title: Historical Earnings Moves - Description: HOOD historical moves

It’s a good first guess but then you run that number through our Event Volatility Extractor:

Once you’ve extracted the lump of variance that comes from an 8.55% move on a single day, the remaining variance until expiry is then divided over the remaining days. That’s what that calculator does. It tells you that the ex-earnings implied vol is 54% IF you accept that the earnings move is 8.55%

Since the IVs that precede the Feb 13th expiry are in the low-50s then the term structure ex-earnings is smooth and sensible. If it wasn’t, then we know the market is pricing a very different move size for earnings.

We are just slicing a pizza pie. The whole pizza is the total variance until Feb 13th, currently encompassed by 64% IV. The bigger you make the earnings slice, the smaller the remaining slices (regular trading days) have to be. If the extracted trading day vol turned out to be much lower than 54%, then the market must be expecting a bigger earnings move to account for the difference. Conversely, if it extracted to 62%, the market is pricing a smaller earnings move than 8.55%. The smooth term structure tells us 8.55% slices the pie correctly—each regular day gets roughly the same-sized piece. The Feb 13 expiry sits naturally in line with surrounding expirations.

But…

  • If you think that’s too high for earnings, you could sell the Feb 13th expiry and buy the expiry preceding it. If you think it’s too low, you could do the opposite.
  • If you think it’s a fair price, then you can simply judge the implied trading day vol on its own merit — 54%.

[Our tools will programmatically do this so that we can then use the ex-earnings vols in our standard Trade Ideas cross-section algo. Until then, we are adding a filter that allows you to exclude names with earnings upcoming from the cross-section sorter.]

So is HOOD vol cheap?

The Trade Ideas algo thinks it’s relatively cheap. Relative depends on your universe. Based on the universe I calibrated on (over 100 liquid ETFs and stocks) it screens cheap.

But an obvious follow-up question is…does it look absolutely cheap compared to its own history?

The answer is ‘“yea”. It’s not screaming cheap, but it’s on the cheaper side.

[This is where it helps to have context. Like if you follow the stock closely and have any feels on it then knowing the options are a bit cheap can inspire some trade structures that get you more juice for your knowledge.]

A few views into its history:

The current IV curve is lower than median realized vols,and a bit higher than current realized vols. BUT…current realized vols are also less than 25th percentile. They only need to sneeze up to median levels for these options to price much higher (especially if they maintain the same VRP ratio which is totally reasonable).

Title: Event Volatility Extractor - Description: HOOD event vol decomposition

If you prefer time series, the current 30-day IV is sitting near the 1-year low for 1-month implied vol (red line).

Recapping some of the more challenging points:

  • The entire “cheap vol” thesis depends on whether the 8.55% expected move is reasonable.
  • While 8.55% matches HOOD’s historical average, that’s not how we finalized the number we should use. It’s a starting point that we then test to see if that move size would produce a smooth or humped term structure. If it causes the term structure to jump higher than we are using too small of an estimate, if it causes it to invert sharply, then we are using too high an earnings estimate. If your head hurts, you’re doing this right. Maybe 8.75% or 8.35% makes the term structure a touch smoother but you can use the calculator to see how much little adjustments like that flow through to an implied trading day vol. It has a bigger impact than you might think…changing the earnings day straddle by .25% can move the trading vol by a .5 to 1 point. This is below the threshold anyone except high volume vol traders and market-makers should care about.
  • The embedded risk you take when “renting the straddle”: the implied earnings move compresses as you approach February 10th – perhaps because the market decides HOOD’s earnings will be less volatile than historical patterns suggest – then your “cheap” pre-earnings vol becomes less cheap. You’d be holding a position where the event vol component is shrinking, pulling down the value of your straddle beyond normal theta decay. You’re not just betting on realized vol exceeding 54%. You’re also betting that the market continues to price in an ~8.55% earnings move.

Key Takeaway

Decomposing event volatility matters for cross-asset comparison and relative value analysis. A 64% implied volatility might look high in isolation, but after extracting a 170% event vol component (calibrated to produce a smooth term structure), you’re left with 54% trading day vol – which can then be evaluated against your regular toolkit.

 

_______________________________________________________________________________

Appendix: Recipe for Cross-Sectional Analysis With Earnings Names

I used Claude to encapsulate and synthesize a recipe. You can decide how it did:

One of the most powerful applications of event extraction is enabling apples-to-apples comparison across tickers – even when some have earnings and others don’t.

The Problem

Standard cross-sectional vol analysis breaks down when comparing:

• AAPL at 35% IV (no events)

• NVDA at 48% IV (earnings in 30 days)

Which is really “cheaper”? You can’t tell without extracting the event component.

The Recipe

Step 1: Identify Events in Your Universe

For each ticker in your analysis:

• Check earnings calendar (next 30 days typically)

• Note FOMC weeks for macro-sensitive names

• Flag other known catalysts (FDA decisions, etc.)

Step 2: Extract Base Vols Using Term Structure Smoothness

For each ticker with events:

a) Pull the full term structure of ATM IVs

b) Use the Event Volatility Extractor with different move size assumptions

c) The “right” move is the one that produces a smooth, non-humpy base vol term structure

This is the key insight from the NVDA example: too high an earnings move creates an unnatural dip after earnings; too low creates a spike. The correct assumption produces a smooth power law curve.

Step 3: Record Your Assumptions

For each extraction, document: Ticker, Earnings date, Assumed move size (%), Term structure fit quality (R²), Your confidence level (tight/loose)

Step 4: Run Cross-Sectional Analysis on Clean Vols

Now compare:

• AAPL: 35% IV (no adjustment needed)

• NVDA: 44% base vol (extracted from 48% dirty vol with 6.5% earnings move)

Calculate percentile rankings using the clean vols for all four dimensions: IV percentile (using base vols), RV percentile, VRP (base IV – RV), and Term structure steepness (using base vol term structure).

Step 5: Understand What You’re Betting On

When you identify NVDA as “cheap” after extraction, you’re making TWO assumptions: (1) Base vol of 44% is cheap relative to history, and (2) Market will continue pricing ~6.5% earnings move (your assumption holds).

The Cross-Sectional Edge

By extracting events, you accomplish two things:

1. Expand your opportunity set: Instead of excluding 30-40% of your universe during earnings season, you can analyze everyone on equal footing

2. Identify hidden opportunities: Sometimes the “expensive looking” ticker with earnings is actually cheap on a base vol basis, or vice versa

The market often prices earnings mechanically (historical average moves), but base vol can be at extremes. Finding names where base vol is at the 5th percentile but dirty vol looks “normal” because of earnings—that’s where edge lives.

Pricing 0dte’s

On the last day of November, Kevin bought a bunch of cheap SPY options about 10 minutes to the close and scored. Trades:

Image

Looking at this prompted me to write this post which I’ve had on my mind for a long time: how to think about 0DTEs (or from the bulk of my historical experience — options on the last trading day).

The moontower.ai uses a “volatility lens” for discernment in the option market. But we don’t have a suite of tools for analyzing 0DTE. If we did, we would use a different approach than we do for options broadly. (I’m nothing if not opinionated about how to think about options and being opinionated is part of what you pay for.)

I’ll give you a hint. To think about 0DTEs properly, you must think about time. Any consideration about “vol” can easily be swamped by what you assume about time.

I’ve written about time in options before:

[The closest hint as to what we’re going to build on was a birdie asked how to model a 1-day option]

But these articles do not address intraday time decay. Option theta is large on the last trading day, while vega is small. 0DTE option pricing is far more sensitive to “How much time remains until expiration?” than notions of volatility.

But the question of how much time remains until expiry is not so simple. Without a concept for how much time remains, we can’t appreciate whether Kevin’s trade was a lucky outcome or strong ex-ante decision.

We’ll unpeel the problem, and in doing so, you’ll get a new view into 0DTE prices.

The most effective way to do this will be to build from a naive model of time passage to a more realistic one to see how it influences option values.

Note: This topic just got way more timely (pun most definitely intended) in light of the Nasdaq’s SEC bid to increase trading hours to 23 hours per day.

Setting the scene

  • We are looking at options on our stylized friend, the $100 stock with a 16% vol (corresponding to an expected ~1% daily standard deviation).
  • The options are American-style and expire Friday at 4pm.

It’s currently Thursday at 4pm. There is 1 DTE.

Let’s establish a few starting measures. The calculations used in the tables that follow will use the same process.

What’s the $100 straddle worth?

Using our handy approximation:

straddle = .8Sσ√T
straddle = .8 x 100 x .16 x √(1/365)
straddle = $.67

What’s the vega of the straddle?

Straddle vega is defined by change in straddle price per 1 point change in vol. We just rearranged the formula:

vega = straddle/σ = .8S√T / 100
vega = .8 x 100 x √(1/365) / 100
vega = $.042

What’s the 30-minute theta of the straddle?

This is where we need to think differently. If the stock goes nowhere in the next 24 hours the straddle goes to zero. It decays 67cents. But this is far too blunt of a measure if we are trying to think about pricing an option intraday. It’s not illuminating nor useful for our aperture. So we sprinkle in judgment. We’re going to compute a 30-minute theta. There is nothing special about 30 minutes, but you’ll see that just selecting a shorter theta window allows us to reason about time’s relationship to the price of the straddle, and we already hinted that this is the most important driver of price.

We don’t need Black-Scholes. We can compute the theta numerically by pricing the straddle in 30 minutes and taking the difference. If 1 DTE corresponds to 24 hours, then 23.5 hours corresponds to 23.5/24 or .979 DTE

straddle in 30 minutes = .8 x 100 x .16 x √(.979/365)
straddle in 30 minutes = $.663

30-minute Theta = straddle now - straddle in 30 minutes
30-minute Theta = $.67 - $.663  $.007
30-minute Theta = $.007

The naive and invisible assumption

To say that 24 hours equates to 1 DTE and 23.5 hours equates to .979 DTE assumes that “volatility time” passes at the same rate as “wall time” (it’s called “wall time” because clocks are on the wall).

But volatility passes unevenly. Sometimes in bursts. Think of earnings or Fed announcements. The straddle decays instantly after the news is out. Mechanically, traders “crush the vol” in their model to simulate this, but traders on Friday also do things like keep their vols the same and “roll their dates” forward. These are pragmatic kluges to imperfect models to account for the fact that vol does not pass uniformly with time.

[That concept is covered thoroughly on an interday basis in the articles I link to above, but we are zooming in to intraday in this post.]

Our calculations assumed time passes uniformly. Let’s extrapolate the calculations to see what that looks like:

Observations from the uniform time passage assumption

  • Theta increases as we approach expiry making the straddle decay faster towards the end of the day
  • The straddle’s sensitivity to vol (vega) becomes smaller than 30-minute theta by about noon New York time.

Implication

The value of the straddle is quite sensitive to how much time remains. As we get closer to expiry, it’s clear that even a difference of 10 minutes in your assumptions of how much vol time remains is worth several volatility points.

If market participants understand that time does not pass uniformly, their opinions about the cheapness and expensiveness of the straddles will vary at any singular point of time even if they all agree that the straddle was worth $.67 with 1 DTE!

Differences of opinion are the basis of trading. If you measure time naively, you are a sitting duck for someone who models it better and can buy/sell from you because you are mispricing the “rent” for the next X hours. Of course, this is all masked by 0DTEs by nature having noisy outcomes, but I assure you this is a casino market-makers like being the croupier in.

Towards better time assumptions

From non-linear to the “U-shape”

It is widely understood that market volumes are not uniform throughout the day. The opening and closing 30-minute periods punch above their weight out of a 6.5-hour trading day. VWAP algorithms, which target the day’s “volume-weighted average price”, send child orders in proportion to the day’s volume signature rather than slicing the order evenly throughout the day.

It turns out that this volume profile is strongly linked to the intraday volatility profile. That’s what we care about for pricing options. While unexpected news can change the value of assets without any trading occurring (a gap can be a large update in bids and offers with minimal volume — think of trading halts), trading itself is a source of volatility.

Here is just one of many papers that show not only volume profiles but how intraday volatility follows the same pattern. The authors summarize volume and volatility trends from 6 years of SPY tick data:

Notice the bottom of the U-shape showing the midday lull in volume and volatility.

I made a table characterizing the mean volume curve by hour. It’s not directly from the paper, but derived by eyeballing, but it’s perfectly adequate for our purposes.

When I was a market-maker, our option models “decayed” the day in a similar pattern. There are 13 half-hour periods, but by 10am we believe more than 1/13 of the “vol time” had elapsed, yet from noon to 12:30 pm, the straddle barely decays. Our Option City streaming software let you specify a curve for how much time remained in the day for any hour.

Addressing the “overnight”

Another improvement to our assumptions is to acknowledge that the overnight period from 4 pm yesterday until 9:30am today, despite encompassing 17.5 out of 24 hours, does NOT represent nearly 2/3 of the market risk or volatility.

For exposition, we will show 2 different adjustments.

1) “Overnight has no volatility” assumption

This is naive in the opposite direction from the original calculations, which assumed that an overnight hour and a market hour were equal. In this adjustment, the straddle doesn’t start decaying until the market opens. The full decay occurs in just 6.5 hours.

2) “Overnight has 30% of the 24-hour volatility” assumption

We prorate the passage of time so that overnight DTE sums to .30 and the remaining .70 DTE is encompassed by trading hours.

Demonstration

This table assumes the U-shaped profile for how much volume has elapsed as a stand-in for how much time remains. The volume profile:

We construct pricing for both types of overnight assumptions.

Visually:

In the naive 0% overnight schedule, the straddle doesn’t start decaying until the open and the decay is steeper intraday since there’s only 6.5 hours to erode the entire straddle.

Let’s zoom in on the straddle trajectories because this highlights just how different one’s valuations can be as soon as the clock starts ticking and traders’ assumptions of DTE start diverging:

The straddles start and end in the same place but the interim is where the buys and sells happen.

Kevin’s 683 SPY call with 10 minutes until expiration

We’re going to roll with the compromise decay schedule since it’s the most realistic of the 3 choices:

U-shaped decay profile assuming overnight is 30% of the DTE

From the table, we see the last half-hour represents .102/365 DTE.

How about the last 10 minutes?

We could divide .102 by 3, but realistically (and the paper confirms this), the last 15 minutes contain even more “volatility time” than the second-to-last 15 minutes. Still, let’s be conservative and just divide by 3 since Kevin is buying.

DTE = .102/3
DTE = .034 

When Kevin bought the 683 call for $.02 he said SPY was $682.05 bid. Just to be thorough, let’s estimate the 682 straddle

SPY 10-minute straddle = .8Sσ√T
straddle = .8 x 682 x .16 x √(.034/365)
straddle = $.84

We are going to compute the call using a Black-Scholes calculator, but I like to inject homework questions when there’s an opportunity for estimation practice:

💡Estimate the 683-call based on the straddle price without an option calculator

I just used my Black-Scholes function in Excel with these inputs:

Stock price = 682.05
Strike price = 683
IV = .16
DTE = .034/365
RFR = 0

683 call = $.105

Those calls are realistically worth about a dime and Kevin lifted them for $.02!

 

Post-closes and contrary exercise

For Amercian-style exercise, expiration isn’t really 4pm because you can abandon an option that was in-the-money at 4pm or contrary exercise an option that was out-of-the-money.

This has a value. If suddenly there was a bomb dropped in the Middle East and USO expired just below the strike, you could exercise the calls to get long or abandon the slightly ITM puts. Similarly, if you were short the calls, you should expect to get assigned. If you were short the puts, you should expect not to get long at the strike as you will not be assigned.

Let’s say bearish news came out after the close while the futures are still trading. The futures tank. You can beta-weight all your prices from the close to construct a theoretical price for each name. Then make your contrary exercise and abandon decisions. You are effectively shorting the market at the closing price and then you buy the same dollar notional or beta-weighted notional in futures contracts to lock in a differential. You’ll have basis risk since your share positions won’t be in exact proportion with SP500 weights, but this will be small relative to your theoretical profit.

Likewise, if you are short options, you should expect to accumulate deltas in the wrong way, so you’d need to estimate how many wrong-way deltas you’ll acquire and hedge those with futures. While this will help have a neutral delta for the next day, you will have locked in a theoretical loss. Which makes sense — you were short options that turned out to have value after the close, so the 4pm mark did not reflect your actual p/l nor risk.

This matter of valuing options after the close is not academic. The procedure described here was a regular part of our expiration workflow and checks. This goes beyond equities too. In commodity options, there are “look-alike” European cash-settled versions of the American-style options. Since you can contrary an American style if the name was near pinning there would be an active market in the EOO or “exchange of option” which was the price for the euro-american “switch”. The American trades premium because you get another couple hours to look at the market so the switch was a referendum on the post-close straddle.

This was very common in natural gas options 15-20 years ago. EOOs didn’t trade electronically, so you basically had a mental scroll of where switches would tend to trade on past expiries to have an idea of what the post-close straddle could be worth. In practice, market-makers would always have the pins on the same way so they all needed to do the same risk-reducing trade, causing the switch to find a risk premium where a contra was content to either open or add more.

[I believe in 2018, the NYMEX changed American option specs so the options were auto-exercised at expiry. Probably to appease option shorts who didn’t like position surprises when they got their contrary assignment notices later in the evening.]

If you are long an equity option and your clearing firm doesn’t require you to decide to exercise/abandon until an hour after the close, (clearing firms have their own unique “cutoffs” and with a phone call you might be able to massage that) then you basically get a free look at the futures for the strikes near the expiry price.

Let’s say that hour could be worth as much as the mid-day 1-hour lull from 12:30-1:30pm or about .06 DTE. How would that have affected Kevin’s 683-call?

.06 + .034 (the DTE for the last 10 minutes of the day) = .094 DTE

The 683 call with .094/365 DTE is worth $.32 via B-S calculator or 3x what it was worth if you thought the post-close had no option value. In practice, the post-close is likely worth very little most of the time, and quite a bit in the event that news hits between 4 and 5pm.

The Coastline Paradox in Financial Markets

I started researching/writing this post about a month ago. It took a strange arc. It began with me wondering about “up vol” vs “down vol” or how vol acts differently in rallies vs selloffs. Then it ran straight into a topic I read about this summer (the title is a clue). It will awaken both seasoned and novice option traders with both inspiration and discomfort. Which is to say, I’m really happy I wrote it, but also feel like there’s a lot more to this than what I can cover today (and sparring with LLMs about it is definitely affirming this feeling).

Before we start unfolding, one more meta thought.

While working on this I benefited from a pedagogical technique that I didn’t plan, but believe you can engineer. I mentioned it in one of my “learning science” articles, myelination:

The “hypercorrection effect” is the phenomenon where you remember corrections to wrong answers better than when you give a correct answer off-the-bat when the question is difficult. Generating a prior makes you own a prediction. When it breaks, surprise becomes the teacher.

I’ll walk you through the same steps I took, which reinforced, even with all my years, just how nebulous the concept of volatility can be and how it touches trading and investing in practice.

A popular starting point: napkin math

Before pulling any data, I wanted to test my market intuition. I start with some guesses about how the S&P 500 behaves off the top of my head:

  • S&P 500 volatility hovers around 16% annually. I heuristically think of this as some blend of “volatility when the market is up” and “volatility when the market is down”.
  • 2/3 of the months are positive
  • Risk reversals suggest upside vol is about 10% below some “base” vol
  • Downside vol is about 30% above this “base” vol

If the full market vol is 16%, and I have asymmetric volatility in up/down months, what’s the “base” volatility?

Let x = base volatility
Up month vol = 0.9x (10% lower)
Down month vol = 1.3x (30% higher)

Full variance = 2/3 × (0.9x)² + 1/3 × (1.3x)² = 16²
Full variance = 2/3 × 0.81x² + 1/3 × 1.69x² = 256
Full variance = 0.540x² + 0.563x² = 1.103x² = 256

Therefore: x = √(256/1.103) = 15.23%

So my base vol would be about 15.23%, giving me:

  • Up month vol: 0.9 × 15.23% = 13.71%
  • Down month vol: 1.3 × 15.23% = 19.80%

For monthly returns, I figured the standard deviation would be roughly 16%/√12 = 4.62% per month.

As for expected returns, I guessed the market delivers about 80 basis points per month (~10% annually).

If 2/3 of the months are up and 1/3 are down, and the average is +0.8%, what are the typical up and down returns?

Let’s call up months +U% and down months -D%:

2/3 × U - 1/3 × D = 0.8
2U - D = 2.4

If monthly volatility is about 4.6%, what would typical up and down returns be?

Assuming monthly returns are normally distributed with a mean of 0.80% and standard deviation 4.62%, the probability of a positive return is 57% (leaving 43% negative).

Probability of market down
Z-score = (0 - .8)/4.62 = -.173
P(Z ≤ -0.173) ~ 0.431

[Wait a minute...for N(.8, 4.62) P≤0 ~43% but I assumed the probability of a negative month is only 1/3. This is a clue some of my estimates are wrong OR the distribution is not normal. We're going to bring the real data in soon and the appendix will expand the discussion. I won't bury the lede -- my estimate of p≤0 is correct! But I get some other estimates wrong and, well, the returns aren't normally distributed. We're going to make sense of all of this.]

Again, my unconditioned estimate of monthly return is .80%.

Now I want to estimate the monthly return given that the market is up. Let’s try translating to math language:

I want the return at the midpoint of the positive portion of the distribution.

That’s at the 43.1% + 56.9%/2 = 71.5% cumulative probability point.

P(Z ≤ X) ~ .715
Solve for X using Excel:

NORM.INV(0.715,0.8,4.62) = 3.42

For a N(0.8%, 4.62%) distribution, the 71.5th percentile gives us +3.42%.

If 2/3 of the months are up, and the expected return in an up month is+3.42% but the overall mean is 0.8%, the down months must average -4.44% to balance the equation above.

Validate: 2/3(3.42%) – 1/3(4.44%) = 2.28% – 1.48% = 0.80%.

Reality Check

Time to test these intuitions against actual data. I pulled daily S&P 500 returns from January 2016 through October 2025—nearly a decade covering COVID, Fed policy shifts, and retail investing mania.

Market batting average:

  • Up months: 81 out of 118 (68.6%) ✅ Pretty close to my 2/3 guess!

Returns:

  • Average up month: +3.43% ✅ I estimated 3.42% —boom!
  • Average down month: -3.93% ❌ I estimated 4.44%.
  • Overall monthly average: 1.13% ❌Higher than my 80bps estimate

Volatility:

  • Full sample annual vol: 18.23% ❌Higher than my 16% guess.
  • Mean vol in up months: 12.47% ✅ I estimated 13.71%— so-so.
  • Mean vol in down months: 20.43% ✅ I estimated 19.80%—not bad!

All of these were calculated from daily returns, whether it was the full sample or if they were then grouped into months.

That’s weird…

This is where things got interesting. My intuitions were pretty decent about up and down vol. I decided to check if the weighted average of monthly volatilities would recover the full sample volatility:

Weighted variance = 0.686 × (12.47%)² + 0.314 × (20.43%)²
                  = 0.686 × 0.01556 + 0.314 × 0.04175
                  = 0.02377

Weighted vol = √0.02377 = 15.42%

Wait. The full sample vol using daily returns is 18.23%, but the weighted average of monthly vols is only 15.42%.

That’s an 18% gap in volatility, which is large, if we consider typical vol risk premiums of ~10% just to give a sense of proportion.

In variance terms:

  • Full sample: 332.33 basis points (ie .1823²)
  • Weighted average: 237.70 basis points (ie .1542²)

Missing: 94.74 basis points

Where did ~30% of the variance go?

Let’s take a detour before we go into the arithmetic.

The Coastline Paradox

I’ve been reading Geoffrey West’s book “Scale” and this anomaly reminded me of the coastline paradox—the closer you look at a coastline, the longer it becomes. These excerpts tell the story of Lewis Richardson’s discovery in the early 1950s when he discovered that various maps indicated different lengths for coastlines:

Richardson found that when he carried out this standard iterative procedure using calipers on detailed maps, this simply wasn’t the case. In fact, he discovered that the finer the resolution, and therefore the greater the expected accuracy, the longer the border got, rather than converging to some specific value!

This was a profound observation because it violated basic assumptions about measurement, which we hold to be objective to some underlying reality. But Richardson’s discovery is intuitive once you think about it:

Unlike your living room, most borders and coastlines are not straight lines. Rather, they are squiggly meandering lines… If you lay a straight ruler of length 100 miles between two points on a coastline or border… then you will obviously miss all of the many meanderings and wiggles in between. Unlike lengths of living rooms, the lengths of borders and coastlines continually get longer rather than converging to some fixed number, violating the basic laws of measurement that had implicitly been presumed for several thousand years.

When you use a finer resolution (shorter ruler), you capture more of these wiggles, leading to a longer measured length.

This gets better. (Also, you should read this friggin’ book!)

The increase follows a pattern:

When he plotted the length of various borders and coastlines versus the resolution used to make the measurements on a logarithmic scale, it revealed a straight line indicative of the power law scaling.

The practical implication:

The take-home message is clear. In general, it is meaningless to quote the value of a measured length without stating the scale of the resolution used to make it.

Risk exhibits the same property. It depends on the resolution at which you measure it and forms the link to the question: where did those 95 bps of variance go?

While I’ve pointed this out before in these articles:

Volatility Depends On The Resolution

Risk Depends On The Resolution

…I didn’t drill down to the mathematical decomposition for why this is true. We will do that in a moment but in words:

When we calculate monthly volatilities and average them, we’re essentially “sampling” risk at a monthly resolution. But when we calculate volatility from all daily returns, we’re capturing additional variation that exists between months—variation that gets smoothed away in monthly aggregation.

Understanding What Is Masked With A Test Score Analogy

Let’s illustrate with a tangible example. Imagine three classes taking the same test:

Class A (Morning class): Scores: 75, 80, 85 (mean = 80)
Class B (Afternoon class): Scores: 65, 70, 75 (mean = 70)
Class C (Evening class): Scores: 85, 90, 95 (mean = 90)

If we calculate the variance two ways:

Method 1: Pool all scores together
All scores: 75, 80, 85, 65, 70, 75, 85, 90, 95

  • Mean = 80
  • Variance = 83.3 (average of squared deviations)

Method 2: Average the within-class variances

  • Class A variance = 16.7 (sum of squared deviations is 50, then divide by 3 samples)
  • Class B variance = 16.7
  • Class C variance = 16.7

Average variance = 16.7

The gap: 83.3 – 16.7 = 66.7

This missing 66.7 is the variance that comes from classes having different average scores (80, 70, 90).

The Law of Total Variance captures this precisely:

Total Variance = E[Var(Score|Class)] + Var(E[Score|Class])
      83.3     =        16.7         +        66.7

Circling back to our example:

  • The “Full Sample Volatility” (18.23%) or 332 bps is the Total Variance
  • The “Weighted Average Volatility” (15.42%) or 238 represents only the first term: the Within-Group Variance
  • The “Missing Gap” (95 basis points) is the second term: the Variance of the Means

Intuitively:

The market doesn’t just wiggle around a static zero line every month. Some months the whole market shifts up (+3.43%), and some months it shifts down (-3.93%). If you only look at volatility within the month, you ignore the risk of the market shifting levels entirely. Simply averaging monthly volatilities ignores this “Between-Month” risk.

Bonus Reason Why Averaging Volatilities Misleads: Jensen’s Inequality

There’s another subtle effect at play: Jensen’s Inequality. This mathematical principle states that for a convex function (like squaring for variance), the average of the function is not equal to the function of the average.

💡See Jensen’s Inequality As An Intuition Tool

In this context:

  • Variance is proportional to volatility squared (convex function)
  • The average of squared volatilities ≠ the square of averaged volatilities

First of all, in our data, each month has a different number of trading days (19-23). When we calculated monthly volatilities, we essentially gave equal weight to each month regardless of how many observations it contained.

But even in months with equal days, averaging volatility is dangerous

The March 2020 Example:

  • March 2020: 22 trading days, 91.53% annualized volatility
  • October 2017: 22 trading days, 5.01% annualized volatility

In our “average of monthly vols” calculation, these months contribute equally. But their contribution to the full sample variance is vastly different:

March 2020’s contribution = (91.53%)² × 22/2473 = 74.54 basis points of variance 
October 2017’s contribution = (5.01%)² × 22/2473 = 0.22 basis points of variance

March 2020 contributes 334 times more to total variance despite being weighted equally in the monthly average!

Practical Implications

For Option Traders
The difference between realized vol at different sampling frequencies directly impacts estimates of volatility. The shorter the sampling period the higher the volatility on average. When computing realized vols based on tick data, a method sometimes known as “integrated vol”, there is a minimum sampling frequency that, if you dip below, causes the vol to explode because it is simply capturing “bid-ask bounce”. The minimum threshold can vary by asset, so by using a volatility signature plot (a plot of vol vs sampling frequency) you can see where this threshold lives.

Conversely, it’s reasonable to expect that estimating long-term vols by sqrt(time) scaling from shorter dated vols may overshoot. See the appendix on the discussion of power law scaling in the context of the coastline paradox, keeping in mind that term structure scaling takes a power law shape, but the exponent needn’t be 1/2.

[Even if you conclude that upward sloping term structures are unjustified or at least reflecting a risk premium, do you understand why it’s weakly, if at all, arbitrageable? I think this would make a good interview question for an option trader to demonstrate how they think about risk-taking and capital (and business generally). I’ll withhold my answer because I like the question too much.]

For Portfolio Construction
When combining assets with different measurement frequencies (daily equities, monthly real estate, quarterly private equity), be aware that risk measured at different resolutions isn’t directly comparable. This is not a perfectly overlapping reformulation of the “volatility laundering” criticism of slow-to-mark assets.

Conclusion: Respecting the Fractal Nature of Risk

This little jaunt from napkin math to data analysis shows how risk, like coastlines, is fractal. The closer you look, the more you find.

When reconstructing measures of risk from lower resolution assumptions that were quite strong, I found gaps which point to my oft-repeated:

Risk depends on the resolution at which you measure it.

The resolution at which you measure risk affects three things:

  1. Aggregation effects: Higher frequency captures more granular variation
  2. Weighting effects: Different time periods get different implicit weights which can be decomposed by the Law of Total Variance
  3. Jensen effects: The non-linearity of variance creates gaps when averaging

The market’s full 18.23% volatility tells one story. The 15.42% average of monthly volatilities tells another.


Technical Note: This analysis used realized volatility calculated as √(Σ(X²)/n) × √252, treating daily returns as having zero mean. This approach, common in high-frequency finance, effectively assumes the drift is negligible compared to volatility at daily frequencies—a reasonable assumption given that daily expected returns are typically 0.04% while daily standard deviation is over 1%.

Appendix — Various Topics

🌙The Variance Decomposition

When measuring at daily resolution across all data:

Var(returns) = E[X²] - E[X]²

When measuring at monthly resolution, then averaging:

E[Var(returns|month)] = E[E[X²|month] - E[X|month]²]

The difference between these is:

Var(returns) - E[Var(returns|month)] = Var(E[X|month])

which implies The Law of Total Variance.

The law states that the total variance of a dataset can be broken into two parts:

  1. The average of the variances within each group (Within-Group Variance)
  2. The variance of the means of the groups (Between-Group Variance)
Var(X) = E[Var(X|Group)] + Var(E[X|Group])

🌙The Napkin Math Validation

The algebra used to solve for the “base volatility” x is known as a mixture model:

Total Variance = (Prob_up × Var_up) + (Prob_down × Var_down)

It’s only valid if the means of the up/down months are close enough that the “Variance of Means” component is negligible for a rough guess.

🌙Skewness in monthly returns

Actual Monthly Statistics (S&P 500, Jan 2016 – Oct 2025)

  • Mean: 1.13%
  • Std Dev: 4.39%
  • Median: 1.80% (notably higher than mean)
  • Up months: 68.6% (81 out of 118)

If monthly returns were truly N(1.13%, 4.39%), we’d expect only 60.1% up months.

But we actually get 68.6%—an 8.5 percentage point gap. This gap, as well as the difference between mean and median demonstrate negative skew. The left tail is longer, meaning occasional large down moves.

It’s classic equity pattern: stairs up, elevator down. The bad months are worse than the good months are good, but the good months happen more often than a normal distribution predicts, even net of a positive mean return. Both the higher mean and the skewness.

If I ran through my same logic above using actual data:

Probability of market down
Z-score = (0 - 1.13)/4.39 = -.257
P(Z ≤ -0.257) ~ 0.399

I want to estimate the monthly return given that the market is up. Let’s try translating to math language:

I want the return at the midpoint of the positive portion of the distribution.

That’s at the 39.9% + 60.1%/2 = 70% cumulative probability point.

P(Z ≤ X) ~ .70
Solve for X using Excel:

NORM.INV(0.70,1.13,4.39) = 3.43

Market return given that it’s up: +3.43% (coincidentally matching reality)

We go back to this identity with the true mean and volatility to solve for the down move:

.601 × U - .399 × D = 1.13
.601*(3.43) -.399D = 1.13
D = -2.33

If the distribution was normal N(1.13%, 4.39%), we expect the down moves to be -2.33% on average with 40% down months, but the actual data shows the down moves occurred only 31.4% of the time, but were -3.93%!

🌙Coastlines and Power Laws

The generic power-law relationship:

y = A · xⁿ

Where n is the exponent that determines how drastically y responds to changes in x.

You can see the sensitivity by comparing different exponents:

  • If n = 1/2:
    To double y, you must increase x by a factor of 4 (because 4^(1/2) = 2).
  • If n = 1/4:
    To double y, you must increase x by a factor of 16 (because 16^(1/4) = 2).

West writes:

“To appreciate what these numbers mean in English, imagine increasing the resolution of the measurement by a factor of two; then, for instance, the measured length of the west coast of Britain would increase by about 25 percent and that of Norway by over 50 percent.”

In the British case, doubling the resolution increases the coastline by 1.25x, therefore, the exponent, n, must be ~ 1/3

2ⁿ = 1.25
n log 2 = log 1.25
n = log 1.25 / log 2 = .32