Paper Trading Options Pricing

Hi All,

I am testing some quick in quick out options strategies. I understand1-minute data on stock prices is delayed by 15 on the paper trading endpoints. I have an alternate source for live data that I have been using for years. My question is, are the options chains-purchase execution-sale execution based on 15 minute delayed options pricing? Again, I understand the options pricing on paper trading is modeled but is it based on real time data or 15 minute delayed data.

Doug

@DougFish First, Alpaca data doesn’t depend upon the account (ie paper or live). What type of data one can access is soley dependant uopn ones data subscription. By default everyone has access to the free Basic subscription. One can however sign up for the Algo Trader Plus subscription (see here). The only reason API keys are used to fetch data is so the system 1) can find the account associated with the keys 2) lookup the owner ID of that account then 3) lookup which data subscription is associated with that owner ID. Since all accounts (paper and live) held by an owner have the same owner ID, any API keys can be used (paper or live) to access market data and it will be the same data. There isn’t ‘paper trading’ data, but rather either the free basic or the Algo Trader Plus data.

But back to the question “[option trading data] is modeled but is it based on real time data or 15 minute delayed data” ? If one has an Algo Trader Plus subscription, one has access to full market real time OPRA data. It’s not delayed. Ensure to specify feed=opra. If one is using the free Basic subscription then due to licensing real time OPRA data is not available.

So, If one is using the free Basic subscription, one cannot access the most recent 15 minutes of data. This is the case with historical_trades and historical_bars. The data isn’t exactly ‘delayed’ rather you will simply get an error trying to get the most current data. Other endpoints such as latest_quotes or latest_trades are by definition ‘real time’. Therefore these endpoints have a parameter choice of feed=indicative. This returns option data based upon real time OPRA data but it’s randomized a bit. It’s not real data and should not be used for live trading but it provides numbers to use for debugging one’s code.

Hope that helps.

1 Like

Thank you Dan,

I am currently on the free version and while I do intend to move to the paid version at some point, it will not be for some time. I guess my question breaks down to this, if I use an alterative source for live 1-minute stock data to trigger entry into an option contract on my paper account should I delay that data by 15 minutes? Example, my live data tells me to buy an options contract at 10:20AM would I delay the paper options purchase to 10:35AM (its a market purchase)? Again, I know paper options purchases and sales are not perfect but I am testing my thesis.

Doug

1 Like

Tested my strategy today on both live data and live data delayed by 15 minutes. My strategy has an ok win rate on random entries so its hard to tell. But using live data to trigger a market purchase of an option contract and set a limit sell immediately to get an understanding of the data, my strategy had a win rate of 45%. When the same strategy and predefined targets was applied to the same data delayed by 15 minutes the win rate went to 82%. I will need to run this test a few more days but right now it looks like the options chain data in the paper trading account is delayed by 15 minutes.

Doug

Just signed on w Alpaca. I am on a free basic data subscription at this point. Today is Sunday. A quote request for SPY260206C00685000 only returned a last price but no ask/bid prices. Whereas a quote request on AAPL shares returned “ap” and “bp” that I take to mean ask price and bid price. Question: is this due to today being a weekend day? If not does the Algo Trader Plus data feed include bid/ask prices for options as well as bid/ask sizes? Thank You!

@ptrader Generally the market data end points will return the last available data even if requested on a non-trading day such as Sunday. Which specific end point were you using? For example, I just tried the latest quote end point as shown below and it returned an ask and a bid price.

https://data.alpaca.markets/v1beta1/options/quotes/latest?symbols=SPY260206C00685000&feed=opra

{
  "quotes": {
    "SPY260206C00685000": {
      "ap": 10.77,
      "as": 17,
      "ax": "X",
      "bp": 10.51,
      "bs": 17,
      "bx": "X",
      "c": " ",
      "t": "2026-01-30T20:59:59.998359755Z"
    }
  }
}

There can however be times when there is no ask and/or bid price. This can occur if there simply are no sellers or buyers respectively. Some options trade very thinly which can lead to some contracts having no bid or ask prices.

Both the indicative and opra feeds available in the free Basic and the Algo Trader Plus data subscriptions include bid/ask prices and bid/ask sizes if there are any traders bidding or asking.

Do note that the real time indicative data available in the free Basic plan can vary from the actual opra data and is meant primarily for testing and should not be used for live trading decisions.

Thank you for your response. I tried your url with response:
System.Net.Http.HttpRequestException: ‘Request failed with status code Forbidden’
The end point I was using was:
string OptionQuoteUrl = “https://paper-api.alpaca.markets/v2//options/contracts/” + symbol;
Response was:
{

"id":"c288eb5f-d14e-4ab3-b68f-e3bced99ddcf",

"symbol":"SPY260206C00685000",

"name":"SPY Feb 06 2026 685 Call",

"status":"active",

"tradable":true,

"expiration_date":"2026-02-06",

"root_symbol":"SPY",

"underlying_symbol":"SPY",

"underlying_asset_id":"b28f4066-5c6d-479b-a2af-85dc1a8f16fb",

"type":"call",

"style":"american",

"strike_price":"685",

"multiplier":"100","size":"100",

"open_interest":"1641",

"open_interest_date":"2026-01-29",

"close_price":"10.35",

"close_price_date":"2026-01-30",

"deliverables":\[{"type":"equity",

"symbol":"SPY",

"asset_id":"b28f4066-5c6d-479b-a2af-85dc1a8f16fb",

"amount":"100",

"allocation_percentage":"100",

"settlement_type":"T+1",

"settlement_method":"CCC",

"delayed_settlement":false}\],

"ppind":true

}

@ptrader I wasn’t able to find your query in the logs so don’t know exactly why you received a forbidden error. However, one thing to note is technically that is not a market data API call. Notice the base URL begins with paper-api.alpaca.markets. All the market data API’s begin with data.alpaca.markets. The end point you used doesn’t fetch quotes. It’s simply fetches information about the contract such as whether it’s tradable and whether it’s active. It also is the only place you can get open interest data. It includes the close prize simply as a convenience. It doesn’t ever include the latest quote.

To get the latest quote you should use the latest quote end point. There is documentation here.