Observation Deck / Project 401k

S&P 500 DCA Calculator

Dollar-cost averaging β€” a fixed dollar amount, bought on a fixed schedule β€” replayed against real SPY closing prices. A backtest, not a forecast.
Set a start date, how often you contribute, how much, any employer match and whether dividends are reinvested — every figure updates as you go.

Loading price data…
 
How this works

The simulation

  • Employer match is a flat dollar amount added to every purchase, like a 401(k) match. Total invested, ROI and annualised return count it as money invested, so they show what the account earned, not the return on your own contributions alone.
  • “Monthly” means every 30 days, not the same date each calendar month β€” about 12.2 buys a year, and the date drifts earlier over time. Weekly is 7 days, bi-weekly is 14.
  • Each purchase fills at that UTC day’s closing price β€” the most recent close on or before the date, never a later one. Intraday highs and lows are ignored.
  • No fees, spreads, or taxes. A platform charging ~1% a buy would leave you ~1% fewer shares every time, so on costs alone every figure here is optimistic. Nothing is ever sold β€” profit is unrealised.
  • Buying continues through today, so an earlier start date also means more total dollars invested. Compare runs on ROI, not on profit.

The price data

  • Purchases fill at SPY’s actual closing price β€” what the SPDR S&P 500 ETF really traded at, adjusted for share splits.
  • Dividends are a switch on the plan. With Reinvest dividends ticked — the default — every distribution buys more shares at the closing price on its ex-dividend date. A real fund reinvests on the later pay date, so this is an approximation of one, not a replica. Switched off, dividends are left out entirely, neither reinvested nor counted as cash: SPY pays roughly 1–2% a year, so every figure then understates what a dividend-reinvesting fund would have earned.
  • SPY’s 0.09% expense ratio is already reflected in its price, so there is nothing further to deduct for it.

Reading the results

  • Average Cost per share lands below the average price you actually paid β€” a fixed dollar amount buys more shares when the price is low. That gap is dollar-cost averaging doing its job.
  • Return on Investment is the total across the whole duration. Annualised Return is the money-weighted rate (XIRR) β€” it accounts for when each contribution actually went in, so it is the figure to compare runs of different lengths on. Don’t divide ROI by the number of years.
  • Portfolio Value prices your whole stack at the most recent daily close. In the history table, Value on Date prices it at that row’s date instead β€” which is why the last row and the summary differ.

Your plan

Frequency
Portfolio value
—

Loading price data…

 

The averaging effect

Your average cost per share —
Average price on your purchase dates —

Did your start date matter? Annualised return for every start month, by how long you held

Each square is a plan of its own: start buying that month on your current schedule, hold for the period on the left, stop. The colour is that plan’s money-weighted annualised return — the same figure the tiles report. Rates don’t depend on how much goes in, so changing your contribution or your employer match moves nothing here; changing the frequency, or whether dividends are reinvested, does.

 

    One historical window, not a forecast. A short window mostly measures where the price happened to be when you started — the case for DCA rests on horizons measured in years. Drag the start date to watch the average cost move. Dividends, fees, spreads and taxes are not included — figures are price return only.

    Purchase history
    Click a column to sort. Value on Date prices the stack at that row’s close.
    # Date SPY Price Shares Bought From Dividends Total Shares Total Invested Value on Date Profit / Loss