- API
- Strategies
- Simulated chain
Strategies API, POST /simulate-chain
What would the SPY chain look like if the stock rose 2% and IV rose 5 points in 10 days?
Re-prices a chain at a hypothetical spot, days to expiry and IV shift. Black-Scholes what-if: pass chain rows from /chain, or just a ticker and the server fetches the chain, and get every contract re-priced with new Greeks at your scenario.
The answer, in one call
Units first,
then the request.
sim_price in dollars; sim_dte in days; iv_adjustment in IV percentage points; output prices in dollars, IVs as decimals.
Re-pricing holds each contract's IV plus the shift and moves spot and time.
curl -X POST "https://apexvol.com/api/mcp/data/simulate-chain" \
-H "Authorization: Bearer avmcp_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ticker": "SPY", "sim_price": 785.65, "sim_dte": 10, "iv_adjustment": 5, "strikes_around": 3}'
import requests
headers = {"Authorization": "Bearer avmcp_YOUR_TOKEN"}
body = {"ticker": "SPY", "sim_price": 785.65, "sim_dte": 10, "iv_adjustment": 5, "strikes_around": 3}
r = requests.post("https://apexvol.com/api/mcp/data/simulate-chain", headers=headers, json=body)
r.raise_for_status()
data = r.json()["data"]
print(data["sim_price"])
Re-price the SPY chain at 790 with 10 days left and IV up 5 points.
The assistant calls simulate_option_chain and answers from the JSON below.{
"success": true,
"data": {
"chain": [
{
"Call Ask": 17.7104,
"Call Bid": 17.6704,
"Delta Call": 0.9877,
"Delta Put": -0.0188,
"Gamma Call": 0.004,
"Gamma Put": 0.0053,
"IV Call": 0.0612,
"IV Put": 0.0663,
"IVx Call": 0.1324,
"IVx Put": 0.0076,
"Put Ask": 0.0694,
"Put Bid": 0.0494,
"Strike": 769.0,
"Theta Call": -0.112,
"Theta Put": -0.0179,
"Vega Call": 0.0414,
"Vega Put": 0.0599
},
{
"Call Ask": 16.7084,
"Call Bid": 16.6884,
"Delta Call": 0.9852,
"Delta Put": -0.0222,
"Gamma Call": 0.0048,
"Gamma Put": 0.0063,
"IV Call": 0.0596,
"IV Put": 0.0646,
"IVx Call": 0.1334,
"IVx Put": 0.0089,
"Put Ask": 0.0796,
"Put Bid": 0.0596,
"Strike": 770.0,
"Theta Call": -0.1137,
"Theta Put": -0.0199,
"Vega Call": 0.0486,
"Vega Put": 0.0688
},
{
"Call Ask": 15.7199,
"Call Bid": 15.6999,
"Delta Call": 0.9816,
"Delta Put": -0.0282,
"Gamma Call": 0.0059,
"Gamma Put": 0.0078,
"IV Call": 0.0584,
"IV Put": 0.0639,
"IVx Call": 0.1349,
"IVx Put": 0.0115,
"Put Ask": 0.1005,
"Put Bid": 0.0805,
"Strike": 771.0,
"Theta Call": -0.116,
"Theta Put": -0.024,
"Vega Call": 0.0586,
"Vega Put": 0.0841
}
],
"expiration": "2026-09-08",
"iv_adjustment": 5,
"sim_dte": 10,
"sim_price": 785.65
}
}
Every response is wrapped as {"success": true, "data": {...}}. Lists in the sample are cut to a few rows so it fits on a page; the shape is exactly what your code receives.
Parameters
Bounded,
and the bounds are stated.
Out-of-range numbers are clamped to the documented range, never silently changed to something else. A missing required field returns 400 with the reason.
| Name | In | Default | Range | Meaning |
|---|---|---|---|---|
sim_price required | body | dollars | Hypothetical spot. | |
sim_dte required | body | days | Days to expiration in the scenario. | |
iv_adjustment | body | 0 | IV points | Shift applied to every IV. |
chain | body | rows from /chain | Rows to re-price. | |
ticker | body | symbol | Fetch the chain when rows are omitted. | |
expiration | body | nearest | YYYY-MM-DD | Which expiration to fetch. |
strikes_around | body | 20 | 0 for all | Strikes per side. |
Field by field
What each
number means.
chain[].Strike, Call Bid, Call Ask, Put Bid, Put Ask- Re-priced quotes.
chain[].Delta Call, Gamma Call, Theta Call, Vega Call and the put twins- Re-priced Greeks.
sim_price, sim_dte, iv_adjustment, expiration- The scenario echoed.
Access, limits, errors
Before the
first call.
- Plan
- Basic Basic and above. Tokens are issued to paid and trial accounts from $55 a month; each endpoint follows the tier of its web feature. An endpoint above your plan answers 402 and names the plan it needs.
- Auth
- Bearer token, prefix
avmcp_, created under Account, then API Access. Shown once, hashed at rest, rotates in one click. Always callhttps://apexvol.com, never www. - Limits
- 60 requests a minute and 1,000 an hour per token, plus a monthly allowance by plan. Every response carries the remaining counts in
X-RateLimit-*headers; a 429 carriesRetry-Afterin seconds. - Errors
401no or revoked token;429Retry-After seconds;400missing or malformed body. The full list with payload shapes is on the errors page.- Since
- API 1.0. Units, bases and timestamps follow the conventions shared by every endpoint; changes are logged in the API changelog.
- Machine-readable
- This page as Markdown, the family as one file, the whole API as llms-full.txt or OpenAPI 3.1.
The same data, in plain English
Ask for it
in an MCP client.
Connect the ApexVol MCP server and the assistant calls simulate_option_chain by name. One URL, a sign-in, no token to paste.
Re-price the SPY chain at 790 with 10 days left and IV up 5 points.
YouWhat would my NVDA calls be worth if the stock fell 5% tomorrow?
YouSimulate the AAPL chain at a 3% higher spot.
More in the prompt library. Set the server up in Claude Desktop, Claude Code, Cursor, ChatGPT, VS Code, Windsurf or Gemini CLI.
Included with
every paid plan.
From $55 a month, tier-matched: your token queries the data your plan includes and Pro unlocks the full surface.
Real market data, not a sandbox. See it live on AAPL.