Market Pulse
Mixed observation times, Oct 20–Oct 25, 2026 (5 days apart)
Market Memory· methodology

How Market Memory is calculated, and what it does not claim

Every definition the tool uses, the sources it reads, the arithmetic it runs, the biases it cannot remove, and the words it will never use.

Data sources

Daily closes only. Each series comes from one provider per run, named on its page and in the source manifest, which records the series identifier, the first and last date, the row count, the time of the last successful fetch, a checksum of the rows and any quality notes. Where FRED's history is long (the Nasdaq Composite to 1971, the VIX to 1990, the ten-year yield to 1962) FRED is used. Where it is short — FRED's S&P 500 and Dow series cover ten years — the exchange-traded fund that tracks the index (SPY, DIA) is used when a Twelve Data key is present, and the page says so. Series as of Oct 26, 2026.

Series in the current build
AssetProviderSeriesRangeRowsStatus
S&P 500 (SPY)Twelve DataSPY1993 – 2026-10-268,493ok
Nasdaq CompositeFederal Reserve Bank of St. Louis (FRED)NASDAQCOM1971 – 2026-10-2314,048ok
Dow Jones (DIA)Twelve DataDIA1998 – 2026-10-267,237ok
Russell 2000 (IWM)Twelve DataIWM2000 – 2026-10-266,643ok
VIXFederal Reserve Bank of St. Louis (FRED)VIXCLS1990 – 2026-10-239,302ok
BitcoinFederal Reserve Bank of St. Louis (FRED)CBBTCUSD2014 – 2026-10-254,312ok
GoldTwelve DataXAU/USD1979 – 2026-10-2612,311ok
WTI crude oilFederal Reserve Bank of St. Louis (FRED)DCOILWTICO1986 – 2026-10-209,526ok
10-year Treasury yieldFederal Reserve Bank of St. Louis (FRED)DGS101962 – 2026-10-2216,187ok
AppleTwelve DataAAPL1980 – 2026-10-2611,560ok
MicrosoftTwelve DataMSFT1986 – 2026-10-2610,234ok
NVIDIATwelve DataNVDA1999 – 2026-10-266,983ok
AmazonTwelve DataAMZN1997 – 2026-10-267,408ok
AlphabetTwelve DataGOOGL2004 – 2026-10-265,582ok
Meta PlatformsTwelve DataMETA2012 – 2026-10-263,630ok
TeslaTwelve DataTSLA2010 – 2026-10-264,107ok

Definitions

  • Move. The day-over-day change: percent for prices, the difference in percentage points for yields.
  • Percentile. The share of all daily moves on record, before today, whose absolute size is smaller than today's. 96.7 means today's move was larger than 96.7% of every daily move in the series. A second figure ranks today against moves in the same direction only.
  • Similar day, return band. Same direction, absolute difference from today's move within a band. The band starts at 0.25 percentage points (0.05 for yields) and widens by a factor of 1.6, at most six times, until at least 20 sessions qualify. The band actually used is printed.
  • Similar day, this big or bigger. Same direction and at least as large as today's move.
  • Similar day, same regime. The return-band set, restricted to sessions in the same volatility regime (tercile of trailing 20-day realised volatility across the whole record) with the 20-day trend in the same direction. This mode is never the default: regime filtering shrinks samples, and a small filtered sample looks more precise than it is.
  • Forward change. From the analogue's close to the close 1, 5, 21 and 63 rows later (1, 7, 30 and 91 for series quoted every calendar day, such as Bitcoin). An analogue too close to the end of the data to have a full horizon is left out of that horizon.
  • Share higher. The share of forward changes above zero. A historical frequency among prior similar events — never a probability for today.
  • Trend. The sign of the trailing 20-row change. Volatility. The sample standard deviation of the last 20 moves, annualised by √252 for price series. Drawdown. Distance below the highest close so far, price series only; not computed for the VIX or for yields, where it means nothing.
  • Nearest analogues. The 20 sessions in the return-band set closest to today's move by size, listed with the conditions on each date.

What is precomputed and when

Everything on the pages is computed at build time from the stored series, twice a day after the close, and the build refuses to publish a page whose figures disagree with a recomputation from the same data, a page missing the disclaimer in its first screen, or a page describing a close more than six days old as the latest move. The mode switch on each page reads a JSON file written at the same time; nothing is calculated in the browser except the choice of which precomputed table to show. The live figure in the market strip is intraday and is not part of any calculation.

Biases and limitations

  • Survivorship. Indices are rebuilt from the companies that survived; a price index's history is the history of a changing list. Single stocks are the survivors by definition — a tool like this cannot show you the companies that no longer trade.
  • Look-ahead. Percentiles and regimes are computed against the full record, including sessions after each analogue. A reader on the analogue's date could not have known the tercile edges. This makes the regime labels descriptive, not something that could have been acted on at the time.
  • Selection. "Similar" is a choice. Three definitions are shown so that the choice is visible; none is privileged as true.
  • Small samples. Any mode with fewer than 30 sessions is labelled; fewer than 20 and the page says the figures are anecdote.
  • Non-stationarity. Markets in 1975 and 2025 differ in structure, participants and speed. Sessions from decades apart are pooled here because the alternative — choosing which decades count — is a forecast in disguise.
  • Structural change and overlap. Analogues cluster in crises. Twenty similar sessions from October 2008 are not twenty independent observations, and the forward windows of clustered analogues overlap. Sample sizes overstate independence.
  • Adjustment and dividends. Twelve Data series are split-adjusted by the provider; FRED index levels are as published. Price indices and ETF prices exclude dividends, so long-horizon forward changes understate total return.
  • Bitcoin. Quoted every day, so its rows are calendar days and its horizons are 7, 30 and 91 days; its "sessions" are not comparable to exchange sessions.
  • Yields. Moves are in percentage points, not percent; a 0.10 pp move at 1% and at 5% are treated as the same size, which is a convention, not a truth.
  • Holidays and gaps. Rows are the sessions the provider published. A gap of more than ten days is recorded as a warning in the manifest and disclosed; the forward horizons count rows, so a gap stretches a horizon in calendar time.
  • Proxies. Where an ETF stands in for an index, its moves track the index closely but are not identical.

What the tool does not claim

It does not say what any asset will do, does not say a move is likely to reverse or continue, does not attach a cause to a move unless a primary source has been verified (and today none is: every page carries the line "No verified primary-source catalyst has been attached to this move" when a move is extreme), and does not present the share of past outcomes above zero as a probability. The words "buy", "sell", "guaranteed" and "will rise" do not appear on these pages, and the build fails if they do.

Validation

The engine is tested against fixtures whose answers were worked by hand, against an independent brute-force recomputation on a random series, and — when the real series are present — against known sessions such as March 16, 2020, whose S&P 500 decline of 11.98% must appear as the largest move on record since the series begins. The test file and fixtures are in the repository.

Historical context, not a forecast. Every figure on this page describes what happened after past moves. None of it says what happens after this one. Historical market behaviour does not predict future results. Full disclaimer.