跳至主要內容
台股研究 約 11 分鐘閱讀

加速度指標選股實測:2020 年宣稱年化 20%,
2026 年含成本重跑只剩 -2.6%

加速度指標選股靠均線曲率篩出止跌回升與起漲股,2020 年版策略宣稱歷史年化約 20%。我們用 finlab 重新回測台股 2018 至 2026:多組採樣加初速與 ROE 濾網的版本,費前年化 16.7%,扣除手續費與證交稅後變成 -2.6%,同期 0050 含息年化 25.05%。本文完整公開指標公式推導、消融對照、換股頻率與成本實測數據,附可下載程式碼。

均線曲率實測 CAGR -2.6% Sharpe 0.02

加速度指標選股策略 2018-2026 台股回測權益曲線,費後年化 -2.58%,同期 0050 含息年化 25.05%

本文是一次完整的重新檢驗。 加速度指標是 FinLab 在 2020 年發表的均線曲率選股方法,當年宣稱搭配濾網後歷史年化約 20%。2026 年 6 月,我們用 finlab 套件、含手續費與證交稅的回測,把同一套規則在台股 2018-01 到 2026-06 重跑一遍:費前年化最高 22.3%,與當年的宣稱相符;但扣掉交易成本後,每日換股版本年化 -10.0%,週換股版本 -2.6%,全部輸給同期 0050 含息的 25.05%。這篇文章保留指標的完整推導與程式碼,也把它失效的位置與原因攤開,所有數字都能用文末的腳本重現。

關鍵數字

2018-01 ~ 2026-06(週再平衡,含交易成本) 年化報酬 CAGR 日夏普 最大回撤 總報酬 平均持股
單一採樣 n=20 3.12% 0.26 -45.32% 29.5% 290.1 檔
多採樣交集 n=10/15/20/50 -0.79% 0.07 -58.75% -6.5% 104.5 檔
多採樣+初速濾網 -0.98% 0.07 -61.30% -7.9% 92.5 檔
多採樣+初速+ROE>3(主策略) -2.58% 0.02 -70.42% -19.8% 42.7 檔
主策略+外資 10 日買超 -2.99% -0.00 -67.86% -22.5% 26.8 檔
0050 含息(純指數,不含成本) 25.05% 1.22 -33.96% 558.5% 1 檔

九個年度裡,主策略只有 2023 年贏過 0050。這個結果對寫出原版策略的我們並不光彩,但它比當年那條漂亮的權益曲線更有參考價值:它告訴你一個看起來合理的技術指標,從費前到費後、從 2020 到 2026,會在哪裡壞掉。

加速度指標是什麼:從國中物理到均線曲率

把股價想像成一台往前開的車。國中物理的等加速度運動式是

xt=x0+vt+12at2x_t = x_0 + v t + \tfrac{1}{2} a t^2

對應到股票:x0x_0 是買進價,xtx_t 是之後的價格,vv 是股價目前的「速度」(一段時間的漲幅),aa 是「加速度」(漲幅本身的變化)。想要 xt>x0x_t > x_0(賺錢),最理想的情況是 v>0v > 0a>0a > 0:股價不只在漲,而且越漲越快。

「速度為正」很好判斷,今天股價比 n 天前高就是了。麻煩的是加速度:股價逐日跳動的雜訊太大,對價格序列做兩次差分幾乎只會得到雜訊。2020 年原文的做法,是改看 60 日均線的「曲率」,均線把日線雜訊抹平之後,凹向上(曲率為正)代表漲勢在加速,凸向上(曲率為負)代表漲勢在衰竭。

這和一般動能指標的差別在階數:動能(momentum)看的是報酬率本身,是價格的一階變化;加速度看的是報酬率的變化,是價格的二階變化。一檔漲幅 30% 但漲勢逐月放緩的股票,動能排名可能還很前面,加速度卻已經轉負。動能因子在台股的實測表現,可參考動能策略的台股回測Aroon 動能指標選股實驗

指標公式:三個採樣點判斷曲率正負

不必真的算二階導數。在均線上取三個點:n 天前、n/2 天前、今天,判斷式只有一行:

MAt+MAtn2>MAtn/2\frac{MA_t + MA_{t-n}}{2} > MA_{t-n/2}

左邊是「n 天前均線與今日均線連線的中點」(下圖紫點),右邊是「n/2 天前的均線值」(下圖黃點)。紫點高於黃點,代表均線在這段期間凹向上,曲率為正。把不等式整理一下,它等價於離散二階差分為正:

atMAt2MAtn/2+MAtn(n/2)2>0a_t \approx \frac{MA_t - 2\,MA_{t-n/2} + MA_{t-n}}{(n/2)^2} > 0

加速度指標幾何圖解:均線上取 n 天前、n/2 天前、今日三個採樣點,紫點高於黃點代表曲率為正

如果想把指標從布林值變成連續數值,方便排序或畫圖,可以寫成相對差距:

Accelt=(MAt+MAtn)/2MAtn/2MAtn/2\text{Accel}_t = \frac{(MA_t + MA_{t-n})/2 - MA_{t-n/2}}{MA_{t-n/2}}

數字示例(虛構公司,僅示範計算):假設某公司 60 日均線在 20 天前是 95 元,今天是 105 元,10 天前是 98 元。取 n=20:紫點 =(95+105)/2 = 100 元,黃點 = 98 元,100 > 98,曲率為正;數值化指標 Accel =(100−98)/98 ≈ 2.04%。若 10 天前均線是 101 元,紫點 100 < 黃點 101,曲率為負,這檔就會被剔除。

學術文獻:加速度效應存在,但做法和散戶版很不一樣

價格二階變化有沒有資訊量,學術界研究過:

  • Gettleman & Marks (2006) 把六個月動能的變化定義為「加速度」,發現高動能且動能仍在增強的股票,後續報酬優於只有高動能的股票。這對應本文「曲率為正優於只看漲幅」的出發點。
  • Ardila-Alvarez, Forro & Sornette (2021) 在 Physica A 期刊以連續報酬的一階差分建構「Gamma 因子」,在美股 1963 到 2013 年的大樣本中,加速度多空組合的表現在多數參數化下勝過動能因子,顯示加速度含有動能之外的定價資訊。
  • Han, Zhou & Zhu (2016) 發表於 Journal of Financial Economics 的趨勢因子研究顯示,把多個視窗的均線資訊組合起來,比單一視窗更有效。本文 n=10/15/20/50 多組採樣交集的設計,方向上與此一致。

要注意這些研究與本文策略的三個關鍵差異:文獻用的是橫斷面分位數多空組合(做多加速度最強的一組、放空最弱的一組),不是「曲率大於零就買」的門檻式選股;測的是月頻調倉,不是每日換股;報酬是未扣成本的因子報酬。學術上存在的效應,不保證一個高換手、純做多、含成本的散戶版本能存活,這正是下面回測要驗證的事。

2020 年原版策略:三大癥結與它的解法

原文指出加速度指標單獨使用有三個癥結,並逐一加上濾網。這次重測保留同樣的邏輯:

  1. 不知道初速:曲率為正的股票分成「止跌」與「起漲」兩種,剛止跌的股票可能繼續震盪甚至續跌。原文用 KD 指標 K>D(參數 240、120、120)當趨勢濾網;這組參數在現行日線系統無法對應重現(疑似舊系統的特殊週期設定),本次改用可重現的等價條件:收盤價站上 60 日均線,同樣是「只買已在上升軌道的股票」。
  2. 採樣點太少:三個點比大小,像只看電影的開頭和結尾猜劇情,單一採樣會把不少假曲率誤判為正。解法是多組採樣交集:n=10、15、20、50 四個週期的曲率全部為正才入選。
  3. 沒看公司營運:純技術條件可能選到基本面惡化的股票,解法是加一條寬鬆的ROE > 3%

原文的版本每天換股,宣稱「不加手續費效果很不錯」,歷史年化約 20%,並附上一張無手續費與含手續費差距明顯的權益曲線。當年沒有把費後數字寫清楚,這次補上。

用 finlab 重現:回測設定與程式碼

完整規格:台股上市櫃普通股(排除 ETF),60 日均成交金額大於 5,000 萬的流動性濾網,60 日均線用還原收盤價計算(避免除息缺口造成假曲率),ROE 取自財報並以公布期限對齊(財報公布前不會用到)。主版本每週再平衡,交易成本用 finlab sim() 台股預設值。核心程式碼可以在頁面上看完:

顯示程式碼
import finlab
from finlab import data
from finlab.backtest import sim
 
finlab.login()
 
# 只取上市櫃普通股,排除 ETF
data.universe(market="TSE_OTC")
 
# 載入還原股價與成交金額
adj = data.get("etl:adj_close")
amount = data.get("price:成交金額")
 
# 60 日均線與加速度條件
ma60 = adj.rolling(60).mean()
 
def accel(n):
    # n 天前與今日均線的中點,高於 n/2 天前的均線 = 曲率為正
    return (ma60.shift(n) + ma60) / 2 > ma60.shift(n // 2)
 
# 多組採樣交集,排除假曲率
acceleration = accel(10) & accel(15) & accel(20) & accel(50)
 
# 初速濾網:股價站上 60 日均線
velocity = adj > ma60
 
# 基本面濾網:ROE > 3%,財報日期對齊公布期限
roe = data.get("fundamental_features:ROE稅後").index_str_to_date()
roe_ok = roe.reindex(adj.index, method="ffill") > 3
 
# 流動性濾網:60 日均成交金額 > 5,000 萬
liquid = amount.rolling(60).mean() > 50_000_000
 
# 組合持股,從 2018 年起回測,每週再平衡
position = (acceleration & velocity & roe_ok & liquid)["2018-01-01":]
report = sim(position, resample="W", upload=False)

和 2020 年版相比有兩處現代化:當年用 iloc[-n] 只能看「今天」的選股清單,這裡改用 shift(n) 向量化,整段歷史一次算完才能回測;當年的 finlab.data.Data() 介面已停用,現在統一從 finlab.login() 後的 data.get() 取資料。寫程式選股的入門路徑可以看程式交易是什麼,從零開始的環境建置與下單串接則在程式交易完整指南

實測結果:每一層濾網都沒有把績效救回來

主策略費後權益曲線就是文章開頭那張縮圖:2018 年起步即回撤,2022 年再挫一段,最深回撤 -70.42%,到 2026 年 6 月累積報酬 -19.8%。逐年拆開看更清楚:

加速度指標策略年度報酬與回撤曲線,2018 至 2026 九個年度只有 2023 年贏過 0050

年度 主策略(費後) 0050 含息
2018 -29.6% -5.5%
2019 -6.5% 33.5%
2020 -11.0% 31.1%
2021 7.7% 21.9%
2022 -43.9% -21.4%
2023 41.4% 27.5%
2024 2.3% 48.6%
2025 -1.1% 36.8%
2026(1-6 月) 58.3% 60.0%

原文「逐一加濾網完善策略」的敘事,在費後數據下是反過來的。消融對照(一次只加一層條件)顯示,最寬鬆的單一採樣版本年化 3.12% 反而最高,採樣交集、初速、ROE 每加一層,費後年化就更低、回撤更深:

加速度指標選股消融對照,單一採樣、多採樣交集、加初速與 ROE 濾網的費後年化報酬與夏普逐步惡化

機制不難理解:濾網越嚴,持股從 290 檔縮到 43 檔,條件交集的進出也更頻繁,選股集中度與換手率同時上升。在費前,這些濾網確實有篩選力;但每一次換股都要付 0.1425% 手續費加 0.3% 證交稅,提高換手等於把篩選力折現給券商和國庫。互動式回測報告可以在這裡檢視每一期的持股與損益:

換股頻率與成本:年化 20% 的宣稱從哪裡來

把同一個主策略分別用日、週、月再平衡各跑一次,費前與費後對照:

加速度指標策略不同換股頻率的費前與費後年化報酬對照,日再平衡費前 22.3% 費後 -10.0%

再平衡頻率 費前 CAGR 費後 CAGR 成本吃掉 費後最大回撤
每日(原文設定) 22.32% -10.01% 32.3 個百分點 -81.29%
每週(本文主版本) 16.72% -2.58% 19.3 個百分點 -70.42%
每月 17.56% 10.58% 7.0 個百分點 -47.47%

這張表同時回答了兩個問題。第一,當年的 20% 從哪來:每日換股、不含成本的版本年化 22.32%,與 2020 年原文宣稱的「歷史年化約 20%」量級一致,原文的回測大概率就是這個口徑,並且原文自己也展示過含手續費的紅線明顯較低。第二,它為什麼撐不到實單:日再平衡費前費後相差 32.3 個百分點,這個缺口全部是交易成本,把換股頻率降到每月雖然能保住 10.58% 的費後年化,但仍輸給同期 0050 含息的 25.05%,承受的回撤卻更深(-47.47% 對 -33.96%)。風險調整後的差距更大,主策略日夏普 0.02 對 0050 的 1.22,夏普比率的意義與計算可參考夏普比率指南

值得一提的是,2020 年原文發表之後的區間(2021 到 2026)對原文而言是真正的事後資料,這六個年度主策略也只有 2023 年贏過 0050。指標不是在回測期內被「用壞」的,它在發表當下的費後體質就不足以支撐宣稱。

外資買超濾網:舊版「外資+基本面」想法的承接檢驗

這個指標最早的發想其實來自一個沒做成的三大法人策略:原作者想做外資買超選股,反覆修改後發現真正有篩選力的是加速度條件,外資只剩輔助角色。本次把這個歷史路徑也驗證了:在主策略上再加「外資近 10 日合計買超」的條件,費後年化從 -2.58% 變成 -2.99%,持股縮到 26.8 檔,沒有改善。外資買賣超在台股的系統性檢驗,可以看三大法人籌碼策略回測;單看外資買超追價,在高換手結構下同樣難以覆蓋成本。

為什麼失效:四個結構性原因

  1. 訊號本身慢半拍。60 日均線的曲率要轉正,股價通常已經漲了一段;多組採樣交集進一步要求 50 天前就開始轉強。指標確認時,行情往往走完前半場,留下的後半場不夠付成本。
  2. 止跌與起漲混在同一個訊號裡。曲率為正包含「跌深反彈」與「真正起漲」兩種型態,初速濾網只能排除還在均線下方的,排不掉反彈到均線上方又回落的,2018 與 2022 年的深回撤多來自這類股票。
  3. 條件交集推高換手。四個布林條件同時成立才持有,任何一個翻面就剔除,持股名單逐週大幅變動。費前費後 19 到 32 個百分點的差距,就是這個結構的代價。
  4. 與文獻的有效形式不同。學術上的加速度效應是橫斷面排序、多空對沖、月頻調倉的因子報酬;把它改造成門檻式、純做多、日頻的散戶策略後,因子本身的微弱優勢被執行成本淹沒。同樣的教訓也出現在ATR 移動停損的台股實測:教科書規則照搬到含成本的台股回測,結論經常反轉。

回測方法與限制

項目 本文做法
交易成本 finlab sim() 台股預設:手續費 0.1425%(未打折)+賣出證交稅 0.3%;費前版本設 fee_ratio=0、tax_ratio=0
滑價 未假設滑價;實際衝擊取決於資金規模與個股成交量,本文未估算容量
股票池 台股上市櫃(TSE+OTC)普通股,含 KY 股與金融股;以 data.universe 排除 ETF
流動性過濾 60 日平均成交金額 > 5,000 萬
排除類別 未額外排除金融股、全額交割股;finlab 價格資料含已下市股票,生存者偏誤已大幅降低
前視偏差 價格與均線用當日可得的還原價;ROE 以 index_str_to_date() 對齊財報公布期限,公布前不可見
權重 入選個股等權,無單檔上限;主策略平均持股 42.7 檔
周轉率 未輸出精確年化換手;由日再平衡費前費後相差 32.3 個百分點可知換手極高,策略容量未估
樣本內外 全段為同一規則一次跑完;參數(n=10/15/20/50、MA60、ROE>3)沿用 2020 年原文、本次未調整,因此 2021 年之後的區間對原文等同事後檢驗

特別說明:本次沒有嘗試調整參數讓結果變好看。重測的目的就是檢驗 2020 年規則的當前體質,調參之後再宣稱有效,只會重複當年的錯誤。

加速度概念還能怎麼用

指標失效不代表「二階變化」這個視角沒有價值,幾個經過驗證或值得驗證的方向:

  • 換到更慢的資料頻率。價格的日頻雜訊讓加速度訊號昂貴又脆弱,但月營收是月頻資料,「營收年增率是否在加速」天然低換手。營收成長率變化量的選股實測見 AI 選股的營收加速度因子,營收動能的完整回測見月營收動能策略。注意兩者口徑不同:本文是價格二階變化,營收加速度是基本面數據的變化量。
  • 降頻保留概念。本文月再平衡版本費後年化 10.58%,說明訊號不是零,是付不起日頻的執行成本。若要在技術面找可用因子,RSI、MACD、KD 的三大指標台股對照長週期 RSI 選股提供了同一套含成本口徑的比較基準。
  • 反向使用抓賣點。把判斷式反過來(紫點低於黃點)理論上能偵測漲勢衰竭,2020 年原文提過這個延伸;本文未對賣點版本做回測,在有數據之前,它只是一個待驗證的想法。
  • 當成研究流程的範本。原作者當年的開發迭代是:發想、回測、檢查買賣訊號、修改、再回測,這個迴圈本身比任何單一指標都耐用。簡單的方法做得快、錯得也快,驗證成本低;本文整套重測流程(規格、消融、頻率對照、成本敏感度)可以套用到任何策略想法上,系統性的入門看量化交易完整指南

常見問題

加速度指標是什麼? 看均線曲率正負的技術指標:在 60 日均線上取 n 天前、n/2 天前、今天三個點,若前後兩點的中點高於中間點,代表均線凹向上、漲勢在加速。它衡量的是價格的二階變化,和衡量一階變化(漲幅)的動能指標互補。

加速度指標和動能指標哪裡不同? 動能看「漲了多少」,加速度看「漲勢在變快還是變慢」。一檔半年漲 30% 但漲幅逐月縮小的股票,動能仍強、加速度已轉負。學術研究顯示兩者資訊不完全重疊,但有效的學術版本是橫斷面多空組合,與門檻式選股不同。

加速度指標選股 2026 年還有效嗎? 在本文設定下(台股 2018-01 到 2026-06、含交易成本),無效。週再平衡費後年化 -2.58%、最大回撤 -70.42%,同期 0050 含息年化 25.05%、回撤 -33.96%。費前年化 17% 到 22% 顯示訊號並非全無,但覆蓋不了它的換手成本。

當年宣稱的年化 20% 是怎麼回事? 重測顯示每日換股、不含成本的版本年化 22.32%,與當年宣稱的量級一致;原文也展示過含手續費績效較低的對照圖,但沒有給出費後數字。補上成本後,同一個版本年化 -10.01%。差距全部來自手續費與證交稅,不需要假設任何作弊。

為什麼濾網加越多反而越差? 費前濾網有篩選力,但條件交集讓持股變少、換手變高,成本上升的速度超過篩選力帶來的改善。單一採樣版本費後年化 3.12%,全濾網主策略 -2.58%,中間每一層的差額大部分付給了交易成本。

加速度指標適合每天換股嗎? 最不適合。日再平衡費前 22.32%、費後 -10.01%,32.3 個百分點被成本吃掉;月再平衡的成本侵蝕只有 7.0 個百分點。任何高換手訊號在台股都要先過「手續費 0.1425%+證交稅 0.3%」這一關。

加速度指標可以拿來抓賣點嗎? 把不等式反過來可以偵測曲率轉負(漲勢衰竭),2020 年原文認為這個用法搭配其他指標效果不錯,但本文未回測賣點版本,目前沒有數據支持或反駁。

加速度的概念可以用在月營收上嗎? 可以,而且更合理:月營收是月頻資料,訊號天然低換手,「營收年增率加速」是台股常用的基本面動能因子。實測見營收加速度選股的因子段落。

延伸閱讀

下載資源

檔案 說明
strategy.py 完整回測程式碼,含全部濾網與成本設定,可重現本文數字
data.csv 主策略與 0050 的每日淨值序列
metrics.json 全部回測指標(消融、頻率、年度報酬)原始輸出

投資警語:本文僅供教學參考,不構成投資建議。過去績效不代表未來表現,投資有風險。

最後更新:2026-06|回測區間:2018-01 ~ 2026-06(資料快照 2026-06-09)|作者:FinLab 量化研究團隊(經量化研究員審閱)

FinLab AI

想建立自己的策略?

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

免費開始

更多技術指標研究

查看全部