Help us double down on what's working, instead of guessing. Takes 5 seconds, totally optional.
12 Things You Can Do with FlashAlpha Historical: Minute-Level Options Data Projects for Quants
12 concrete projects you can build with minute-level historical options data: realistic strategy backtests, 0DTE expected-move studies, IV rank and skew history, volatility cones, GEX regime tests, leak-free VRP harvesting, vol-surface replays, max pain pin studies, and a minute-by-minute replay of the Covid crash. Each with the exact API endpoint.
What can you do with historical options data? In practice: backtest strategies against real bid/ask quotes, measure whether 0DTE straddles are systematically overpriced, rebuild IV rank and skew history, test whether GEX walls and max pain actually hold, and replay crisis days minute by minute. FlashAlpha Historical stores 6.7 billion option rows and 2M+ stock minute-bars for SPY from April 16, 2018 onward (extended on every pipeline run, more symbols backfilled on demand), and replays every live analytics endpoint at any minute in that window via a single at= parameter.
1. Pull the Full Option Chain as It Looked at Any Minute Since 2018
The foundational capability: /v1/optionquote returns every SPY contract's bid, ask, mid, implied vol, full BSM greeks (delta, gamma, theta, vega, rho, vanna, charm), and open interest exactly as they stood at any minute between 09:30 and 16:00 ET on any trading day since April 16, 2018. No reconstruction on your side - one call, one as-of chain.
2. Backtest Strategies Against Real Bid/Ask Quotes, Not Theoretical Fills
Most options backtests die on fills: they price entries at a theoretical mid that never existed on a dead contract with a $2 wide market. Because FlashAlpha stores the actual NBBO at minute resolution, you can enter at the real ask and exit at the real bid. Two filters, maxSpreadPct and maxSpreadAbs, drop wide "ghost quotes" on illiquid contracts before they poison your fill model, and structurally invalid quotes (crossed or one-sided markets) are always removed. The X-Filtered-Out response header tells you exactly how many contracts were vetoed.
# Liquidity gauntlet: max 8% relative spread AND max $0.25 absolute spread
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://historical.flashalpha.com/v1/optionquote/SPY?at=2026-03-05T15:30:00&expiry=2026-03-06&maxSpreadPct=0.08&maxSpreadAbs=0.25"
3. Test Whether 0DTE Straddles Are Systematically Overpriced
The most asked 0DTE question has a testable answer. /v1/exposure/zero-dte returns the same-day straddle price and the implied 1-sigma expected move at any minute - and time_to_close_hours is computed from your at= timestamp, so the remaining expected move is accurate to the minute. Pull it at 10:00 ET every day for a few years, compare the implied move to the realized close-to-close move, and you have a distribution of implied-vs-realized 0DTE moves: the raw material for deciding whether selling (or buying) the same-day straddle carries edge, and at which time of day.
The best read in the archive. At 15:30 ET on the day SPY closed down 12%, the historical API shows spot at 246.01, dealers short gamma with net GEX at -$2.6B, the gamma flip stranded far overhead at 270.92, net delta exposure at -$169B, and vanna exposure at +$152B - the exact mechanical setup that amplified every move into the close.
Replaying days like this - Covid, the 2022 bear legs, the August 2024 vol shock - is the cheapest regime-recognition training a discretionary trader can buy: you watch positioning deteriorate in real data instead of reading about it afterward. Full walkthrough: SPY March 16, 2020: Dealer Positioning Replay.
5. Build an ATM IV Time Series and IV Rank History
Walk at= forward one trading day at a time (a bare date defaults to the 16:00 ET close) against /v1/stock/{symbol}/summary and you get ATM IV, HV20, HV60, VRP, and skew in one call per day - an instant IV time series without stitching vendors together. From that series, IV rank and IV percentile history fall out in a few lines of pandas:
import httpx, pandas as pd
from tqdm import tqdm
API_KEY = "..."
BASE = "https://historical.flashalpha.com"
dates = pd.bdate_range("2019-01-01", "2026-06-30")
rows = []
with httpx.Client(headers={"X-Api-Key": API_KEY}, timeout=30) as c:
for d in tqdm(dates):
r = c.get(f"{BASE}/v1/stock/SPY/summary", params={"at": d.strftime("%Y-%m-%d")})
if r.status_code != 200: continue
v = r.json()["volatility"]
rows.append({"date": d, "atm_iv": v["atm_iv"], "hv_20": v["hv_20"], "vrp": v["vrp"]})
iv = pd.DataFrame(rows).set_index("date")
iv["iv_rank_252d"] = iv["atm_iv"].rolling(252).apply(
lambda w: (w.iloc[-1] - w.min()) / (w.max() - w.min()) * 100)
# rolling window only sees the past: the rank series is walk-forward by construction
The same loop, pointed at a 10:00 ET timestamp instead of the close, gives you a morning IV series - useful for entry-time studies. You can finally answer "was 18 vol actually cheap in March 2026?" with data instead of memory. Deep dive: Minute-Level IV & Surface History.
6. Reconstruct a 25-Delta Skew History
The same daily walk gives you skew_25d - put wing IV minus call wing IV at 25 delta - straight from the summary response, or per-expiry skew profiles from /v1/volatility. Chart it through 2018-2026 and the pattern quants look for shows up clearly: skew steepening ahead of and during every major selloff. That makes skew history both a research dataset (does skew steepening lead realized downside?) and an early-warning input for a risk dashboard.
7. Build a Volatility Cone from 8 Years of Realized Vol
A volatility cone needs one thing: a long, clean daily price history. /v1/stock/{symbol}/prices returns up to 2000 daily OHLC bars per call, and /v1/volatility serves the realized-vol ladder (5/10/20/30/60-day) computed on it at any historical date. Compute rolling realized vol at each horizon, take percentile bands, and you have the cone: today's IV plotted against where realized vol has actually lived at that horizon. It is the fastest sanity check for "is vol cheap or rich right now." On estimator choice, see Yang-Zhang vs Close-to-Close Realized Volatility.
8. Backtest GEX Regimes and Test Whether Walls Hold
Everyone quotes the GEX thesis - positive gamma dampens, negative gamma amplifies - but almost nobody tests it, because historical GEX barely exists as a product. With /v1/exposure/gex and /v1/exposure/levels you can pull the net GEX, gamma flip, call wall, and put wall for every session since 2018 and measure it directly: conditional next-day realized vol by regime, wall touch-and-reject rates, flip-cross behavior. We ran a version of this ourselves: GEX, DEX, VEX, CHEX: 8-Year SPY/VIX Backtest. More: Backtest GEX Strategies and Call Wall, Put Wall & Gamma Flip Explained.
9. Harvest the Volatility Risk Premium with Leak-Free Percentiles
The classic premium-selling rule - "sell when VRP percentile is above 80" - is only testable if the percentile at each historical date uses only data available at that date. FlashAlpha's /v1/vrp is date-bounded by construction: percentiles and z-scores at at= are computed exclusively from snapshots strictly before that date. No lookahead, no quiet inflation of your backtest Sharpe. The endpoint also returns IV-RV spreads at four horizons, term VRP, GEX-conditioned harvest scores, and strategy scores per structure. Deep dive: Leak-Free VRP Percentiles.
10. Watch the Whole Vol Surface Reprice Through Events
/v1/surface builds a 50×50 implied-vol grid over tenor and log-moneyness at any minute, and /v1/adv_volatility exposes the daily SVI parameters, forward prices, arbitrage flags, and variance-swap fair values behind it. Sample the surface at successive minutes through an event - a Fed day, an earnings-adjacent macro shock, the Covid crash - and you can animate how the smile twists and the term structure inverts in real time. For vol researchers, per-expiry SVI parameter history (a, b, rho, m, sigma) since 2018 is a calibration dataset that is genuinely hard to find anywhere.
11. Measure Whether Max Pain Actually Pins
Max pain is a theory with a testable prediction: price gravitates toward the strike that minimizes option-holder payout into expiration. /v1/maxpain returns the max pain strike, full pain curve, pin probability, and dealer alignment at any historical minute - so you can check the prediction against every expiry since 2018, split by OPEX vs daily expirations, and by whether dealer positioning agreed. We published a 534-day sample: SPY Max Pain History by Date. Method deep dive: Pin Probability & Pain Curves Over Time.
12. Turn Term-Structure Inversion into a Risk Signal
The IV term structure spends most of its life in contango; inversion is the market pricing near-term stress. The historical stock summary carries the VIX term structure (VIX9D / VIX / VIX3M / VIX6M with slope and contango/backwardation label) as EOD macro context, and /v1/volatility serves SPY's own per-expiry IV term structure at any minute. Build the daily series, flag inversions, and test the obvious rule: de-risk when the front inverts, re-risk when contango restores. Eight years of history includes enough inversion episodes (2018 Q4, 2020, 2022, 2024) to make the test meaningful.
More Ideas Worth an Afternoon
FOMC vol-crush event studies - pull ATM IV and vanna/charm exposure at 13:55 and 14:30 ET on every Fed day; measure the crush and the dealer-flow shift minute by minute.
Greeks P&L attribution on past trades - reprice any historical position minute by minute from /v1/optionquote and decompose its P&L into delta, gamma, theta, and vega contributions. The honest post-mortem tool.
Charm-into-close and OPEX-week studies - test the "charm flows support the close" folklore with /v1/exposure/chex across years of sessions.
Liquidity regime mapping - use the spread filters plus the X-Filtered-Out header to measure when SPY option spreads blow out: open, close, crash days.
Coverage, Resolution & Access
Coverage: SPY, April 16, 2018 to present (extended on every pipeline run). More symbols are backfilled on demand - check /v1/tickers for the live coverage map, including per-table health and known gaps.
Resolution: option quotes, greeks, and stock spot at 1-minute granularity (09:30 to 16:00 ET); open interest, SVI fits, and macro (VIX, VVIX, SKEW, MOVE, DGS10) applied at end of day.
No lookahead by design: every endpoint answers as-of at=; VRP percentiles are date-bounded to strictly earlier snapshots.
Access:Alpha tier, same X-Api-Key as the live API, shared daily quota. Base URL https://historical.flashalpha.com. Full conventions in the historical API overview.
Minute-level chains, greeks, GEX, VRP, and surfaces for SPY since April 2018 - same response shapes as live, leak-free by design, more symbols on demand.
Data freshness: intraday data through the previous trading day's close, refreshed by the daily pipeline run. Live coverage status at /v1/tickers.
Frequently Asked Questions
The highest-value uses are: backtesting options strategies against real historical bid/ask quotes, testing whether 0DTE straddles are overpriced, building IV rank and 25-delta skew time series, constructing volatility cones from realized vol, backtesting GEX regimes and wall levels, harvesting the volatility risk premium with leak-free percentiles, studying max pain pinning, and replaying crisis days like March 2020 minute by minute to study dealer positioning.
SPY coverage starts April 16, 2018 and extends to the present on every pipeline run - about 6.7 billion option rows and over 2 million stock minute-bars. Additional symbols are backfilled on demand, and the /v1/tickers endpoint reports the exact coverage window, per-table health, and known gaps for every symbol.
Option quotes, implied vol, greeks, and stock spot are stored at 1-minute resolution from 09:30 to 16:00 ET. Open interest, SVI surface fits, forward prices, and macro series (VIX, VVIX, SKEW, MOVE, DGS10) are end-of-day values applied to all intraday timestamps on that trading day. Intraday GEX, DEX, VEX, and CHEX changes are driven by the minute-level greeks and spot.
Yes - the API is as-of by design. Every endpoint answers with only the data that existed at the requested minute, and VRP percentiles and z-scores are date-bounded so they are computed exclusively from snapshots strictly earlier than the query date. A percentile you read at a 2021 timestamp reflects only what was knowable in 2021.
Real NBBO bid/ask quotes stored at minute resolution, with BSM greeks computed from the stored implied vol and spot. Structurally invalid quotes (crossed or one-sided markets) are always filtered out, and optional maxSpreadPct and maxSpreadAbs parameters let you drop wide ghost quotes on illiquid contracts so backtest fills stay realistic.
Historical analytics are part of the Alpha plan. You use the same X-Api-Key as the live API against https://historical.flashalpha.com, and requests share the same daily quota. Authentication, the at parameter convention, and shared response shapes are covered in the historical API overview docs.
Conclusion
Every project on this list reduces to the same primitive: ask the market a question as of a specific minute, and trust that the answer only uses what was knowable then. That is what makes minute-level, as-of historical options data different from EOD aggregates or raw tick dumps - the analytics arrive already point-in-time correct. Pick the project closest to how you trade, pull the endpoint behind it, and let the data argue with your priors. The complete endpoint guide is the reference; Alpha tier is the key.