
執行這個策略
複製提示詞,讓 AI 依照上方證據的資料、條件與風險檢查重跑一次。
告訴你的AI:
幫我設定 FinLab,重現動能 ETF 含息比較,請讀:https://finlab.finance/setup?relatedUrl=/blog/momentum-etf-spmo-mtum-vs-qqq
2016 年 9 月至 2026 年 10 月,SPMO 年化報酬 18.9%,低於 QQQ 的 20.0%;日夏普則以 0.93 略高於 0.92,但前後半段沒有都贏。 MTUM 年化 15.2%、日夏普 0.76。本文另外實測六檔動能 ETF 相對強弱輪動、SPMO 均線切換、輪動加 QQQ 趨勢濾網,三個設計都沒有通過全部驗證。這是一份不成立規則的研究紀錄,不提供通過驗證的交易策略。
動能 ETF 把挑選近期相對強勢股票的規則包在基金內。買進一檔 ETF 後,即使投資人完全不換股,基金也會按照自己的指數方法調整成分。本文的輪動則多加一層決策:在幾檔 ETF 之間選擇持有誰。因此,基金本身有動能因子,並不代表在基金之間再做動能排名就一定更好。
六檔動能 ETF 的含息報酬與回撤
| ETF | 含息總報酬 | 年化報酬 | 日夏普 | 最大回撤 | 前/後半日夏普 |
|---|---|---|---|---|---|
| SPMO | 477.7% | 18.9% | 0.93 | -30.9% | 0.94 / 0.92 |
| MTUM | 318.3% | 15.2% | 0.76 | -34.1% | 0.94 / 0.58 |
| XMMO | 367.4% | 16.5% | 0.79 | -36.7% | 1.00 / 0.58 |
| PDP | 223.9% | 12.3% | 0.64 | -34.7% | 0.82 / 0.47 |
| IMTM | 160.9% | 9.9% | 0.63 | -30.6% | 0.63 / 0.63 |
| FDMO | 294.1% | 14.5% | 0.79 | -33.9% | 0.83 / 0.75 |
| QQQ | 530.5% | 20.0% | 0.92 | -35.1% | 1.15 / 0.70 |
全部使用 2016-09-15 至 2026-10-30,起點由 FDMO 第一筆可用價格決定,配息透過還原價納入。SPMO 在六檔基金中的全期日夏普最高,QQQ 的累積與年化報酬較高;XMMO 年化 16.5%,最大回撤卻比 QQQ 更深。IMTM 的回撤較淺,報酬也最低,而且它持有美國以外的已開發市場股票,不能把它當作另一檔完全相同的美股配置。
共同起點避免拿新基金的短紀錄和舊基金的全部紀錄直接排高下。這張表也因此不是 SPMO 或 MTUM 的成立以來績效。資料庫對其中五檔有 2016 年 1 月起的價格,FDMO 從 2016 年 9 月開始;下載檔另保留各自可用期間與同期 QQQ 的數字,沒有把指數績效接到基金上市前,也沒有補出不存在的基金歷史。
SPMO 與 MTUM 的換股規則有何不同?
| ETF | 主要差異 | 指數例行檢查 |
|---|---|---|
| SPMO | S&P 500 的動能選股 | 每年三月、九月 |
| MTUM | MSCI USA Momentum SR Variant | 每季 |
| XMMO | 現行為 S&P MidCap 400 動能 | 半年;早期追蹤別的策略 |
| PDP | Dorsey Wright 相對強弱 | 每季 |
| IMTM | 美國以外已開發市場 | 依 MSCI 動能方法 |
| FDMO | Fidelity 自有動能指數 | 引用方法文件為每季 |
Invesco 的動能說明列出 SPMO 的半年調整;MSCI 的 SR Variant 方法文件在 2024 年已列季度檢查,不能把 MTUM 也寫成半年換股。PDP 發行商資料與 Fidelity 方法文件則分別交代自己的相對強弱與調整流程。基金的配息頻率又是另一件事,不能拿來推定成分股檢查頻率。
XMMO 還有歷史策略改變的限制。2019 年 SEC 補充文件記錄,它在 6 月 21 日收盤後,從 Russell Midcap Pure Growth 改為 S&P MidCap 400 Momentum。本文按預先登記保留實際基金價格,早期包含舊策略;所以長期結果代表一路持有該基金,不能解讀成現行中型股動能方法在整個期間都有效。這個限制也適用於把 XMMO 放進輪動池的結果。
換股較頻繁可能更快追上領先族群,也可能增加交易,此外股票池、權重與集中度都不同。本文沒有做持股層級的報酬歸因,不能把 SPMO 和 MTUM 的績效差額全部歸給半年或季度調整。基金內部換股和投資人月底輪動的成本也要分開看:前者已反映在實際基金報酬,後者由回測成本情境另外處理。
開跑前固定的三個設計
A:六檔 ETF 相對強弱輪動。 每月底依過去 L 個月含息報酬,選前 k 檔等權。原設定為十二個月、前兩檔;鄰近參數是 L=9/12/15,乘上 k=1/2/3,共九組。
B:SPMO 趨勢切換。 SPMO 高於 L 日簡單均線時持有,否則全部轉到短期國庫券 ETF BIL。原設定二百日、每月檢查;鄰近參數為 150/200/250 日,乘上每週/每月/每季。它另外必須勝過 SPMO 單獨持有,才有證據說切換本身加分。
C:輪動加 QQQ 趨勢濾網。 保留 A 的前兩檔,但只有 QQQ 高於 D 日均線時持有,否則全部轉 BIL。原設定十二個月、二百日;L=9/12/15,乘上 D=150/200/250。組合版必須比同期間、不加濾網的 A 更好。所有月份均以二十一個交易日近似,與先前因子輪動的設定一致。
| 設計 | 日夏普 | 同期 QQQ | 年化報酬 | 最大回撤 | 勝出參數 | 0.1% 成本後日夏普 |
|---|---|---|---|---|---|---|
| A | 0.66 | 0.86 | 13.1% | -34.4% | 0/9 | 0.64 |
| B | 1.01 | 0.93 | 16.1% | -15.6% | 3/9 | 0.99 |
| C | 0.58 | 0.86 | 9.8% | -34.4% | 0/9 | 0.55 |
A、C 從 2017-12-29 開始,因為必須讓六檔基金都有完整十五個月回看;B 從 2016-12-30 開始,先備妥二百五十日資料。訊號在當日收盤形成,隔一個交易日收盤成交。QQQ 一律使用每個設計自己的相同日期,包含第一個尚未成交的現金觀測,所以表中基準日夏普會不同。
報告是原設定 A:年化 13.1%、最大回撤 -34.4%,供讀者檢查失敗規則的路徑。把 A 各資產在月底的平均權重固定,再每月再平衡,日夏普為 0.76、年化 15.0%,都高於輪動的 0.66 與 13.1%。這組平均權重由整段樣本事後算出,只用於辨認切換的貢獻,不能冒充事前已知的投資配置。
三項驗證:全期夏普漂亮還不夠
過關需同時滿足:至少七組鄰近參數的日夏普勝同期 QQQ;原設定前、後半段各自勝;原設定每次買進及賣出各收 0.1% 後仍勝。美股 sim 預設手續費、交易稅均為零,所以成本壓力另跑。扣除 BIL 日報酬後的夏普、固定平均權重對照,也列為檢查。

A 與 C 都是零組勝出。A 前後半段日夏普為 0.62/0.71,C 為 0.52/0.67,QQQ 為 0.76/0.97。加上 QQQ 濾網後,全期夏普從 0.66 降為 0.58,沒有改善原本輪動;即使部分時間持有國庫券,整體回撤仍受同一段急跌影響。
B 的全期日夏普 1.01,高於 QQQ 的 0.93,最大回撤從基準 -35.1% 降到 -15.6%,成本後也還有 0.99。但只有三組鄰近參數贏,前半段 1.23 對 QQQ 的 1.26,仍輸;後半段才以 0.82 對 0.62 勝出。判定使用未四捨五入的數字,不能因為把小差距忽略,就把原本的失敗改判成功。

B 的同期間,單獨持有 SPMO 年化 19.1%、日夏普 0.93;切換後年化降為 16.1%。扣 BIL 後,B 的夏普為 0.86,QQQ 為 0.83;固定平均權重的 SPMO/BIL 對照則為 0.96。這些對照支持切換曾改善風險調整績效,但不能取代參數與前半段未過的事實。本文沒有選一個勝出鄰居當成新原設定。
單獨持有的優勢也會換邊

共同持有視窗中,QQQ 前後半段日夏普為 1.15/0.70。SPMO 為 0.94/0.92,第一段輸、第二段贏;FDMO 第二段也以 0.75 勝 0.70,其餘四檔兩段都輸。問「最好的動能 ETF」時,至少要先固定期間、報酬或風險指標,以及能承受的跌幅,不能把全期略勝的夏普當成永久排名。
Jegadeesh 與 Titman(1993)的個股贏家買進、輸家放空研究,提供相對強弱測試的動機,但本文六檔 ETF 多頭輪動並未重現其多空股票組合。Asness、Moskowitz 與 Pedersen(2013)研究跨市場價值及動能,並不保證在相似基金之間排名必然有效。Moskowitz、Ooi 與 Pedersen(2012)研究多類期貨的時間序列動能,也不能直接替 SPMO/BIL 均線規則背書。文獻與商品實作之間的差別,必須由回測檢驗。
互動報告的大盤基準也使用 QQQ。報告從首次模擬成交顯示,表格則保留前一個訊號日的現金觀測以納入首次交易成本;這一個交易日的起點差異,可能讓報告顯示的基準年化略有不同。
回測方法與限制
| 項目 | 本文做法 |
|---|---|
| 資料 | 截至 2026-10-30;台北 2026-11-02 重跑,finlab 2.3.0、pandas 3.1.0 |
| 交易日 | 使用股票交易日曆;基金第一筆價格之後的零星缺值沿用前值,不往上市前補值 |
| 股票池與權重 | 六檔指定的現存基金;未涵蓋所有曾上市、後來清算的基金。選中者等權,無放空或槓桿;防禦期全持 BIL |
| 成本與稅 | sim 美股預設零,另每邊 0.1%;基金內扣費已在市價報酬,未另計股利與資本利得稅 |
| 周轉 | 月底目標權重變動之平均/最大單邊周轉:A 18.9%/50.0%,B 12.7%/100.0%,C 24.1%/100.0%;為絕對權重差之半,排除首次建倉與兩次決策間價格漂移 |
| 流動性 | 未設成交金額篩選,未估容量與市場衝擊;實際滑價由資金大小、價差與成交量決定 |
| 樣本 | 全段樣本內;前後半切分僅檢查穩定性,未做獨立樣本外或滾動選參 |
| 夏普 | 日報酬平均除以樣本標準差,再乘根號二百五十二;主表不扣無風險利率,另列扣 BIL 結果 |
重現原設定
下列程式呈現 A 的核心選擇。完整研究另處理交易日曆、共同起點、所有鄰近參數與成本:
顯示程式碼
import finlab
from finlab import data
from finlab.backtest import sim
from finlab.markets.us import USFundMarket
finlab.login()
data.set_market("us_fund")
data.truncate_end = "2026-10-30"
calendar = data.get("us_price:adj_close").index
price = data.get("us_fund_price:adj_close").reindex(calendar).ffill()
etfs = ["SPMO", "MTUM", "XMMO", "PDP", "IMTM", "FDMO"]
score = price[etfs] / price[etfs].shift(252) - 1
selected = score.rank(axis=1, ascending=False, method="first") <= 2
weights = selected.astype(float) / 2
class QQQMarket(USFundMarket):
@staticmethod
def get_benchmark():
return price["QQQ"]
report = sim(weights.loc["2017-12-29":], resample="M", market=QQQMarket(), upload=False)
report.to_html("momentum_rotation.html")用 FinLab skill 重現研究
從AI 輔助安裝流程連結帳號,agent 設定指南有 Claude Code、Codex 與 Gemini CLI 的操作方式。安裝指令如下:
顯示程式碼
npx skills add koreal6803/finlab-ai --skill finlab -g -y接著請 agent 使用下載的 research.py、固定資料截止日,先重現原設定與九組參數。不需要自己從頭寫程式,也可以在瀏覽器的 FinLab Studio檢查程式。若之後想測其他均線或改持股數,另存為新實驗,保留本次原始結果;看過數字才改條件,已經不屬於原先的驗證。本文沒有提供通過驗證的策略部署入口。
常見問題
SPMO 有贏 QQQ 嗎?
本次共同視窗的日夏普略高,年化報酬較低,而且前後半段沒有都贏。直接說 SPMO 勝過 QQQ,會省略報酬與時間差異。
MTUM 和 SPMO 可以互換嗎?
股票池、評分與維護方法不同。基金都叫動能,不代表風險暴露、持股與績效相同;本文 MTUM 年化比 SPMO 低約四個百分點。
每月選最強的兩檔有改善嗎?
本次六基金池沒有,九組參數全輸同期 QQQ 日夏普,原設定也不如事後固定平均權重對照。結論只涵蓋這組 ETF 與回看設定。
加二百日均線可以過關嗎?
SPMO 切換改善了全期風險數字,參數與前半段沒有過;把 QQQ 均線加到輪動上則更差,不能把濾網視為通用修正。
為何防禦期用 BIL?
讓閒置資金反映短期國庫券報酬,避免在高利率期間仍假設完全沒有利息。另扣 BIL 的夏普,則檢查結果是否只靠利息水準。
能把最好的鄰近參數拿來用嗎?
可以另開研究,但那是看到結果後選參,不能算原設計通過,還需要新的未觀察期間檢驗。
下載與延伸閱讀
- strategy.py:與共用引擎相同的完整研究程式。
- research.py:四設計共用引擎,也包含四因子 ETF 原定輪動。
- data.csv、metrics.json:每日權益、所有參數、分段與對照。
- 輪動互動報告、固定權重報告、SPMO 均線報告。
其他持有方式可接著比較美股量化策略總覽、美股因子投資、產業輪動研究、懶人投資組合與掩護性買權及股利研究。前視偏差與周轉率則說明回測數字容易被高估的兩個原因。 QUAL、USMV 因子 ETF 比較則測試不同因子之間的輪動;實作觀念可參考程式交易工具與方法。
最後更新:2026-11|資料截至:2026-10-30|重跑日:2026-11-02(台北)|作者:FinLab 量化研究團隊。團隊以公開規則回測、參數敏感度測試與可下載資料呈現研究方法,讓讀者檢查結果。
歷史績效不代表未來報酬,全部結果均為樣本內回測。文中 ETF 用於說明研究結果,不代表買賣推薦。本內容僅供教育研究,不構成投資建議。
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始


