- API
- Earnings API
Earnings API
Earnings moves,
priced and scored.
What the options market is pricing for the next report, what the stock has actually done on the last twelve, how the straddle would have paid, and one verdict that weighs them. Plus the calendar to find the next one.
A real response
This is what
comes back.
Captured from the live endpoint on 2026-09-08, lists cut to a few rows so it fits on a page. The shape is exactly what your code receives. Run it on your own ticker from the endpoint page.
{
"dte": 1,
"expected_move_dollars": 5.58,
"expected_move_percent": 2.42,
"expiration": "2026-09-09",
"lower_bound": 224.73,
"stock_price": 230.3,
"ticker": "NVDA",
"upper_bound": 235.88
}
Every response is wrapped as {"success": true, "data": {...}}. Errors use the same envelope with an error string and a status code that means what it says.
Call it three ways. Same token, same JSON.
curl -H "Authorization: Bearer avmcp_YOUR_TOKEN" \
"https://apexvol.com/api/mcp/data/expected-move/NVDA"
import requests
headers = {"Authorization": "Bearer avmcp_YOUR_TOKEN"}
r = requests.get("https://apexvol.com/api/mcp/data/expected-move/NVDA", headers=headers)
r.raise_for_status()
data = r.json()["data"]
print(data["expected_move_dollars"])
What is the expected move for NVDA by Friday?
The assistant calls calculate_expected_move and answers from the JSON above.More prompts for this family in the prompt library. Set the server up in Claude Desktop, Claude Code, Cursor, ChatGPT, VS Code, Windsurf or Gemini CLI.
The family
9 endpoints,
one prefix.
All under https://apexvol.com/api/mcp/data. Each card opens a page with the parameters and their bounds, every response field, a real captured response and a console that runs it on your ticker.
GET /earnings-history/{ticker}
How much has NVDA moved on each of its last eight reports?
Per-report moves, surprises and IV crush, with the statistics.
Pro
GET /earnings-verdict/{ticker}
Should I buy or sell the NVDA earnings straddle?
One call that scores the earnings straddle: priced move versus history, IV crush, drift and wings, with a verdict.
Pro
GET /expected-move/{ticker}
How much does the market expect NVDA to move by the next expiration?
The straddle-implied expected move in dollars and percent, with bounds.
Premium
GET /expected-vs-actual/{ticker}
Is the move priced into NVDA bigger or smaller than the stock usually makes?
The straddle-implied move against the historical average over the same horizon.
Pro
GET /historical-moves/{ticker}
How big a move does NVDA typically make over 7, 14, 21 and 30 days?
The distribution of past moves per horizon.
Pro
GET /iv-crush/{ticker}
How much IV will NVDA lose after it reports, and what move does the current premium imply?
The pre-earnings IV build, the estimated crush and the move priced for the event.
Pro
GET /mispricing-assessment/{ticker}
Taking IV rank, VRP and the priced move together, are NVDA options rich or cheap?
A composite buy-premium or sell-premium signal with a score and its components.
Pro
GET /post-earnings-drift/{ticker}
After NVDA gaps on earnings, does the move continue or fade?
Drift after the earnings gap over 1 to 20 days, split by gap direction.
Pro
GET /batch/expected-move
How much is the market pricing each of these names to move by the next expiration?
Straddle-implied expected move for up to 25 symbols in a single request.
Premium
Field by field
What each
number means.
timing.earnings_date, days_to_earnings- The next report and how far out it is. preliminary is true when the read is early.
timing.expected_move_pct, atm_iv, earnings_exp_atm_iv- The move priced through the earnings expiration and the IV on either side of it.
edge.implied_move_pct- The event move isolated from the chain, not the whole-expiry straddle.
edge.historical_avg_move_pct, move_ratio- The average past gap and the ratio of priced to historical. Above one, the market is paying up.
edge.straddle_hit_rate, avg_straddle_return- How often the straddle buyer would have won over the last quarters, and by how much on average.
edge.edge_score, edge_interpretation- A 0 to 100 score and its label.
verdict.signal, confidence, reasons- BUY_STRADDLE, SELL_STRADDLE or NO_CLEAR_EDGE with the reasons written out.
verdict.suggested_strategies- The structures that fit the verdict.
The same data, in plain English
3 MCP tools
wrap this family.
Connect the ApexVol MCP server and an assistant can call these by name. One URL, a sign-in, no token to paste.
- calculate_expected_move
- analyze_earnings_history
- get_earnings_move_analysis
Set it up in:
What people build
Three things
this is for.
Recipes that use this family:
Access
- Auth
- Bearer token, prefix
avmcp_, created under Account, then API Access. Shown once, hashed at rest, rotates in one click. - 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 headers.
- Plans
- Included with every paid or trial plan from $55 a month. Each endpoint follows the tier of its web feature; the cards above show which.
- Spec
- OpenAPI 3.1 at /docs/api/openapi.json, this family as one Markdown file, the whole reference at /llms-full.txt. Shared conventions, the error model and the changelog.
Questions
Asked before
the first call.
How is the expected move calculated?
From the at-the-money straddle for the expiration named, as dollars and a percent of spot. The earnings endpoints go further and isolate the event move from the rest of the expiry's variance, which the response reports as implied_move_pct with its source labelled.
What does the historical move measure?
The close-to-open gap on the session after the report, which is the move an earnings straddle is exposed to. Close-to-close moves are reported alongside because the two can differ a lot.
What does the verdict mean?
BUY_STRADDLE means the priced move looks small against history and the straddle's record; SELL_STRADDLE the reverse; NO_CLEAR_EDGE that the components disagree or the report is too far out. The confidence and reasons are always returned so the label can be checked.
How far ahead does the calendar go?
Up to 90 days. Each row carries the implied move and the historical average so the calendar is already a ranking, not a list of dates.
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.