Methodology
The boring page, kept honest on purpose. Everything funny on this site lives elsewhere; everything below is exactly how the numbers are made.
Crypto. The top 600 cryptocurrencies by market capitalization (CoinGecko ranking), excluding stablecoins, dollar-pegged tokens, tokenized treasuries and wrapped assets — a returns heatmap of an asset pegged to $1 carries no information. The universe refreshes daily; coins that drop out keep their history but leave the tables.
Prices. One settled close per coin per UTC day. Primary source is OKX spot (USDT pairs, full listing history); gaps and unlisted coins are filled from CoinGecko (which caps free history at 365 days — coins without an OKX listing therefore show at most one year). CoinGecko midnight snapshots are shifted one day back to align with true UTC-close semantics. For majors, pre-OKX history is backfilled from Yahoo Finance and CoinCodex back to each coin's first exchange price (Bitcoin: July 2010) — a backfill source is accepted only where it agrees with stored data at the splice, so a few coins (e.g. DOGE before 2017) deliberately show less history than exists elsewhere.
Stocks. The S&P 500, Nasdaq-100, FTSE 100 and EURO STOXX 50 tabs cover current index constituents (Wikipedia lists, refreshed daily). Prices are daily closes from Yahoo Finance, adjusted for splits and dividends — so returns are total-return-like. Because every figure is a ratio, the mix of quote currencies (US dollars, pence, euros) across indices is irrelevant. Stock "days" are exchange trading days; the 1d column is the last session.
World indices. Headline benchmarks (S&P 500, Nasdaq Composite, Dow, Russell 2000, FTSE 100, Nikkei 225, DAX and others) are the index level itself, not a fund tracking it — so there is no expense ratio and no tracking error, but also no dividends: an index level is a price return, which understates total return by roughly the market's yield each year. They are quoted in points rather than currency. On the market map they have no market cap of their own, so each is sized by the total capitalization of its home market, split across that country's indices where several share one.
Commodities. Gold, silver, copper, crude and the rest are front-month continuous futures from Yahoo (the =F series), not spot prices and not a rolling index. That distinction matters: the series switches contract as each expires, and the price gap between the expiring and the next contract is not adjusted away, so a roll can in principle appear as a one-day move no trader experienced. We do not smooth those gaps, because Yahoo's continuous series does not say where the rolls are, and a rule aggressive enough to catch them would erase real history: the largest single-day moves in these series are genuine events, not artifacts — silver's −31% on 30 January 2026 (its worst day since 1980, after CME raised margin requirements), natural gas collapsing from its Winter Storm Fern record days later, WTI's −45% in April 2020. Treat a very large one-day commodity move as real unless you have reason to think otherwise, and check the contract if it matters to you. Commodities also have no market cap, so they are excluded from the market map and from any “largest by capitalization” ranking.
Currencies. Major pairs and the US Dollar Index, from Yahoo (the =X series; DXY as DX-Y.NYB, whose daily closes reach back to 1971). Pairs are stored exactly as the market quotes them and are not normalised to a common base, so the direction of a return depends on which side is which: EUR/USD rising means the euro gained against the dollar, while USD/JPY rising means the dollar gained against the yen. Inverting half of them so every sign pointed the same way would read more tidily and disagree with every other source you might check it against. These are spot rates, so a return here is pure exchange-rate movement and excludes the interest-rate differential that a currency position actually earns or pays — the carry is usually the larger part of the story, and it is not in these numbers. Like commodities they have no market cap, so they sit outside the market map and every capitalization ranking.
ETFs, bonds and REITs. These are funds, priced and adjusted exactly like stocks above, so their returns include distributions. The bond tab covers the US Treasury curve from T-bills to 25-year zeros, and sovereign debt beyond it — gilts, euro governments, JGBs and emerging markets. Treasuries are represented by the funds that hold them rather than by yield series, deliberately: a yield is a rate, not a return, and it moves the opposite way to the bondholder's. Over one recent month the 10-year yield rose 7.4% while a long-Treasury holder lost 4.5%, and a “returns” grid printing the first would be describing a loss as a gain. Note also that non-US listings are priced in their home currency, so a gilt or JGB fund shows the return to a local holder; a dollar investor also carries the exchange-rate move, which is on the currencies tab and is often the larger half. Their “market cap” is assets under management, which is not the same measure as a company's value and double-counts whatever the fund holds — a total-market fund contains most of the equities already listed here. They are therefore excluded from the market map and from capitalization rankings, and appear only in their own tabs and in breadth and dispersion statistics.
Corporate actions and bad ticks. Splits and dividends are handled by the vendor's adjustment, but not always in time: when a split is fresh the vendor can serve post-split prices with unadjusted history behind them, so we match unexplained level breaks against its own split calendar and back-adjust the earlier prices ourselves. Breaks that match no corporate action are left alone rather than guessed at. Separately, a close more than 5× off its local median, or a single day that spikes and reverts, is treated as a vendor error and removed; a feed that stops updating has all of its trailing returns nulled after two days for crypto or six for equities, so a dead feed cannot keep reporting a “24h” move.
Returns. Every heatmap cell is a simple price return: the last settled close of the period divided by the last settled close of the prior period, minus one — (Pend / Pprev − 1) × 100. Periods are cut on calendar boundaries (month-, quarter- and week-end, weeks ending Sunday UTC) by taking the last close within each. An asset's first listed period is measured from its very first close, and the current month/quarter runs to the latest close; both are partial and greyed. Seasonality is the mean and median of a calendar month's completed returns, with its win rate (share of positive months); the current month is excluded.
Headline columns. The 24h/7d/30d/1y figures are calendar windows: the latest close versus the most recent close at or before 1, 7, 30 or 365 days earlier (so a stock's 1y column is a true year, using the last session on or before that date, not 365 trading sessions). YTD compares the latest close to the last close before 1 January. A column is blank when history doesn't reach that far back. Best/worst month are over completed months only.
Live crypto prices. Everything above is built from settled closes once a day. Two columns are the exception: on the crypto tables, the market map and your watchlist, Price and 24h are overlaid with a near-live quote refreshed every few minutes, and a “Live” pill appears wherever that overlay is actually in effect. Three things worth knowing about it. First, the live 24h is a rolling trailing 24 hours supplied by the exchange (OKX where a coin is listed, CoinGecko otherwise) — a different measurement from the settled close-to-close figure the same column shows when the overlay is off. Second, price and 24h always move together, so a row never mixes a live price with a settled return. Third, and most easily missed: the 7d/30d/YTD/1y columns are not overlaid. They still end at the last settled close, so on a day with a large intraday move, Price and 24h reflect it and the longer windows do not. Every column says which it is on hover. Coins whose feed the daily export judged dead, stale or a bad tick are excluded from the overlay entirely — a broken feed's live quote is no better than its close. If the feed is unreachable or its snapshot is more than 20 minutes old, the tables fall back to the daily build and the pill disappears.
Caveats. Returns are nominal (in each asset's own quote currency), exclude fees and slippage, and past seasonality is not a prediction. Survivorship: the tables show today's constituents — the current top 600 coins, the current index members — so multi-year averages carry survivorship bias by construction.
Data last generated 2026-09-10 04:33 UTC.