FX · ENGINEER

Methodology & glossary

What powers the intelligence tells the story; this page is the fine print. Every number on the scanner, the symbol dossiers, and the member briefs has an exact definition — the window it is measured over, the threshold that flags it, and the honest caveats. If a term in a brief or review is unclear, it is defined here.

Jump to: where the numbers come from · how to read any number · extremity · price context · retail SSI · futures COT · dealer gamma · vol & carry · correlations · predicted vol · episodes · analogues · regime banner · brief & review measures · thresholds · glossary

Data lineage

Where the numbers come from

Every reading on FX Engineer is a measurement against history — today's value compared to years of its own past. That only means something if the history is complete. This is the whole path, from the source feed to the number on your screen.

SOURCE FEEDCOLLECTEDCANONICAL RECORDWHAT YOU SEERetail broker bookInstitutional pricesCFTCListed optionsFREDhow the crowd is placedthe traded pricefutures commitmentsdealer gammamacro seriesevery minuteevery minuteweekly (Friday)every 15 minon releaseOne daily recordper symbol, per dayprices from 2005positioning from 2014COT from 2006Compared to itselfwhere today sits against30d · 90d · 1y · 3y · 5y ·all historyScanner · extremitySymbol pagesBriefs · daily emailCHECKED NIGHTLYour positioning against the originating book · the live site against the database · stored values recomputed from source · gaps in every series
Five source feeds collapse into one daily record per symbol. Nothing is averaged across sources — each reading keeps a single origin. The number you see is that record compared against its own history.

One record, not several

A percentile is only as honest as the series behind it. If the history has holes, or if two disagreeing sources get mixed into one average, the number still looks fine — it just isn't. So the daily record has two rules.

One source per reading. Where a currency pair has both a directly observed retail book and one derived from its component pairs, the direct reading is the published figure and the derived one is shown alongside it. They are never averaged together — the gap between them is information, and averaging destroys it. Defined in full under direct vs derived reading.
Complete, and measured as such. Across the currency pairs we publish, the daily positioning series is missing 0.24% of trading days since 2014, and the daily price series 0.12% since 2005 — holiday closures and brief outages. Neither has ever been missing for more than a single day in a row. We measure this rather than assume it, because a gap is the one defect a freshness check cannot see.

What each feed contributes

FeedWhat it measuresCadenceHistory
Retail broker bookRetail positioning — how the crowd is placedEvery minute2014
Institutional price feedPrices, from which daily ranges and levels are builtEvery minute2005
CFTCFutures commitments by trader categoryWeekly, Friday2006
Listed options dataOptions positioning and dealer gammaEvery 15 min2026
FREDRates and macro series behind carryOn release1973

How a reading becomes a percentile

Take retail positioning in a pair. The raw reading is a share — say 72% long. On its own that number is close to meaningless: some pairs sit above 70% long for months at a time, others almost never do.

What matters is where it sits for that pair. So the reading is ranked against its own history: 72% long might be the 96th percentile over the past year in one pair and the 54th in another. That ranking is the reading we publish. It is why the history has to be complete, and why we report the gaps.

Percentiles are context, not forecasts. A reading at the 96th percentile says the crowd is more one-sided than it has been 96% of the time — not that price is about to move, and not which way. What usually happens next from a given starting point is a separate question, answered separately.

What checks the checks

Four things run nightly against the base record — the daily prices and positioning everything else is computed from — because the failure that matters is the silent one: a number that stays plausible while going wrong.

CheckWhat it would catch
Source comparisonOur stored positioning drifting from what the originating book actually publishes
Site vs. databaseA page rendering something other than what the record says
Recompute from sourceA stored statistic that no longer reproduces from its own inputs
CompletenessHoles appearing in a series that a percentile is computed over

The layers built on top of that record — carry, correlations, volatility regime, gamma — are deterministic transforms of it: if the base record is right and the arithmetic reproduces, they follow. Of the 10 we publish, 2 additionally carry an independent outside cross-check. The rest do not yet, and where a reading has nothing independent behind it we track that and treat it with the caution it deserves, rather than presenting it with the same confidence as one that is verified.

Spans and completeness figures on this page are generated from the live database, not hand-entered — last measured 2026-08-20. Feeds are listed by what they contribute to published readings. The full internal provenance report, including what verifies each series, is regenerated on the same schedule. What powers the intelligence covers the six systems these feeds support.

How to read any number here

Everything is measured against the instrument's own history. A reading is never “high” in the abstract — it is a percentile or a z-score against that instrument's own trailing window. That is what makes 35+ very different instruments comparable on one screen.
Percentiles rank the distribution, not the range. “92nd percentile of its year” means 92% of the year's daily closes were below today's — not that price sits 92% of the way between the 52-week low and high. A market that spent the year near its highs can print a high percentile while sitting mid-range.
Windows are trading days. “1y” is the trailing 365 daily observations, “90d” the trailing 90, and so on. A data gap that would silently stretch a 1y+ window across far more calendar time voids the stat rather than fabricating it.
Point-in-time, always. Historical stats, analogues, and backfills only use data that existed at the moment being measured. When we say “what happened last time,” each “last time” was scored with only its own past.
Freshness is disclosed, not papered over. Sources arrive on different clocks (prices every minute, options hourly, COT weekly). When an input is stale or too thin to compute, the surface says so — a missing reading is shown as missing, and it simply doesn't count toward extremity.
The headline number

Extremity

Extremity counts how many of an instrument's context factors are at a statistical extreme right now. Six factors are eligible; each is a yes/no test:

FactorCounts as extreme when…
Priceits 1-year percentile is ≤ 10 or ≥ 90
Retail crowd (SSI)|z| ≥ 2 vs its trailing year
Futures (COT)|z| ≥ 2 vs the trailing 52 weekly reports
Volatilitythe vol regime is elevated/extreme, or 30-day realized vol is ≥ 85th percentile of its year
Dealer gamma (paused)the live gamma regime is negative (amplifying). Stale or thin chains don't count. Currently withdrawn, so this factor is absent rather than unlit — it drops out of the denominator, and extremity is scored out of the factors that remain
Key levelspot is sitting on a 50-pip round level or a weekly/monthly fib (within the tolerance below)

The score is shown out of the factors that have data for that instrument (an index without SSI is scored out of fewer factors, not penalized). Extremity is a count of stretched conditions — it says how unusual the situation is, never which way it resolves.

System 1 · price

Price context

Percentile windows. Each instrument's daily close is ranked against its trailing 7d, 30d, 90d, 1y, 3y, 5y, and all-time windows (tie-averaged rank of closes). The same windows carry a z-score: today's close vs the window's mean, in standard deviations.
1-year range. The highest daily high and lowest daily low of the trailing year, with the width in pips.
Distribution histogram. The actual distribution of the last year's daily closes — not a fitted bell curve — with a marker at spot. The marker's bin placement uses the histogram's own base, so it can differ from the headline percentile by a point or two; the headline number is the authoritative one.
Round levels. The nearest 50-pip multiple — a half figure (1.0850) or whole figure (1.0900). “Sitting on” a level means spot is within 12% of the instrument's 20-day average true range of it (a volatility-scaled tolerance, so a quiet pair must be much closer than a wild one; fallback 8 pips when ADR is unavailable).
Fibonacci levels. Retracements of the trailing weekly (7-day) and monthly (30-day) high–low swing, using only the golden three ratios — 0.382, 0.5, 0.618 — with the same ADR-scaled “sitting on” tolerance. We deliberately dropped single-session swings and the minor 0.236/0.786 ratios: tested live, they put price “on a fib” most of the time, which makes the flag meaningless.
ADR (typical daily range). 20-day averages, in pips: true range (high–low, widened for overnight gaps vs the prior close) and body (open→close). True range is what a holder experienced; body is what a chart shows.
Trend-model trigger levels. A large share of currency trading is run by systematic programs, and the rules most of them follow are not secret — they are the textbook ones: buy a break above the recent high, sell a break below the recent low, treat a 50-day / 200-day moving-average cross as the trend turning. Because the rules are public, the levels where they fire can be computed from price alone.We replicate them and show the nearest ones: the 20-day and 55-day breakout channels (the classic fast and slow breakout lookbacks), the 200-day average itself, and the exact close that would put the 50-day average on the 200-day at the next session. Each is shown with its distance in pips and as a multiple of the pair's typical daily range, so you can tell a level that is in play this week from one that is a quarter away.Two honest limits. First, this is a replication of public rules, not a view of anyone's actual book — nobody publishes real CTA positions, and we do not claim to see them. Second, the moving-average cross level is exact for one session ahead only: both averages roll forward each day, so the level drifts. When the two averages are far apart, no single day's close could bring them together, and we show nothing rather than print an unreachable number.
System 2 · retail positioning

Retail sentiment (SSI)

The Speculative Sentiment Index measures how the retail FX crowd is positioned. We show the share of retail traders long, and a signed ratio of the two sides, scored against itself: the z-score and percentile are computed over the trailing year of daily readings (each daily reading is the mean of that day's hourly snapshots, from a single source — readings from different sources are never averaged together).

Two figures, two clocks. The headline reading on the scanner and on each symbol page is the last completed hour, stamped with its own time in UTC — that is the number to compare against a broker's live sentiment page. Beneath it we show the day's average, which is the figure every percentile and z-score on this site is computed from, because those statistics are built on a trailing year of daily readings. The two differ by a point or two on a normal day, and by more when the crowd moves during the session. The daily figure for a given day is finalised after that day closes, so the average shown is the most recent completed day.

The percentile and z-score are computed on the share long rather than on the ratio. That is deliberate: the share long runs smoothly from 0 to 100%, while the ratio jumps straight from +1 to −1 as the crowd crosses an even split. Averaging or measuring distances across that jump would produce readings the scale cannot represent, so every statistic is computed on the smooth version and the ratio is shown for reading.

An extreme SSI reading marks a stretched crowd — a condition under which volatility events cluster. Our published research is explicit that it is not a directional edge: fading the crowd is a coin flip out of sample. That is why SSI appears here as context, never as a signal.

The reading is a signed ratio, not a percentage balance: +2.0 means twice as many retail traders are long as short, −3.0 means three times as many are short as long. Because it is a ratio of the two sides, it has no values between −1 and +1 — an evenly split crowd reads as ±1, and the sign flips as the crowd crosses 50/50. Alongside it we show the plain share of traders long, which is the easier number to read.

Direct vs derived, and why some pairs show both. The headline reading is always the direct one — actual retail orders booked on that pair. Where a pair has no direct feed, we derive a synthetic reading from the positioning on its two USD legs and label it as such. We never average the two into one number.A handful of crosses have both, and on those symbol pages we show both, marked . The gap between them is itself information: the direct reading is what retail actually did on the cross, while the derived reading is what their positioning on the underlying majors implies. When the two disagree, the crowd is treating the cross as its own trade rather than as the sum of its legs — worth knowing, and not visible anywhere else on the page.

System 3 · futures positioning

Futures positioning (COT)

From the CFTC's weekly Commitments of Traders report (positions as of Tuesday, published Friday), with a percentile and z-score over the trailing 52 weekly reports.

Every currency futures contract is that currency against the US dollar, so there is no contract for a cross like EUR/CHF. We build one. Each leg is measured as its net position divided by that contract's open interest — a share rather than a raw count, because contract sizes differ between currencies and raw counts cannot be compared. A pair's reading is then the base currency's leg minus the quote currency's, counting the dollar as zero: EUR/CHF is EUR's positioning less CHF's, EUR/USD is simply EUR's, and USD/CHF is CHF's inverted — being long the franc is being short USD/CHF.

The percentile and z-score are then computed on that combined series, not by subtracting one leg's z-score from the other's. That distinction is not cosmetic: currency positioning moves together in risk-on and risk-off, and ignoring how the two legs co-move overstates how unusual a reading is — on EUR/CHF the difference has reached two full standard deviations.

Different surfaces deliberately read different trader groups, and each labels its own: the scanner shows the classic large-speculator (non-commercial) net; the COT brief and monthly review read the leveraged-funds leg of the Traders-in-Financial-Futures report (for commodities, the money-manager leg) — the fast money most associated with pressing trends. Both are 52-week normalized.

On a symbol page we go one level further and show who holds the position, because the same net means different things in different hands. The Traders-in-Financial-Futures report splits the market into leveraged funds (hedge funds and CTAs — fast, and quick to unwind), asset managers (pensions, insurers, funds — slow in and slow out), and dealers, who intermediate customer flow and therefore mostly mirror everyone else rather than express a view. A crowded leveraged-fund position is the fragile kind; a crowded asset-manager position is the structural kind. When the two lean opposite ways we say so, and we flag it rather than averaging it away.

One caution we state rather than hide: TFF is a separate classification from the legacy non-commercial net shown above it — not a breakdown of it. The two do not add up, and we never present them as though they do.

Alongside the raw contract count we show the net position as a share of open interest (net ÷ total open interest). Raw counts aren't comparable across decades — markets grow — so the share-of-OI reading is percentile-ranked over the full report history (3-year and all-time windows), not just 52 weeks. A high percentile means speculators are already heavily committed relative to the market's size: less dry powder left on that side.

System 4 · options

Dealer gamma (GEX)

Dealer-gamma readings are currently paused. They are withdrawn from every surface while we complete a direct exchange derived-data license, so no gamma figure is being published anywhere on the platform right now. The method below stays published: it is how these readings are built, and it is what they will be built from when they return.

The measure. For every strike in the listed options chain we estimate dealer gamma exposure in dollar terms from open interest and each option's gamma, with puts negated (dealers are assumed net short puts). The sum across the chain sets the regime: positive — dealer hedging leans against moves (dampening); negative — hedging chases moves (amplifying).
Walls and the flip. The call wall is the strike at or above spot with the largest positive net gamma (potential resistance); the put wall is the strike at or below spot with the deepest negative net gamma (potential support); the gamma flip is where cumulative net gamma crosses zero. Futures-scale strikes are converted to each pair's own quote scale — for USD-base pairs that inversion also swaps which side is the call wall vs the put wall; cross pairs use a two-leg synthesis.
Why FX is not equities here. Most published gamma writing is about index and single-stock options, where the familiar story is pinning: dealers long gamma near a big strike buy weakness and sell strength, and price gets held near the level into expiry. That intuition travels badly to FX, and the reason is what trades. A large share of FX option interest sits in barrier options — contracts that knock in or knock out if spot trades a level. A dealer hedging a barrier is not defending it; as spot approaches, the hedge that keeps them flat gets larger in the direction of the move, and once the barrier trades the hedge unwinds at once. So the characteristic FX behaviour around a well-known level is acceleration through it, often followed by a sharp stall — closer to a stop-run than a pin.We say this because the vocabulary is borrowed and the mechanics are inverted, and reading an FX level through the equity lens gets the direction of the effect backwards. Two honest limits: our gamma readings are computed from listed exchange options, which do not include the OTC barrier book, and barrier levels themselves circulate through bank chatter rather than any public feed — so we describe the mechanic and never claim to know where the barriers are.
Honest states. A chain must have at least 50 strikes carrying open interest to compute at all — thinner chains show as thin rather than pretending. A snapshot older than 30 hours shows as stale and stops counting toward extremity. Metals, indices, and oil have no listed FX chain, so their regime (never walls) comes from the matching ETF options chain, labeled as such.
System 5 · volatility & rates

Volatility & carry

Realized vol. The annualized standard deviation of daily log returns over the trailing 30 days, with a percentile vs the trailing year and vs all time. The regime label (ultra-low → low → normal → elevated → extreme) is set by the all-time percentile: extreme ≥ 95th, elevated ≥ 75th, normal ≥ 25th, low ≥ 5th.
Implied vol. Front-month at-the-money IV from the options surface, shown only when the snapshot is fresh (within 7 days), with the IV − RV spread. A strongly positive spread (options pricing more than reality is delivering) can bump the regime one tier.
Carry. The short-term rate differential, base minus quote, with a 1-year percentile and z-score and the 5-year range. The USD leg is SOFR (a daily market rate); other legs are central-bank policy-rate proxies from FRED, mostly monthly, forward-filled to daily before differencing. Where a currency's series is unavailable or lagging, the reading is omitted or its confidence is reduced — not guessed. The Thesis Check also shows the ~3-month change in this gap beside the spot move over the same window (“rate gap vs spot”) — a description of whether the two series moved together, never a fair-value claim.
System 6 · co-movement

Correlations & drivers

Symbol-page correlations: Pearson correlation of daily log returns over a rolling 90-day window, against every other instrument in the universe (including the cross-asset set); we show the six strongest by absolute value, each with a percentile telling you whether that relationship is unusually tight or loose vs its own year.

The daily drivers read uses a shorter 20-trading-day window against five reference markets (S&P 500, DAX, gold, silver, oil); the “dominant driver” is simply the largest absolute correlation. Both are descriptive co-movement — never lead/lag, never causation, never a forecast.

Members · the one model

Predicted volatility

The RV forecaster is the only predictive model on the surface, and it predicts size, never direction: the expected absolute move over the next 1, 2, 4, 8, 12, and 24 hours, in % and pips at current spot. “Move” here means close-to-close — where price ends up at the end of the horizon versus where it started, not the distance it travels along the way. A pair can range 40 pips and close 5 from where it began; this model forecasts the 5. That is why these numbers read smaller than an average daily range. Alongside the expected move we publish the wide-day figure (the 90th-percentile outcome — only one horizon in ten exceeded it historically) and the calibrated chance of clearing that horizon's elevated-move bar. Forecasts are FX-only and refresh hourly.

Because it is a prediction, it is the one number we grade continuously in public — see the live calibration on What powers the intelligence. Skill concentrates at short horizons and fades toward a day out; we publish the whole curve, not the flattering end.

The event layer

Episodes — what the engine flags

An episode is a mechanically detected market event. Each type has a fixed trigger, fires point-in-time, and is then measured over a ten-trading-day window — an episode is resolved once that window has fully elapsed and its outcome is scored.

Episode typeFires when…Severity =
Crowd extremeretail SSI reaches |z| ≥ 2 vs its year, on a day the crowd was actually measured|SSI z| (capped at 5)
Crowd-reading divergenceon a pair with two positioning readings, the gap between them reaches |z| ≥ 2 against that pair's own year of disagreement, on a day both readings are live|gap z| (capped at 5)
Gamma extremetotal dealer gamma reaches |z| ≥ 2 vs its full history|gamma z|
Macro surprisea high-impact release lands |z| ≥ 1.5 from consensus, scored against that event's own release history (min. 20 priors)|surprise z| (capped at 4)
52-week extremea close beyond the trailing 252-day high or low|252-day close z|
Month breaka close beyond the prior calendar month's high or low|21-day close z|
Range expansionthe day's range reaches 2× the 20-day ATRthe ATR multiple itself
Severity. A continuous per-type score of how extreme the trigger was — a z-score for every type except range expansion, where it is the ATR multiple. Scales differ by type, so severities are never compared across types; notable means top-decile severity within the episode's own type across the full record. The crowd z-scores are capped at 5: across every reading a broker book has ever published, the largest we have recorded is 4.9, so past that point the number is no longer telling us the crowd is more extreme — it is telling us the series it was measured against barely moved. Episodes that hit the cap are marked low confidence, and the uncapped reading is still carried underneath.
Reading basis. Which positioning series a crowd reading came from. Direct is the broker's own book for that pair. Derived is a reading computed from two other books — the only reading available for ten of our pairs, and a second opinion on eleven others that carry both. The two are detected, scored and shown separately and are never merged into one number: they routinely disagree, and that disagreement is itself something we track. Only the direct reading feeds an instrument's extremity score.
Outcomes. Each episode's window records the move at fixed checkpoints, the best and worst excursions (MFE/MAE), and the realized range (highest high to lowest low, as % of the trigger price). Context episodes resolve to a volatility verdict — vol expanded (realized range beyond 1.5× the instrument's own typical ten-day range), vol normal, or vol contracted (under 0.6×). Crowd-extreme episodes instead score whether price reversed, continued, or ground sideways (a ±0.5% five-day band).
Sign conventions. Price-, gamma-, and macro-episode outcomes are raw price moves: positive means price rose from the episode-day close. Crowd-extreme outcomes are scored relative to fading the crowd. Any table that pools types together therefore uses direction-agnostic measures — |move| and realized range — never signed averages.
Members · what happened last time

Analogues & the typical path

Selection. Analogues are matched per episode type, always from strictly earlier episodes: price episodes by a standardized nearest-neighbour match on the instrument's context fingerprint (price percentile and z, crowd z, vol percentile, carry z) and by same-symbol, same-direction recency; gamma episodes on the gamma feature set (level, imbalance, distance to flip, dealer sign); macro episodes to the same country-and-release history by closeness of surprise; crowd-reading divergences within the same pair only, to earlier divergences of the same kind, by closeness of the gap z. Typically the five to six closest matches surface.
The typical path. Across an episode's analogues we plot, at each horizon (sessions after the event), the middle half of outcomes — the 25th to 75th percentile band — with the median marked. A horizon needs at least three analogues to draw; small samples are dropped, not smoothed over. A band straddling zero means history genuinely split both ways.
What it is not. Analogue records are historical distributions, not forecasts. The past is not the future; the value is knowing the base rate — and how widely it scattered — before the market opens.
The backdrop

The regime banner

The axes. A multi-dimensional macro engine distills ~40 inputs into five axes — growth, inflation, policy, deep stress, and live sentiment. Each input is a percentile against its own history, signed toward its pole, and each axis is the average of its inputs.
The name. The named character (Goldilocks, Reflation, Stagflation, Deflation scare…) comes from the growth × inflation quadrant, computed on smoothed axis readings so the name doesn't flap day to day; inside a narrow transitional band the engine says Transitional / mixed rather than asserting a pole. Structural tags (higher-for-longer, sticky-inflation, strong-dollar…) are absolute-level flags layered on top, and a stress state (calm / elevated / stress) trips on deep-stress readings or any of a set of classic tripwires (yield-curve inversion, Sahm rule, VIX term structure…).
Free vs member. The name, axis readings, tags, stress state, and plain-English summary are free. Members additionally see the trajectory — which axes are moving, how fast — and regime analogues: the closest historical windows on the same axes, with what followed. The banner also states its own coverage depth and confidence rather than implying certainty it doesn't have.
Member briefs & the monthly review

Brief & review measures

|5d move|. The size of the net move five sessions after an event, ignoring direction, as % of the trigger price. Reviews report medians, not averages, and don't score direction — these are volatility events, not directional signals.
Was that normal?. The month's follow-through vs the full-record base rate for the same event types — median |5d| and the share of “big” moves (|5d| ≥ 1%).
Tensions. Markets where the retail crowd and leveraged funds are stretched on opposite sides — each side at |z| ≥ 1 or a top/bottom-decile reading of its year. Both z-scores cover the same trailing year: crowd from daily retail readings, funds from the 52 weekly COT reports.
Hot / cold volatility. 30-day realized vol at or above the 90th percentile of its year (hot) or at/below the 10th (cold).
Stretched and compressed (“coiled”). Instruments at a 1-year price extreme (≥ 95th or ≤ 5th percentile) while realized vol sits in the bottom quartile of its year.
Pips in reviews. Whole numbers, converted per instrument with the site's single pip library. Tables that pool many instruments stay in % — a pip means a different thing on each.
Honest fine print

One word, several thresholds

“Stretched” and “extreme” are operationalized differently by different surfaces, on purpose — a detector that opens a ten-day measurement window should demand more than a weekly digest that highlights a row. Rather than pretend there is one number, here they all are:

SurfaceRule
Episode detectors|z| ≥ 2 (SSI, gamma) · |z| ≥ 1.5 (macro surprise)
Scanner extremity|z| ≥ 2 (SSI, COT) · price percentile ≤ 10 / ≥ 90 · RV ≥ 85th
Review tensions|z| ≥ 1 or top/bottom decile, opposite sides
Weekly brief highlight|z| > 1.5
COT brief extremetop/bottom decile or |z| ≥ 2

Other fine print worth knowing: the scanner's histogram marker and its headline percentile use slightly different bases (the headline is authoritative); the symbol page's window ladder runs 7d–5y and all-time; and the scanner's COT column reads the non-commercial leg while the briefs read leveraged funds — both are labeled where shown.

Glossary

ADR (average daily range)
The 20-day average of a market’s daily range, in pips or points. We show two measures: true range (high to low, adjusted for overnight gaps) and body (open to close).
Analogue
A past episode whose measurable context most closely matched the current one. Analogues are always selected from strictly earlier data, so each one was genuinely knowable at its own moment.
Barrier option
An FX option that knocks in or knocks out if spot trades a specific level. It matters here because hedging one does the opposite of the equity-style “pin”: as spot nears the barrier the dealer’s hedge grows in the direction of the move, so price tends to accelerate through a known level rather than stall at it. Barrier levels trade over-the-counter and are not in any public feed — we describe the mechanic, never claim to know the levels.
Asset managers (TFF)
Real money in the CFTC’s Traders-in-Financial-Futures report — pension funds, endowments, insurers, mutual funds. Slow to build a position and slow to leave it, so a crowded asset-manager net reads as structural rather than fragile.
Cross-validated AUC
How well a forecast model separated the hours that produced a large move from the hours that did not, measured before the model went live. AUC runs from 0.5 (no better than chance) to 1.0 (perfect). We publish the average across four out-of-fold validation periods rather than the score on a single held-out block: a single block can flatter a model, and ours did — on all 27 forecast horizons the single-block score came out higher than the cross-validated average, and on 17 of them higher than every individual fold. This is a pre-launch number and it is not a promise. What the model has actually done since going live is a separate figure on our track record, scored from a far larger set of real predictions — and it is lower than this one.
Carry (rate differential)
The base currency’s short-term rate minus the quote currency’s, from FRED series. The USD leg uses SOFR, a daily market rate (it can blip a few basis points at quarter-end funding turns); other legs use central-bank policy-rate proxies, mostly monthly. Positive means holding the pair earns the differential; negative means it costs it.
COT (Commitments of Traders)
The CFTC’s weekly report of futures positioning (Tuesday’s close, published Friday). Different surfaces read different trader groups — see the futures-positioning section.
Rate gap vs spot divergence
The change in the carry differential over roughly the last three months, shown beside the spot move over the same window — did the rate gap shift, and did spot go with it? A gap move of at least 0.25 percentage points and a spot move of at least 1% count as material (display conventions, not validated thresholds). Computed from the same mixed-cadence rate proxies as carry, so it is a slow description of two series — not a fair-value model, and not a prediction of convergence.
Dealer gamma (GEX)
A dollar estimate of options dealers’ hedging pressure, summed across an options chain. Positive gamma tends to dampen moves; negative gamma tends to amplify them.
Dealers (TFF)
Swap dealers and other intermediaries in the CFTC’s Traders-in-Financial-Futures report. They sit on the other side of customer flow, so their net is largely the mirror of what everyone else is doing rather than a directional view of their own — which is why we show their position but never count it for or against a thesis. Counting it would double-count the leveraged-fund and asset-manager positions it reflects.
Correlation (90-day)
Pearson correlation of daily log returns over the trailing 90 days, against every other instrument we track: +1 moves in lockstep, −1 moves exactly opposite, 0 no linear relationship. The percentile beside it ranks today’s correlation against that same pair’s own past year, so you can tell a relationship that is unusually tight right now from its normal state. Co-movement only — never which one leads.
Dossier
The per-symbol readout behind a scanner row: where price sits, who is positioned, what it moves with, recent episodes, and — for members — the “what happened last time” history. A dossier is assembled from the same facts the scanner shows; it adds depth, not a different opinion.
Episode
A dated market event our engine detects mechanically — a positioning extreme, a gamma extreme, a macro surprise, or a price break — then measures for ten trading days. Episodes are context, never trade signals.
Expected move (predicted vol)
The RV model’s forecast of how far a pair travels over a horizon, measured close-to-close — where price ends the horizon versus where it started, not the distance covered along the way. A pair can swing 40 pips and close 5 from where it began; this forecasts the 5, which is why it reads smaller than an average daily range. Size only, never direction. Read it as the middle of a range, not a point estimate: scored against every live prediction (measured 2026-09-05) it correlates with the realized move at roughly 0.24–0.32. Compared against a “this pair’s typical move” constant built only from that pair’s past, it wins by a small margin out to about four hours, is indistinguishable from it by eight to twelve, and is slightly worse at twenty-four. The bands around it are the better-behaved number, and the honest use of the forecast is to compare hours against each other rather than to trust any single figure.
Extremity
The scanner’s headline count: how many of an instrument’s context factors are at a statistical extreme right now (up to six). A count, not a direction.
1-year range
The highest daily high and lowest daily low of the trailing year, with the width between them in pips. Distinct from the 1-year percentile, which ranks where today’s close sits within the year’s distribution of closes — a market can sit mid-range and still print a high percentile.
Fibonacci level
A retracement of the trailing weekly (7-day) or monthly (30-day) high–low swing, using only the golden three ratios — 0.382, 0.5, 0.618. “Sitting on” one means spot is within 12% of the instrument’s 20-day ADR of it. We deliberately dropped single-session swings and the minor 0.236/0.786 ratios: tested live, they put price “on a fib” most of the time, which makes the flag meaningless.
Round level
The nearest 50-pip multiple — a half figure (1.0850) or whole figure (1.0900), where resting orders tend to cluster. “Sitting on” one uses the same volatility-scaled tolerance as fibs: within 12% of the 20-day ADR, so a quiet pair must be much closer than a wild one.
Gamma flip
The strike where cumulative net dealer gamma crosses zero — the level that separates the dampening (positive) side of the chain from the amplifying (negative) side.
Gamma wall
The strike concentrating the most dealer-hedging pressure on its side of spot: the call wall above (potential resistance), the put wall below (potential support).
Implied vol (IV)
The volatility priced into options. Shown only when the underlying surface snapshot is fresh (within seven days); compared to realized vol as IV − RV.
Leveraged funds (TFF)
Fast money in the CFTC’s Traders-in-Financial-Futures report — hedge funds and managed-futures/CTA programs. They enter and exit quickly, so a crowded leveraged-fund net reads as fragile: it is the position most likely to be unwound in a hurry.
MFE / MAE
Maximum favorable / adverse excursion: the best and worst point reached during an episode’s measurement window. Their difference is the realized range.
Direct vs derived reading
Two ways of reading the crowd on the same pair. The direct reading is the broker’s own book. The derived reading is computed from two other books — the only reading available for ten pairs, and a second opinion on the eleven that carry both. We show them separately and never average them: each pair has its own habitual gap between the two, and on several yen crosses they sit on opposite sides of 50/50 for about half of all days. Only the direct reading counts toward extremity.
Crowd-reading gap
On a pair carrying both readings, the direct long% minus the derived long%, in percentage points. It is not an error term to be averaged away — each pair has its own characteristic gap (about 23 points on EUR/JPY, about 4 on GBP/CHF), so the gap is only meaningful against that pair’s own history, never a shared threshold. Computed only on days both readings are live; a gap measured against a stale reading would be measuring staleness, not disagreement.
Crowd-reading divergence
An episode fired when a pair’s crowd-reading gap reaches |z| ≥ 2 against its own trailing year. Each one is labelled by what actually happened to the spread: flipped (whichever book usually reads the more bullish has become the more bearish), wider than usual, or closer together than usual. A separate flag marks the days the two books disagree on side outright — one reading the crowd long, the other short. That flag never triggers an episode on its own, because on some yen crosses it is true half the time.
Notable (episodes)
An episode whose severity is in the top 10% of all episodes of its own type across the full record. Severity scales differ per type, so “notable” is never compared across types. Not the same test as the scanner’s Noteworthy column — see that entry.
Noteworthy (scanner column)
The scanner flags an instrument as noteworthy when it has at least one episode currently inside its ten-day measurement window — any live episode, of any size. It is a “something is running here” marker, deliberately a lower bar than Notable, which is a top-decile severity test. An instrument can be noteworthy without any of its episodes being notable.
What followed (price path)
What price actually did after an episode was flagged, reported at 1, 2, 3, 4, 5 and 10 trading days. Every figure is measured from the closing price on the day the reading fired — our detectors run on daily bars, so that close is the reference, and we do not invent an intraday trigger time. Each horizon shows three numbers: the net move (where price closed that many sessions later), the highest reached and the lowest reached (the furthest price travelled up and down at any point between the flag and that horizon, so both widen as the horizon lengthens and always straddle the net). Percentages are against the flagged price; the price each one implies is shown beside it. Nothing here is scored as right or wrong — we take no directional view, so a move up is not good and a move down is not bad.
Measurement window (resolution)
Every flagged episode is measured over a fixed ten trading sessions from the flag, and the window closes on time. There is no price criterion, no early exit and no invalidation: nothing about the market ends it. A reading can therefore still be active while its measurement window has closed. “Resolved” describes the measurement, not the market, and is never a verdict on the event. If a gap in the price record leaves the window unmeasurable, the episode is marked unresolvable rather than scored on partial data.
Closed higher / closed lower
Across the most similar past setups, how many finished above the price they were flagged at five trading sessions later, and how many finished below, with the median net move beside them. A plain count of what price did, in the instrument’s own quote direction, using the same measurement for every episode type. Descriptive history, not a forecast, and not a success rate — neither direction is the “right” one.
Outcome class
An internal label for how an episode’s window resolved, used to match an episode against comparable history. It is no longer shown anywhere on the site or in the reports: it carried two different vocabularies depending on which detector owned the episode, which meant the same word could mean different things in different rows. What is published instead is the price path itself — see “What followed (price path)”.
Donchian channel (breakout)
The highest high and lowest low of a set number of past sessions — commonly 20 or 55 days. Trading beyond the channel is the classic breakout entry, so its edges act as trigger levels for systematic programs. We exclude the current day, since a channel that includes today could not be broken by today.
Moving-average cross
The point where a shorter average (we use 50-day) meets a longer one (200-day) — the most widely watched definition of a trend changing direction. Because both averages move when a new close lands, the price that would make them meet on the next session can be solved exactly, and it moves a little every day.
Open interest
The total number of futures contracts outstanding. Rising open interest alongside a move means new money is arriving and funding it; falling open interest means the move is positions being closed, which exhausts rather than extends. Weekly, Tuesday-dated, published Friday — a structural read, not a live one.
Percentile
The share of a reading’s own history that sits below today’s value — 100 means the highest reading in the window, 0 the lowest, 50 the middle. Ties are averaged.
Likely range (75th percentile)
The 75th-percentile close-to-close outcome for a horizon — about one window in four should exceed it. Measured against every scored live prediction as of 2026-09-05, the realized move exceeded the published 75th percentile 21.6%–26.6% of the time depending on horizon, against the 25% the band promises. Those figures are re-scored nightly and published per horizon on the track record, which is the live source — the range quoted here is a snapshot of it, not a separate claim. It is a band, not a target: three windows in four land inside it and one does not.
Pip / point
The instrument’s conventional minimum quote step (0.0001 for most FX pairs, 0.01 for JPY pairs; points for indices and metals). All pip figures on the site share one conversion library.
Point-in-time
Computed only from data that was available at that moment. Analogues, backfills, and historical stats are all held to this standard so nothing is contaminated by hindsight.
Realized range
The highest high to lowest low over an episode’s ten-day measurement window (MFE − MAE), as a % of the price when the event fired. Direction-agnostic, so it can be pooled across event types.
Realized vol (RV)
The annualized standard deviation of daily log returns over the trailing 30 days — how much the market actually moved, as opposed to implied vol (what options price in).
Regime character
The named macro backdrop from the regime engine (e.g. Goldilocks, Stagflation, Transitional), chosen from smoothed growth and inflation readings plus structural tags. The same read powers the live banner and the monthly review.
Resolved (episodes)
The episode’s fixed ten-trading-day measurement window has fully elapsed and its outcome is scored. Until then it is still inside its window.
Share of open interest
A net futures position divided by the market’s total open interest, as a percent. Raw contract counts aren’t comparable across decades because markets grow; the share is. A high percentile means speculators are already heavily committed relative to the market’s size — less dry powder left on that side.
Similarity (analogue match)
How close a past episode’s context fingerprint is to today’s, on a 0-to-1 scale: 1.0 would be an identical fingerprint, and the score falls as the distance between them grows. It is a closeness score, not a percentage — 0.80 does not mean “80% the same”, it means this match was tighter than one scoring 0.60. Only the ranking is meaningful; compare matches within one list, never across symbols. Shown as “Similarity” in the analogue table and “Match” in the similar-context table — the same number.
Severity (episodes)
How statistically extreme the episode’s trigger was — a z-score against the instrument’s own history for most types; for range-expansion episodes, the day’s range as a multiple of the 20-day ATR. A continuous number, on a per-type scale.
SSI (Speculative Sentiment Index)
Retail FX positioning — how the retail crowd is split long vs short a pair. We show it two ways: the plain share of traders long (0–100%), and a signed ratio of the two sides where +2.0 means twice as many longs as shorts and −3.0 means three times as many shorts as longs. The ratio has no values between −1 and +1: an even split is ±1, and the sign flips as the crowd crosses 50/50. Both are scored against the pair’s own trailing year.
Trend-model trigger level
A price at which textbook systematic trend rules would change state — a breakout channel edge, a moving-average cross, or the 200-day average itself. We compute these by replicating published rules from daily closes. We tested the flow claim against CFTC positioning (2010–2026): weeks with a fresh 55-day channel break still coincide with leveraged funds adding on the breakout side; for 20-day breaks that link has faded since ~2018, and the moving-average levels are untested rules, not measured flow. None of this is a reading of anyone’s actual positions, and none of it is a forecast.
Tension
The retail crowd and leveraged funds stretched on opposite sides of the same market — each side at |z| ≥ 1 or a top/bottom-decile reading of its year.
Thesis check
You pick a direction — long or short — and the page’s readings are re-signed against that thesis: positive means the reading has historically sat on the favorable side for it, negative the opposite. The direction is always yours, never ours; the signed readings are descriptive context, not a verdict, a grade, or an approval of the trade.
True range
A day’s high–low span widened to include any gap from the prior close — the range a position actually lived through.
Typical path band
For a set of analogues, the middle half of outcomes (25th–75th percentile) at each horizon with the median marked, measured from the flag day’s close. Positive means price closed higher and negative means lower — plain direction, not whether the setup "worked" — unless you have set a thesis, in which case it is signed for that thesis and labelled as such. A historical distribution, not a forecast.
Wide day (90th percentile)
The 90th-percentile close-to-close outcome for a horizon — about one window in ten should exceed it. That is now a measured claim rather than a stated one: across every scored live prediction as of 2026-09-05, the realized move exceeded the published 90th percentile 8.4%–11.8% of the time depending on horizon, against the 10% the band promises. Re-scored nightly and published per horizon on the track record, which is the live source for it. Shown beside the expected move so both the ordinary case and the stretched case are on the card.
Z-score
How many standard deviations today’s reading sits from its own average over the stated window. |z| ≥ 2 is rare (roughly the outer 5% if readings were normal); the sign gives the side.

Now read the numbers with the definitions in hand — or join for the full picture.