
執行這個策略
複製提示詞,讓 AI 依照上方證據的資料、條件與風險檢查重跑一次。
告訴你的AI:
幫我設定 FinLab,重跑 S&P 500 黃金交叉回測與事件研究,請讀:https://finlab.finance/setup?relatedUrl=/blog/golden-cross-stocks-backtest
S&P 500 個股出現黃金交叉,幾乎沒有告訴我們接下來會怎樣。2017 年 4 月到 2026 年 10 月,我們追蹤了 3,529 次黃金交叉和 3,713 次死亡交叉。之後 126 個交易日,黃金交叉後平均上漲 6.6%,死亡交叉後平均上漲 7.6%;跟成分股平均相比,兩者都在正負 0.2 個百分點以內。從黃金交叉抱到死亡交叉的策略年化 11.5%、日夏普 0.72,含息 QQQ 是 19.6%、0.89。它略贏 RSP 的 0.68,但 36 組參數沒有一組贏 QQQ。
50 日線穿過 200 日線是最常被引用的技術訊號之一,通常拿指數來測。本文改測個股,股票池用每一天真實的 S&P 500 成分股。
黃金交叉關鍵數字
| 設計 | 日夏普 | 年化報酬 | 最大回撤 | 贏 QQQ | 贏 RSP | 前/後半段夏普 | 每邊 0.1% 成本的夏普 |
|---|---|---|---|---|---|---|---|
| 黃金交叉 | 0.72 | 11.5% | -38.4% | 0 / 9 | 7 / 9 | 0.80 / 0.63 | 0.68 |
| 黃金交叉+營收成長 | 0.73 | 12.7% | -38.4% | 0 / 27 | 27 / 27 | 0.69 / 0.80 | 0.70 |
| RSP 含息 | 0.68 | 11.6% | -39.0% | 對照 | 0.78 / 0.57 | ||
| SPY 含息 | 0.84 | 14.7% | -33.7% | 對照 | 0.93 / 0.75 | ||
| QQQ 含息 | 0.89 | 19.6% | -35.1% | 基準 | 1.11 / 0.69 |
每一列都是 2017-04-04 到 2026-10-30,股息再投入。前後半段以 2022-01-13 切開。
黃金交叉與死亡交叉之後發生什麼事
黃金交叉是個股 50 日均線由下往上穿過 200 日均線的那一天,死亡交叉相反。下表的報酬都從下一個收盤起算,和回測的成交方式相同。
| 事件 | 交易日 | 筆數 | 平均報酬 | 中位數 | 上漲比例 | 相對成分股平均 | 贏平均的比例 |
|---|---|---|---|---|---|---|---|
| 黃金交叉 | 21 | 3,504 | 0.82% | 0.99% | 56.1% | 0.05% | 50.2% |
| 黃金交叉 | 63 | 3,416 | 2.42% | 1.94% | 56.0% | 0.02% | 48.2% |
| 黃金交叉 | 126 | 3,293 | 6.56% | 4.68% | 60.0% | 0.15% | 46.2% |
| 黃金交叉 | 252 | 3,113 | 12.99% | 8.93% | 62.9% | 0.13% | 45.5% |
| 死亡交叉 | 21 | 3,638 | 2.19% | 1.95% | 59.6% | 0.18% | 49.9% |
| 死亡交叉 | 63 | 3,568 | 5.27% | 4.41% | 61.9% | 0.18% | 48.3% |
| 死亡交叉 | 126 | 3,493 | 7.64% | 5.60% | 61.0% | 0.05% | 46.8% |
| 死亡交叉 | 252 | 3,235 | 16.55% | 10.90% | 65.5% | -1.04% | 45.7% |

每個期間都是死亡交叉後漲得比較多。乍看像是空頭訊號反而該買,但表格右邊幾欄說明了原因:和同期成分股平均相比,兩種事件都接近零,原始報酬的差距大多來自大盤本身。死亡交叉後 63 天,成分股平均上漲 5.10%,黃金交叉後只有 2.40%。死亡交叉偏向出現在弱勢行情:26.4% 發生時 RSP 距高點至少 10%,所有交易日是 14.8%,黃金交叉是 11.9%;不過仍有一半發生在 RSP 距高點 5% 以內。原始報酬較高,反映的是訊號出現的行情位置,和個股本身關係不大。
最後一欄也接近基準值:任何一天,任一成分股在這四個期間贏過成分股平均的比例是 49.2%、48.6%、47.5%、46.0%。

接近零的平均值底下,個股差異非常大。黃金交叉一年後,第 10 百分位的股票落後成分股平均 34.8%,第 90 百分位領先 33.5%,死亡交叉的範圍幾乎一樣。長期的超額報酬中位數兩者都略為負值,因為少數大贏家把平均值拉到中位數之上。
失敗也很常見:23.2% 的黃金交叉在 63 個交易日內就被死亡交叉反轉。
這些事件在時間上互相重疊,並不獨立,所以上表只是描述統計,沒有宣稱統計顯著。
策略怎樣才算過關
「贏」只有一個意思:同一段交易日裡,日夏普高於含息的 QQQ。這裡的夏普是日報酬平均除以標準差,再乘以 √252,不扣無風險利率。以下條件都在看到結果之前寫定。
- 鄰近參數: 每個主要參數取原值和上下一個鄰近值,七成以上的組合要贏 QQQ。
- 前後兩段: 回測期間對半切,原設定兩段都要贏。
- 含成本: 原設定在 finlab 美股預設成本(0)和每邊 0.1% 下都要贏。
- 不靠單一年份: 拿掉領先最多的那一年,原設定仍要贏。
- 現金: 這些規則可能留現金,所以扣掉 BIL(短期國庫券)後的夏普也要贏 QQQ。
- 濾網要有貢獻: 營收版的原設定要高於基本版。
兩個設計
均線規則的研究歷史很長。Brock、Lakonishok 與 LeBaron(1992)用 1897 到 1986 年的道瓊指數測試,發現訊號有預測力。Sullivan、Timmermann 與 White(1999)修正資料探勘偏誤後則指出,最好的規則在 1987 到 1996 年沒有延續優勢。
- 黃金交叉: S&P 500 成分股的 S 日均線上穿 L 日均線就買,S 日線跌回 L 日線之下或離開指數就賣。S 取 40、50、60,L 取 150、200、250。
- 黃金交叉+營收成長: 進場另外要求最新已申報季的營收年增至少 g。g 取 5%、10%、20%。
新加入指數時短均線已在長均線之上的股票,要等下一次交叉才買。持股等權,單檔上限 5%,符合的股票不足 20 檔時留現金。
策略結果:貼近 RSP,低於 QQQ
基本版平均持有 280 檔,範圍 59 到 450 檔,多數時間持有超過半個指數。它的日報酬和 RSP 的相關係數是 0.94,報酬和回撤都貼近 RSP:年化 11.5% 對 11.6%,回撤 -38.4% 對 -39.0%。夏普 0.72 對 0.68 的優勢來自較低的波動,17.2% 對 18.6%。策略始終滿倉,一檔出現死亡交叉時,資金只是轉到其他股票。2018 年(-4.8% 對 -7.8%)和 2022 年(-9.0% 對 -11.6%)跌得比 RSP 少,2020 年賺得比較少(8.6% 對 12.7%)。
對 RSP 的優勢很脆弱。長均線用 150 日的三組裡有兩組輸 RSP,每邊 0.1% 成本下夏普從 0.72 掉到 0.68,和 RSP 打平。目標權重一年週轉約 2.5 次。

粗體是原設定。36 格全部低於 QQQ,最好的是 0.77 對 0.89。50/200 這組沒有特別之處:相鄰的長度都落在 0.66 到 0.75 之間,既沒有可以利用的尖峰,也沒有高於 QQQ 的高原。
營收版比較值得一看。它把組合減到約 75 檔,27 組參數全部贏 RSP,只是有些差距極小。年化提高到 12.7%,後半段 0.80 贏 QQQ 的 0.69。但前半段夏普 0.69,輸 RSP 的 0.78,也輸 QQQ 的 1.11,扣掉短期國庫券後同樣輸,0.60 對 0.79。它的 0.73 只比基本版的 0.72 高一點點。它的起步也慢:第一天只有 2 檔,2017 年有 106 天不足 20 檔,其餘留現金。交易統計:945 筆已平倉交易,勝率 38.1%,中位數虧 4.4%,平均賺 5.1%,持有中位數 127 個交易日。
基本版則是 3,429 筆已平倉交易,勝率 41.3%,平均賺 6.4%,中位數虧 3.3%,持有中位數 138 個交易日。
個股和指數的差別
我們的槓桿 ETF 擇時研究拿同樣的交叉測指數本身,在基金和短期國庫券之間切換。2017 年 1 月起,QQQ 版夏普 0.99、9 組贏 4 組,最大回撤降到 -28.6%;SPY 版 0.73、一組都沒贏,回撤 -33.7%,和 SPY 相同。這些規則是整個離開市場。本文的個股組合則始終在場內,回撤貼近 RSP。
和 QQQ 的差距,有一部分可能來自持有哪些股票、各持多少。Bessembinder(2018)發現,美股長期創造的財富大多來自少數股票。QQQ 依公司規模加權,這個策略則把資金平均分給約 280 檔。我們沒有把這兩種影響拆開。
台股的情況可以看均線怎麼用才對:同樣用台股資料測過黃金交叉選股,研究段年化也輸 0050。
程式碼
這段是基本版,用到 2026 年 10 月的資料跑出來就是頭條的夏普 0.72。research.py 另外保留一家公司一個股別,並加上營收濾網和事件研究。
顯示程式碼
import finlab
from finlab import data
from finlab.backtest import sim
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)
fast = close.rolling(50).mean()
slow = close.rolling(200).mean()
# 黃金交叉是 50 日線升到 200 日線之上的那一天
golden_cross = (fast > slow) & (fast.shift(1) <= slow.shift(1)) & members
sell = (fast < slow) | ~members
position = golden_cross.hold_until(sell).loc["2017-04-03":]
# 等權、單檔上限 5%、下一個收盤成交
report = sim(position.loc[:, position.any()], position_limit=0.05, trade_at_price="close",
market="us", upload=False)
returns = report.creturn.pct_change().dropna()
print("日夏普:", round(returns.mean() / returns.std() * 252 ** 0.5, 2))不想自己寫也可以。照 AI 輔助安裝流程裝好 FinLab skill,或直接到 FinLab Studio 用白話請 AI 重跑,例如「把黃金交叉研究改成 Nasdaq 100 成分股」或「只看 SPY 在 200 日線之上時的死亡交叉」。
回測方法
| 項目 | 做法 |
|---|---|
| 回測區間 | 2017-04-03 至 2026-10-30。起點前的交叉也算持股,所以基本版第一天持有 176 檔;營收版從 2 檔開始,其餘留現金 |
| 股票池 | 每天的 S&P 500 成分股,一家公司留一個股別。2017-04-03 的 505 檔成分股裡有 13 檔當天在 FinLab 沒有價格,略過;其中有些後來倒閉,結果會略為偏高 |
| 流動性 | 除了指數成分外未設濾網。未估容量 |
| 週轉率 | 目標權重一年約 2.5 次 |
| 事件研究 | 成分股的 50/200 交叉。剩餘天數不足的事件剔除,包含期間內被併購或下市的股票,所以長天期略偏向存活者 |
| 財報 | 依申報日對齊,沒有成長率的季度視為不符合,避免前視偏差 |
| 權重 | 等權、單檔上限 5%,名單變動的日子重新等權;現金沒有利息 |
| 成交 | 收盤算訊號、下一個收盤成交 |
| 成本 | finlab sim() 美股預設 0,另跑每邊 0.1%。未估滑價 |
| 稅 | 未計 |
| 樣本 | 全段都是樣本內,前後兩段只檢查穩定度,沒有做樣本外驗證 |
這個結果能說明什麼
在這段期間和這個股票池裡,交叉本身幾乎沒有個股層面的資訊。這不代表均線沒有用,前面指數層級的結果就不一樣。本文也只涵蓋美國大型流動性股票的一個強勢十年,小型股或其他市場可能不同。
想從頭學,可以看美股回測教學;站上其他研究都收在美股量化交易策略比較,技術與動能的總覽在程式交易完整指南。類股層級的類似訊號見美股類股輪動回測。
常見問題
黃金交叉是什麼意思?
股票 50 日移動平均線升到 200 日移動平均線之上的那一天。也有人用其他長度;本文測了短均線 40 到 60 日、長均線 150 到 250 日。
黃金交叉是買進訊號嗎?
依本文的證據不是。3,293 次黃金交叉之後的 126 個交易日,46.2% 贏過 S&P 500 成分股平均,和任一成分股任一天的 47.5% 差不多,平均差距 0.15%。
死亡交叉是看空訊號嗎?
這段期間平均來說不是。死亡交叉後 126 個交易日平均上漲 7.64%,和成分股平均差不多,平均來說賣掉既沒有幫助也沒有傷害。
黃金交叉失敗的機率多高?
23.2% 的黃金交叉在 63 個交易日內被死亡交叉反轉。一年後,全部黃金交叉有 45.5% 贏過成分股平均,和任一成分股任一天的 46.0% 差不多。
哪一組均線最好?
沒有特別突出的組合。測的 9 組夏普介於 0.66 到 0.75,全部輸 QQQ。
為什麼死亡交叉後股票反而漲比較多?
死亡交叉偏向出現在弱勢行情,之後成分股平均也漲得比較多。和這個平均相比,差距幾乎消失。
黃金交叉用在 SPY 或 QQQ 有用嗎?
QQQ 版 9 組贏 4 組,SPY 版一組都沒贏,細節見槓桿 ETF 擇時研究。兩者都沒有通過完整驗證。
可以自己重跑嗎?
可以。透過 AI 輔助安裝流程裝好 FinLab skill,下載下面的 research.py,執行 python research.py。
延伸閱讀
- 道瓊狗股策略回測:每年買道瓊殖利率最高的 10 檔,同一套驗證。
- 52 週新高選股回測:買創新高的 S&P 500 成分股、均線出場。
- 美股學術因子回測:10 個論文因子,同一套驗證。
下載資源
| 檔案 | 內容 |
|---|---|
| research.py | 完整研究:兩個設計、36 組參數、前後兩段、成本重跑與事件研究 |
| data.csv | 兩個設計,加上 QQQ、SPY、RSP 的每日淨值 |
| metrics.json | 本文背後的統計,包含逐年事件數 |
**投資警語:本文僅供教學參考,不構成投資建議。過去績效不代表未來表現,投資有風險。**本文所有回測均為全段樣本內結果,前後兩段未經樣本外驗證。
最後更新:2026-11|回測區間:2017-04~2026-10|資料截至 2026-10-30,重跑日 2026-11-01|基準:QQQ 含息|作者:FinLab 量化研究團隊(經量化研究員審閱)
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始

