Data: what is published and how to fetch it
Everything shown on the ticker pages, screens and chart comes from one public series of derived aggregates, published after every trading day.
What is in the series
One CSV per ticker, one row per trading day, columns:
| Column | Meaning |
|---|---|
date | trading day, YYYYMMDD |
close | underlying close |
delta_neutral | delta neutral price |
gamma_neutral | price where summed gamma is zero |
gamma_max | gamma max price |
gamma_max_value | summed gamma at gamma max |
n_contracts | listed contracts on the ticker |
total_calls, total_puts | listed call and put contracts |
total_open_interest | open interest across the chain |
oi_calls, oi_puts | open interest split by option side |
max_pain_near | max pain for the nearest listed expiration |
max_pain_near_expiry | expiration used by max_pain_near |
max_pain_all | max pain with all listed expirations pooled |
gex_total | signed whole-chain gamma exposure at the close |
gex_flip | confirmed price where signed GEX crosses zero |
call_wall, put_wall | strikes carrying the largest call/put GEX magnitude |
History begins 2020-12-01. Roughly 5,600 tickers have a row on a given day; about 8,700 have appeared at some point.
How to fetch it
Fetch https://halfonadouble.com/api/v1/history/<SYMBOL>.csv, replacing
<SYMBOL> with an uppercase symbol from the ticker inventory.
This same-origin endpoint follows the active publication atomically and is the
supported route for browsers, crawlers and agents. It supports GET, HEAD,
range requests and conditional requests. Ticker files may be cached for up to
four hours. Data lands after each close, typically before 05:00 UTC the next
day.
The separate data host is an upstream storage implementation detail. Its blanket robots policy remains in place because the bucket also contains objects outside this public derived series; automated readers should use the same-origin endpoint above.
JSON API
The read-only OpenAPI description documents stable JSON representations for exact numeric retrieval:
- Publication metadata states the active methodology, data-through date and URL templates.
- Ticker inventory lists canonical page symbols and which ones have Markdown snapshots.
/api/v1/tickers/<SYMBOL>.jsonreturns one current snapshot and its displayed historical summaries./api/v1/analysis/<SYMBOL>.jsonreturns the complete same-date derived advanced-options analysis when that symbol is covered by the analytics feed./api/v1/screens/<SCREEN>.jsonand level-distance rankings return the same ordered results shown on their canonical pages.
Ticker JSON history summaries include the latest daily open-interest change in
contracts, its z-score against the preceding 252 valid changes, and the actual
comparison-session count. The unusual-open-interest-accumulation screen
selects positive changes at or above +2σ.
Every response includes a schema version, data-through date, methodology, units or field-specific unit names, canonical links and explicit nulls.
Advanced options analytics
The site joins a separate versioned end-of-day feed only when its trading date exactly matches the core Half on a Double publication. A compact feature table drives the screens and catalyst ranking; complete per-ticker JSON carries every derived analysis displayed by the options analytics service: gamma walls, max pain by strike, volatility surface and smile, term structure, expected move, put/call skew, modeled dealer positioning, Greeks heatmap, risk reversal, vanna, charm, net delta, straddle pricing, volume profile, IV contours, butterfly spread and IV history.
The raw contract-level chain is not copied into this feed. It is licensed source
data, not an analysis, and is unnecessary for the published rankings. Feed
coverage is every ticker with an option chain in the producer’s dated snapshot;
the exact count is published
in the feed manifest and reflected by which ticker snapshots have an
advanced_options object.
methodology in the publication metadata is part of the data contract. The September 2026
market-implied-carry-v1 generation recomputes the full history and replaces
the former fixed-0.25% series. Do not concatenate rows cached from the legacy
path with rows from the active generation.
Licence
The published levels are derived aggregates and are yours to use for personal, non-commercial research with a link back to the page or this site. Bulk republication, resale, or use in a product needs permission first; ask through the contact page. Full terms are in the terms of use.
What is not published
The underlying per-contract data (quotes, implied volatilities, greeks per strike) is licensed end-of-day options data and is not redistributed. Only quantities that cannot be converted back into that data are public.