From Orats — Strikes Data¶
Looking for a second source of option Greeks alongside Orats, or an independent set of Greeks to compare against your Orats SMV? Lavender delivers independently computed Greeks through Orats' own wire format — no code changes required.
Already fetching option Greeks and volatility data from Orats? Swap the host — your existing code works unchanged.
Beta compatibility
This compatibility layer has automated test coverage but has not yet been validated against live Orats API traffic. If you encounter any inconsistencies with Orats' wire format, please contact support@lavender-ts.com.
What Changes¶
Swap the host. Your token parameter or auth header is accepted and ignored.
Try it in your browser¶
Paste this into any browser to see Orats-format Greeks rendered as an HTML table. No code needed.
Same Response Format¶
The JSON you get back has the same data array with one row per (expiration, strike) — both call and put data in the same row, just like Orats:
{
"data": [
{
"ticker": "SPY",
"tradeDate": "2026-03-14",
"expirDate": "2026-12-18",
"dte": 279,
"strike": 570.0,
"stockPrice": 567.41,
"spotPrice": 567.41,
"callVolume": 0,
"callOpenInterest": 0,
"callBidSize": 0,
"callAskSize": 0,
"callBidPrice": 0,
"callAskPrice": 0,
"callValue": 18.23,
"callBidIv": 0.2100,
"callMidIv": 0.2346,
"callAskIv": 0.2592,
"putVolume": 0,
"putOpenInterest": 0,
"putBidSize": 0,
"putAskSize": 0,
"putBidPrice": 0,
"putAskPrice": 0,
"putValue": 0.82,
"putBidIv": 0.2150,
"putMidIv": 0.2346,
"putAskIv": 0.2542,
"extCallValue": 18.23,
"extPutValue": 0.82,
"smvVol": 0.2346,
"extSmvVol": 0.2346,
"delta": 0.9512,
"gamma": 0.0223,
"theta": -0.0877,
"vega": 0.2514,
"rho": 0.3124,
"phi": 0,
"driftlessTheta": -0.0877,
"residualRate": 0,
"updatedAt": "2026-03-14T12:00:00Z"
}
]
}
Market data fields are zeroed
Fields like callBidPrice, callAskPrice, callVolume, callOpenInterest (and their put-side equivalents) are zeroed. The Greeks, IV, and model value fields contain Lavender's computed values.
Endpoint¶
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
ticker |
string | Yes | Underlying ticker (e.g., SPY). Comma-delimited supported; first symbol is used |
token |
string | No | API key — accepted and ignored |
dte |
string | No | DTE range filter as min,max (e.g., 0,30 for 0–30 days) |
delta |
string | No | Call-side delta range as min,max (e.g., .20,.80) |
Response Fields¶
Row Structure¶
Each element in the data array represents a single (expiration, strike) pair. Both call and put data appear in the same row — this matches Orats convention and differs from per-contract vendors.
Identification¶
| Field | Type | Description |
|---|---|---|
ticker |
string | Underlying symbol |
tradeDate |
string | Current date (YYYY-MM-DD) |
expirDate |
string | Expiration date (YYYY-MM-DD) |
dte |
integer | Calendar days to expiration |
strike |
number | Strike price |
stockPrice |
number | Current underlying price |
spotPrice |
number | Same as stockPrice |
Model Values¶
| Field | Type | Description |
|---|---|---|
callValue |
number | Theoretical call price |
putValue |
number | Theoretical put price |
extCallValue |
number | Same as callValue |
extPutValue |
number | Same as putValue |
Implied Volatility¶
| Field | Type | Description |
|---|---|---|
callBidIv |
number | Call IV at bid |
callMidIv |
number | Call IV at mid |
callAskIv |
number | Call IV at ask |
putBidIv |
number | Put IV at bid |
putMidIv |
number | Put IV at mid |
putAskIv |
number | Put IV at ask |
smvVol |
number | Smoothed model volatility |
extSmvVol |
number | Same as smvVol |
Greeks¶
Greeks are call-side — delta ranges from 0 to 1. To get put delta, subtract 1 (put delta = delta − 1).
| Field | Type | Description |
|---|---|---|
delta |
number | \(\partial V / \partial S\) — call-side (0 to 1) |
gamma |
number | \(\partial^2 V / \partial S^2\) |
theta |
number | \(\partial V / \partial t\) — per calendar day |
vega |
number | \(\partial V / \partial \sigma\) |
rho |
number | \(\partial V / \partial r\) |
phi |
number | Dividend rho (always 0) |
driftlessTheta |
number | Theta excluding drift (same as theta) |
residualRate |
number | Always 0 |
updatedAt |
string | Timestamp (ISO 8601) |
Greek Scaling¶
All Greeks are in natural units. Theta is returned per calendar day. All output values are rounded to 4 decimal places.
Call-side Greeks
Following Orats convention, delta is call delta (0 to 1). For put delta, compute delta - 1. Gamma, theta, vega, and rho are the same for both sides of a strike.
Migrating from Orats¶
One change:
- Base URL — replace
https://api.orats.iowithhttp://localhost:2112
Your token parameter is accepted and ignored — leave it or remove it.
The endpoint path, query parameters, response shape, and field names are identical.
How Lavender's Greeks Compare¶
Orats is one of the most advanced option analytics platforms available — its SMV methodology, residual yield approach, and early exercise handling set the standard. If you're using Orats today, your Greeks already account for many effects that simpler models miss.
Running Lavender alongside Orats gives you a second, independently computed perspective on the same contracts:
- Independent model — Lavender computes Greeks using different modeling assumptions. Where the two reports agree, you have confirmation. Where they diverge — particularly around ex-dates, deep ITM, or illiquid strikes — you have a signal worth investigating.
- Two views of time decay — conventional theta (\(\partial V / \partial t\)) on this endpoint, plus a separate decay metric (expected change to next trading day, accounting for weekends and holidays) on the Lavender API. The difference between theta and decay is most visible over weekends and around market holidays.
- Extended Greeks — access second and third-order Greeks via the Lavender API.
Migrating to the Lavender Native API¶
| ORATS | Lavender API |
|---|---|
ticker |
root |
expirDate |
expiry |
smvVol |
lav_vol |
callValue / putValue |
lav_theo |
delta (call-side only) |
delta (per contract) |
Error Responses¶
| Status | Condition |
|---|---|
200 |
Success |
400 |
Missing ticker parameter |
502 |
Upstream data unavailable |