OpenGEX is an open-source cross-asset options positioning monitor for GEX, OI, DEX, VEX and CHEX. It is designed for local research and visualization, with source-aware snapshots, bounded analytics caching, stale-while-revalidate loading, and a Plotly-based monitor.
Actual OpenGEX monitor rendering — BTC GEX view.
- GEX — gamma exposure, displayed in
USD / 1% move. - OI — open interest / normalized position units.
- DEX — delta exposure, displayed in
USD. - VEX — modeled long-option vanna exposure, displayed in
USD / 1 vol pt. - CHEX — modeled long-option charm exposure, displayed in
USD / calendar day.
The monitor also includes strike-level walls, POCs, filters, box zoom, legend visibility controls, asset watermarking, and data-quality indicators.
Actual OpenGEX monitor rendering — BTC VEX view.
Actual OpenGEX monitor rendering — BTC CHEX view.
Deribit provides crypto options such as BTC and ETH. Alpaca provides the US market assets configured in the registry, including QQQ, SPX, SPY, IWM, TLT, GLD, IBIT and direct equity underlyings. QQQ is the public display name for the internal NASDAQ/QQQ proxy mapping. Provider routing is source-aware and is not changed by the display label.
The runtime flow is:
provider adapters -> normalized option rows -> shared source/asset snapshot
-> analytics cache -> FastAPI API -> Plotly monitor
The project uses Python 3.11+, FastAPI, NumPy, Plotly, Requests and Uvicorn. Market snapshots and credentials are intentionally not part of the repository.
python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev]"
cp .env.example .env.localDeribit public endpoints can be used without credentials. Alpaca-backed
assets require the environment variables documented in .env.example.
python run_monitor.pyThe launcher prints the local URL and chooses the next available port when the preferred port is busy.
PYTHONPATH=src pytest -q
ruff check .
mypy .
python - <<'PY'
from html.parser import HTMLParser
from pathlib import Path
HTMLParser().feed(Path("data/monitor.html").read_text())
print("HTML/JS validation: PASS")
PYThe test suite uses local sanitized fixtures and does not require API secrets.
Copy .env.example to .env.local for optional Alpaca access. Never commit
.env.local, provider keys, authorization headers, live snapshots, caches, or
large market-data dumps.
OpenGEX is research and visualization software, not investment advice or a trading recommendation. Exposure values are modeled analytics. Public open interest does not identify dealer positioning; labels such as VEX and CHEX describe the project's modeled long-option convention, not observed dealer exposure.
See CONTRIBUTING.md, SECURITY.md, and the Apache-2.0 license.


