Data through close

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:

ColumnMeaning
datetrading day, YYYYMMDD
closeunderlying close
delta_neutraldelta neutral price
gamma_neutralprice where summed gamma is zero
gamma_maxgamma max price
gamma_max_valuesummed gamma at gamma max
n_contractslisted contracts on the ticker
total_calls, total_putslisted call and put contracts
total_open_interestopen interest across the chain
oi_calls, oi_putsopen interest split by option side
max_pain_nearmax pain for the nearest listed expiration
max_pain_near_expiryexpiration used by max_pain_near
max_pain_allmax pain with all listed expirations pooled
gex_totalsigned whole-chain gamma exposure at the close
gex_flipconfirmed price where signed GEX crosses zero
call_wall, put_wallstrikes 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>.json returns one current snapshot and its displayed historical summaries.
  • /api/v1/analysis/<SYMBOL>.json returns the complete same-date derived advanced-options analysis when that symbol is covered by the analytics feed.
  • /api/v1/screens/<SCREEN>.json and 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.

Methodology · Learn · Disclaimer