TEDG · AUG 2025 – PRESENT

TradingEdge

A production market-data and analytics platform I built and run solo, used by ~2,600 paying members: dealer positioning, options flow, the volatility complex and earnings research.

PRODUCTION
SPXW · Net dealer gamma, strike × expiryTEDG
LOADING_

The gamma heatmap members use to see where dealer hedging concentrates. Values normalised.

How it works
  • Ingests 10+ market-data APIs on a timed ET schedule
    • Option chains & greeks, flow, fundamentals, macro, the VIX complex
  • Computes dealer exposure, IV-implied levels and vol-regime verdicts
    • GEX/DEX per strike × expiry, ±σ bands from ATM IV, futures-curve carry
  • Strategy scanner only surfaces setups that beat the stock’s own baseline
▶ Delivered to ~2,600 paying members through live WebSocket dashboards
Paying members
~2,600
Commits (solo)
~1,800
Lines of code
~120k
CLI / scheduled cmds
95
Data providers
10+
Test files
109
Overview

TradingEdge is the analytics platform behind a paid trading community, and the delivery layer for most of my quant work: dealer-positioning maps from my gamma engine, IV-implied levels, the volatility term structure and a backtested setup scanner. I designed, built and operate it solo — about 1,800 commits in 14 months.

It is where I learned to ship numbers other people act on: 10+ data vendors reconciled on a dense ET schedule, guards against stale and inconsistent data, and the monitoring, security and access control a paying user base demands.

Architecture

A Laravel monolith with a dense ET-timezone scheduler (overnight pipelines, a pre-market cache warm, intraday scans every 10 minutes, end-of-day and weekly jobs), all guarded with single-server and no-overlap locks.

Live options flow arrives by signed webhook from a separate worker and is pushed to members over private WebSocket channels. Dealer-gamma ladders are served by my separate GEX engine (see GEX) and polled during market hours.

Quant components

Dealer exposure per strike × expiry (delta and gamma, with cumulative roll-ups and call/put/GEX walls), IV-implied σ levels per timeframe using the first expiry that covers the full period, and an SD-level alert scanner with a liquidity floor so odd-lot prints on thin names don’t trigger.

A volatility card that turns the VIX term structure and futures curve into regime verdicts, and a cross-asset divergence ranking of vol level versus short-horizon change.

Running it for a paying user base

No self-registration: accounts are reconciled nightly against the community’s member export — created, updated and deactivated automatically.

Mail allow-lists stop staging from emailing real members; release-based deploys keep production stable while shipping daily.

Highlights
  • IV-implied σ levels from interpolated ATM IV rather than the chain average (far-OTM wings inflate it), using the first expiry that covers the whole period, with chains filtered by capture time so stale pre-market marks can’t break put-call parity.
  • Setup scanner with a statistical gate: every setup is backtested deterministically and shown only if it beats the same stock’s ordinary-day baseline, then re-tested on historically matched conditions, with matching criteria relaxed in a pre-declared order. An LLM writes the narrative only after the decision is made.
  • Volatility complex: constant-maturity term structure, futures carry annualised on actual settlement dates, own-history percentiles and a calm / transitional / stressed regime classification.
  • Live GEX ladders for SPXW, SPY and QQQ with king-node and contested-node detection, a replay scrubber, and a gamma ⇄ vanna heatmap whose change detection uses a two-gate notability filter across four orders of magnitude.
  • Earnings pipeline: transcripts → structured extraction, constrained by a rule-based quality-of-earnings analyser so the summary can’t overstate the numbers.
  • Production engineering: 95 scheduled and CLI jobs behind single-server and no-overlap locks, 109 test files, automated member provisioning, an audit trail, and quantised outputs to resist scraping.
Stack
PHP 8.3Laravel 12Reverb WebSocketsMySQLRedisAlpine.jsChart.jsPlotlyThetaDataFMPUnusual WhalesFREDClaudeOpenAIDigitalOcean / Forge