定期定額真的有效嗎
每月500美元投入SPY vs 一次單筆,2016至2026年數據顯示單筆領先,定期定額真正價值在養成習慣。
定期定額投資,指的是在固定時間投入固定金額,例如每個月一號固定投入 500 美元買進指數型基金,不管當天價格高低。定期定額有效嗎?在它被設計來達成的目標上,它是有效的:它把投資變成一種習慣,並把擇時進場的決定權從你手中拿走。但在一個上漲的市場中,它無法勝過一次性投入相同總金額的作法。
定期定額究竟是什麼
定期定額是一種時間安排,而不是一套挑選贏家的系統。你承諾在固定間隔投入固定金額,並接受當時的價格。當價格低時,你的 500 美元能買到較多股數;當價格高時,則買到較少股數。隨著時間推移,你的每股平均成本會落在你所支付價格的中間地帶。
公平的比較對象是一次性單筆投入:也就是將相同的總金額,在期初一次性全部投入。大多數人很少會乾淨俐落地面臨這種選擇。收入是隨著每次發薪水而來,而你收到錢就投入,這本身就是一種預設的定期定額。只有當你手上已經持有一大筆現金時,例如獲得一筆遺產或工作獎金,才會真正面臨單筆投入的問題。這兩種情況並不相同,而以下的數據會將它們區分開來。
每月投入 500 美元到標普 500 指數
先看一個簡單的版本。從 2016 年 1 月開始,在每個月初買進 500 美元的 SPY(標普 500 指數型基金),一直持續到 2026 年年中。與此同時,假設你在 2016 年 1 月就擁有相同的總金額,並且一次性全部投入。
每個數據背後的精確 SQL 語法
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到 2026 年 6 月,每月投入的計畫將 63 萬美元的投入本金,變成了 139.3 萬美元。而從第一個月就全額投入的單筆投資,最終價值為 237.7 萬美元。投入的總金額相同,但單筆投資的結果明顯領先。
這個差距在圖表中清晰可見,這並非股票本身的特性所致。單筆投資讓全部的 63 萬美元從 2016 年 1 月就開始運作。每月投入的計畫則只承擔了截至當時為止已投入資金的風險:等到它投入一半資金時,數年已經過去,而最早、最便宜的那些股票,在整體資金池中只佔了一小部分。在一個長達十年、趨勢向上的市場中,更早投入的資金享有更長的複利成長時間。
單筆投入總是贏家嗎?
在一個指數的十年期間,是的。為了確認這不是 SPY 特有的現象,這裡列出五檔以相同方式持有的標的,從 2016 年到 2026 年每月投入 500 美元,旁邊並列著單筆投入的替代方案。這五檔標的在這個時間區間內都沒有進行股票分割,這使得原始價格從頭到尾都具有可比性。
每個數據背後的精確 SQL 語法
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單筆投入在每一檔標的的結果都領先。MSFT 的每月投入計畫達到 199.4 萬美元,而單筆投入則達到 529.5 萬美元。KO 是五者中漲勢最慢的,每月投入計畫達到 92.6 萬美元,單筆投入則達到 116.8 萬美元。這個差距與漲幅大小成正比:一檔標的漲得越快,早期全額投入所拉開的差距就越大。
定期定額的價值所在
單筆投入的優勢,仰賴兩個你很少同時擁有的條件:一筆整筆的資金,以及一個從你買進那天起就大致上漲的市場。改變進場時間點,單筆投入的結果就會有很大的不同。下一個圖表執行了一個為期五年、總額 3 萬美元的計畫,從 2016 年到 2021 年的每個 1 月開始,每月投入 500 美元,持續六十個月,旁邊則是在第一天就單筆投入同樣的 3 萬美元。
每個數據背後的精確 SQL 語法
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在這裡,單筆投入在每個起始年份也都贏了。但重點在於結果的分散程度。一筆 3 萬美元的單筆投入,最終價值從 2018 年開始(其五年期間涵蓋了 2018 年底的拋售和 2020 年的崩盤)的 45.5 萬美元,到 2017 年開始的 60 萬美元不等。你的結果完全取決於你剛好開始的那個月份。而每月投入計畫的最終結果則較為集中,落在 37 萬美元到 45.5 萬美元之間。分批投入縮小了結果的波動範圍。它犧牲了部分上漲潛力,換來的是減少對進場時機的依賴。
定期定額真正的用途
綜合來看,這些圖表說明了清楚的事實。在一個趨勢向上的市場中,及早投入的單筆資金,會勝過緩慢投入的相同資金,而且這在多個起始日期下,對指數和個股都成立。定期定額並非一種用來擊敗此現象的方法。它的價值在別處。
首先,它符合收入進帳的方式。你每月領薪,就每月投資。並沒有一筆閒置的資金等著你去配置。定期定額本質上就是邊賺邊投的行為。
其次,它消除了擇時決策以及隨之而來的遺憾。最難以下定決心投入單筆資金的時刻,就是在市場下跌之後,感覺最糟的時候。一個固定的時間表把這個決定權從你手中拿走,讓你在恐懼中持續買進,並且是以較低的價格買進。上面 2018 年和 2020 年開始的計畫,都持續在兩次拋售中一路投入。
第三,它縮小了結果的分布範圍。正如不同起始年份的圖表所示,定期定額的最終結果較為集中,而單筆投入的結果則隨起始時間大幅波動。對於一個無法承受進場時機不佳的儲蓄者來說,更集中的結果範圍,可能比更高的平均報酬更為重要。
以上這些都不是在論證定期定額能最大化報酬。如果你今天手上已經持有現金,並且有長遠的投資期間,歷史紀錄支持你將它投入。但如果你是逐月累積資金,這也符合多數人的情況,那麼定期定額本身就是那個計畫。將它與分散持有的投資組合搭配,以避免把整個時間表押注在單一股票上,並且留意波動性,如果更平穩的過程能幫助你在市況不佳的月份堅持投資下去的話。
常見問題
定期定額能打敗單筆投入嗎?
在一個上漲的市場中,通常不會。從 2016 年到 2026 年,每月投入 500 美元到 SPY,將 63 萬美元的投入本金增長到 139.3 萬美元,而相同總額在期初一次性投入則達到 237.7 萬美元。單筆投入的資金從第一天就開始運作了。
定期定額是一個好策略嗎?
對於每月儲蓄的人來說,這是很自然的方法:你每筆薪水入帳時就進行投資,永遠不必費心擇時進場。它減少了你的結果對起始日期的依賴程度,代價是在市場穩定上漲時犧牲部分上漲潛力。
定期定額的主要好處是什麼?
紀律性,以及降低擇時風險。它讓買進動作自動化,無論市況好壞都一樣執行,並且縮小了不同進場點所導致的结果差異範圍,正如上方五年期起始年份圖表所示。
定期定額能降低你的平均成本嗎?
它會將你的平均成本設定為你在執行期間所支付價格的平均值,在價格低時買進較多股數,在價格高時買進較少股數。這個成本會低於你可能付出的最差價格,並高於最佳價格。這並不保證能取得低於市場平均的成本。
我應該一次全部投入,還是分批投入?
當你手上已經持有現金,並且有長遠的投資期間時,歷史紀錄傾向於及早進行單筆投入。分批投入則是用預期報酬,去換取更集中的結果範圍,以及萬一在你買進後市場立刻下跌時,較少的遺憾感。這兩者都不是對未來走勢的預測。
這裡的每一個數字都是一個你可以打開並重新執行的已儲存查詢。更改股票代碼、每月投入金額或起始日期,就能在 Strasmore 終端機上親自測試這個計畫。