Historical Options Analytics API: Replay GEX, VRP & Dealer Positioning Since 2017 | FlashAlpha
historicaldata · 20 min read

Historical Options Analytics API: Replay GEX, VRP & Dealer Positioning Since 2017

FlashAlpha's Historical API lets you replay the live analytics endpoints at any minute in market history - GEX, DEX, VEX, CHEX, VRP, max pain, dealer regime, vol surfaces, and the full options flow suite. 52 replay routes on identical paths over 80+ billion minute-level option rows across 200+ symbols, 2017 to today. The only dataset of its kind.

T
Tomasz Dobrowolski Quant Engineer
Apr 15, 2026
Updated Jul 24, 2026
20 min read
HistoricalData OptionsAPI GEX VRP Backtesting MachineLearning Quant

Every serious options project eventually hits the same wall: the live API shows you now, but the questions that matter - does this strategy work? what did dealers do during the last drawdown? how did VRP behave before earnings? - all require the past. And historical options data, especially pre-computed historical analytics, is the one thing nobody sells.

Until now. FlashAlpha's Historical API ships today with a single, simple contract: 52 live routes mirrored on identical paths, replayable at any minute since 2017-01-03, returned in the same response shape. One query parameter - at - and you get what GEX, DEX, VEX, CHEX, VRP, max pain, dealer regime, or the full stock summary looked like at that exact minute in history.


What Nobody Else Sells

Go look at the other options data providers. Polygon, ThetaData, ORATS, Intrinio, Tradier - all of them either ship raw ticks or end-of-day snapshots. You can reconstruct parts of the analytics layer yourself if you have the time and the pipeline, but you will spend six months writing the join, the BSM pass, the SVI fit, the per-strike aggregation, the regime classifier, the leak-free percentile calculator - and you will still end up with something that only resembles the live product on a good day.

FlashAlpha's Historical API collapses that work into one HTTP call. The same ExposureCalculator, NarrativeBuilder, VrpCalculator, VolatilityAnalyzer, and AdvancedVolatilityCalculator classes that power the live endpoints at lab.flashalpha.com also power the historical service at historical.flashalpha.com. Calculator bug-fixes land in both services simultaneously. What you see live, you see historically - exactly the same shape, exactly the same methodology.

Why This Is Hard

Pre-computed historical analytics require minute-level options quotes with greeks for every strike and expiration, anchored to forward prices, joined to end-of-day open interest, fitted with SVI, and cross-referenced against macro (VIX, VVIX, SKEW, MOVE) - all aligned to the exact timestamp you ask for. 80+ billion option rows, 23 million+ stock minute-bars, daily SVI fits, daily macro. Nobody else assembled this stack.


The at Parameter Is the Whole Idea

Every analytics endpoint takes one required query parameter: at. That is the as-of timestamp. Pass it and you get the response as it would have been computed at that minute.

FormatExampleSemantics
yyyy-MM-ddTHH:mm:ss2026-03-05T15:30:00Minute-level as-of. ET wall-clock.
yyyy-MM-dd2026-03-05Defaults to 16:00 ET (session close).

Option greeks, bid/ask, stock spot, and everything derived from them are intraday - one value per minute from 9:30 to 16:00 ET. Open interest, SVI parameters and macro are end-of-day values, applied across the session.

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://historical.flashalpha.com/v1/exposure/summary/SPY?at=2020-03-16T15:30:00"

One call. That's the full exposure dashboard - net GEX, net DEX, net VEX, net CHEX, gamma flip, regime label, interpretations, ±1% hedging estimates, 0DTE contribution - as of 15:30 ET on March 16, 2020. The day SPY closed -12%. Full case study here →


The Core Analytics Endpoints, Replayable

The Historical API mirrors the live endpoints response-for-response across 52 replay routes on identical paths. The core analytics set is below. Beyond it, the whole flow suite replays too - the raw options and stock trade tape, flow analytics, and the intraday OI simulator - which is covered in depth in Historical Options Flow Replay:

CategoryEndpointWhat you replay
Market data/v1/stockquote/{ticker}Stock bid/ask/mid/last at the minute
Market data/v1/optionquote/{ticker}Contract-level quotes + BSM greeks + OI (volume is on the tape route /v1/flow/options/{symbol}/history, SVI parameters on /v1/adv_volatility)
Market data/v1/surface/{symbol}50×50 implied-vol surface grid
Exposure/v1/exposure/gex/{symbol}Gamma exposure by strike
Exposure/v1/exposure/dex/{symbol}Delta exposure by strike
Exposure/v1/exposure/vex/{symbol}Vanna exposure by strike
Exposure/v1/exposure/chex/{symbol}Charm exposure by strike
Exposure/v1/exposure/summary/{symbol}Full composite dashboard + regime + hedging
Exposure/v1/exposure/levels/{symbol}Gamma flip, call wall, put wall, max gamma strikes
Exposure/v1/exposure/narrative/{symbol}Verbal analysis + prior-day GEX delta + VIX context
Exposure/v1/exposure/zero-dte/{symbol}0DTE regime, pin risk, expected move, decay
Max pain/v1/maxpain/{symbol}Pain curve, pin probability, dealer alignment
Composite/v1/stock/{symbol}/summaryPrice, vol, flow, exposure, macro - in one response
Volatility/v1/volatility/{symbol}RV ladder, IV-RV spread, skew, term structure
Volatility/v1/adv_volatility/{symbol}SVI params, forwards, total variance surface, arbitrage flags
VRP/v1/vrp/{symbol}Full VRP dashboard with leak-free percentiles
Liquidity/v1/liquidity/{symbol}Spread and depth quality at that minute
Dispersion/v1/dispersionIndex vs single-name implied correlation
Expected move/v1/expected-move/{symbol}Straddle-implied move for the session
Strategies/v1/strategies/{skew,term-structure,tail-pricing}Structured vol-trade screens, point-in-time
Flow (tape)/v1/flow/options/{symbol}/historyPer-minute signed option volume from the real trade tape
Flow (OI sim)/v1/flow/oi/{symbol}Official, simulated and effective OI + intraday delta
Flow (analytics)/v1/flow/{gex,dex,levels,pin-risk,dealer-risk,summary}Flow-adjusted exposure and levels
Coverage/v1/tickersWhat symbols and date ranges are loaded

Every one of these endpoints exists in live form today, and every one is replayable at minute resolution. The archive holds 200+ symbols: 54 carry 8+ years of minute-level history, 14 run from 2017-01-03, and 52 replay the full flow suite. /v1/tickers returns the current list with date ranges.


Leak-Free By Design

The feature that most "historical options" services get wrong is the one that matters most for research: no future leakage. If you ask FlashAlpha for VRP percentile at 2022-06-14T15:30:00, the percentile is computed only from rows dated before 2022-06-14. The percentile at that moment reflects what was knowable at that moment. Ask for the same symbol six months later and the percentile will be different - because six months of new data went into the rolling window.

This matters because most backtests silently cheat. If your "historical VRP percentile" uses a percentile computed against the full 2018-2026 dataset, every 2019 observation is scored against knowledge that didn't exist in 2019. That's look-ahead bias. It inflates Sharpe ratios. It makes dead strategies look live. FlashAlpha's Historical API makes the honest version the default - it's actually harder to cheat than to do it right. Deep dive on leak-free percentiles →


Three Things You Can Build This Week

1. Backtest a GEX-Regime Strategy

Every strategy that conditions on dealer positioning ("short premium when dealers are long gamma", "fade gaps when GEX is negative", "buy straddles when we cross gamma flip") needs historical regime labels per minute. That's /v1/exposure/summary/{symbol} replayed across your training window.

import httpx, pandas as pd
from datetime import datetime, timedelta

dates = pd.bdate_range("2022-01-01", "2024-12-31")
rows = []
for d in dates:
    ts = d.strftime("%Y-%m-%dT15:30:00")
    r = httpx.get(
        "https://historical.flashalpha.com/v1/exposure/summary/SPY",
        params={"at": ts},
        headers={"X-Api-Key": API_KEY},
    ).json()
    rows.append({
        "date": d, "net_gex": r["exposures"]["net_gex"],
        "regime": r["regime"], "gamma_flip": r["gamma_flip"],
        "spot": r["underlying_price"],
    })
df = pd.DataFrame(rows)

That's the full research dataframe. Join next-day returns, condition on regime, measure the edge. Full backtesting walkthrough →

2. Train a Model on Dealer Positioning Features

For ML workflows, the Historical API is the feature store you were about to build yourself. Every minute of SPY since 2017-01-03 gives you net GEX, gamma flip distance, VRP z-score, net DEX, 0DTE contribution, vol surface shape, macro regime - about 40 dealer-positioning features per timestamp, all aligned to a single at key.

Pull the grid you want - daily close, half-hourly, or every minute - dump to parquet, and feed into XGBoost, a tabular transformer, or whatever architecture you prefer. The engineering bottleneck on options-ML projects has historically been the feature pipeline, not the model. This collapses it to a for-loop.

Feature density

8 years × 252 trading days × 390 minutes ≈ 786K minute-level sample rows for SPY alone, each with ~40 dealer-positioning features - roughly 31 million feature observations total. Before FlashAlpha, assembling this with correct greeks and leak-free percentiles was a multi-engineer, multi-quarter project. Now it's a weekend script.

3. Replay Any Historical Moment as a Research Artifact

Write blog posts. Teach a class. Build a "this week in 2020" email. Show clients what dealers were doing during the COVID crash, the 2022 bear market, the August 2024 VIX spike, the September 2025 volatility event. One curl, one timestamp, one real response. This is the content moat - and it's now a free side effect of the API.


Coverage Today

Symbols200+ in the archive; 54 with 8+ years of minute-level history; 52 with flow replay - query GET /v1/tickers for the live list
Date range2017-01-03 → present for 14 symbols (extended each pipeline run); per-symbol first dates in /v1/tickers
Option rows80+ billion (7.7B for SPY alone)
Stock minute-bars23 million+
Intraday granularity1 minute (quotes + greeks + spot)
Minimum tierAlpha ($1,199/mo billed annually, $1,499/mo monthly)
Base URLhttps://historical.flashalpha.com

Authentication uses the same X-Api-Key as live.


Same Calculators, Same Shape, Same Bug-Fixes

This is worth repeating because it's the real moat: the historical service and the live service share the calculator layer. Every endpoint delegates to the same pure-static classes - ExposureCalculator, NarrativeBuilder, VrpCalculator, VolatilityAnalyzer, AdvancedVolatilityCalculator, StockSummaryBuilder.Build, VolSurfaceGridBuilder. When a calculator bug gets fixed, it gets fixed in both places the same day. When a field gets added to the live response, it appears historically too, backtestable across the whole archive from day one.

That means you can validate strategies historically and deploy them live without a rewrite. Same response shape, same field names, same regime labels, same interpretation text. The minute-level deploy is a config flip: swap the base URL from historical.flashalpha.com back to lab.flashalpha.com and change at to "now."


Further Reading

Historical API · Alpha tier · from $1,199/mo billed annually
Replay 52 analytics routes at any minute since 2017
Same response shape as live, leak-free percentiles, 80+ billion minute-level option rows and a 4.6-billion-print trade tape, back to 2017.
View pricing →
Full coverage map at /v1/tickers.

Upgrade to Alpha Full API Spec Check Coverage

FlashAlpha's Historical API is the first product to ship pre-computed options analytics - GEX, VRP, dealer regime, max pain, vol surfaces - replayable at any minute since 2017. Same calculators as live, same response shape, leak-free percentiles, 80+ billion option rows. Research, backtest, and train models against the same analytics layer you deploy to production. We have not found another provider that sells this, because assembling the stack was a multi-year engineering project. It's done now. Use it.

Live Market Pulse

Get fast visibility into market shifts with full-chain analytics over low-latency REST and MCP polling.

Intelligent Screening

Screen millions of option pairs per second using your custom EV rules, filters, and setups.

Export-Ready

Export structured signals to your own execution stack or broker integration - FlashAlpha delivers the analytics, you keep control of order routing.

Join the Community

Discord

Engage in real time conversations with us!

Twitter / X

Follow us for real-time updates and insights!

GitHub

Explore our open-source SDK, examples, and analytics resources!