Most options workflows depend on the underlying stock. A chain row, quote window, or option fill is much easier to interpret when it is joined to the stock event that caused the request. This is why a stock data API and an options data API should not be treated as unrelated products even when they are billed as separate subscriptions.
Use this guide when building stock-plus-options scanners, event studies, dashboards, paper trading bots, or strategy research.
The internal reading path is Stocks Data API, Historical Stock Data API, Real-Time Stock Data API, Options Data API, Options Chain API, and Options Backtesting API. Keep the terminology explicit: stock aggregate, adjusted bar, stock trade, stock quote, mover, indicator, underlying price, option expiration, OCC ticker, DTE, quote window, spread percent, and paper-trading parity.
Why the join matters
Options are derivative contracts. The option surface reacts to the underlying stock price, trading session, event calendar, volatility, and liquidity. If an option study loses the stock context, it becomes hard to answer basic questions:
- What underlying price was used to choose the strike?
- Was the stock moving before or after the option quote?
- Did the signal come from a bar, a trade, a quote, or a snapshot?
- Did the option fill happen before the stock event had fully formed?
- Did the strategy use live, delayed, or historical data?
The join should be explicit in the artifact. For implementation detail, pair this page with Backtesting Engine Loop, Backtesting Data Model, Stock Aggregates and Indicators, and Options Contract Selection.
Example workflow
An options signal based on a stock breakout might use this order:
- Pull stock aggregates for the opening range.
- Compute the stock signal after the range closes.
- Fetch listed option expirations for the underlying.
- Request the chain for the chosen expiration.
- Select contracts by DTE, moneyness, delta, liquidity, and spread.
- Pull quote windows for selected contracts.
- Simulate or monitor fills using bid/ask rules.
- Record trades, rejects, and stock context in one artifact.
curl "https://api.cutemarkets.com/v1/stocks/aggs/AAPL/5/minute/2026-06-04/2026-06-04/?adjusted=true&limit=500" \
-H "Authorization: Bearer YOUR_STOCKS_API_KEY"
curl "https://api.cutemarkets.com/v1/tickers/expirations/AAPL/" \
-H "Authorization: Bearer YOUR_OPTIONS_API_KEY"
curl "https://api.cutemarkets.com/v1/options/chain/AAPL/?expiration_date=2026-06-19&limit=100" \
-H "Authorization: Bearer YOUR_OPTIONS_API_KEY"
The keys are product-scoped. Stocks and options can share the same account, but the workflow should still know which product authorized which request.
Join keys
| Join field | Why it matters |
|---|---|
underlying_ticker | Connects stock and options requests |
signal_timestamp | Defines the earliest time the strategy can act |
stock_bar_end | Prevents using incomplete bars as completed evidence |
underlying_price_reference | Explains strike, moneyness, and delta selection |
expiration_date | Connects the option choice to DTE and event horizon |
option_ticker | Preserves the exact OCC contract |
quote_window_start and quote_window_end | Defines fill evidence |
plan_freshness | Marks live, delayed, historical, or unavailable context |
If these fields are missing, the strategy may still run, but it will be hard to audit.
Stock bars and option fills
Bars are good signal objects. Quotes are better fill objects.
For a stock-driven options strategy, a common mistake is to generate a stock signal from a completed 5-minute bar and then fill an option inside the same bar. That can be lookahead if the option fill uses information from after the signal was known.
Safer pattern:
- Wait for the stock bar to close.
- Generate the signal at the bar close timestamp.
- Select the option contract after the signal timestamp.
- Use the next quote window for the option entry.
- Store the delay explicitly.
This will often make the result less flattering. It will also make it more causal.
Stock quotes and option quotes
Stock quote access and option quote access can have separate plan implications. Do not assume that a workflow with live stock snapshots also has quote-aware option fills.
Record:
- stock product plan
- options product plan
- live or delayed state for each product
- whether stock quotes were available
- whether option quotes were available
- whether WebSockets were used
- whether REST backfill was used
This is especially important for customer support and commercial use. A user may see the stock dashboard refresh quickly and assume the option quote fields are live too. The pricing page, Authentication docs, and Paper Trading API docs should be part of that support path.
Event studies
For earnings, FDA decisions, macro events, or large news moves, create a combined event artifact:
| Section | Fields |
|---|---|
| Event | source, timestamp, known-before-market flag, session |
| Stock state | pre-event price, post-event price, bars, trades, quote context if used |
| Option universe | expirations, selected DTE, contracts with as_of when historical |
| Option pricing | chain row, IV, Greeks, bid/ask, spread, quote age |
| Activity | option trades, volume, open interest, stock volume |
| Result | fill policy, rejects, PnL, sensitivity, notes |
This combined artifact keeps the research from becoming a stock story with an option chart pasted onto it.
Common join mistakes
- using a stock signal timestamp but selecting options from a later chain
- using a completed bar and filling inside the same bar
- calculating moneyness from a different price than the chain used
- joining by underlying only and losing the OCC ticker
- assuming stock plan live access means options quote access
- hiding delayed data labels
- using stock OHLC bars as proof of option execution
- dropping option rejects while keeping stock winners