- API
- Earnings and expected move
- Mispricing assessment
Earnings and expected move API, 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. Combines IV rank, the volatility risk premium and expected-versus-actual into a signal from -100 to +100 with confidence, and returns every component and the historical move distribution it used.
The answer, in one call
Units first,
then the request.
Score -100 to +100; confidence 0 to 100; IVs in percentage points; moves in percent.
components.current_iv is on the VRP basis (30-day constant maturity); iv_basis, hv_basis and earnings_in_window are returned.
curl -H "Authorization: Bearer avmcp_YOUR_TOKEN" \
"https://apexvol.com/api/mcp/data/mispricing-assessment/NVDA"
import requests
headers = {"Authorization": "Bearer avmcp_YOUR_TOKEN"}
r = requests.get("https://apexvol.com/api/mcp/data/mispricing-assessment/NVDA", headers=headers)
r.raise_for_status()
data = r.json()["data"]
print(data["signal"])
Are NVDA options rich or cheap overall right now?
The assistant calls get_earnings_move_analysis and answers from the JSON below.{
"success": true,
"data": {
"components": {
"current_iv": 33.05,
"earnings_in_window": true,
"expected_move_pct": 4.55,
"historical_avg_move_pct": 4.46,
"hv_basis": "close_to_close_log_returns_annualized_252",
"iv_basis": "iv30d_constant_maturity_eod",
"iv_percentile": 12.0,
"iv_rank": 14.8,
"options_assessment": "FAIRLY_PRICED",
"realized_vol": 45.06,
"vrp": -12.01
},
"confidence": 100.0,
"historical_moves": {
"14d": {
"avg_abs_move_pct": 5.4003,
"avg_move_pct": 1.7376,
"max_down_move_pct": -10.5131,
"max_up_move_pct": 14.8871,
"median_move_pct": 1.5093,
"p10": -6.4665,
"p25": -3.1976,
"p75": 6.1163,
"p90": 9.9673,
"period_days": 14,
"std_dev_pct": 6.3057
},
"21d": {
"avg_abs_move_pct": 6.7007,
"avg_move_pct": 2.7348,
"max_down_move_pct": -12.588,
"max_up_move_pct": 19.0191,
"median_move_pct": 3.3738,
"p10": -8.3477,
"p25": -1.921,
"p75": 8.5737,
"p90": 11.7969,
"period_days": 21,
"std_dev_pct": 7.5251
},
"30d": {
"avg_abs_move_pct": 7.1714,
"avg_move_pct": 2.1683,
"max_down_move_pct": -17.841,
"max_up_move_pct": 15.395,
"median_move_pct": 2.5263,
"p10": -10.2469,
"p25": -4.2495,
"p75": 8.7686,
"p90": 11.9596,
"period_days": 30,
"std_dev_pct": 8.2063
},
"7d": {
"avg_abs_move_pct": 4.7327,
"avg_move_pct": 1.1532,
"max_down_move_pct": -10.7926,
"max_up_move_pct": 18.5403,
"median_move_pct": 0.5243,
"p10": -5.6893,
"p25": -2.9056,
"p75": 5.0021,
"p90": 8.8667,
"period_days": 7,
"std_dev_pct": 5.9155
}
},
"mispricing_score": -55.2,
"signal": "BUY_PREMIUM",
"ticker": "NVDA",
"timestamp": "2026-09-08T08:07:35.431474+00:00"
}
}
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 |
|---|---|---|---|---|
ticker required | path | any covered symbol | The underlying, upper case. Use /search to check coverage. |
Field by field
What each
number means.
signal, mispricing_score, confidence- The answer.
components.iv_rank, iv_percentile, vrp, expected_move_pct, historical_avg_move_pct- What drove it.
components.earnings_in_window- Whether a report contaminates realized vol.
historical_moves- The move distribution used.
Access, limits, errors
Before the
first call.
- Plan
- Pro Pro 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;403Pro plan required;424data feed unavailable, retry. 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 get_earnings_move_analysis by name. One URL, a sign-in, no token to paste.
Are NVDA options rich or cheap overall right now?
YouGive me a premium buy-or-sell signal for AAPL with the components.
YouWhich of my watchlist screens as sell-premium?
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.