Recipe, one Python file
0DTE levels
Today's SPY expiration: gamma regime, flip, walls, max pain and the expected range, ready to paste on a chart. Reads the 0DTE analytics for SPY and prints the levels a day trader marks first: the net gamma regime, the flip level, the call and put walls, max pain, and the one standard deviation range from the at-the-money straddle. It also prints the feed's IV forecast against the implied figure and the historical hit rate of the expected move.
What it prints
The output,
as captured.
Run against the live API on 2026-09-08 with a real token. Intraday index traders who want the day's levels without opening a dashboard.
SPY 0DTE 2026-09-08 status LIVE
gamma regime negative (net -1,331.68)
flip none
call wall 770.00
put wall 765.00
max pain 770.00
expected range 764.69 to 769.79 (0.33% from the ATM straddle)
ATM IV 15.4% put/call OI 2.4
IV forecast IV 5.5pts above the feed's forecast: favor selling
EM hit rate 68.3% over 101 days (reliable)
The script
One file,
requests and nothing else.
Set APEXVOL_API_TOKEN from Account, then API Access, and run it. The token is the only configuration.
import os
import sys
import requests
# One token, any paid or trial plan: Account, then API Access.
TOKEN = os.environ.get("APEXVOL_API_TOKEN") or sys.exit("set APEXVOL_API_TOKEN")
BASE = os.environ.get("APEXVOL_API_URL", "https://apexvol.com") + "/api/mcp/data"
S = requests.Session()
S.headers["Authorization"] = f"Bearer {TOKEN}"
def get(path, **params):
r = S.get(BASE + path, params=params, timeout=90)
body = r.json()
if not body.get("success"):
sys.exit(f"{path}: HTTP {r.status_code}: {body.get('error')}")
return body["data"]
d = get("/zero-dte/SPY", strikes_around=5)
lv = d.get("key_levels") or {}
m = d.get("metrics") or {}
reg = d.get("gamma_regime") or {}
fc = d.get("iv_forecast") or {}
hit = d.get("em_hit_rate") or {}
fmt = lambda v: f"{v:,.2f}" if isinstance(v, (int, float)) else "none"
print(f"SPY 0DTE {d.get('expiration')} status {d.get('data_status')}")
print(f"gamma regime {reg.get('regime')} (net {fmt(reg.get('total_net_gex'))})")
print(f"flip {fmt(lv.get('gamma_flip'))}")
print(f"call wall {fmt(lv.get('call_wall'))}")
print(f"put wall {fmt(lv.get('put_wall'))}")
print(f"max pain {fmt(lv.get('max_pain'))}")
print(f"expected range {fmt(lv.get('em_lower'))} to {fmt(lv.get('em_upper'))} ({m.get('expected_move')}% from the ATM straddle)")
print(f"ATM IV {m.get('atm_iv')}% put/call OI {m.get('put_call_ratio')}")
print(f"IV forecast {fc.get('signal')}")
print(f"EM hit rate {hit.get('hit_rate')}% over {hit.get('total_days')} days ({hit.get('assessment')})")
How it works
- 1. One call
- GET /zero-dte/SPY?strikes_around=5 keeps the payload small; drop the parameter for the whole chain.
- 2. Print the levels
- key_levels carries the walls, max pain and the expected-move bounds; gamma_regime the sign of net gamma.
- 3. Check the forecast
- iv_forecast compares the at-the-money implied vol with the feed's forecast for the day.
Schedule it
- cron
32 13 * * 1-5 APEXVOL_API_TOKEN=avmcp_... python3 zero_dte_levels.py
09:32 New York, weekdays. Times in the crontab are UTC.- Claude Code
/loop 15m python3 zero_dte_levels.py
Runs it on an interval inside a session, and the assistant reads the output each time.
The same job, no code
Ask an assistant
with the MCP server.
Connect the ApexVol MCP server and this recipe is one prompt. It ships in the client's prompt picker as recipe-zero-dte-levels.
Give me today's SPY 0DTE levels: gamma regime, flip, call and put walls, max pain and the expected range.
The assistant calls get_zero_dte and answers from the same JSON the script prints.Set it up in:
Under the hood
1 endpoint,
one token.
Each card opens the endpoint's page: parameters and bounds, every field, a real response and a console that runs it on your ticker.
Access
- Plan
- Pro and above. Every endpoint follows the tier of its web feature; the chips on the cards say which.
- Cost
- Measured in upstream data requests against the monthly allowance, not calls; a batch call counts one rate-limit unit and one data request per symbol.
GET /api/mcp/data/me/usageshows the meter. - Reference
- The rate-limits guide, the conventions and the error model. The whole API as one Markdown file: /llms-full.txt.
Included with
every paid plan.
From $55 a month. Create a token under Account, then API Access, and this script runs as it is.
Real market data, not a sandbox. See it live on AAPL.