Documentation

Data Infrastructure

How data flows from the market to your screen

Architecture Overview

The Ohey platform uses a multi-layer data pipeline to process raw options data and deliver it to the frontend. There are two primary data delivery modes, each optimized for different use cases.

HTTP Polling

All 24+ windows support HTTP data fetching. The frontend's Data Abstraction Layer requests processed options data from the API, which queries Redis-backed caches. Data refreshes on user action or automatic polling intervals.

WebSocket Streaming

12 WebSocket windows stream live data over a persistent WebSocket connection. Updates arrive as they are computed, requiring no manual refresh. Ideal for watching real-time shifts in gamma exposure, dealer positioning, and vol pressure.

Data Abstraction Layer

The frontend's Data Abstraction Layer (DAL) is a unified interface that every window uses to request data. It handles endpoint selection, authentication, error recovery, and response normalization so that individual windows don't need to manage API details.

WebSocket Connection

WebSocket-enabled windows connect to a single endpoint per symbol:

wss://{host}/ws/gamma-compact/{symbol}?token={jwt}

The server pushes a compact JSON payload on each update cycle. Each WS window extracts the fields it needs from this shared message — GammaPulse reads totalCallGex and totalPutGex, PinMap reads magnetStrike and spotPrice, and so on.

Reconnection Logic

If the connection drops, the client automatically reconnects using exponential backoff:

ParameterValue
Base delay3 seconds
Multiplier1.5×
Maximum delay60 seconds
Maximum retries10

After 10 failed reconnection attempts, the window displays a connection error state. Refreshing the page resets the counter.

WebSocket Windows

The following 12 windows use WebSocket streaming (all require Pro tier):

WindowKey Metrics Consumed
GammatrixFull gamma chain grid — per-strike GEX, delta, OI, IV (hybrid: also available via HTTP)
GammaPulsetotalCallGex, totalPutGex, netGex, aboveSpotGex, belowSpotGex
PinMapmagnetStrike, spotPrice, distanceToMagnet
VolCubeTop 10 strikes by absolute gamma concentration — magnet and barrier zones
SkewSentinelAverage IV skew metric
ThetaForgeΣ(callTheta + putTheta) / 1000 — aggregate K/day
FlipTrackGamma flip strikes, magnitudes, nearest flip to spot
FlowRateDirection (bullish/bearish), magnitude, flow type
EigenHedgePC1 Level, PC2 Slope, PC3 Curvature
VolEntropyShannon entropy of IV distribution
RegimeShiftRegime label, confidence ratio, strategy implications
IV Surface3D implied volatility surface across strikes and expirations (hybrid: also available via HTTP)

HTTP Windows

The remaining windows use HTTP data fetching. These windows request data on load and when you change the ticker, expiration, or chart type. They include both Free Tier and Pro-tier windows:

Gammatrix FREE (also WS)
Delta-Weighted OI FREE
Flashback DWOI FREE
Option Chains FREE
Gamma Flip Zone ADVANCED
Gamma Exposure (GEX) ADVANCED
OI Clustering Heatmap ADVANCED
IV Skew ADVANCED
IV Surface PRO (also WS)
Theta Decay ADVANCED
Vega Concentration ADVANCED
Dealer Hedging Pressure ADVANCED
PulseDeck PRO
Alert Manager PRO

Gammatrix and IV Surface are hybrid windows — they load initial data via HTTP and can also receive live updates via WebSocket. PulseDeck embeds 10 WebSocket modules internally but launches via HTTP data fetch.

Authentication & Authorization

Every API and WebSocket request is authenticated and authorized:

Backend Processing

The backend pipeline processes raw options chain data into the computed metrics that windows display:

1

Data Ingestion: Raw options chain data (strikes, expirations, Greeks, IV, OI, volume) is sourced from Polygon.io market data API, which aggregates exchange data from OPRA (Options Price Reporting Authority). Data is normalized and stored in Redis.

2

Computation: Gamma exposure, delta-weighted OI, IV surfaces, dealer hedging pressure, and other derived metrics are computed from the raw chains.

3

Delivery: HTTP endpoints serve computed data on request. The WebSocket server pushes compact JSON payloads for real-time windows on each update cycle.

4

Rendering: The frontend receives the data, passes it through the DAL, and renders it using Chart.js (2D charts — bar, line, area, scatter, step, bubble, heat map) or Three.js (3D IV Surface) visualizations.

Connection Status

WebSocket windows display a live connection indicator:

IndicatorMeaning
ConnectedWebSocket is active and receiving data.
ReconnectingConnection dropped. Automatically retrying with exponential backoff.
DisconnectedAll retry attempts exhausted. Refresh the page to reconnect.

Stale Data Handling

The platform includes safeguards against displaying outdated data:

Data Update Frequency

Update cadence varies by delivery method and market conditions:

Delivery MethodUpdate CadenceNotes
WebSocket streamingPer computation cycle (typically seconds)Server pushes on each completed computation cycle. Frequency depends on market activity, ticker popularity, and server load. During off-peak times, cycles may be less frequent.
HTTP auto-refreshConfigurable (15–60 seconds)User-adjustable polling interval. Lower intervals increase API load; the platform throttles to prevent abuse.
HTTP on-demandOn user actionData fetched when a window opens, or when the user changes ticker, expiration, or chart parameters.
Data freshness: Ohey sources data from Polygon.io and computes derived analytics on our servers. There is inherent latency in this pipeline: data provider transmission, server computation, and network delivery to your browser. WebSocket windows receive the latest computed results on each cycle; HTTP windows reflect the state at the time of your last request. Outside U.S. equity market hours (9:30 AM–4:00 PM ET), the platform displays the most recent closing snapshot — not live data. If you require ultra-low-latency direct exchange feeds, consider institutional terminal solutions.