
Built a "tape reading" layer on top of the option chain that shows IV divergence, OI walls, and regime shifts as plain text bullets (free + self-hosted)
So I added a "Narrative" view to my open-source trading assistant (OpenMTOps). Instead of numbers, it outputs labeled sentences describing what the chain is actually doing at that moment. It works for intraday & is real-time based on websocket.
Here's what each label means:
DIVERGE
This fires when spot moves one way but PE (or CE) premium moves the other way. For example: spot +0.05% but 75,100 PE premium jumped 2.9% with IV spiking from 13.8% → 16.6%. That's not hedging noise, rather that's someone aggressively buying puts despite spot holding. The label tells you the strike, the price move, and the IV jump so you can decide if it's worth tracking.
WALL / FLOOR
Finds the highest OI strike on CE side (resistance) and PE side (support) and tells you exactly how far spot is from each. "CE wall at 75,000 with 68.73L OI, spot is 128 pts below" is more useful mid-session than hunting for it manually.
REGIME
Tracks average IV compression or expansion across the whole chain since session open. "Average CE IV compressed 15.3% → 10.7% (-30.5%)" means premium sellers are winning and a directional move is likely. It also tells you if IV is stable across strikes (writers holding positions) or diverging (one side getting hit).
CLUSTER
Looks for coordinated fresh writing or unwinding across multiple strikes simultaneously. "Widespread fresh writing on PE side across 74,600 / 74,700 / 74,800 / 74,900 / 75,000 / 75,100 / 75,200" is a very different signal than a single strike getting written. Institutional positioning often shows up here first.
Below the bullets, there are CE and PE Time vs IV charts per strike so you can see the IV trajectory for each strike through the session and visually confirm what the narrative is telling you.
The whole thing runs locally. No server, no subscription, no data leaving your machine. You need a Dhan account for live data (free API). Stack is Flask + DhanHQ WebSocket + SQLite for candles.
Repo link on the profile.
For those who've built similar chain readers curious what signals you watch that aren't covered here. PCR and max pain are already in the backend, thinking about creating gamma exposure next.