Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

Does Dollar-Cost Averaging Work?

Does dollar-cost averaging work? A data study of $500 a month into SPY versus one lump sum from 2016 to 2026, and what averaging in is really for.

Dollar-cost averaging means investing a fixed amount on a fixed schedule, for example $500 into an index fund on the first of every month, whatever the price is that day. Does dollar-cost averaging work? It works at the job it is built for: it turns investing into a habit and takes the timing decision out of your hands. What it does not do, in a market that rises, is beat putting the same total dollars in all at once.

What dollar-cost averaging actually is

Dollar-cost averaging (DCA) is a schedule, not a system for picking winners. You commit a set dollar amount at a set interval and let the price be whatever it is. When the price is low your $500 buys more shares; when it is high it buys fewer. Over time your average cost per share lands in the middle of the prices you paid.

The honest comparison is against a lump sum: the same total dollars invested once, at the start. Most people never face that choice cleanly. Money arrives with each paycheck, and you invest it as it arrives, which is DCA by default. The lump-sum question only bites when you already hold a pile of cash at once, like an inheritance or a work bonus. The two situations are different, and the data below keeps them apart.

$500 a month into the S&P 500

Here is the plain version. Starting in January 2016, buy $500 of SPY (the S&P 500 index fund) at the start of every month through mid-2026. Alongside it, imagine you had the same total available in January 2016 and put it all in at once.

Query$500 a month into SPY vs one lump sum, 2016 to 2026 (portfolio value, $ thousands)
The exact SQL behind every number
WITH
monthly AS (
    SELECT toStartOfMonth(dt) AS mo, argMin(c, dt) AS px
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
               argMax(toFloat64(close), window_start) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= '2016-01-01 00:00:00' AND window_start < '2026-07-01 00:00:00'
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
               + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
        GROUP BY dt
    )
    GROUP BY mo
),
agg AS (
    SELECT argMin(px, mo) AS first_px, sum(500.0) AS total_invested FROM monthly
)
SELECT mo AS month,
       round(sum(500.0 / px) OVER (ORDER BY mo) * px / 1000, 1) AS dca_value,
       round((total_invested / first_px) * px / 1000, 1) AS lumpsum_value,
       round(sum(500.0) OVER (ORDER BY mo) / 1000, 1) AS invested
FROM monthly CROSS JOIN agg
ORDER BY mo

By June 2026 the monthly plan had turned $63k of contributions into $139.3k. The lump sum, fully invested from the first month, ended at $237.7k. Same total dollars in, and the lump sum finished well ahead.

The gap is visible in the chart, not in any property of the shares. The lump sum had all $63k working from January 2016. The monthly plan had only its contributions to date at risk: by the time it had put in half the money, years had passed, and the earliest and cheapest shares were a small slice of the pot. Over a decade that trended up, money invested earlier compounded longer.

Does the lump sum always win?

Across ten years of one index, yes. To check that it is not a quirk of SPY, here are five names held the same way, $500 a month from 2016 to 2026, with the lump-sum alternative beside each. All five are split-free over the window, which keeps the raw prices comparable end to end.

QuerySame $500-a-month plan vs a lump sum across five stocks, 2016 to 2026 ($ thousands)
The exact SQL behind every number
WITH
monthly AS (
    SELECT ticker, toStartOfMonth(dt) AS mo, argMin(c, dt) AS px
    FROM (
        SELECT ticker, toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
               argMax(toFloat64(close), window_start) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker IN ('SPY', 'QQQ', 'MSFT', 'JNJ', 'KO')
          AND window_start >= '2016-01-01 00:00:00' AND window_start < '2026-07-01 00:00:00'
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
               + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
        GROUP BY ticker, dt
    )
    GROUP BY ticker, mo
)
SELECT ticker,
       round(sum(500.0 / px) * argMax(px, mo) / 1000, 1) AS dca_final,
       round(sum(500.0) / argMin(px, mo) * argMax(px, mo) / 1000, 1) AS lumpsum_final
FROM monthly
GROUP BY ticker
HAVING count() = 126
ORDER BY lumpsum_final DESC

Lump sum ended ahead in every one. MSFT took the monthly plan to $199.4k and the lump sum to $529.5k. KO, the slowest riser of the five, reached $92.6k on the monthly plan and $116.8k on the lump sum. The gap tracked the size of the climb: the faster a name rose, the more the early full investment pulled away.

Where dollar-cost averaging earns its keep

The lump-sum edge leans on two things you rarely have together: a lump sum, and a market that mostly rises from the day you buy. Move the entry point and the lump-sum outcome moves a lot. This next panel runs a five-year, $30,000 plan starting each January from 2016 to 2021, $500 a month for sixty months, next to a lump sum of the same $30,000 on day one.

QueryFive-year, $30,000 plans by start year: dollar-cost averaging vs lump sum ($ thousands)
The exact SQL behind every number
WITH
monthly AS (
    SELECT toStartOfMonth(dt) AS mo, argMin(c, dt) AS px
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS dt,
               argMax(toFloat64(close), window_start) AS c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= '2016-01-01 00:00:00' AND window_start < '2026-07-01 00:00:00'
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
               + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
        GROUP BY dt
    )
    GROUP BY mo
),
w AS (
    SELECT mo, px,
        sum(500.0 / px) OVER (ORDER BY mo ROWS BETWEEN CURRENT ROW AND 59 FOLLOWING) AS dca_shares,
        count() OVER (ORDER BY mo ROWS BETWEEN CURRENT ROW AND 59 FOLLOWING) AS n_ahead,
        leadInFrame(px, 59) OVER (ORDER BY mo ROWS BETWEEN CURRENT ROW AND 59 FOLLOWING) AS end_px
    FROM monthly
)
SELECT toString(toYear(mo)) AS start_year,
    round(30000.0 / px * end_px / 1000, 1) AS lumpsum_final,
    round(dca_shares * end_px / 1000, 1) AS dca_final
FROM w
WHERE toMonth(mo) = 1 AND n_ahead = 60 AND toYear(mo) BETWEEN 2016 AND 2021
ORDER BY start_year

Lump sum won every start year here too. The spread is the point. A $30,000 lump sum ended anywhere from $45.5k for the 2018 start, whose five years took in the late-2018 selloff and the 2020 crash, up to $60k for the 2017 start. Your result hinged on the month you happened to begin. The monthly plan's endings were tighter, from $37k to $45.5k. Averaging in narrowed the range of outcomes. It gave up some upside in return for less dependence on timing.

What dollar-cost averaging is really for

Read together, the panels say something plain. In a market that trends up, a lump sum invested sooner beats the same money fed in slowly, and it holds across both indexes and individual stocks over many start dates. DCA is not a way to beat that. Its value sits elsewhere.

First, it matches how income arrives. You are paid monthly, and you invest monthly. There is no lump sum sitting idle waiting to be deployed. DCA is simply the act of investing as you earn.

Second, it removes the timing decision and the regret that rides with it. The hardest moment to commit a lump sum is right after a drop, when it feels worst. A fixed schedule takes that call out of your hands and keeps buying through the fear, at lower prices. The 2018 and 2020 starts above kept contributing straight through both selloffs.

Third, it narrows the band of outcomes. As the entry-year panel showed, DCA's endings clustered where the lump sum's swung with the calendar. For a saver who cannot afford a badly timed entry, a tighter band of results can matter more than a higher average.

None of this argues that DCA maximizes returns. If you already hold cash today and have a long horizon, the record favors investing it. If instead you are building the pile month by month, which describes most people, DCA is the plan itself. Pair it with a diversified holding to avoid betting the whole schedule on one stock, and keep volatility in view if a smoother ride helps you stay invested through the bad months.

FAQ

Does dollar-cost averaging beat investing a lump sum?

Usually not, in a rising market. Investing $500 a month in SPY from 2016 to 2026 grew $63k of contributions into $139.3k, while the same total invested at the start reached $237.7k. The lump sum's money was working from day one.

Is dollar-cost averaging a good strategy?

For a monthly saver it is the natural approach: you invest each paycheck as it lands and never have to time an entry. It reduces how much your outcome depends on the day you started, at the cost of some upside when markets rise steadily.

What is the main benefit of dollar-cost averaging?

Discipline and reduced timing risk. It automates buying through good months and bad ones alike, and it narrows the range of outcomes across different entry points, as the five-year start-year panel above shows.

Does dollar-cost averaging lower your average cost?

It sets your average cost to the average of the prices you paid across the schedule, buying more shares when prices are low and fewer when they are high. That comes in below the worst price you would have paid and above the best. It is not a guarantee of a below-market cost.

Should I invest all at once or spread it out?

The historical record favors investing a lump sum sooner when you already hold the cash and have a long horizon. Spreading it out trades expected return for a narrower range of outcomes and less regret if the market falls right after you buy. Neither one is a forecast.


Every figure here is a stored query you can open and re-run. Change the ticker, the monthly amount, or the start date and test the plan yourself on the Strasmore terminal.

#dollar-cost averaging#lump sum investing#index funds#spy#investing strategy