← Back to dashboard

Methodology

VORTEX Methodology v1.1 · effective 2026-08-27

VORTEX is a transparent weighted composite. Every input, weight, clamp and fallback is published here.

Formula

clamp(x) = max(-1, min(1, x))

VORTEX = 100 × Σ (wᵢ × Sᵢ)      range: −100 → +100
  where wᵢ are the effective weights: stale sleeves get w = 0 and the
  remaining weights are rescaled so they sum to 1.0.

Bias split (rescaled score, not a poll):
  Bullish = (VORTEX + 100) / 2 %      Bearish = 100 − Bullish

Weights & scoring rules

Funding Rates20%clamp(-rate / 0.05)Contrarian
ETF Flows15%clamp(net$M / 500)Directional
Fear & Greed10%clamp((50 − idx) / 50)Contrarian
Open Interest Δ24h10%clamp(ΔOI% / 10)Trend-confirming
Coinbase Premium10%clamp(prem% / 0.5)Directional
RSI (Daily 14)10%clamp((50 − RSI) / 40)Contrarian
VWAP Position10%clamp(Δ / (0.02 × VWAP))Directional
Position vs POC
Saturates at ±3% from POC; after large trends this sleeve is often maxed.
8%clamp(Δ / (0.03 × POC))Directional
Value Area Position7%clamp(Δ / (0.5 × (VAH−VAL)))Positional

Weights are asserted to sum to 1.0 at module load.

Data sources (single source of truth)

source_venue is the venue that actually answered; fallbacks are used when the primary returns 403/429.

Volume profile — what it is and is not

The 30-day profile is an approximation: a 50-bin histogram of the last 30 daily candles, distributing each bar's volume across the bins it spans. It is not exchange-level VAP/VPIN or tick-by-tick volume-at-price. The POC is the highest-volume bin; the area expands outward from the POC until 70% of total volume is captured, defining VAH, VAL and VAM = (VAH + VAL) / 2. Levels are labelled “Approx. 30D profile (daily bars)” until a true VAP feed exists.

Session VWAP

“UTC session VWAP” is volume-weighted average price over 00:00 UTC → the snapshot time on the data_as_of date, computed from hourly candles at the serving venue.

ETF flow settlement

Only the latest fully populated Farside net-flow session is used — never the in-progress calendar-day row. Rows still containing empty issuer cells, or implausibly small totals while the table is filling, are rejected in favour of the previous complete print. The settled session date is published as data_date and badged “Settled · YYYY-MM-DD”. Past 5 calendar days the sleeve is marked stale.

Stale policy

A metric is stale when its fetch fails and no cached value younger than 36h exists. ETF flows are settled-only: the latest fully settled Farside session stays live (state 'lagging') while its session date is within 5 calendar days, so weekends and holidays never mark it stale. 1-2 stale metrics: score published with remaining weights renormalized to 1.0. 3+ stale metrics, or funding and ETF both stale: headline score suppressed, table retained. Stale metrics are omitted from the weighted sum - never scored as 0.

Score bands

Compute cycle

One compute per day, shortly after 01:00 UTC, once funding settlements and ETF prints finalize. Visitors and the public API always read that cached snapshot — page loads never trigger ingestion. Recompute is reachable only through an authenticated scheduler endpoint.

Language

VORTEX outputs a directional bias score — never a probability, never a trading signal, and never financial advice.