跳至主要內容
美股研究 約 8 分鐘閱讀

美股市場中性多空與趨勢跟隨回測:4 種持有方式都沒穩定贏 QQQ

美股市場中性多空與趨勢跟隨有用嗎?用 finlab 回測 4 種持有方式:動能與毛利率的多空對沖、大型股各自站上 200 日線才持有、股債金商品各自看趨勢的時序動能。2017 到 2026 年 36 組參數,多空組合日夏普最高 0.66,QQQ 含息是 0.89,沒有一個設計成立。附程式碼。

免安裝,用 AI 重跑這篇的策略

在瀏覽器開啟 FinLab Studio,AI 依本文的條件重跑回測,接著可以改條件再測。

在 Studio 重跑
4 種持有方式,沒有一種穩定贏 QQQ

美股多空策略回測:市場中性多空、大型股趨勢、跨資產時序動能與 QQQ 波動度目標的原始參數日夏普,對照 QQQ 含息與 SHY 短債

依本文重跑

執行這個策略

複製提示詞,讓 AI 依照上方證據的資料、條件與風險檢查重跑一次。

告訴你的AI:

幫我設定 FinLab,回測美股 12-1 月動能的市場中性多空(做多前 30 名、放空後 30 名)並和 QQQ 含息比較,請讀:https://finlab.finance/setup?relatedUrl=/blog/long-short-equity-trend-following-backtest

免安裝,開啟 FinLab Studio

**本文測了 4 種跟「QQQ 擇時」不同的美股持有方式:動能與毛利率的市場中性多空、大型股各自站上 200 日線才持有、股票債券黃金商品各自看趨勢的跨資產時序動能。2017 年 8 月到 2026 年 10 月、每種 9 組參數共 36 組,沒有一個設計成立:三個沒過三項驗證;跨資產時序動能三項都過,但輸給自己的固定配置,扣掉國庫券報酬後也輸 QQQ。**兩個多空組合的日夏普只有 0.34 與 0.50,9 組參數全輸 QQQ 含息的 0.89;大型股趨勢的回撤只有 -14.9%,但日夏普 0.85,9 組只有 2 組贏。跨資產時序動能 9 組全贏(日夏普 1.09),但同樣的資產用平均權重固定持有、不看趨勢,日夏普反而是 1.19,扣掉國庫券報酬後也輸 QQQ,所以本文判定它不成立。

同一批第 5 個設計是 QQQ 波動度目標,通過了三項驗證,另寫成美股波動度目標策略。

4 種持有方式的關鍵數字

設計(原始參數) 日夏普 年化報酬 最大回撤 贏 QQQ 的參數組 前段/後段日夏普 結論
多空:12-1 月動能,每邊 30 檔 0.50 9.5% -34.6% 0/9 0.42/0.57 不成立
多空:毛利/總資產,每邊 30 檔 0.34 3.7% -30.8% 0/9 0.42/0.29 不成立
大型股前 100 大,各自站上 200 日線 0.85 8.9% -14.9% 2/9 0.77/0.95 不成立
跨資產時序動能(QQQ、IEF、GLD、DBC) 1.09 6.4% -9.9% 9/9 1.10/1.09 不成立(見下)
QQQ 波動度目標 15%(參考) 0.98 15.7% -22.8% 7/9 0.90/1.07 通過
QQQ 含息買進持有 0.89 19.8% -35.1% 基準 0.87/0.91
SHY 短天期公債買進持有 1.11 1.8% -5.7%

回測從 2017 年 7 月底的第一次換股開始,到 2026-10-29;所有設計每個月最後一個交易日換股、隔天收盤成交。QQQ 與 SHY 是同一段日子的買進持有、股利再投入。前後兩段從 2022-03-14 切開。

三項驗證怎麼判

「贏」是指日夏普高於同一段日子的 QQQ 含息。日夏普=日報酬平均÷標準差×√252,不扣無風險利率。三項都要過:

  1. 鄰近參數:原始參數和上下各一個鄰近值,9 組至少 7 組贏。
  2. 前後兩段:原始參數在前段與後段各自贏。
  3. 交易成本:finlab 美股預設手續費與稅都是 0,所以另外每次買賣加收 0.1%,原始參數仍要贏。

這次多加兩個對照,用來分辨「贏」是來自持有方式本身,還是來自別的東西:

  • 扣掉國庫券報酬的日夏普:不扣無風險利率時,持有短債的組合會被高估。光是買進持有 SHY,日夏普就有 1.11,高過 QQQ。
  • 同平均權重的固定配置:把擇時規則平均下來的資產權重固定持有。擇時規則連自己的平均配置都贏不了,表示擇時沒有貢獻。

兩個對照只看原始參數,用在三項驗證都過的設計上。

一、市場中性多空:動能與毛利率都輸 QQQ

做法是每個月底從成交金額前 1,000 大的美股普通股(含後來下市的公司)裡,做多分數最高的 30 檔、放空最低的 30 檔,多空各占一半資金,各檔等權。finlab 的 sim() 直接接受負權重,負的部位就是放空。

動能來自 Jegadeesh 與 Titman(1993),本文用後來常用的 12-1 月報酬(過去 12 個月、跳過最近 1 個月)。原始參數日夏普 0.50、年化 9.5%、最大回撤 -34.6%,年化波動 24.3%,跟 QQQ 差不多高。報酬集中在 2022 年的 +58.4%;2023 年反彈時 -16.2%。回看 9、12、15 個月乘上每邊 20、30、50 檔,最好的是 9 個月、每邊 50 檔的 0.66,9 組全輸。這跟 Daniel 與 Moskowitz(2016)描述的動能崩盤一致:空頭反彈時,放空的輸家股會暴漲。

毛利率用 Novy-Marx(2013)的毛利÷總資產(近四季毛利),排除金融股。原始參數日夏普 0.34、年化 3.7%,前後兩段 0.42 與 0.29。每邊 20、30、50 檔乘上股票池 500、1,000、1,500 大,最好的 0.44。站上的美股學術因子回測已經發現毛利率只做多也輸 QQQ,多空版本把股市上漲的報酬也一起拿掉,日夏普更低。

兩個多空組合的回測都沒有扣放空的借券費,也沒有計入放空資金的利息,借券費會讓實際結果更差。用上千個財報指標挑多空因子的做法,另外在美股財報多空策略重跑過,同樣輸 QQQ。

二、大型股各自站上 200 日線:回撤小,但風險調整後仍輸

做法是每個月底取市值前 100 大的股票,每檔分配 1% 資金;站上自己 200 日均線的才持有,沒站上的那 1% 放現金。這個濾網看的是每檔股票自己的均線。Han、Yang 與 Zhou(2013)發現均線擇時在高波動的投資組合上效果最好,波動低的大型股效果較弱。

原始參數年化 8.9%、最大回撤 -14.9%、年化波動 10.7%,平均只有七成資金在股票。日夏普 0.85,輸 QQQ 的 0.89;前段 0.77 輸、後段 0.95 贏。前 50 大、用 200 或 250 日線的 2 組贏(0.913、0.912),其餘 7 組輸,大致上持股越多越差(前 200 大最好只有 0.83)。

回測中閒置的現金不計利息。如果把這部分改放 SHY,原始參數升到 0.890,仍略輸 QQQ 的 0.893,9 組變成 3 組贏,前段 9 組全輸。結論不變。

4 個沒過驗證的設計共 36 組鄰近參數的日夏普熱圖:多空動能、多空毛利率、大型股趨勢、跨資產時序動能,綠色是贏 QQQ

三、跨資產時序動能:形式上全過,但贏的是債券

Moskowitz、Ooi 與 Pedersen(2012)的時序動能:每項資產只看自己過去 12 個月的報酬,論文在報酬為正時做多、為負時放空,並依波動倒數調整部位;本文只做多,轉負的那份放 SHY。本文用 QQQ(股票)、IEF(7–10 年美國公債)、GLD(黃金)、DBC(商品)四檔 ETF,依過去 63 日波動的倒數分配權重。站上的美股懶人配置回測已經測過 Faber 的 10 個月均線等權版本,這次用論文的報酬正負訊號加波動倒數加權(只做多)。

結果日夏普 1.09、年化 6.4%、最大回撤 -9.9%。回看 9、12、15 個月乘上 21、63、126 日波動窗口,9 組全贏,前後兩段 1.10 與 1.09,加 0.1% 成本 1.04。照本站規則,三項都過。

但兩個對照都指向同一件事:

組合 日夏普(不扣無風險利率) 扣掉國庫券報酬後 年化報酬
跨資產時序動能 1.09 0.67 6.4%
同平均權重固定持有(13% QQQ、27% IEF、14% GLD、10% DBC、36% SHY) 1.19 0.75 6.7%
SHY 買進持有 1.11 -0.40 1.8%
QQQ 含息 0.89 0.79 19.8%

跨資產時序動能、同平均權重的固定配置、SHY 與 QQQ 的日夏普,未扣與扣掉國庫券報酬兩種口徑

波動倒數加權讓低波動的公債占了大半:平均權重裡 IEF 加 SHY 超過六成,QQQ 只有 13%。整個組合的年化波動只有 5.9%,所以不扣無風險利率的日夏普很高。這跟 SHY 一檔就能「贏」QQQ 是同一個原因。拿掉趨勢訊號、改成固定持有平均權重,日夏普更高(1.19);扣掉國庫券報酬後,時序動能全期 0.67、後段 0.48,都輸 QQQ 的 0.79 與 0.74,9 組只有 3 組贏。

所以這個設計的「通過」來自低波動的資產配置,趨勢訊號沒有加分,本文不把它當成通過的策略,FinLab 策略庫不收錄。同一套對照用在波動度目標上結果相反:它贏過自己的固定配置(0.98 對 0.92),扣國庫券後全期與前後兩段也都贏,所以算通過;但扣國庫券後 9 組鄰近參數只有 6 組贏,低於門檻,優勢也幾乎全部來自 2022 年,幅度不大。

4 個沒過驗證的設計與 QQQ 含息的累積淨值,2017 年 8 月到 2026 年 10 月

前後兩段

4 個設計與 QQQ 波動度目標在前段、後段的日夏普,對照 QQQ 的 0.87 與 0.91

兩個多空組合在兩段都輸。大型股趨勢只在後段贏:2022 年空頭時越來越多股票跌破 200 日線,每月的股票部位在 12% 到 74% 之間、平均 44%(2019 到 2021 年平均 74%),全年 -9.0%(QQQ -32.6%);但 2019、2020 年它只賺 10.7% 與 13.1%,不到 QQQ(39.0%、48.6%)的三成。

這個結果說明了什麼、沒說明什麼

  • 2017 到 2026 年這段 QQQ 的強勢期,美股的市場中性多空很難跟持有 QQQ 比風險調整後報酬。多空組合拿掉了大盤上漲的報酬,剩下的因子溢酬不夠大。
  • 個股層級的趨勢濾網可以大幅降低回撤(-14.9% 對 -35.1%),代價是多頭時曝險不足,風險調整後仍略輸。
  • 用不扣無風險利率的夏普比較,持有大量短債的組合會被高估。跨資產配置類的策略要多看「扣國庫券」與「固定配置」兩個對照。
  • 本文沒有測:放空借券費、槓桿版的多空、其他因子的多空、比 2017 年更早的資料。結論只限這 4 個設計與這段期間。

程式碼

下面是市場中性動能多空的核心:算 12-1 月動能、在流動性股票池裡排名、做多前 30、放空後 30。sim() 會把多空各自的權重加總絕對值縮到 100%,所以多空各占一半資金。

顯示程式碼
import finlab
from finlab import data
from finlab.backtest import sim
 
finlab.login()  # finlab 會自動引導登入
data.set_market("us")
 
# 1. 股票池:股價高於 5 美元、近 60 日平均成交金額前 1,000 大的普通股
close = data.get("us_price:close")
dollar_volume = (close * data.get("us_price:volume")).rolling(60).mean()
profile = data.get("us_company_profile")
common = profile.loc[profile["security_type"] == "common_stock", "stock_id"]
liquid = dollar_volume[close > 5].reindex(columns=common).is_largest(1000)
 
# 2. 12-1 月動能:過去 12 個月的報酬,跳過最近 1 個月
adj_close = data.get("us_price:adj_close")
momentum = adj_close.shift(21) / adj_close.shift(252) - 1
score = momentum.reindex(columns=liquid.columns)[liquid]
 
# 3. 做多前 30 名、放空後 30 名
longs = score.rank(axis=1, ascending=False) <= 30
shorts = score.rank(axis=1, ascending=True) <= 30
position = (longs.astype(float) - shorts.astype(float)) / 30
 
# 4. 每個月最後一個交易日換股,隔天收盤成交
report = sim(position.loc["2017-07-31":], resample="M", trade_at_price="close", upload=False)
 
# 5. 日夏普(不扣無風險利率)
returns = report.creturn.pct_change().dropna()
print(round(returns.mean() / returns.std() * 252 ** 0.5, 2))

用到 2026-10-29 的資料,這段印出 0.49;research.py 的原始參數是 0.50,差別來自這段省略的單日漲跌 50% 剔除、同公司只留一種股份、排除 ADR 與基金這些條件。完整的 research.py 包含全部 5 個設計、45 組鄰近參數、前後兩段、成本重跑、扣國庫券與固定配置對照,以及大型股趨勢的閒置現金改放 SHY 的版本。

不想自己寫程式,可以透過 AI 輔助安裝流程把 FinLab skill 裝進 Claude Code、Codex 或 Gemini CLI,用中文說「把動能多空改成做多前 50、放空後 50」或「跨資產時序動能加上 TLT 重跑,和固定配置比較」,AI 會寫好程式並跑出回測。

回測方法與限制

項目 做法
回測期間 2017-07-31(第一次換股)到 2026-10-29。FinLab 美股價格從 2016 年起,這是有一年股價與一年季報可用的第一個月底。
股票池 FinLab 美股公司資料中的普通股,含後來下市的公司;同公司只留一種股份;排除 ADR、ETF、基金。股價高於 5 美元、近 60 日平均成交金額高於 500 萬美元、過去一年沒有單日漲跌 50% 以上;每月取成交金額前 1,000 大(毛利率多空另排除金融股,並測 500 與 1,500 大)。大型股趨勢在這個池子裡取市值前 50/100/200 大。
前視偏差 財報以 SEC 申報日納入,股價與市值都是當時的數字;訊號用月底以前的資料,隔天收盤成交。
權重 多空:多空各 50%、各檔等權。大型股趨勢:每檔 1/N,沒站上均線的部分放現金(不計利息;另附放 SHY 的版本)。時序動能:波動倒數加權,趨勢向下的部分放 SHY。不用槓桿。
成本 finlab sim() 美股預設:手續費 0、稅 0。原始參數另用每邊 0.1% 重跑。沒有扣放空借券費,也沒有估滑價。
基準 QQQ 含息買進持有,同一段日子,不扣成本。日夏普不扣無風險利率;另附扣掉 BIL 報酬的版本。
樣本 全部是約 9 年的樣本內結果;前後兩段只是穩定度檢查,未做樣本外驗證。
軟體版本 finlab 2.2.24、pandas 3.1。美股公司資料(證券類型、市值)每天更新,隔天重跑股票類設計的日夏普可能差 0.01 左右;ETF 設計不受影響。

常見問題

美股多空策略是什麼?

同時做多與放空股票的策略。市場中性多空讓多空金額相等,報酬主要來自做多的股票比放空的股票表現好,跟大盤漲跌的關係較小。本文用動能與毛利率兩個因子決定多空。

市場中性多空為什麼贏不了 QQQ?

多空組合把大盤的報酬抵銷掉,剩下的是因子溢酬。2017 到 2026 年 QQQ 的風險調整後報酬很高,動能與毛利率的多空價差不夠大;動能還在 2023 年反彈時大幅回吐。

趨勢跟隨用在個股上有用嗎?

能降低回撤:大型股各自站上 200 日線的組合最大回撤 -14.9%,QQQ 是 -35.1%。但平均有三成資金在現金,日夏普 0.85 仍略輸 QQQ,9 組參數只有 2 組贏。

時序動能和橫截面動能有什麼不同?

橫截面動能是在一群資產裡比誰漲比較多,做多強的;時序動能是每項資產只跟自己過去比,過去漲就持有、跌就不持有。本文的多空動能是橫截面,跨資產動能是時序。

跨資產時序動能 9 組都贏,為什麼還算不成立?

它的高夏普來自大量低波動的公債與短債:同樣的資產用平均權重固定持有,日夏普更高;扣掉國庫券報酬後輸 QQQ。趨勢訊號沒有加分,所以不算通過。

放空的成本有算嗎?

手續費用每邊 0.1% 重跑過,借券費沒有算。熱門放空股的借券費一年可能好幾個百分點,實際結果會更差。

可以自己重跑嗎?

可以。透過 AI 輔助安裝流程裝好 FinLab,下載下方的 research.py 直接執行,約 5 分鐘。

延伸閱讀

下載資源

檔案 內容
research.py 完整研究:5 個設計、45 組鄰近參數、前後兩段、成本重跑、扣國庫券與固定配置對照、閒置現金放 SHY
data.csv 5 個設計原始參數、兩個固定配置,加上 QQQ、IEF、GLD、DBC、SHY 的每日淨值
metrics.json 本文引用的全部統計,包含每組參數、前後兩段與逐年報酬

**投資警語:本文僅供教學參考,不構成投資建議。過去績效不代表未來表現,投資有風險。**本文所有回測均為全段樣本內結果;前後兩段只是穩定度檢查,未經樣本外驗證。

最後更新:2026-10|回測區間:2017-07~2026-10|基準:QQQ 含息|作者:FinLab 量化研究團隊(經量化研究員審閱)

FinLab AI

想建立自己的策略?

用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案

免費開始

更多多因子選股研究

查看全部