· Data & methodology

What's under the hood.

Every backtest on this site uses real historical prices. This page documents where the data comes from, how often it's refreshed, and the assumptions that go into every calculation.

Data sources

Historical prices

Yahoo Finance

All historical price files are populated by pnpm seed which calls the public Yahoo Finance chart endpoints. Equities and ETFs use adjusted-close prices (split- and dividend-adjusted). Crypto uses USD-denominated daily close. Commodities use the continuous front-month futures contract via the =F suffix (GC=F for gold, SI=F for silver).

Live prices on calculator pages

CoinLore + Yahoo

The current-price displays on calculator pages call CoinLore for crypto and the Yahoo Finance quote endpoint for equities and commodities. Responses are cached at the edge for 60–300 seconds. If either provider returns an error, the page falls back to the most recent close in the historical dataset.

How prices are processed

  • Adjusted close
    Equity and ETF series use split- and dividend-adjusted close prices. This means a long-window backtest implicitly reinvests dividends; the headline return is total return, not price return.
  • Trading-day fill
    Each scheduled buy looks up the price at the next available trading day on or after the scheduled date. Weekends and US market holidays roll forward to the next session.
  • Crypto continuous coverage
    Crypto markets trade 24/7. Yahoo's daily series has one row per UTC day; we treat each row as that day's close in USD.
  • No spread, no fees, no taxes
    All calculators assume zero commission, zero spread, and no taxes. Real venues charge 0–1% per trade and may incur withholding or capital-gains tax. Real returns will be slightly lower.
  • Fractional units
    Buys are allowed to acquire fractional shares or coins. If your venue does not support fractional units, real-world buys would round down each period.

Refresh cadence

Historical JSON files are regenerated periodically via pnpm seed and a fresh site is deployed. Each calculator's sitemap lastModified entry tracks the newer of the page source and the underlying data files, so search engines see realistic freshness signals rather than synthetic built-just-now timestamps.

The live price endpoints (/api/prices/crypto, /api/prices/equity) are cached at the edge for short windows (60 seconds for equities, 300 seconds for crypto). Stale-while-revalidate keeps responses snappy under load. Both routes are disallowed in robots.txt because they serve raw JSON for the calculator UI and have no value as indexable pages.

Asset coverage

crypto
171
Sep 17, 2014Aug 24, 2026 · 347,114 rows
stocks
605
Jan 2, 1970Aug 21, 2026 · 4,909,653 rows
commodities
15
Jan 3, 2000Aug 24, 2026 · 91,946 rows

The engine covers 791 assets. Below: the 11 featured assets as a live sample — the full, always-current catalog with exact per-asset coverage is machine-readable at dcamethod.com/assets.json.

Symbol
Category
First date
Last date
Rows
Gold
commodities
Aug 30, 2000
Aug 24, 2026
6,519 (232.1 KB)
Silver
commodities
Aug 30, 2000
Aug 24, 2026
6,521 (227.2 KB)
BNB
crypto
Nov 9, 2017
Aug 24, 2026
3,210 (114.3 KB)
BTC
crypto
Sep 17, 2014
Aug 24, 2026
4,359 (162.9 KB)
ETH
crypto
Nov 9, 2017
Aug 24, 2026
3,210 (117.7 KB)
SOL
crypto
Apr 10, 2020
Aug 24, 2026
2,327 (82.6 KB)
AAPL
stocks
Dec 12, 1980
Aug 21, 2026
11,515 (422.4 KB)
MSFT
stocks
Mar 13, 1986
Aug 21, 2026
10,189 (361.8 KB)
NVDA
stocks
Jan 22, 1999
Aug 21, 2026
6,938 (255.9 KB)
QQQ
stocks
Mar 10, 1999
Aug 21, 2026
6,906 (244.7 KB)
SPY
stocks
Jan 29, 1993
Aug 21, 2026
8,448 (300.0 KB)

Known limitations

  • !Past performance is not a predictor of future returns. A backtest tells you what would have happened under the chosen rules; it does not promise the same outcome going forward.
  • !Survivorship bias affects every asset list on this site. The assets supported are ones that survived to today. Many failed projects, delisted stocks, and dead coins are not represented.
  • !Forecast modes apply a constant growth rate and cannot model drawdowns, regime changes, or correlation between assets. Treat forecasts as planning illustrations, not predictions.
  • !All amounts are in nominal USD. To translate into real (inflation-adjusted) dollars, deflate the result by your assumed inflation rate.
  • !Yahoo Finance occasionally backfills or corrects historical data. A new seed run may slightly change a long-window backtest result.
Want to dig deeper? Read The Method for the strategy side, or the disclaimer for what this site is and isn't.