Canonical vs. State-Weighted Exposures: Stronger Models Going Forward
Over the last few days, I took a deep dive into our gamma, vanna, and charm exposure math across floe, our whitepaper, and much much older legacy code snippets and experiments. This post discusses what we found, what was actually wrong, and what we are changing.
The short version: we were mixing two valid concepts in a few places:
- Canonical exposure units (clean, comparable sensitivities - the 'classic' exposure calculations you can find across the literature)
- State-weighted exposure views (contextualized by the instantaneous values of spot regime (gamma), IV (vanna), and time remaining until expiration (charm))
That blend produced some formula-level multiplier inconsistencies, especially around vanna and charm interpretation and downstream usage. The good news is this is mostly a unit-definition and scaling clarity issue, not a "the model is broken by orders of magnitude" issue.
What We Found
1. We mixed canonical and state-weighted ideas in the same fields
In a few places, fields that should have represented clean canonical sensitivity were pre-scaled with contextual terms (like current IV level or time-to-expiry horizon), and then sometimes scaled again in downstream calculations.
The main consequence is interpretation drift:
- Was this value "per 1 vol point"?
- Or already weighted by current volatility?
- Was this charm value "per day"?
- Or already horizon-scaled to expiry?
2. This was most visible in charm and vanna semantics
- Charm: we had cases where per-day charm intuition and to-expiry/horizon charm intuition were blended.
- Vanna: we had cases where canonical vol-shock interpretation and current-regime weighting were blended.
3. Signs were less of an issue than units
Most sign behavior comes from model state and dealer-position assumptions; the bigger issue was making sure we were not unintentionally combining different unit systems in one metric.
Why This Still Worked Reasonably Well in Practice
A fair question is: if there were formula issues, why did outputs still often "look right"?
Because the issues were mostly multiplier/interpretation-level, not random noise:
- The curves still responded coherently to spot, IV, and time changes.
- Relative strike structure still contained useful information.
- In many scenarios, scale effects were moderate enough that directionality and major levels remained sensible.
So this is not a story of throwing away the framework. It is a story of making the framework cleaner, more explicit, and more powerful. This is especially important as we move to releasing a historical API where absolute reference to exposure magnitudes (and their instantaneous interpretation a like) are crucial as two separate but correct and complementary lenses.
The Better Framework (What We Are Moving To)
We are formalizing two explicit modes:
1. Canonical
Unit-clean sensitivities:
- Gamma: dollars per +1% spot move
- Vanna: dollars per +1 vol point
- Charm: dollars per +1 day
These are your apples-to-apples reference values across sessions, symbols, and expiries.
2. State-Weighted
Contextualized views based on current market state:
- Gamma weighted by scenario spot move assumption
- Vanna weighted by scenario vol-change assumption (which can depend on current regime/skew)
- Charm projected over remaining time horizon (e.g., to close)
These are your "what matters right now" trading views.
The Concept of "Notional" (Now Better Framed as Flow Delta)
"Notional" is a VannaCharm community term we used historically to describe change in exposure, not the current exposure level itself.
The clean framing going forward is:
- Canonical = baseline snapshot
- State-weighted = current-context snapshot (instantaneous spot/IV/time, and now live OI-aware)
- Flow delta = change layer on top of those snapshots
So the "third one" is not really a third peer mode. It is a delta view derived from the main model, especially from the state-weighted side.
Historically, our "notional" flow estimate relied on options volume and bid/ask positioning heuristics to infer directional pressure from the tape. That was useful as a first pass, but still heuristic.
With live open interest tracking now in place at the strike level, we can estimate these intraday deltas much more directly from evolving OI itself. In other words: the flow layer remains valuable, but it is now grounded in a stronger data source and cleaner model separation.
Thanks for continuing to pressure-test this with us. These improvements came directly from doing that work in public.
-Chris