
執行這個策略
複製提示詞,讓 AI 依照上方證據的資料、條件與風險檢查重跑一次。
告訴你的AI:
幫我設定 FinLab,重跑 S&P 500 低波動股回測,對照 QQQ 與 RSP,請讀:https://finlab.finance/setup?relatedUrl=/blog/low-volatility-stocks-backtest
低波動股是過去一段時間每天漲跌幅度最小的股票,通常用過去一年日報酬的標準差來衡量。我們用每一天真實的 S&P 500 成分股,重建美股低波動 ETF SPLV 的規則,回測 2017 年 8 月到 2026 年 10 月:年化 8.5%、日夏普 0.60、最大回撤 -35.8%,含息 QQQ 是 19.7%、0.89、-35.1%,等權的 RSP 日夏普也有 0.69。另外兩個設計同樣輸 QQQ,45 組參數沒有一組贏,3 個設計都沒過驗證,因此不開策略頁。
波動確實降低了,年化 15.7%,QQQ 是 23.4%,最大回撤卻沒有跟著變淺。本文最有用的發現是一個回測錯誤:第三個設計照原本的寫法重跑,夏普 0.94、最大回撤只有 -16.7%,這兩個數字都來自持股表裡 26 個空手的月份,用兩行程式就能抓到。
低波動股關鍵數字
| 設計 | 日夏普 | 年化報酬 | 最大回撤 | 同期 QQQ 夏普 | 贏 QQQ | 贏 RSP | 前/後半段夏普 | 每邊 0.1% 成本的夏普 |
|---|---|---|---|---|---|---|---|---|
| SPLV 規則 | 0.60 | 8.5% | -35.8% | 0.89 | 0 / 9 | 0 / 9 | 0.68 / 0.50 | 0.59 |
| 保守公式 | 0.58 | 9.3% | -40.9% | 0.88 | 0 / 9 | 0 / 9 | 0.31 / 1.17 | 0.57 |
| 低波動+淨買回 | 0.69 | 10.7% | -39.4% | 0.87 | 0 / 27 | 10 / 27 | 0.75 / 0.64 | 0.67 |
| SPLV 基金 | 0.57 | 8.2% | -36.3% | 對照 | 0.64 / 0.50 | |||
| USMV 基金 | 0.72 | 10.2% | -33.1% | 對照 | 0.73 / 0.73 | |||
| RSP 等權 | 0.69 | 11.9% | -39.0% | 對照 | 0.74 / 0.63 | |||
| SPY | 0.84 | 14.9% | -33.7% | 對照 | 0.86 / 0.83 | |||
| QQQ | 0.89 | 19.7% | -35.1% | 基準 | 1.00 / 0.77 |
每一列都含息,都到 2026-10-30。三個設計的起點取決於資料:SPLV 規則 2017-08-21,淨買回版 2017-09-01,保守公式 2019-04-01,各自跟同期的 QQQ 比。5 檔基金列用 SPLV 規則的日期。贏的欄位是日夏普較高的參數組數。
低波動股是什麼
波動度衡量股價繞著自己的平均值擺動多遠。本文用過去 252 個交易日(約一年)日報酬的標準差,SPLV 規則要求一檔股票至少有其中 226 天的資料才列入排名。換股當天數字最小的 S&P 500 成分股,就是這裡說的低波動股。文中組合的波動度是同一個算法套在組合的日報酬上,再乘以 √252 年化。
「低風險」有三種常見量法,下面的研究用的也不一樣:
| 指標 | 量的是什麼 | 誰在用 |
|---|---|---|
| 總波動 | 股價所有的每日變動 | 本文三個設計、SPLV |
| 特質波動 | 扣掉大盤影響後剩下的變動 | Ang 等人(2006) |
| Beta | 股票跟著大盤動的程度 | Frazzini 與 Pedersen(2014) |
教科書說風險越高、報酬應該越高。低波動異象指的是相反的現象:風險較高的股票,報酬常常比較低。Ang、Hodrick、Xing 與 Zhang(2006)發現特質波動高的股票,後續報酬特別低。Blitz 與 van Vliet(2007)把主張寫在論文標題上:〈The Volatility Effect: Lower Risk Without Lower Return〉。Baker、Bradley 與 Wurgler(2011)把績效基準看成套利的限制:以指數為比較對象的機構法人,很難去利用這個異象。Frazzini 與 Pedersen(2014)認為受槓桿限制的投資人會多付錢買高 Beta 資產,他們的「押注低 Beta」是加槓桿做多低 Beta、放空高 Beta 的多空組合,只做多的人只拿得到其中一邊。
這些論文涵蓋數十年,本文只有 9.2 年,問的問題也比較窄:這段期間,只做多一籃低波動的 S&P 500 成分股,能不能贏 QQQ 或 RSP?RSP 是比較有參考價值的對照,因為這些設計挑的就是 RSP 等權持有的股票,只輸 QQQ 說明不了太多。
站上的美股低波動策略是另一回事:它是用 2 倍槓桿 ETF 執行的 QQQ 擇時規則,沒有選低波動個股,結果不能套用到本文的股票組合。
哪些股票算低波動股
依 SPLV 規則,權重偏向防禦型類股。下表是各設計的平均類股權重,類股標籤是現在的分類,資料沒有保留歷史分類。
| 類股 | SPLV 規則 | 保守公式 | 低波動+淨買回 |
|---|---|---|---|
| 公用事業 | 20% | 4% | 2% |
| 必需消費 | 17% | 10% | 13% |
| 金融 | 15% | 25% | 32% |
| 醫療保健 | 11% | 11% | 16% |
| 工業 | 11% | 15% | 10% |
| 不動產 | 9% | 6% | 2% |
| 科技 | 7% | 9% | 8% |
| 非必需消費 | 5% | 9% | 11% |
| 通訊服務 | 2% | 5% | 2% |
| 原物料 | 2% | 3% | 3% |
| 能源 | 1% | 3% | 1% |
SPLV 規則平均有 52% 在公用事業、必需消費和金融,科技只有 7%。名單會一直變:目標權重一年週轉約 0.65 次,固定名單很快就過時,要看最新一期的名單,取下面程式碼裡 picks 的最後一列即可。另外兩個設計從波動訊號出發,組合已經相當不同:公用事業降到 4% 和 2%,金融升到 25% 和 32%。
SPLV 怎麼運作,我們重建得多接近
SPLV 追蹤 S&P 500 Low Volatility Index,規則有四步:
- 把 S&P 500 成分股依 252 日波動排序。
- 留下最低的 100 檔。
- 權重與波動成反比,最穩的股票拿到最多。
- 在 2、5、8、11 月第三個週五後換股。
我們把這四步套在 FinLab 的歷史成分股名單上,只有一點不同:指數用前一個月最後一個交易日的市場資料,我們用第三個週五當天的資料。日報酬與基金的相關係數是 0.997。同一段日子,規則年化 8.5%、日夏普 0.60,SPLV 是 8.2%、0.57。基金的報酬已扣費用,我們的線沒有成本,這個差距沒有再往下拆。重建得夠接近,測規則大致就是在測基金的做法。
另一檔低波動 ETF USMV 用最小變異數最佳化,是不同的規則,會把股票之間的連動一起算進去。它和我們的規則日相關 0.939,日夏普 0.72、年化 10.2%、最大回撤 -33.1%。日夏普贏 SPLV 與 RSP,輸 QQQ。它在本文只當對照線,我們沒有重建。
三個設計與通過條件
設計、鄰近參數與通過條件,都在跑回測之前寫在 GitHub issue 上。SPLV 規則和保守公式是在沒看過結果的情況下定義的。第三個設計來自更早的筆記本,結果已經看過,所以參數原樣保留。
- SPLV 規則:如上。鄰近參數是 50、100、150 檔乘上 126、252、378 日視窗。
- 保守公式:出自 Blitz 與 van Vliet(2018)的〈The Conservative Formula: Quantitative Investing Made Easy〉。先取 36 個月波動最低的一半成分股,再持有 12-1 動能與近 12 個月淨配息率(股利加買回減發行)平均排名最高的 50 檔,等權,每季底換股。論文是從美國最大的 1,000 檔裡持有 100 檔,本文從約 500 檔成分股裡持有 50 檔。鄰近參數是最低 40%、50%、60% 乘上 40、50、60 檔。它需要 36 個月的價格,所以 2019 年 4 月才開始。
- 低波動+淨買回:用 252 日低波動與四季稀釋股數減幅各自排名,兩者各占一半,在股數有減少的股票裡取前 25 檔,變動超過 30% 視為分割或併購不計,等權,每月換股。鄰近參數是 15、25、40 檔,126、252、378 日視窗,波動權重 0.3、0.5、0.7,共 27 組。
「贏」的意思是同一段交易日裡,日夏普高於含息的 QQQ。夏普是日報酬平均除以標準差再乘 √252,不扣無風險利率。站上部分策略比較頁用的是月夏普,兩者不能混用。設計要同時符合六項條件才算通過:
- 鄰近參數:至少七成贏 QQQ。
- 前後兩段:原設定兩段都贏 QQQ。
- 交易成本:在 finlab 美股預設成本(零)與每邊 0.1% 下都贏 QQQ。
- 不靠單一年份:拿掉領先最多的那一年,仍然贏 QQQ。
- 現金:平均現金超過 10% 的設計,扣掉國庫券(BIL)報酬後也要贏。這三個設計都是滿倉,這條不適用。
- 組合版:在同一段日子要高於單一訊號的基本版。
| 檢查 | SPLV 規則 | 保守公式 | 低波動+淨買回 |
|---|---|---|---|
| 1. 鄰近參數贏 QQQ | 0 / 9 | 0 / 9 | 0 / 27 |
| 2. 前半段:設計 / QQQ / RSP | 0.68 / 1.00 / 0.74 | 0.31 / 0.57 / 0.57 | 0.75 / 0.99 / 0.74 |
| 2. 後半段:設計 / QQQ / RSP | 0.50 / 0.77 / 0.63 | 1.17 / 1.32 / 0.92 | 0.64 / 0.75 / 0.61 |
| 3. 每邊 0.1%:設計 / QQQ | 0.59 / 0.89 | 0.57 / 0.88 | 0.67 / 0.87 |
| 4. 拿掉領先最多的 2022 年:設計 / QQQ | 0.70 / 1.25 | 0.73 / 1.31 | 0.73 / 1.23 |
| 5. 扣國庫券,僅供參考:設計 / QQQ | 0.44 / 0.78 | 0.44 / 0.77 | 0.54 / 0.77 |
| 6. 對基本版:設計 / 基本版 | 本身是基本版 | 0.58 / 0.53 | 0.69 / 0.59 |
| 結果 | 未通過 | 未通過 | 未通過 |
前後兩段分別從 2022-03-24、2023-01-12、2022-03-30 切開。
結果:45 組參數全部低於 QQQ
文首的圖把三個設計放在同一個起點,2019 年 4 月。從那天起,QQQ 年化 20.0%、RSP 11.9%、保守公式 9.3%、SPLV 規則 7.7%,淨買回版最後落在 RSP 和保守公式之間。2020 年 3 月每條線都下跌,保守公式在這裡創下 -40.9% 的低點。2022 年三個設計大致橫盤,QQQ 往下靠近它們;2023 年起 QQQ 再度拉開。保守公式有六年低於 SPLV 規則,到 2025 年下半年才超過。

粗體是原設定,18 格全部低於 QQQ 的 0.89 和 0.88。SPLV 規則介於 0.58 到 0.64,保守公式介於 0.56 到 0.65。兩張方格都沒有明顯的尖峰,原設定在其中都偏低。保守公式表現最好的一列是範圍最寬的最低 60%,0.61 到 0.65。淨買回版的 27 組參數畫不進平面圖,收在下方可下載的 metrics.json,範圍 0.61 到 0.72,QQQ 是 0.87。
兩個組合版都過了第 6 條:在各自的期間,保守公式 0.58 對 0.53,淨買回版 0.69 對 0.59。不過最大回撤都比基本版深,-40.9% 和 -39.4% 對 -35.8%。保守公式仍然輸 QQQ,也輸 RSP,前後兩段落差很大:前半段 0.31,後半段 1.17,贏 RSP 的 0.92,輸 QQQ 的 1.32。
最接近的是淨買回版。它的 0.69 在同期略贏 RSP 的 0.68,兩個半段也都領先 RSP。但每邊 0.1% 成本後變成 0.67 對 0.68,優勢消失,27 組裡只有 10 組贏 RSP。它一年週轉 1.80 次,將近 SPLV 規則的三倍。
波動度五分組:報酬隨風險上升,夏普沒有
這項測試是看到結果之後才加的,所以不判定通過與否。每個月把成分股依近 252 日波動分成五組,每組約 99 檔,等權持有,從 2017 年 9 月開始。
| 波動度分組 | 波動度 | 年化報酬 | 日夏普 | 最大回撤 |
|---|---|---|---|---|
| 1,最低波動 | 15.3% | 9.6% | 0.68 | -34.7% |
| 2 | 17.1% | 9.4% | 0.61 | -37.6% |
| 3 | 19.2% | 11.6% | 0.67 | -40.3% |
| 4 | 21.8% | 12.2% | 0.64 | -40.8% |
| 5,最高波動 | 29.1% | 14.6% | 0.62 | -47.4% |
| RSP | 18.9% | 11.6% | 0.68 | -39.0% |
| QQQ | 23.4% | 19.3% | 0.87 | -35.1% |

五組的波動度從 15.3% 升到 29.1%,報酬從 9.6% 升到 14.6%,第二組略低於第一組。夏普則在 0.61 到 0.68 之間,沒有順序,圍著 RSP 那條 0.68 的虛線。兩張圖裡 QQQ 的線都在每根長條之上。在這段期間,最低波動組的夏普打平等權,沒有贏過它。扣掉國庫券後,五組是 0.47 到 0.54,QQQ 是 0.77。
分組改變的是承擔多少風險、賺多少報酬,每單位風險的報酬幾乎沒變。最高波動組賺得最多,所以「風險最高的股票賺得比較少」這一點,在這幾年的 S&P 500 成分股裡沒有出現。
同一段日子,最低波動組是 0.68,SPLV 規則是 0.59。兩者持有的都差不多是最穩的一百檔。規則的權重與波動成反比、每季換股,分組則是等權、每月換股。這個差距來自哪一點,我們沒有測試。
波動較低,但崩盤時不一定比較安全
SPLV 規則確實比較平穩,年化波動 15.7%,QQQ 是 23.4%。最大回撤卻沒有跟著變淺:-35.8% 對 -35.1%。它最大的虧損出現在 2020 年崩盤,QQQ 則在 2022 年。
| 組合 | 2020/2/19 至 3/23 | 2022 年 |
|---|---|---|
| SPLV 規則 | -35.4% | -4.3% |
| 低波動+淨買回 | -39.2% | +4.7% |
| SPLV 基金 | -35.8% | -4.9% |
| USMV 基金 | -33.0% | -9.4% |
| RSP | -39.0% | -11.6% |
| SPY | -33.7% | -18.2% |
| QQQ | -27.9% | -32.6% |
從 2020 年的高點到低點,規則和基金都跌得比 QQQ、SPY 多,淨買回版跌幅與 RSP 差不多。那次崩盤裡,挑前一年最穩的股票,並沒有比持有這兩檔基金更抗跌。我們沒有測量是哪些持股造成的。
2022 年正好相反。規則跌 4.3%、淨買回版漲 4.7%,QQQ 跌 32.6%。這一年撐起了低波動股的大部分說法:規則領先 QQQ 28.2 個百分點,是所有年份裡最多的。拿掉 2022 年,規則是 0.70,QQQ 是 1.25。扣掉國庫券後規則 0.44、QQQ 0.78,因為設計滿倉,這個數字僅供參考。

9 根長條裡,規則贏 QQQ 兩次(2018、2022),贏 RSP 三次(2018、2022,以及 2024 年的 13.8% 對 12.8%)。2023 年和 2022 年正好相反:-0.2%,QQQ 54.9%、RSP 13.7%。2020 年規則 1.2%,兩者是 48.6%、12.7%。2019 年(26.6% 對 RSP 28.9%)和 2021 年(23.7% 對 29.4%)貼近 RSP,2025 年(3.7%,RSP 11.2%、QQQ 20.8%)和 2026 年到 10 月(10.6%,15.3%、12.8%)都落後兩者。
一個看起來像優勢的回測錯誤
低波動+淨買回來自一份內部研究筆記本,研究開始前就看過它的結果:日夏普 0.92 對 QQQ 的 0.96,前半段 1.07 對 1.20,後半段 0.79 對 0.72。參數因此原樣保留。那次有自己的日期,也計入少量交易成本,所以數字和下面的重跑不同,但一樣有空手月。
重跑時發現不對勁:期間涵蓋 2020 年,最大回撤卻只有 -16.7%。同一個指數的等權組合 RSP 在五週內跌了 39.0%,滿倉持有其中 25 檔不該有這種結果。
原因是日期對不上。筆記本把每日的波動排名和每季的股數排名加起來,而季資料帶的是申報日,有些落在週末或假日,有些標記的時間與午夜差一秒左右。兩張表相加會保留雙方的日期,合併後多出 650 列價格表裡沒有的資料列。筆記本用每日的成分股表過濾股數排名,這張表在這些列沒有值,股數排名整列空白,所以 650 列全是空的。
每月換股讀的是當月最後一列。如果月底剛好是週末或假日,而前面有這種空列,讀到的就是空列,回測在下次換股前什麼都不持有。117 次換股裡有 26 次如此,23% 的日子空手。其中一次落在 2020 年 2 月 29 日星期六,所以整個 2020 年 3 月都是現金。
| 同一條規則,無成本,自 2017 年 2 月起 | 年化報酬 | 日夏普 | 波動度 | 最大回撤 |
|---|---|---|---|---|
| 原版 | 11.0% | 0.94 | 11.9% | -16.7% |
| 拿掉價格表沒有的資料列 | 11.0% | 0.72 | 16.3% | -39.4% |
| QQQ | 19.9% | 0.91 | 22.9% | -35.1% |

報酬到小數一位都相同,看起來的風險卻小很多。空手的月份沒有報酬也沒有變異,而這些月份的漲跌剛好幾乎互相抵銷,所以報酬維持 11.0%,波動從 16.3% 降到 11.9%,最大回撤淺了一半以上,夏普從 0.72 升到 0.94,還高過 QQQ 的 0.91。這些都和規則本身無關,空手的是哪幾個月,只看申報日和月底怎麼落。
圖上紅線一路落後藍線,到 2020 年 3 月,紅線在標示區間走平,藍線從上方跌穿它。之後兩條線貼得很近,終點幾乎相同。本文的版本沒有這些資料列,因為先把季資料放到交易日格線上才排名,它的日報酬與藍線的相關係數高於 0.999。它從 2017 年 9 月才開始,所以關鍵數字表是 0.69,不是 0.72。
相信一份回測之前,有兩個檢查可以抓到這類問題。position 是持股表,close 是價格表:
position.index.difference(close.index)列出價格表裡沒有的資料列,應該是空的。如果不是,用position.reindex(close.index)拿掉。position.sum(axis=1).eq(0).sum()計算持股為零的列數。第一個訊號之前本來就是空的,要從起始日開始算,其餘的都要有理由。
這次的警訊是同一次崩盤裡,回撤遠比類似基金淺。遇到這種情況,應該先打開持股表檢查,再去解讀淨值曲線。
站上更早的研究
美股學術因子回測測過兩個相近的因子,股票池不同:流動性最高的 1,000 檔美股,排除金融股,每月持有 30 檔。低特質波動日夏普 0.75、低 Beta 0.60,QQQ 是 0.89,兩者各 9 組鄰近參數都沒有贏 QQQ。在同一個股票池,美股因子投資總覽量到最好一成減最差一成的年化價差:低特質波動 -2.2%、低 Beta -7.1%,方向和上面的五分組一致。
美股大型股因子回測測過 126 日波動最低的股票:市值前 200 大是 0.64,成交最活躍的 500 檔是 0.51,QQQ 是 0.90。
台股的結果可以對照。台股低波動選股 18 年實測涵蓋 2008 年 1 月到 2026 年 6 月,每月買波動最低的 30 檔年化 4.9%、日夏普 0.45,最高的 30 檔年化 -5.1%、最大回撤 -89.9%,含息 0050 是 14.8%、0.74。台股是低波動組贏高波動組,但兩組都輸 0050;本文的美股五分組則是最高波動組賺得最多。想比較各種低波動指標,可以看低波動因子選股,那篇用台股比較 NATR、標準差等五種指標。
以上研究我們都沒有重跑,股票池、權重、市場與期間都不同,數字不能直接比較。
程式碼
這段是 S&P 500 成分股上的 SPLV 規則。用到 2026-10-30 的資料,印出來是 0.6,也就是表格的 0.60(取到小數兩位相同)。它保留一家公司的兩個股別,這是和 research.py 唯一的差別,research.py 一家公司只留一個股別。
顯示程式碼
import finlab
import pandas as pd
from finlab import data
from finlab.backtest import sim
from finlab.dataframe import FinlabDataFrame
finlab.login()
data.set_market("us")
close = data.get("us_price:adj_close")
members = data.get("us_index_constituents:sp500").astype(bool)
tickers = members.columns.intersection(close.columns)
close = close[tickers]
members = members[tickers].reindex(close.index, method="ffill").fillna(False).astype(bool)
# Rebalance after the third Friday of February, May, August and November
fridays = pd.date_range("2017-08-01", "2026-10-30", freq="WOM-3FRI")
days = pd.DatetimeIndex([close.index[close.index <= d][-1] for d in fridays if d.month in (2, 5, 8, 11)])
# The 100 lowest 252-day volatilities among that day's members
volatility = close.pct_change(fill_method=None).rolling(252, min_periods=226).std()[members].loc[days]
picks = FinlabDataFrame(volatility).is_smallest(100)
# SPLV weights each stock inversely to its volatility
weights = (1 / volatility)[picks]
weights = weights.div(weights.sum(axis=1), axis=0).fillna(0)
report = sim(weights.loc[:, weights.any()], resample=days, trade_at_price="close",
position_limit=1, market="us", upload=False)
curve = report.creturn.loc["2017-08-21":]
returns = curve.pct_change().dropna()
print(round(returns.mean() / returns.std() * 252 ** 0.5, 2))不想自己寫也可以。照 AI 輔助安裝流程裝好 FinLab skill,或到 FinLab Studio 用白話請 AI 重跑,例如「把最穩的 100 檔 S&P 500 成分股改成等權,跟 SPLV 規則比較」或「檢查我的持股表有幾列對不上交易日」。
回測方法與限制
| 項目 | 做法 |
|---|---|
| 回測區間 | SPLV 規則 2017-08-21 起,淨買回版 2017-09-01 起,保守公式 2019-04-01 起,都到 2026-10-30。S&P 500 公司的財報實際從 2016 年第一季才齊(2015 年每季不到 80 家),決定了淨買回版的第一個月,SPLV 規則是它的基本版,從同一個月開始;第三個起點來自 36 個月的價格 |
| 股票池 | 每天的 S&P 500 成分股,取自 FinLab 的歷史名單,一家公司留一個股別。離開指數的公司在成分股期間仍計入。2017 年 9 月的 505 檔成分股有 12 檔當天沒有價格,2024 年降到 0,所以每天可選約 490 到 500 檔 |
| 流動性與排除 | 除了指數成分外未設濾網,也沒有排除任何類股。未估容量 |
| 前視偏差 | 收盤算訊號,下一個收盤成交。季資料從申報日起算,避免前視偏差。類股標籤是現況,只用在類股表 |
| 權重 | SPLV 規則權重與波動成反比;其他設計等權,單檔上限 5%。現金沒有利息 |
| 交易成本 | finlab 美股預設成本是零。每邊 0.1% 時,年化從 8.5% 降到 8.3%(SPLV 規則)、9.3% 降到 8.9%(保守公式)、10.7% 降到 10.2%(淨買回版) |
| 滑價 | 沒有滑價模型 |
| 週轉率 | 目標權重的單邊週轉率,依序一年 0.65、1.54、1.80 次 |
| 稅 | 未計,股息全額再投入 |
| 校準 | 等權持有全部成分股,與 RSP 的日相關 0.998,夏普 0.68 對 0.68,股票池與回測引擎的行為正常 |
| 基準 | 同一段日子的含息 QQQ。RSP、SPY、SPLV、USMV 只當對照,不判定 |
| 樣本 | 全部是樣本內結果,沒有樣本外期間,前後兩段只是穩定度檢查 |
這個結果能說明什麼
在本文設定下、2017 年 8 月到 2026 年 10 月,S&P 500 的低波動股降低了每天的風險,沒有贏 QQQ。對 RSP 也輸,只有淨買回版有一點優勢,成本一算就沒了。前面引用的數十年研究並不會因此被推翻。9.2 年很短,而且有兩件事主導了這段期間:一次重創防禦型組合的疫情崩盤,以及一個對它們有利的 2022 年。我們只測了美國大型股,沒有槓桿,也沒有放空。
這些證據適合想要每天波動小一點、希望碰到 2022 年那種下跌時撐得住,也能接受 2023 年那種落後的讀者。如果目標是最高報酬,或想防範突然的崩盤,就不太適合。
接下來可以這樣做:混用每日與季資料的回測都跑一次上面兩個檢查;低波動的想法除了比 QQQ,也要比 RSP;一次只改一個參數。其他運用波動的方式,可以看調整 QQQ 部位的 QQQ 波動度目標策略,以及用反波動度配置 ETF 的風險平價組合回測。想從頭學,可以看美股回測教學,其他研究收在美股量化交易策略比較。同一批、同一套驗證的研究還有 PEG 回測和 F-Score 回測。
常見問題
低波動股是什麼?
每天漲跌幅度最小的股票。本文指 S&P 500 成分股裡,過去 252 個交易日日報酬標準差最低的股票。依 SPLV 規則,平均有 20% 是公用事業、17% 是必需消費、15% 是金融。
低波動股會贏大盤嗎?
在本文的測試裡沒有。2017 年 8 月到 2026 年 10 月,SPLV 規則年化 8.5%,QQQ 是 19.7%、RSP 是 11.9%,日夏普 0.60 對 0.89 和 0.69。前面引用的論文研究的是數十年,這個結果只代表這 9.2 年。
低波動股崩盤時比較安全嗎?
不一定。2020 年崩盤時規則跌 35.4%,比 QQQ 的 27.9% 和 SPY 的 33.7% 都多。2022 年它跌 4.3%,QQQ 跌 32.6%。全期波動都比較低,15.7% 對 23.4%。
SPLV 和 USMV 差在哪?
SPLV 持有 S&P 500 波動最低的 100 檔,權重與波動成反比;USMV 用最小變異數最佳化。同一段日子,SPLV 年化 8.2%、日夏普 0.57,USMV 年化 10.2%、0.72。我們的規則與 SPLV 日相關 0.997,與 USMV 0.939。
低波動和低 Beta 一樣嗎?
不一樣。波動看股票所有的變動,Beta 只看跟著大盤動的部分,兩份名單可以不同。站上先前的低 Beta 測試日夏普 0.60,剛好和本文的 SPLV 規則相同,但股票池不同,不能直接比較。
低波動加上動能或買回會比較好嗎?
同一段日子的夏普確實較高:保守公式 0.58 對 0.53,淨買回版 0.69 對 0.59。但最大回撤都比基本版深,也沒有任何一組參數贏 QQQ。
怎麼檢查回測有沒有空手月?
用 position.index.difference(close.index) 找價格表裡沒有的資料列,用 position.sum(axis=1).eq(0).sum() 算持股為零的列數。本文 650 列裡有 26 列在月底被讀到,回測因此有 23% 的日子空手,夏普從 0.72 變成 0.94。
可以自己重跑嗎?
可以。裝好 FinLab skill 後,下載下面的 research.py,執行 python research.py。
下載資源
| 檔案 | 內容 |
|---|---|
| research.py | 完整研究:三個設計、45 組參數、前後兩段、成本重跑、波動度五分組與空手月對照 |
| data.csv | 三個設計,加上 QQQ、SPY、RSP、SPLV、USMV 的每日淨值 |
| metrics.json | 本文背後的統計,包含每組參數、類股配置與逐年報酬 |
投資警語:本文僅供教學參考,不構成投資建議。過去績效不代表未來表現,投資有風險。本文所有回測均為全段樣本內結果,前後兩段未經樣本外驗證。文中提到的基金只用來說明研究結果,不是買賣建議。
最後更新:2026-11|回測區間:2017-08~2026-10|基準:QQQ 含息|作者:FinLab 量化研究團隊(經量化研究員審閱)
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始

