Hi,
I am not seeing any greeks when pulling for 0DTE options.
{
“next_page_token”: null,
“snapshots”: {
“SPY240722P00553000”: {
“latestQuote”: {
“ap”: 0.49,
“as”: 197,
“ax”: “N”,
“bp”: 0.48,
“bs”: 476,
“bx”: “I”,
“c”: " ",
“t”: “2024-07-22T17:16:04.289345792Z”
},
“latestTrade”: {
“c”: “a”,
“p”: 0.48,
“s”: 1,
“t”: “2024-07-22T17:16:04.183603456Z”,
“x”: “A”
}
}
}
}
vs when pulling for next day expiry, I get:
{
“next_page_token”: null,
“snapshots”: {
“SPY240723P00553000”: {
“greeks”: {
“delta”: -0.4039,
“gamma”: 0.079,
“rho”: -0.0062,
“theta”: -0.917,
“vega”: 0.1123
},
“impliedVolatility”: 0.1691,
“latestQuote”: {
“ap”: 1.43,
“as”: 73,
“ax”: “I”,
“bp”: 1.42,
“bs”: 210,
“bx”: “D”,
“c”: " ",
“t”: “2024-07-22T17:16:48.50284032Z”
},
“latestTrade”: {
“c”: “I”,
“p”: 1.43,
“s”: 5,
“t”: “2024-07-22T17:16:45.790952192Z”,
“x”: “C”
}
}
}
}
@seftest Good question about seeing (or not seeing) greeks for specific option contracts. First, you can get the greeks from two separate endpoints. They are available from both the snapshots and the option chain endpoints. The former is best when you know the option symbols (perhaps you hold those) and supply a list of those symbols which then returns snapshots. The later is best when you know the underlying stock symbols and then supply those symbols, and optionally a min or max strike price, to perhaps find ‘in the money’ options.
However, note that not all options have greeks. Why? Alpaca uses the Black-Scholes model to calculate greeks. This model assumes the underlying asset (ie the option) has a positive value. If the option has a negative value (ie the option is not ‘in the money’), the model does not work directly. So, any option which isn’t ‘in the money’ will not work using Black-Scholes model to calculate greeks and therefore won’t have any. Out of the money options will not have greeks. That is why your example of SPY240722P00553000 did not return greeks. It is a Put with a strike price of $553 but the current price of SPY is around $554.65. The Put gives you the rights to sell at $553 but you could sell at a higher price on the open market and not exercise the option. Therefore the option doesn’t really have any current value and no greeks are returned.
If one fetches a snapshot for an ‘in the money’ option, such as NVDA240621C00110000, one will see the greeks as shown below (this is an old example).
https://data.alpaca.markets/v1beta1/options/snapshots?symbols=NVDA240621C00110000&feed=opra
{"next_page_token": null,"snapshots": {"NVDA240621C00110000":
{"greeks":
{"delta": 0.8715338453275749,
"gamma": 0.018591798252972046,
"rho": 0.025609610286507833,"theta": -0.13203710206504723,
"vega": 0.04219835549228455},
"impliedVolatility": 0.5611034656657273,....
Hope that helps.
Again, this answer that OTM options dont have greeks when pulled through snapshots or chains endpoint, is straight up wrong! I am seeing greeks for all contracts that are ITM or OTM as long as they dont expire the same day. I am surprised you did not use the same SPY ITM option contract as an example in your reply, but rather use an old expired contract.
Please look at the example again below, SPY call 553 expiring today has no greeks, where as same contract expiring tomorrow has the data.
https://data.alpaca.markets/v1beta1/options/snapshots?symbols=SPY240723C00553000&feed=opra&limit=100
@seftest Ahhh. I missed the fact that you were looking at options which expire on the current day. The issue is again that the Black Scholes model cannot be used and doesn’t return any results. Below, for example, is the function to calculate the value of a call option for a non-dividend-paying underlying stock. The variable t
is the current date and the T
is the date of option expiration. Notice in several places the term (T - t) which gives the time to expiry. If an option expires today, that value is 0. It appears in the denominator of d+ which makes that term undefined as it’s a ‘divide by zero’. The price (and other greeks) therefore are indeterminate.

All other ‘in the money’ options will have greeks (as long as they do not expire on the current day). Hope that explains it maybe?