Trust manifesto · v0.3.0
The math is public.
The data is primary.
Most options analytics platforms sit on top of vendor opinions you can’t inspect. We don’t. Every number on Gamma Flow comes from a public formula applied to a primary source. If you want to replicate it offline, this page gives you everything you need.
Data sources
What we read, how often, what we pay
CBOE Delayed Quotes (CDN)
FreeFull options chain (strikes, OI, bid/ask, IV, pre-computed Greeks: delta/gamma/theta/vega/rho)
yfinance (Yahoo Finance scraper)
FreeIntraday 1-minute OHLCV bars for the Hero chart, plus VIX index and 20-day momentum for the Q-Score.
OCC option symbology
Free (public spec)Decoding the OCC 21-char option symbol → (root, expiry, cp, strike)
CME / FRED
FreeRisk-free rate (3-mo T-bill) for closed-form Vanna/Charm. Currently a constant; FRED wire-up is queued.
Notably absent: no SpotGamma, no SqueezeMetrics, no MenthorQ, no GEXBot, no TradingView pro feed. We do not resell anyone else’s data product.
Formulas
Convention: SqueezeMetrics — dealers long calls (+), short puts (−)
GEX (Gamma Exposure)
Ref · SqueezeMetrics white-paper · SpotGamma methodology
DEX (Delta Exposure)
Ref · Standard dealer-hedging convention
HVL — High Volume Level
The strike with the largest absolute GEX across all expiries. Reads as 'the strike where dealer-hedging concentration is highest' — the spot-magnet candidate.
Gamma Flip
The price boundary between positive-γ (vol-suppressing) and negative-γ (vol-amplifying) regimes. Used as the divider for the green/red zone backdrop on the Net GEX Profile chart.
Call Wall / Put Support
We expose the top 3 of each. Wall = resistance from dealer call gamma; Support = floor from dealer put gamma.
Max Pain (per expiry)
Strike that minimises the total ITM cash payout to option holders at expiry. Computed against the front-month chain.
Vanna · Charm (closed-form BSM)
Ref · Hull, Options Futures and Other Derivatives — chapters 17 & 19
Q-Score · 4D Composite
Each component scored 0–5 with a BULLISH/BEARISH/NEUTRAL signal. Option uses gamma regime + spot-vs-HVL distance; Volatility uses IV30 percentile + skew; Momentum uses 20-day price change via yfinance; Seasonality uses long-run SPX month-of-year average.
Multi-expiry tagging
We compute per-expiry GEX breakdown so traders can see where dealer hedging concentrates. Tags are stable — same expiry can hold the same tag across refreshes until the rank changes.
Futures conversion (NQ, ES, GC, RTY)
Futures don't trade options-on-futures with the depth we'd want from a free source. We derive futures levels from the corresponding ETF, then convert by the empirical ratio. Each ratio was independently verified against live data — see framework/playbooks/validate-conversion-formula.md.
Computation cadence
When numbers change, when caches expire
TanStack Query refetchInterval. Hits backend, which returns from cache 99% of the time.
The compute (scipy vanna/charm) is the dominant cost — cached so warm responses return in ~15ms.
Concurrent requests for the same symbol don't all hit CBOE.
1-minute bars only refresh once per minute anyway.
This is the free-tier latency. Real-time options data costs $$$. For levels (slow-moving), 15min delay is fine.
Outside RTH, the chain doesn't change. We still serve the last snapshot.
Limitations · what we do not claim
Honest about the edges
- No real-time order flow. What SpotGamma sells as "HIRO" requires paid OPRA classified-trade data (Polygon $99/mo minimum). We do not have it. Anything you see on Gamma Flow comes from open interest + delayed quotes, not live trade tape.
- No predictions. Q-Score signal is a deterministic function of today’s data. It is not a forecast, not a trade signal, not a recommendation. Past output tells you nothing about future returns.
- Risk-free rate is currently a constant. Vanna and Charm calculations use a placeholder r. The FRED 3-mo T-bill wire-up is on the roadmap. Sensitivity is small for short-dated options but non-zero for long-dated.
- Futures levels are derived, not native. NQ, ES, GC, RTY levels are converted from QQQ/SPY/GLD/IWM by an empirical ratio. We document the ratio in the Method section above; if dispersion blows out, the conversion will drift.
- No backtesting infrastructure yet. We don’t (yet) store the chain history needed to backtest Q-Score signals against forward returns. Sprint 2 will add this.
- Not financial advice. Self-evident but legally required. The numbers here are for research and education.
Replicate it yourself
No paywall on the recipe
Every endpoint is documented at /apidocs (path, params, response, curl) and the raw OpenAPI is at /openapi.json. For the rigorous derivation of GEX / VEX / GEX+ see /methodology. If you want to bypass our UI entirely and call the math from your own notebook, the relevant Python is in backend/app/analytics/:gex.py,market_pulse.py,qscore.py,multi_expiry.py,vanna_charm.py. All of it is pure functions over the CBOE chain dataclass — no hidden state, no licensing tangles.