u/Slight_Boat1910

▲ 5 r/quant

Looking for data provider with an historical point-in-time "Options Chain Snapshot" endpoint

I am currently building a backtesting engine for a short-term options strategy and hitting a major roadblock regarding data architecture and API endpoint design with the providers I have tried so far (e.g., CuteMarkets, Massive).

I want to reconstruct the cross-sectional market state of the entire SPY options chain at specific points in time in the past.

Specifically, my backtester loops day-by-day through the last few years of historical daily market closes. For each day, it needs to look at the underlying price, draw a box around the strikes (e.g., 80% to 120% of spot), find contracts expiring within a N-day lookahead window (e.g., 10 days), and save their end-of-day market metrics (Bid, Ask, Volume, OI, Implied Volatility, Greeks) for that exact day.

The providers I have looked at treat their options chain snapshots as "live/current data only." Their endpoints look like /v1/options/chain/SPY but don't accept any historical as_of or timestamp parameters.

Instead, they only allow you to pull an historical reference index of what contracts existed on a past date (using /v1/options/contracts?as_of=2023-05-22), but that response completely lacks market quotes. To get the actual pricing, they expect you to point-query the individual bar/historical quote endpoint for every single contract discovered sequentially for that one date.

When dealing with SPY daily expiries and dozens of strikes, this approach means making hundreds of individual HTTP requests for just a single historical trading day. It completely destroys rate limits, causes massive latency, and feels structurally wrong for bulk historical research.

My questions for the community:

  1. Am I misunderstanding how to utilize these APIs, or is the lack of a bulk point-in-time /chain?as_of=... query parameter standard across retail/mid-tier option APIs?
  2. Which data providers natively support a bulk point-in-time options chain query for past dates where I can pass a specific date and get the whole grid’s metrics at once? (Looking for alternatives to Cutemarkets/Massive that are budget-friendly for indie devs).
  3. If you have solved this without expensive institutional feeds (like ThetaData or Databento bulk files), what architectural ingestion pattern did you use? Did you just suck it up and parallelize thousands of individual contract bar requests?
reddit.com
u/Slight_Boat1910 — 2 days ago

Looking for data provider with an historical point-in-time "Options Chain Snapshot" endpoint

I am currently building a backtesting engine for a short-term options strategy and hitting a major roadblock regarding data architecture and API endpoint design with the providers I have tried so far (e.g., CuteMarkets, Massive).

I want to reconstruct the cross-sectional market state of the entire SPY options chain at specific points in time in the past.

Specifically, my backtester loops day-by-day through the last few years of historical daily market closes. For each day, it needs to look at the underlying price, draw a box around the strikes (e.g., 80% to 120% of spot), find contracts expiring within a N-day lookahead window (e.g., 10 days), and save their end-of-day market metrics (Bid, Ask, Volume, OI, Implied Volatility, Greeks) for that exact day.

The providers I have looked at treat their options chain snapshots as "live/current data only." Their endpoints look like /v1/options/chain/SPY but don't accept any historical as_of or timestamp parameters.

Instead, they only allow you to pull an historical reference index of what contracts existed on a past date (using /v1/options/contracts?as_of=2023-05-22), but that response completely lacks market quotes. To get the actual pricing, they expect you to point-query the individual bar/historical quote endpoint for every single contract discovered sequentially for that one date.

When dealing with SPY daily expiries and dozens of strikes, this approach means making hundreds of individual HTTP requests for just a single historical trading day. It completely destroys rate limits, causes massive latency, and feels structurally wrong for bulk historical research.

My questions for the community:

  1. Am I misunderstanding how to utilize these APIs, or is the lack of a bulk point-in-time /chain?as_of=... query parameter standard across retail/mid-tier option APIs?
  2. Which data providers natively support a bulk point-in-time options chain query for past dates where I can pass a specific date and get the whole grid’s metrics at once? (Looking for alternatives to Cutemarkets/Massive that are budget-friendly for indie devs).
  3. If you have solved this without expensive institutional feeds (like ThetaData or Databento bulk files), what architectural ingestion pattern did you use? Did you just suck it up and parallelize thousands of individual contract bar requests?
reddit.com
u/Slight_Boat1910 — 2 days ago