Skip to content
Knowledge base Articles
Open the simulator
Home/Data sources

Where the numbers come from

Every feed this site ingests — provider, series, first reading, refresh cadence and terms — computed from the same files the simulator loads, with the arithmetic that turns a close into a figure.

Registry last edited 2 September 2026 · figures computed 17 September 2026 from data through 15 September 2026.

What this page is

Two of the eight axes in the rubric this site scores calculators against ask whether a tool names its price source — with a start date and an update cadence — and whether its arithmetic and its exclusions are written down. This page is that answer for this site.

Every date and count on it is computed when the site is built, from the same seed files the simulator loads. Nothing is typed in, and the page is rebuilt with every refresh, so what it says about a feed is what the feed contained on the day the page was made.

What it is not: the engine's source code, which is not published. What is public is every input (the feeds below), every rule (the knowledge base), and an output you can reproduce by hand (further down). The rubric page says plainly which claim you still have to take on trust — the date the rubric was frozen — and this page does not change that.

When the numbers update

The simulator's footer names the last day its Bitcoin series holds — as this page was built, 15 September 2026. That day is usually yesterday and sometimes the day before, and the gap is the provider's clock, not a fault. A day's close exists only once the UTC day has ended, and Yahoo Finance publishes that bar a few hours later. The refresh job runs at 06:17 and 10:17 UTC every day: the early run collects the bar when it is already posted, the later one catches the mornings it was not. A run that arrives before the bar publishes nothing new for that series, so a close is never guessed at or filled in from the running price. Until the next run lands, every result is marked at the last close the site holds, and a share link names which one.

The feeds

72 series from 4 providers, refreshed at 06:17 and 10:17 UTC every day by a job that publishes whatever it fetched and raises an alarm when a feed is late, rather than freezing the site over one bad night. Bitcoin data runs through 15 September 2026.

Daily cryptocurrency closes — Yahoo Finance

  • Provider Yahoo Finance
  • Access the open-source yfinance Python library, daily bars
  • Requested from 1 April 2013, first reading taken as the feed offers it
  • Cadence daily, refreshed daily
  • Used for every Bitcoin, Ethereum, Solana and XRP figure on the site — plans, charts, articles and the landing exhibit
  • Terms Yahoo Terms of Service, read 2 September 2026
  • Method Crypto Data Pipelines
SeriesFeed idBasisFirst readingLatest readingReadingsMissing
BitcoinBTC-USDprice only17 September 201415 September 20264,382none
EthereumETH-USDprice only9 November 201715 September 20263,233none
SolanaSOL-USDprice only10 April 202015 September 20262,350none
XRPXRP-USDprice only9 November 201715 September 20263,233none

Each reading is the day's closing price in US dollars on Yahoo's BTC-USD, ETH-USD, SOL-USD and XRP-USD feeds — a multi-exchange composite rather than one venue's print. Bitcoin is stored to the cent; the other three to four decimals, because Solana's first close was $0.9511 and XRP's $0.2175. The fetch asks for everything from April 2013 and takes what the feed returns, so each series begins on the first day Yahoo publishes for it. Nothing is forward-filled in the pipeline: a scheduled buy that lands on a day with no close executes at the next close, and the row export records both dates. A plan dated before a series begins starts on its first close; buys scheduled earlier are neither made nor counted as invested.

Weekly market bars — Yahoo Finance

  • Provider Yahoo Finance
  • Access the open-source yfinance Python library, weekly bars with dividends reinvested where the instrument pays them
  • Requested from 1 January 2000, first reading taken as the feed offers it
  • Cadence weekly, refreshed daily
  • Used for the equity, index, commodity and bond rows of the simulator and the articles
  • Terms Yahoo Terms of Service, read 2 September 2026
  • Method Macro Asset Origins
SeriesFeed idBasisFirst readingLatest readingReadingsMissing
S&P 500 (total return)^SP500TRtotal return3 January 20007 September 20261,393none
Nasdaq 100 (QQQ)QQQtotal return3 January 20007 September 20261,393none
Dow Jones (DIA)DIAtotal return3 January 20007 September 20261,393none
Gold (continuous futures)GC=Fprice only, front-month futures28 August 20007 September 20261,359none
Silver (continuous futures)SI=Fprice only, front-month futures28 August 20007 September 20261,359none
Crude oil, WTI (continuous futures)CL=Fprice only, front-month futures21 August 20007 September 20261,360none
Total bond market (BND)BNDtotal return9 April 20077 September 20261,014none
AppleAAPLtotal return3 January 20007 September 20261,393none
MicrosoftMSFTtotal return3 January 20007 September 20261,393none
Alphabet (Google)GOOGLtotal return16 August 20047 September 20261,152none
AmazonAMZNtotal return3 January 20007 September 20261,393none
NvidiaNVDAtotal return3 January 20007 September 20261,393none
Meta (Facebook)METAtotal return14 May 20127 September 2026748none
TeslaTSLAtotal return28 June 20107 September 2026846none

One bar a week, stored to four decimals. Three rows are deliberately not the index you might expect. The S&P 500 is ^SP500TR, the same 500 companies with dividends reinvested: the price-only ^GSPC understates a real holding by about 23% over the window this site measures most often. The Dow is DIA, the Dow's own ETF, dividends reinvested, less a 0.16% expense ratio. The Nasdaq 100 is QQQ, and that is a substitution rather than an adjustment — no free total-return series exists for the Nasdaq Composite — which is why the row was renamed from "NASDAQ" on 26 August 2026 instead of being quietly re-pointed. Gold, silver and oil are Yahoo's continuous front-month futures tickers; the contracts themselves trade on COMEX and NYMEX. Bonds is Vanguard's total bond-market ETF and begins at its launch. Each series starts on its first weekly bar, which for a company listed after 2000 is the week of its listing. A scheduled buy that falls between bars executes at the next bar.

House prices — FRED, from the Federal Housing Finance Agency

  • Provider FRED
  • Access FRED's CSV endpoint through the pandas-datareader library, no key
  • Requested from 1 January 2000, first reading taken as the feed offers it
  • Cadence quarterly, refreshed daily
  • Used for the national and fifty state housing rows
  • Terms FRED terms of use, read 2 September 2026
  • Method Macro Asset Origins
SeriesFeed idBasisFirst readingLatest readingReadingsMissing
US house prices (national)USSTHPIprice index1 January 20001 April 2026106none
50 more series — every state, by FHFA series id
SeriesFeed idBasisFirst readingLatest readingReadingsMissing
Alabama house pricesALSTHPIprice index1 January 20001 April 2026106none
Alaska house pricesAKSTHPIprice index1 January 20001 April 2026106none
Arizona house pricesAZSTHPIprice index1 January 20001 April 2026106none
Arkansas house pricesARSTHPIprice index1 January 20001 April 2026106none
California house pricesCASTHPIprice index1 January 20001 April 2026106none
Colorado house pricesCOSTHPIprice index1 January 20001 April 2026106none
Connecticut house pricesCTSTHPIprice index1 January 20001 April 2026106none
Delaware house pricesDESTHPIprice index1 January 20001 April 2026106none
Florida house pricesFLSTHPIprice index1 January 20001 April 2026106none
Georgia house pricesGASTHPIprice index1 January 20001 April 2026106none
Hawaii house pricesHISTHPIprice index1 January 20001 April 2026106none
Idaho house pricesIDSTHPIprice index1 January 20001 April 2026106none
Illinois house pricesILSTHPIprice index1 January 20001 April 2026106none
Indiana house pricesINSTHPIprice index1 January 20001 April 2026106none
Iowa house pricesIASTHPIprice index1 January 20001 April 2026106none
Kansas house pricesKSSTHPIprice index1 January 20001 April 2026106none
Kentucky house pricesKYSTHPIprice index1 January 20001 April 2026106none
Louisiana house pricesLASTHPIprice index1 January 20001 April 2026106none
Maine house pricesMESTHPIprice index1 January 20001 April 2026106none
Maryland house pricesMDSTHPIprice index1 January 20001 April 2026106none
Massachusetts house pricesMASTHPIprice index1 January 20001 April 2026106none
Michigan house pricesMISTHPIprice index1 January 20001 April 2026106none
Minnesota house pricesMNSTHPIprice index1 January 20001 April 2026106none
Mississippi house pricesMSSTHPIprice index1 January 20001 April 2026106none
Missouri house pricesMOSTHPIprice index1 January 20001 April 2026106none
Montana house pricesMTSTHPIprice index1 January 20001 April 2026106none
Nebraska house pricesNESTHPIprice index1 January 20001 April 2026106none
Nevada house pricesNVSTHPIprice index1 January 20001 April 2026106none
New Hampshire house pricesNHSTHPIprice index1 January 20001 April 2026106none
New Jersey house pricesNJSTHPIprice index1 January 20001 April 2026106none
New Mexico house pricesNMSTHPIprice index1 January 20001 April 2026106none
New York house pricesNYSTHPIprice index1 January 20001 April 2026106none
North Carolina house pricesNCSTHPIprice index1 January 20001 April 2026106none
North Dakota house pricesNDSTHPIprice index1 January 20001 April 2026106none
Ohio house pricesOHSTHPIprice index1 January 20001 April 2026106none
Oklahoma house pricesOKSTHPIprice index1 January 20001 April 2026106none
Oregon house pricesORSTHPIprice index1 January 20001 April 2026106none
Pennsylvania house pricesPASTHPIprice index1 January 20001 April 2026106none
Rhode Island house pricesRISTHPIprice index1 January 20001 April 2026106none
South Carolina house pricesSCSTHPIprice index1 January 20001 April 2026106none
South Dakota house pricesSDSTHPIprice index1 January 20001 April 2026106none
Tennessee house pricesTNSTHPIprice index1 January 20001 April 2026106none
Texas house pricesTXSTHPIprice index1 January 20001 April 2026106none
Utah house pricesUTSTHPIprice index1 January 20001 April 2026106none
Vermont house pricesVTSTHPIprice index1 January 20001 April 2026106none
Virginia house pricesVASTHPIprice index1 January 20001 April 2026106none
Washington house pricesWASTHPIprice index1 January 20001 April 2026106none
West Virginia house pricesWVSTHPIprice index1 January 20001 April 2026106none
Wisconsin house pricesWISTHPIprice index1 January 20001 April 2026106none
Wyoming house pricesWYSTHPIprice index1 January 20001 April 2026106none

The Federal Housing Finance Agency's All-Transactions House Price Index, one series per state plus the national one, quarterly, each an index (1980 Q1 = 100) rather than a price. The simulator buys fractional units of the index, so a housing row shows what the same dollars would have done tracking that state's prices — before leverage, rent, taxes, maintenance and transaction costs, which are most of a real property outcome. Suggested citation: U.S. Federal Housing Finance Agency, All-Transactions House Price Index for the United States [USSTHPI], retrieved from FRED, Federal Reserve Bank of St. Louis; the state series follow the same form with their own ids.

Commercial real estate — FRED, from the Federal Reserve Board

  • Provider FRED
  • Access FRED's CSV endpoint through the pandas-datareader library, no key
  • Requested from 1 January 2000, first reading taken as the feed offers it
  • Cadence quarterly, refreshed daily
  • Used for the Commercial Real Estate row
  • Terms FRED terms of use, read 2 September 2026
  • Method Macro Asset Origins
SeriesFeed idBasisFirst readingLatest readingReadingsMissing
Commercial real estate (Fed Z.1)BOGZ1FL075035503Qprice index1 January 20001 April 2026106none

The Federal Reserve Board's Z.1 Financial Accounts series FL075035503, "Commercial Real Estate Price Index, Level", published quarterly and redistributed by FRED as BOGZ1FL075035503Q. It is a level, not an index anchored near 100: the seed runs from about 125,000 to 314,000, and the simulator buys fractional units of it like any other row. The Fed's series analyzer describes it as computed, since the first quarter of 1996, from CoStar's U.S. Composite Index excluding multifamily (value-weighted), and before that from appraisal-based price-per-square- foot series; it has no transactions component. Suggested citation: Board of Governors of the Federal Reserve System (US), Interest Rates and Price Indexes; Commercial Real Estate Price Index, Level [BOGZ1FL075035503Q], retrieved from FRED, Federal Reserve Bank of St. Louis.

Inflation — FRED, from the Bureau of Labor Statistics

  • Provider FRED
  • Access FRED's CSV endpoint through the pandas-datareader library, no key
  • Requested from 1 January 2000, first reading taken as the feed offers it
  • Cadence monthly, refreshed daily
  • Used for the CPI purchasing-power overlay and the real-return figures
  • Terms FRED terms of use, read 2 September 2026
  • Method The DCA Engine & Lump Sum
SeriesFeed idBasisFirst readingLatest readingReadingsMissing
CPI-U (BLS)CPIAUCSLprice index1 January 20001 August 2026319none

The Consumer Price Index for All Urban Consumers, all items, U.S. city average, seasonally adjusted (1982–84 = 100), published monthly by the Bureau of Labor Statistics and redistributed by FRED as CPIAUCSL. The engine interpolates linearly between monthly readings to draw a daily purchasing-power line; the core engine article describes the arithmetic. Suggested citation: U.S. Bureau of Labor Statistics, Consumer Price Index for All Urban Consumers: All Items in U.S. City Average [CPIAUCSL], retrieved from FRED, Federal Reserve Bank of St. Louis.

Market sentiment — alternative.me

  • Provider alternative.me
  • Access https://api.alternative.me/fng/?limit=0, the full history in one request, no key
  • Requested from 1 February 2018, first reading taken as the feed offers it
  • Cadence daily, refreshed daily
  • Used for the Fear & Greed chart overlay, on the free tier; it shades the chart and sizes nothing
  • Terms alternative.me API rules, read 2 September 2026
  • Method Smart DCA & the Mayer Multiple
SeriesFeed idBasisFirst readingLatest readingReadingsMissing
Crypto Fear & Greed Indexfngindex level1 February 201816 September 20263,1464 days never published

A daily 0–100 sentiment reading that alternative.me build from volatility (25%), market momentum and volume (25%), social media (15%), surveys (15%), Bitcoin dominance (10%) and search trends (10%). The whole history is re-fetched each night. It is not an input to any purchase rule: Smart DCA reads the Mayer Multiple, not this index. Four dates were never published by the feed and are listed under freshness below.

Live Bitcoin spot — CoinGecko

  • Provider CoinGecko
  • Endpoint https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd
  • Access the keyless public API, called from the visitor's browser
  • Refresh every 60 seconds while the app is open, backing off to 15 minutes when CoinGecko rate-limits the request
  • Used for the live Bitcoin spot figure in the app header, and nothing else — no historical figure uses it, and a pinned share link drops it because "now" cannot be pinned
  • Terms CoinGecko API terms, read 2 September 2026
  • Method Crypto Data Pipelines

The only market-data request the site makes at read time. The pipeline never stores it, so it appears in no seed file and moves no published figure; if the request fails, the header falls back to the last daily close and says so.

No provider: two formulas and one derived signal

  • Provider No provider — a formula
  • Used for the two fixed-yield rows, a static savings model for the risk assets to stand against
  • Method Macro Asset Origins
CurveStartsBaseAPYCompounding
CD (3% Avg APY)1 January 20001003%weekly, (1 + APY)7 / 365.25 per step
529 Plan (7% Avg APY)1 January 20001007%weekly, (1 + APY)7 / 365.25 per step

A certificate of deposit at 3% APY and a 529 plan at 7% APY, each starting at 100 on 1 January 2000 and compounding weekly. They have no provider because they are arithmetic; the constants in the table are read from the app's own code by the build, so this section cannot describe a formula the app no longer runs.

  • Provider Derived from the closes above
  • Used for the Mayer Multiple overlay and the Smart DCA weighting, for Bitcoin, Ethereum, Solana and XRP
  • Method Smart DCA & the Mayer Multiple

Window 200 daily closes · below 0.8 reads as cheap · above 2.4 reads as rich — the engine's own constants, printed by the build.

The Mayer Multiple is the close divided by its own 200-day simple moving average, computed in the browser from the daily closes listed under Yahoo Finance. No vendor and no separate feed; it inherits the freshness of the series it is computed from.

From a close to a number

Every asset, from a bitcoin to a state house-price index, is bought in fractional units: the dollars scheduled that day divided by that day's reading. Holdings are the running sum of those fractions, and the value on any date is holdings multiplied by that date's reading. That is what puts a house and a bitcoin on one axis, and the fractional units article walks through it.

A plan has three phases — wait, buy, hold — and its schedule is built in UTC calendar days. When a scheduled buy lands on a day with no reading, the money is held and spent at the next reading; nothing is skipped, and the row export shows both the scheduled and the executed date. A plan dated before a series begins starts on the series' first reading, and buys scheduled earlier are neither made nor counted as invested. The core engine article has the full rules, including how the monthly schedule handles month lengths and how the CPI line is interpolated between monthly readings.

What the arithmetic leaves out, on purpose and everywhere: fees, spreads, slippage, custody, taxes, and for the housing rows the leverage, rent, maintenance and transaction costs that make up most of a real property outcome. Every figure on this site is gross of all of them. Rounding: Bitcoin closes are stored to the cent, every other series to four decimals, and a holding is displayed to a precision derived from its size so that a small position never rounds to zero.

Check a number yourself

The standard question the calculator comparison put to every tool, computed here by the same engine, on the same closes, when this page was built.

$50 every week from 1 January 2018 to 1 January 2021, into Bitcoin. Each purchase buys $50 ÷ that day's close of a bitcoin; the holding is the sum of those fractions, and its value on the end date is holding × the close on 1 January 2021.

The first three purchases, exactly as the engine records them.
ScheduledExecutedCloseSpentBought (BTC)Held (BTC)
1 January 20181 January 2018$13,657.20$50.000.003661070.00366107
8 January 20188 January 2018$15,170.10$50.000.003295960.00695703
15 January 201815 January 2018$13,819.80$50.000.003618000.01057503
  • Purchases 157, $50 each, $7,850.00 in total
  • Holding 1.05667490 BTC
  • Close on 1 January 2021 $29,374.15
  • Value $31,038.93

The calculator comparison published the same plan as 157 buys, $7,850.00 in, 1.05667490 BTC and $31,038.93 on 27 August 2026. The build checks that the figures above still agree with it, and they do.

Computed by the engine at revision 783a4b8 (12 September 2026) over the Bitcoin closes loaded for this build.

To reproduce it from the Bitcoin closes: take every seventh day from 1 January 2018 to 1 January 2021 inclusive, divide $50 by the close on each of those days (or the next day that has one), add the fractions up, and multiply the total by the close on 1 January 2021. The simulator's row export lists all the purchases if you would rather check them than recompute them.

Freshness and gaps

The daily job re-downloads every feed in full and leaves out the period still in progress, because a running price is not a close: the UTC day for the daily feeds, and the trading week for the weekly ones, where each bar is dated by its Monday and kept from the Saturday after it. It writes what it received and then audits what it wrote: how far each feed trails today, whether any two readings sit further apart than the cadence allows, and whether a daily feed has grown a hole it did not have before. A late feed still publishes — withholding the whole update would turn one slow provider into a site-wide freeze — but it publishes with an alarm. The tolerances are calibrated from observed lag, which is why quarterly housing data may run most of a year behind before the job calls it stale.

Two kinds of missing day are told apart below, because they mean different things: dates the provider never published, which the job lists by date so a backfill is noticed, and recent days the provider has not published yet — Yahoo's cryptocurrency feed often serves today's provisional bar before it has finished the day before.

The daily gate, from the job's own constants.
CadenceFeedsStale afterWidest gap allowed
dailyYahoo Finance (4 series), alternative.me (1 series)3 days1 day
weeklyYahoo Finance (14 series)21 days11 days
monthlyFRED (1 series)75 days75 days
quarterlyFRED (52 series)280 days130 days
What the simulator loaded when this page was built.
FileSeriesData throughBytesHoles
Daily Bitcoin closes1 series15 September 2026137,095none
Fear & Greed index1 series16 September 202681,7784 days never published
Daily Ethereum, Solana and XRP closes3 series15 September 2026274,652none
Weekly market bars, FRED housing, commercial real estate and CPI67 series1 April 2026 to 7 September 2026 (varies by series)714,518none
  • Crypto Fear & Greed Index — never published by the feed: 14 April 2018, 15 April 2018, 16 April 2018, 26 October 2024 (the job's note: “alternative.me never published these”)

Counts on this page carry their unit: readings are rows in a file; a span is calendar days from first to last reading inclusive; a missing day is a calendar day inside a daily series' span with no reading.

Terms and attribution

Each provider's terms were read first-hand on 2 September 2026. Where a condition attaches to the use of the data, the site meets it where the data is displayed, not only here.

  • Yahoo Finance — Yahoo Terms of Service, read 2 September 2026. Yahoo publishes no data license for finance.yahoo.com; its Terms of Service are linked here as read, and no license is claimed under them. The closes are collected with the open-source yfinance library, which is not affiliated with Yahoo. Yahoo credits CoinMarketCap as its cryptocurrency data provider.
  • Yahoo Finance — Yahoo Terms of Service, read 2 September 2026. As above: linked as read, no license claimed under them, collected with the open-source yfinance library.
  • FRED — FRED terms of use, read 2 September 2026. FRED asks that data be attributed to the original source and to FRED, and marks these Federal Housing Finance Agency series Public Domain: Citation Requested. The credit, FHFA via FRED, sits in the chart's source line whenever a housing row is drawn; the suggested citation is printed with the series notes here.
  • FRED — FRED terms of use, read 2 September 2026. FRED labels this series Public Domain: Citation Requested, the same label as the housing and CPI series; the "data in this graph are copyrighted" line on its FRED page is the generic notice every FRED series carries. What the site redistributes is the Federal Reserve Board's published Z.1 series under FRED's terms, cited as FRED asks: the credit, Fed Z.1 via FRED, sits in the chart's source line whenever the row is drawn. The Board's own description names CoStar's composite index as the input since 1996; that origin is stated here rather than implied.
  • FRED — FRED terms of use, read 2 September 2026. Bureau of Labor Statistics data are in the public domain; FRED marks the series Public Domain: Citation Requested and BLS asks to be cited as the source. The credit, BLS via FRED, sits in the chart's source line whenever the purchasing-power line is drawn and beside the CPI-U figure under the chart; the suggested citation is printed with the series notes here.
  • alternative.me — alternative.me API rules, read 2 September 2026. "Commercial use is allowed as long as the attribution is given right next to the display of the data." The credit sits in the chart's source line whenever the overlay is drawn, and in the data note beneath the chart.
  • CoinGecko — CoinGecko API terms, read 2 September 2026. Attribution is required on every plan, displayed prominently and close to the data — "Price data by CoinGecko" with a link, per CoinGecko's attribution guide. The credit sits beside the live readout while a CoinGecko response is on screen.

Changes to the sources

Dated from the repository's history. A source that changes is renamed or retired rather than quietly re-pointed.

  • 2 September 2026 — FRED credits beside the chart for housing, commercial real estate and CPI-U, shown while that data is drawn; index levels shown as levels rather than as dollar prices.
  • 27 August 2026 — XRP daily closes added.
  • 26 August 2026 — S&P 500 and Dow Jones moved from price-only indices to total-return series (^SP500TR, DIA); the Nasdaq Composite row replaced by the Nasdaq 100 (QQQ) and renamed, because the change is a different index, not an adjustment.
  • 25 August 2026 — Ethereum and Solana daily closes added from the same Yahoo Finance rig as Bitcoin.
  • 25 August 2026 — The MVRV Z-score overlay and its CoinMetrics community-data feed retired: the feed had been stale for 94 days, and its license (CC BY-NC 4.0) does not permit use in a paid product. Smart DCA now reads the Mayer Multiple, computed from data the site already holds.
  • 9 April 2026 — Fear & Greed index added as a chart overlay; the two synthetic fixed-yield curves added.

Same money.
Same dates.
One axis.

Historical dollar-cost averaging on real closes. Not financial advice.

Explore Simulator Knowledge base Articles Data sources About
Legal Privacy Terms Disclaimer
© 2026 BTC DCA Engine
Menu
Simulator Knowledge base Articles Data sources About

Privacy · Terms · Disclaimer