Recipe, one Python file
Morning regime brief
Dealer gamma for SPY, QQQ and IWM plus the VIX, in one screen before the open. One batch call fetches gamma exposure for the three index ETFs; a second reads the VIX. The script prints spot, net dealer gamma, the flip level and the call and put walls per symbol, then says which regime each is in: positive gamma damps moves, negative gamma amplifies them.
What it prints
The output,
as captured.
Run against the live API on 2026-09-08 with a real token. Anyone who trades index options or sizes positions off the day's gamma regime.
VIX 15.33 (+0.2% on the day)
spot net gamma ($bn) flip call wall put wall regime
SPY 767.37 -7.70 none 770 760 negative: trend and widen
QQQ 716.96 -1.80 none 720 700 negative: trend and widen
IWM 294.86 -2.92 none 295 290 negative: trend and widen
Levels are aggregate across listed expirations; pass expiration=YYYY-MM-DD for one expiry.
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"]
symbols = "SPY,QQQ,IWM"
gex = get("/batch/gex", tickers=symbols, strikes_around=5)
vix = get("/vix")
print(f"VIX {vix['price']:.2f} ({vix['change_pct']:+.1f}% on the day)")
print()
print(f"{'':6}{'spot':>9}{'net gamma ($bn)':>17}{'flip':>9}{'call wall':>11}{'put wall':>10} regime")
for sym in symbols.split(","):
d = gex["results"].get(sym)
if not d:
print(f"{sym:6} {gex['errors'].get(sym)}")
continue
lv = d.get("key_levels") or {}
flip = d.get("flip_level")
net_bn = (d.get("total_gex") or 0) / 1e9
regime = "positive: pin and fade" if net_bn > 0 else "negative: trend and widen"
fmt = lambda v: f"{v:,.0f}" if isinstance(v, (int, float)) else "none"
print(f"{sym:6}{d['stock_price']:>9,.2f}{net_bn:>17,.2f}{fmt(flip):>9}"
f"{fmt(lv.get('call_wall')):>11}{fmt(lv.get('put_wall')):>10} {regime}")
print()
print("Levels are aggregate across listed expirations; pass expiration=YYYY-MM-DD for one expiry.")
How it works
- 1. Batch the three symbols
- GET /batch/gex?tickers=SPY,QQQ,IWM returns every level for one rate-limit unit.
- 2. Read the VIX
- GET /vix is the spot index with the day's change.
- 3. Name the regime
- Net gamma above zero is positive (pinning, mean reversion); below zero is negative (trend, wider ranges).
Schedule it
- cron
20 13 * * 1-5 APEXVOL_API_TOKEN=avmcp_... python3 morning_regime_brief.py
09:20 New York, weekdays. Times in the crontab are UTC.- Claude Code
/loop 30m python3 morning_regime_brief.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-morning-regime-brief.
Give me a morning regime brief: dealer gamma flip, call wall and put wall for SPY, QQQ and IWM, plus where the VIX is.
The assistant calls get_gex, get_vix_snapshot and answers from the same JSON the script prints.Set it up in:
Under the hood
2 endpoints,
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
- Premium 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.