Methodology — mercatusdata
How each figure is measured, which signals each asset class is scored on, and where the data comes from.
How each figure is measured
Every figure is measured against the instrument's own history, not against fixed thresholds. A momentum or volatility reading is reported as its percentile within that instrument's own record of the same measure — where today's value falls among every prior observation — so “36th percentile” means below 64% of that instrument's own history, on its own scale. Percentile windows differ by measure. RSI and returns (daily and multi-day) are ranked over the instrument's full price history, which starts at different dates: USD/JPY from 1996, most currency pairs from 2003, each stock from its listing. The 52-week range position uses the trailing 252 trading days (365 days for crypto, which trades every day), and CFTC positioning its own trailing two years of weekly reports.
Which signals each asset class is scored on
Every instrument is scored on five shared signals: daily % change, 20-day return, RSI, 20-day volatility, and 52-week range position. Beyond those, two signals are conditional on data availability. CFTC positioning — leveraged-money net percent of open interest — requires a listed futures contract with a Commitments-of-Traders feed, which among these columns applies only to foreign exchange. Relative volume — today's volume against its trailing 20-day mean — is scored for stocks, crypto and energy, where per-instrument volume is available. Precious metals carry neither conditional signal, and are scored on the five shared measures alone. Each instrument contributes only its single most extreme signal to the cross-asset ranking, whichever that is.
Definitions
Returns are arithmetic (simple), not logarithmic. Cross-asset correlation and beta — a pair against the dollar index, a stock against the S&P 500, a metal or stock against the real yield — are computed on weekly returns, because free daily feeds close their bars at different intraday times and daily correlations wash out to noise; weekly resampling removes that artefact. The currency-pair dollar sensitivity is reported over a 26-week window; the stock and real-yield readings over both 26- and 52-week windows, so a recent shift shows up in the shorter window before the longer one. Positioning is leveraged-money net (long minus short) as a percent of open interest, from the CFTC Commitments of Traders (Traders in Financial Futures) report; it is unavailable for the forint pairs, which have no listed contract.
- RSI (14) — Relative Strength Index
- Introduced by J. Welles Wilder in New Concepts in Technical Trading Systems (1978): a 14-period smoothing of average gains versus average losses (RSI = 100 − 100 / (1 + average gain / average loss)); the 14-period Wilder recursion runs over a trailing 250-session window. By Wilder’s convention, readings above 70 are termed overbought and below 30 oversold (some practitioners use 80/20). This page reports the value and its own-history percentile without labelling the instrument. The displayed value is today’s reading from that recursion; the percentile compares it against this instrument’s entire available history.
- 20-day volatility
- Sample standard deviation of the last 20 daily simple returns, expressed as a daily percentage. This is realised (historical) volatility, computed from past closes — not implied volatility. Metals and energy also show the figure annualised (×√252); crypto, ×√365.
- ATR (14) — Average True Range
- Wilder’s 14-period average of the daily true range — the greatest of (high − low), |high − previous close|, and |low − previous close| — computed over the trailing 250 daily bars. Reported in USD and as a percentage of price. For currency pairs the unit is pips.
- Moving averages
- Simple (unweighted) means of the closing price over the trailing 20, 50, and 200 sessions.
- 52-week range position
- Where the latest close sits between the lowest low and highest high of the last 252 sessions, as a percentage (0% = period low, 100% = period high). Crypto uses a 365-session window rather than 252: that market trades every day.
- N-day returns
- Simple close-to-close percentage change over each trailing horizon shown (in trading sessions).
- Volatility by rate-era (cycle)
- Mean daily realised volatility (sample standard deviation of daily returns) within each US-rate-cycle window: ZIRP-2009 (2009-01 to 2015-11), tightening-2015 (2015-12 to 2018-12), ZIRP-2019 (2019-01 to 2021-12), tightening-2022 (2022-01 to 2023-12), easing-2024 (2024-01 onwards); pre-crisis covers dates up to 2008-12. Where an instrument’s history starts mid-era, the first available date is noted.
- “Percentile of own history”
- Each percentile ranks today’s reading against this instrument’s own past readings of the same metric — not against other instruments. The basis is labelled “since YEAR (N observations)”. Flat placeholder bars (days a feed stamped a single settle price, so open = high = low = close) and the current unfinished session are excluded, so N counts genuine trading sessions and can be fewer than the calendar days since that year. Percentiles appear only once enough history exists to compute them. The rank is empirical with no interpolation: the count of past readings strictly below today’s value, plus half of any exactly equal to it, divided by the observation count (the midrank rule for ties). Dividing by that count places the percentile in [0, 100), so a fresh all-time extreme reads just under 100 rather than exactly 100.
- Session (open, high, low, prior close)
- The current session’s raw daily bar: opening price, intraday high and low, and the previous session’s close. Reported as-is from the daily feed.
- Gap (overnight)
- The opening price versus the prior session’s close, as a percentage ((open − prior close) / prior close). It isolates the overnight move — the part of the day’s change that happened before the session opened — from the intraday move. Reported as a fact, not a signal.
- Intraday range
- The session’s high minus its low, as a percentage of the close. It shows how much the price actually travelled during the session, which a close-to-close change alone can hide (a near-flat close can still be a wide-range day).
- Close position
- Where the close settled within the session’s high–low range (0% = at the low, 100% = at the high). Withheld on the rare bar whose close falls outside its own high–low, where a position figure would be undefined.
- Next scheduled earnings
- The next forward earnings date from the calendar feed, with the calendar days until it. A date the source provides as a firm calendar date is shown as-is; a date given only as an estimated window is tagged “(estimated)”. A scheduling fact, not a forecast of results.
- Moving-average crossovers
- The most recent date on which each moving-average pair (20/50, 20/200, 50/200) last changed order — the day the shorter-window average last moved above or below the longer-window one — with the calendar days since. This is a dated record of when the averages last crossed, stated as a fact; it is not a buy or sell signal and carries no “golden cross” / “death cross” interpretation. A pair is shown only once enough history exists to observe a crossing, and omitted if the averages have not changed order in the available series.
- MACD (12, 26, 9) — Moving Average Convergence Divergence
- The MACD line is the 12-period exponential moving average (EMA) of closing price minus the 26-period EMA; the signal line is the 9-period EMA of the MACD line; the histogram is the MACD line minus the signal line. All three are computed from this instrument’s own daily closes. Values are in price units and are neither bounded nor normalised, so they are reported as levels (with the histogram’s sign stated as a fact) rather than as an own-history percentile.
- S&P 500 beta and correlation
- Computed from weekly returns of the stock versus weekly returns of the S&P 500 index, over trailing 26-week and 52-week windows. Beta is the slope (how much the stock’s weekly move tends to scale with the market’s); correlation is the strength of the linear relationship (−1 to +1). Reported as measured; no causal claim is made.
- Return relative to S&P 500
- The stock’s own N-day return minus the S&P 500’s return over the same trailing horizon — a simple difference of the two close-to-close percentages. A positive figure means the stock outpaced the index over that window; a negative one means it lagged. This raw difference makes no adjustment for how much the stock tends to move with the market; the beta-adjusted excess below does. Reported as measured, over the horizons shown.
- pp — percentage points
- The unit for a change in a figure that is itself a percentage: a move from 2% to 3% is +1 pp, a relative change of +50%. Used for differences between percentages, such as a return or a distance from a moving average. A difference between two percentiles is given in percentile points instead (“pctile pts”), because a percentile is a rank, not a percentage.
- Beta-adjusted excess return
- The stock’s N-day return minus its beta times the index’s return over the same window (shown for the S&P 500 and Nasdaq 100). Where the relative return above subtracts the index’s whole move, this subtracts only the part the stock’s beta would predict — leaving the stock-specific (idiosyncratic) portion. It uses the 52-week weekly-return beta applied to each horizon, a single-factor approximation: beta is estimated from weekly data and held constant across horizons, so the figure is an estimate of the market-adjusted move, not an exact decomposition. For a high-beta stock a large index move can make the excess differ sharply from the raw relative return, and over long horizons (e.g. 252-day) the approximation is loosest. Reported as measured; no causal claim is made.
- Sector beta and correlation
- The same weekly-return method as the S&P 500 market factor, measured against the SPDR Select Sector ETF for this stock’s GICS sector (named per stock, e.g. XLK for Information Technology). Read alongside the S&P figure it separates how much of the move tracks the broad market from how much tracks the stock’s own sector. Where a stock is itself a large constituent of its sector ETF, these figures — and the sector-relative return below — partly reflect the stock’s own weight in that ETF rather than a fully independent comparison. Reported as measured.
- Nasdaq 100 beta, correlation and relative return
- The same weekly-return beta and correlation method as the S&P 500 market factor, and the same N-day relative return, measured against the Nasdaq-100 (the QQQ ETF) over trailing 26-week and 52-week windows. The Nasdaq-100 is a growth- and technology-tilted benchmark, so reading it beside the S&P figure shows how much of the stock’s move tracks the broad market versus the large-cap growth complex — for a technology name the two run close, while for a non-technology name they can diverge. Prices are the QQQ close on the same split-adjusted, price-return basis as the S&P series, so the comparison is like-for-like. Reported as measured; no causal claim is made.
- Index funds: their own index left out
- SPY and QQQ are reported as the stocks are, with one rule: a fund is never compared with the index it tracks, because that comparison measures how closely it tracks rather than how it has moved. SPY tracks the S&P 500, so its page has no S&P 500 beta, correlation, relative return or beta-adjusted excess, and no S&P leg in its Technical Assessment. QQQ tracks the Nasdaq-100, whose figures on this site are the QQQ close itself, so its page has no Nasdaq 100 figures. Each fund keeps the other benchmark. The funds are also outside the stocks’ ranks and peer comparisons, which compare stocks with stocks.
- Real-yield sensitivity
- Correlation of the stock’s weekly returns to the weekly change in the 10-year US Treasury inflation-protected (TIPS) real yield, over 26-week and 52-week windows. Reported as measured.
- Relative volume (RVOL)
- Today’s reported trading volume divided by its own trailing 20-day average volume. Because it is a ratio it is scale-free — it reflects how today’s activity compares to the recent norm, independent of any multi-year drift in the stock’s overall trading volume. Volume is split-adjusted on the same basis as the price series. The percentile ranks today’s RVOL against this stock’s full history of daily RVOL readings. The split adjustment applies to stocks only.
- Close basis
- The close is the official regular-session closing price for the stated date — not an intraday, pre-market, or after-hours price — reported as-is from the daily feed.
- Price adjustment
- Equity prices are split-adjusted but not dividend-adjusted: every close, return, moving average, RSI and range figure is a price-return series (Yahoo Finance “Close” with stock splits folded in, dividends excluded — the dividend-reinvested “Adjusted Close” is not used). This is deliberate: it reflects the tradable price path rather than total return, so multi-year returns and drawdowns read lower than a dividend-reinvested total-return series by roughly the cumulative dividend yield over the period. The S&P 500 series used for the relative-return and beta figures is adjusted on the same price-return basis, so the comparison is like-for-like.
- Dollar volume
- The session’s share volume multiplied by the closing price — the day’s traded notional. Its percentile is ranked over a trailing window (labelled inline, e.g. “trailing 252 sessions”) rather than full history: unlike the scale-free RVOL ratio, raw dollar volume drifts with years of price growth, so a full-history rank would mostly reflect where the price level sat, not how active the day was. A low percentile therefore means a light-notional day relative to the recent year, not an all-time extreme. Share volume for stocks; traded volume for crypto.
- 20-day average dollar volume
- The mean of the trailing 20 sessions’ dollar volume (share volume times close). Shown alongside the day’s dollar volume as the recent-norm baseline it is measured against. Share volume for stocks; traded volume for crypto.
- Drawdown from all-time intraday high
- The latest close versus the highest intraday high in this instrument’s available history, as a percentage ((close − all-time high) / all-time high). Always zero or negative. The all-time-high date is shown alongside.
- Maximum drawdown (10-year, close-basis)
- The deepest peak-to-trough decline in the closing price over the trailing ten years (about 2,520 trading sessions) — the largest fall from a running maximum close to a subsequent low close, as a percentage. Distinct from “drawdown from all-time intraday high” above in two ways: it is measured close-to-close (not against the intraday all-time high), and it reports the worst completed episode within the window rather than the distance from today. The window is deliberate: a full-history figure would be dominated by very early, penny-scale split-adjusted prices whose percentage moves are not representative of the stock’s current risk. The peak and trough dates are shown, with the recovery date (the first close at or above the prior peak) when it has occurred, or “not yet recovered” when the price has not reclaimed that peak within the window. A shorter-history stock is labelled by its actual span (e.g. “5y history”) rather than ten years. Stated as a fact, not a forecast.
- Year-to-date return
- The change in closing price from the last trading day of the previous calendar year to the latest close, as a percentage. Calendar-anchored, unlike the fixed-length N-day horizons above — so early in the year it spans few sessions, and it is reported as a plain figure without an own-history percentile (a variable-length window would rank unlike periods against each other).
- 200-day moving-average slope (20-session)
- The 200-day moving average now versus its level 20 trading sessions ago, as a percentage, labelled rising or falling. It separates price sitting below a rising long-term average from below a falling one — a direction-of-trend fact about the average itself, not a buy or sell signal.
- Up-day frequency (own history)
- The share of this instrument’s past sessions that closed higher than the prior session (close > prior close), over the N genuine trading sessions counted. A base rate for context, not a prediction; flat and placeholder bars are excluded on the same basis as the percentiles.
- Price chart
- The last 252 daily closes plotted with the 20-, 50- and 200-day simple moving averages (the same equal-weighted means defined above) and the 52-week high/low band. The y-axis is price; the x-axis is calendar month. It is a visual companion to the figures on this page — read exact values from the labelled axes and the tables above, not by eye. Recomputed from close each run; each average is drawn only across the span where enough prior closes exist (a short-history instrument may show a partial or absent long average).
Definitions — bond yields
Bond metrics are measured in yield space, so several terms below share a name with one above but are computed differently: changes and distances are in basis points rather than percent, and every figure describes a yield, not a price.
- RSI (14) — Relative Strength Index
- Wilder’s 14-period smoothing of average gains versus average losses (RSI = 100 − 100 / (1 + average gain / average loss)), run on the daily yield series over a trailing 250-session window. This page reports the value and its own-history percentile only; it does not apply the overbought/oversold labels to the yield or to rates.
- 20-day yield volatility
- Sample standard deviation of the last 20 daily yield changes, in basis points per day, and also shown annualised (×√252). Realised (historical) volatility of the yield, not implied volatility.
- Moving averages
- Simple (unweighted) means of the daily yield over the trailing 20, 50, and 200 sessions. Distance from each is reported in basis points.
- 52-week range position
- Where the latest yield sits between the lowest and highest yields of the last 252 sessions, as a percentage (0% = the 52-week low, 100% = the 52-week high). A position within the range, not a valuation.
- N-day yield changes
- Change in the yield level, in basis points, over each trailing horizon shown (in trading sessions). A difference of levels, not a percentage return.
- “Percentile of own history”
- Each percentile ranks today’s reading against this tenor’s own past readings of the same metric — not against other tenors. The basis is labelled “since YEAR (N observations)”. Every observation is a genuine daily yield: constant-maturity yields from FRED (US) and the Ministry of Finance (Japan), term-structure yields from the Bundesbank (Germany), benchmark-bond yields from the Bank of Canada and par yields from the Bank of England (UK). There are no flat placeholder bars to exclude: the Bundesbank’s weekend and holiday placeholders are never stored, and the Saturday sessions Japan held until 1989 were real sessions, so they are kept. The current unfinished session is excluded. The rank is empirical with no interpolation: past readings strictly below today’s value, plus half of any equal to it, divided by the observation count (the midrank rule for ties).
Data sources and timing
Sources:
- prices from Yahoo Finance (currency pairs, the US dollar index, stock indices, split-adjusted stock closes, cryptocurrencies, energy futures and precious-metal futures), with stocks' earnings dates and dividends from the same feed
- the federal funds rate, the 10-year breakeven inflation rate, the 10-year TIPS real yield, the CBOE Gold ETF Volatility Index (GVZ), the CBOE Crude Oil ETF Volatility Index (OVX) and the 3-month, 2-, 5-, 10- and 30-year Treasury constant-maturity yields from the Federal Reserve (FRED)
- the Treasury auction schedule from the U.S. Treasury Fiscal Data API
- the German 2- and 10-year federal-securities yields from the Deutsche Bundesbank's term structure
- the Japanese 2- and 10-year government bond yields from the Ministry of Finance Japan's constant-maturity series (Public Data License 1.0)
- the Canadian 2- and 10-year Government of Canada benchmark bond yields and the target for the overnight rate from the Bank of Canada
- the UK 5- and 10-year nominal par yields and Bank Rate from the Bank of England (Open Government Licence v3.0)
- the euro-area AAA 2-year and 10-year yields and the deposit facility rate from the ECB Data Portal
- New Zealand's official cash rate from the Reserve Bank of New Zealand (© Reserve Bank of New Zealand)
- the SNB policy rate from the Swiss National Bank's data portal (data.snb.ch)
- positioning from the CFTC
- weekly natural gas storage from the US Energy Information Administration
- short interest and short volume from FINRA
- company filings, shares outstanding and sector-fund holdings from SEC EDGAR
- backup equity prices from Twelve Data
- CPI and jobs-report release dates from the BLS
- each central bank's own published schedule for its decision dates
Every line carries its own as-of date, because these datasets update on different cadences — prices each trading day, CFTC positioning weekly, some policy rates monthly — and the report is regenerated automatically every trading day. Historical values may change when a data provider revises or corrects a previously published figure; each stored series records the date it was last revised, and the report recomputes from the current underlying data on every run.
Prices, timing and conventions
Every figure is an end-of-day value. Each section is dated by its own reference date, the newest fully settled session for its instruments, not by the time the report happens to run. A partial bar for the current day is deliberately excluded, so the same data always produces the same report. The daily close means a different thing for each asset class, and the report does not pretend otherwise. Spot foreign-exchange trades continuously 24 hours a day, five days a week, so its daily bar is a snapshot cut at a fixed daily boundary in Coordinated Universal Time (UTC) rather than at any single exchange's closing bell; an overnight change between one day's close and the next day's open is therefore a real cross-session move, not a data error. Precious metals are quoted from CME-group futures (COMEX and NYMEX), which settle at their own contract times; United States equities use the regular-session market close and are split-adjusted with dividends excluded, so a stock split shows a normal daily move rather than a false collapse. Interest-rate and yield series carry the publishing central bank or statistical agency's own reference time. Because these clocks differ, cross-asset relationships are measured on weekly rather than daily returns, and every value is shown with the date it is current as of, so a reader can reproduce any figure from the same public sources.
Common questions
Why percentile rather than a z-score?
A percentile is the empirical distribution function evaluated at today's value, so the real choice is rank-based (percentile) versus moment-based (z-score), and this report is rank-based on purpose. A z-score is only meaningful under a location-scale assumption — effectively normality — and financial series break that badly, with fat tails, skew and volatility clustering. Under a normal distribution, a z-score of 3 reads as a 1-in-740 event, but in a fat-tailed series that magnitude is far more common, so the z-score misleads exactly in the tails, which is the only region an outlier report cares about. A percentile assumes nothing about shape: “99th percentile” always means higher than 99% of that instrument's own history. It is also robust — one freak past value inflates the standard deviation and shrinks every later z-score, but barely moves ranks — and it is bounded 0–100 and directly comparable, which is what lets instruments with very different distributions share one scale. The honest cost is that a percentile keeps rank and discards magnitude: it shows how rare today's reading is for this instrument, not how large, and it does not adjust for the shape of the distribution.
Why score each instrument on its single most extreme signal?
Taking each instrument's most extreme signal gives one comparable number per instrument with no weighting scheme to defend — any average across RSI, return, volatility and the rest would need arbitrary weights. It answers the actual question, “is anything unusual here?”, with the most unusual thing, rather than diluting one genuine tail event among several mild readings. And it avoids double-counting correlated signals: RSI, 20-day return and momentum tend to move together, so summing them would reward redundancy and let an instrument that is mildly elevated on several correlated measures outrank one with a single real extreme. The trade-off, stated plainly, is that this ignores confluence: an instrument at an extreme on five signals scores the same as one at that extreme on a single signal. That is deliberate, chosen for simplicity and defensibility over a composite score.
How exactly is a percentile computed?
For the distribution signals, the percentile is the fraction of the instrument's own history strictly below today's value, plus half the fraction exactly equal to it — a midpoint rule for ties, so a value that ties several past observations sits in the middle of that tied block rather than being counted as fully above or below it. It uses the instrument's whole recorded history for that signal, not a fixed rolling window, so a longer-lived instrument is judged against more data. Not every signal is a percentile, though: the range signals — 52-week price position and CFTC positioning — are scored instead by where today's value sits within its band, from 0 at the bottom to 100 at the top, a current-location reading rather than a historical percentile. Both are then mapped onto the same 0–100 extremeness axis — the score is twice the distance from the midpoint — which is what lets them share one ranking.
Why these particular signals?
The six signals are chosen to cover distinct, largely independent dimensions of “unusual” rather than several views of the same thing: daily % change (single-session shock), 20-day return (accumulated momentum), RSI (momentum extremity), 20-day volatility (dispersion regime), 52-week range position (where price sits in its yearly band), and — where the data exists — CFTC positioning or relative volume. Price-move, momentum, volatility, range and positioning are conceptually different axes, so an instrument can be unusual on one while ordinary on the others, which is what makes ranking by the single most extreme signal meaningful. The choice of these six also reflects what is derivable from free, public data with a clear definition; it is a considered set, not an exhaustive or uniquely correct one.