TRAI quant day-trading research

Glossary & methodology

Plain-English explanations of every metric on the dashboard.

Realized vs implied volatility
Realized vol (RV20) is how much SPY actually moved over the last 20 sessions, annualized. Implied vol (VIX) is what S&P 500 options are pricing for the next 30 days. When VIX sits well above realized vol (a positive "volatility risk premium"), options are pricing more fear than the market has shown — typical in calm, grinding tapes. When realized catches up to or exceeds implied, the market is moving more than expected and intraday ranges widen.
Term structure (VIX9D / VIX / VIX3M)
Compares implied vol across horizons: 9-day, 30-day and 3-month. Normally short-dated vol is cheaper (contango: VIX9D/VIX < 1 and VIX/VIX3M < 1). When near-term vol rises above longer-term vol (backwardation, ratio > 1), traders are paying up for immediate protection — a stress signal. This engine labels the regime "stress" whenever VIX9D > VIX.
VVIX
The volatility of VIX itself (implied from VIX options). Readings above ~110–120 mean the market expects large swings in fear, which often precede sharp moves.
VWAP / TWAP
VWAP (volume-weighted average price) is the average price paid during the session, weighting each 5-minute bar by its volume. Institutions benchmark execution to it, so price above VWAP means buyers have been in control on average; below means sellers. TWAP (time-weighted average price) weights every interval equally regardless of volume — used for executing an order evenly through time. A stock holding above VWAP into the close is a classic momentum confirmation.
Opening range (OR)
The high and low of the first 30 minutes (9:30–10:00 ET). A close above the OR high or below the OR low shows the day trended out of its initial balance. Rules here forbid new entries during that window so the range can form.
Order-flow imbalance
The difference between aggressive buying (trades lifting the offer) and aggressive selling (hitting the bid). Persistent imbalance moves price. This engine has no tick/quote data, so it uses proxies: relative volume, close location in the range, and close vs VWAP. True order-flow imbalance needs Level 1/Level 2 or trade-and-quote data.
Relative volume (RelVol)
Today’s volume divided by the 20-day average. >1.5 means unusual participation (news, flows); momentum signals require it. Mean-reversion signals require 0.7–1.5 — a big move on ordinary volume is more likely to be noise that fades.
Beta and residual returns
Beta (β60) measures how much a stock typically moves per 1% SPY move, estimated over the prior 60 sessions. The residual (beta-neutral) return is the stock’s return minus β × SPY’s return — the part not explained by the market. Residual z divides it by the stock’s usual residual noise, so +3 means an idiosyncratic move three times larger than normal. Trading residuals isolates stock-specific information rather than just levered market exposure.
1-day z-score
Today’s return divided by the standard deviation of the last 20 daily returns. |z| > 2 is a roughly 1-in-20 move; combined with ordinary volume it is the mean-reversion trigger.
ATR (Average True Range)
Average of the true range (high–low, including gaps from the prior close) over 14 days. Used for sizing: stop = 1 ATR, target = 2 ATR. The liquidity filter keeps ATR between 2% and 8% of price — enough movement to trade, not so much that stops get blown through.
Alpha decay
Signals lose predictive power as time passes and as others trade them. Intraday momentum edges typically decay within minutes to hours, which is why this playbook uses a 60-minute time stop and requires being flat by 3:55 ET. A premarket list built on yesterday’s data is a watchlist, not a trigger — confirm with live price action.
Liquidity-adjusted Sharpe
Sharpe ratio is return divided by volatility. A liquidity-adjusted version subtracts realistic trading costs — spread, slippage, market impact (which grows with order size relative to volume) — before computing it. A strategy that looks great on paper in thin names often has a much lower Sharpe after costs; the $500M ADV filter exists to keep costs small.
Gap risk
The risk that price jumps past your stop between sessions (earnings, news, macro data) so the realized loss exceeds the planned 1 ATR. Day trading that is flat by the close avoids overnight gap risk. Gap % shows how far a stock opened from the prior close; "Ext. gap" shows the latest pre/post-market print.
Regime label
Calm: VIX < 15. Transitional: VIX 15–22. Stress: VIX > 22 or VIX9D > VIX. In stress, risk per trade is halved (0.125%), ranges are wider, and momentum reversals are more violent. Unvalidated: the post-close run could not get final VIX/VIX9D/VIX3M prints (Cboe settles at 4:15 PM ET) even after a retry, so no label is called from stale data; risk defaults to the halved 0.125% until a run on final prints.
Correlated clusters
Several candidates from the same sector usually move together (e.g. five semis rallying on one headline). Treat a cluster as a single bet and take at most one position from it.

Calculation details

  • Daily bars: 6 months of daily OHLCV per symbol. Intraday: 5-minute bars (last 5 days, including pre/post-market) for VWAP, opening range and extended-hours gap.
  • Relative volume = latest session volume / mean of the prior 20 sessions. ATR(14) = mean true range of the last 14 sessions.
  • Realized vol = stdev of 20 daily log returns × √252. Beta = cov(stock, SPY) / var(SPY) over the 60 sessions ending the prior day.
  • Residual = today’s return − β × SPY return; residual z = residual / stdev of the 60 in-sample residuals. 1-day z = return / stdev of the prior 20 returns.
  • Long momentum: RelVol > 1.5, residual > 0, close in top 30% of range, close above VWAP. Short momentum mirrors it. Mean reversion: |1-day z| > 2, RelVol 0.7–1.5 (fade direction shown).
  • Regime: calm if VIX < 15; transitional 15–22; stress if VIX > 22 or VIX9D > VIX.