Portfolio-level Greeks, scenario analysis, stress testing, and hedge simulation. All endpoints require login and the Pro plan (feature key risk_manager) and are rate-limited at 100/min.
Position objects accept: ticker, position_type (STOCK | CALL | PUT), quantity, strike, expiration, entry_price — and for the extended endpoints also current_price, stock_price, delta, gamma, theta, vega, rho, iv, charm, vanna, vomma.
These endpoints use session-cookie auth (the platform UI). For
programmatic access with a long-lived API token, see the Bearer-token surface on the
MCP / Claude integration page.
Risk endpoints (/api/risk)
POST/api/risk/portfolio-greeks
Login + Prorisk_manager
Aggregate portfolio Greeks (basic position format).
Parameters
JSON: positions [Position, …]
# fetch a CSRF token, then POST with it
TOKEN=$(curl -s -b cookies.txt https://apexvol.com/api/csrf-token | jq -r .token)
curl -b cookies.txt -X POST "https://apexvol.com/api/risk/portfolio-greeks" \
-H "Content-Type: application/json" -H "X-CSRFToken: $TOKEN" \
-d '{ "ticker": "AAPL" }'
import requests
s = requests.Session()
# log in first, then include the CSRF token on writes
token = s.get("https://apexvol.com/api/csrf-token").json()["token"]
r = s.post("https://apexvol.com/api/risk/portfolio-greeks",
headers={"X-CSRFToken": token}, json={"ticker": "AAPL"})
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Run a stress test on my AAPL positions."
# Claude routes the request to the matching MCP tool — no HTTP required.
POST/api/risk/scenario-analysis
Login + Prorisk_manager
What-if scenario analysis across user-supplied price/vol scenarios.
Parameters
JSON: positions, scenarios []
# fetch a CSRF token, then POST with it
TOKEN=$(curl -s -b cookies.txt https://apexvol.com/api/csrf-token | jq -r .token)
curl -b cookies.txt -X POST "https://apexvol.com/api/risk/scenario-analysis" \
-H "Content-Type: application/json" -H "X-CSRFToken: $TOKEN" \
-d '{ "ticker": "AAPL" }'
import requests
s = requests.Session()
# log in first, then include the CSRF token on writes
token = s.get("https://apexvol.com/api/csrf-token").json()["token"]
r = s.post("https://apexvol.com/api/risk/scenario-analysis",
headers={"X-CSRFToken": token}, json={"ticker": "AAPL"})
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Run a stress test on my AAPL positions."
# Claude routes the request to the matching MCP tool — no HTTP required.
# fetch a CSRF token, then POST with it
TOKEN=$(curl -s -b cookies.txt https://apexvol.com/api/csrf-token | jq -r .token)
curl -b cookies.txt -X POST "https://apexvol.com/api/risk/stress-tests" \
-H "Content-Type: application/json" -H "X-CSRFToken: $TOKEN" \
-d '{ "ticker": "AAPL" }'
import requests
s = requests.Session()
# log in first, then include the CSRF token on writes
token = s.get("https://apexvol.com/api/csrf-token").json()["token"]
r = s.post("https://apexvol.com/api/risk/stress-tests",
headers={"X-CSRFToken": token}, json={"ticker": "AAPL"})
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Run a stress test on my AAPL positions."
# Claude routes the request to the matching MCP tool — no HTTP required.
POST/api/risk/portfolio-greeks-extended
Login + Prorisk_manager
Portfolio Greeks including second- and third-order terms.
Parameters
JSON: positions (extended format incl. per-leg Greeks)
# fetch a CSRF token, then POST with it
TOKEN=$(curl -s -b cookies.txt https://apexvol.com/api/csrf-token | jq -r .token)
curl -b cookies.txt -X POST "https://apexvol.com/api/risk/portfolio-greeks-extended" \
-H "Content-Type: application/json" -H "X-CSRFToken: $TOKEN" \
-d '{ "ticker": "AAPL" }'
import requests
s = requests.Session()
# log in first, then include the CSRF token on writes
token = s.get("https://apexvol.com/api/csrf-token").json()["token"]
r = s.post("https://apexvol.com/api/risk/portfolio-greeks-extended",
headers={"X-CSRFToken": token}, json={"ticker": "AAPL"})
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Run a stress test on my AAPL positions."
# Claude routes the request to the matching MCP tool — no HTTP required.
POST/api/risk/simulate-hedge
Login + Prorisk_manager
Projects the portfolio's Greeks after applying candidate hedge trades.
Parameters
JSON: positions, hedge_trades []
# fetch a CSRF token, then POST with it
TOKEN=$(curl -s -b cookies.txt https://apexvol.com/api/csrf-token | jq -r .token)
curl -b cookies.txt -X POST "https://apexvol.com/api/risk/simulate-hedge" \
-H "Content-Type: application/json" -H "X-CSRFToken: $TOKEN" \
-d '{ "ticker": "AAPL" }'
import requests
s = requests.Session()
# log in first, then include the CSRF token on writes
token = s.get("https://apexvol.com/api/csrf-token").json()["token"]
r = s.post("https://apexvol.com/api/risk/simulate-hedge",
headers={"X-CSRFToken": token}, json={"ticker": "AAPL"})
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Run a stress test on my AAPL positions."
# Claude routes the request to the matching MCP tool — no HTTP required.
GET/api/risk/option-chain/<ticker>
Login + Prorisk_manager
Chain helper for position entry: without expiration returns the expiration list; with it, the full formatted chain plus an estimated stock price.
Parameters
expiration (optional)
# log in first and reuse the cookie jar (see Authentication)
curl -b cookies.txt "https://apexvol.com/api/risk/option-chain/AAPL"
import requests
s = requests.Session()
# log in to populate the session cookie (see Authentication)
r = s.get("https://apexvol.com/api/risk/option-chain/AAPL")
print(r.json())
# With the apexvol-mcp server connected to Claude, just ask:
"Run a stress test on my AAPL positions."
# Claude routes the request to the matching MCP tool — no HTTP required.