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

葛蘭碧八大法則回測:12個設計都沒穩定贏0050

葛蘭碧八大法則怎麼用?我們把葛蘭碧法則的四個買點、對應賣點寫成數值規則,分別測台股個股、0050擇時與避開訊號的方向。十二個設計各換九組參數,檢查前後兩段、預設手續費與證交稅,沒有一個通過。附均線斜率、乖離定義、參數熱圖與可重跑程式,區分圖形解讀與交易成果。

這次沒有穩定贏過 0050

不用操作程式,直接看報酬、最大跌幅與比較結果。

看比較結果
未通過本次驗證

葛蘭碧八大法則12個設計的扣成本日夏普,和同期0050含息比較

點圖可查看原尺寸;完整數字也列在下方的研究下載區。 葛蘭碧八大法則的四個買點,我們分別用於個股與0050,再把0050的持有時段反過來測,共十二個設計、108組參數,沒有一個通過這次的三項驗證。本文以反面教材為主:圖上看得出轉折,還需要回答轉折當時知不知道、什麼價成交,以及等賣點時付出了多少代價。

葛蘭碧八大法則是什麼

葛蘭碧八大法則以股價和移動平均線的關係,整理四個買進與四個賣出情境。第一類看均線轉向後突破,第二類看趨勢中跌破後站回,第三類看回測均線守住,第四類看遠離均線後的反彈。賣點可以用相反方向理解,但「走平」「短暫」「遠離」都不是可以直接交給電腦的數字。

Joseph Granville 的1960年著作可作為這套均線分析的歷史背景。本文把文字情境寫成一套事前固定的機械規則,沒有宣稱六十日均線或百分比門檻是作者唯一的原始設定。不同教材的八點編號也可能不同,因此表中同時寫出條件,避免只憑編號認策略。

買點 本次買入條件 對應出場條件
一、均線轉向後突破 收盤由下穿上均線,當下斜率非負、前一段斜率非正 收盤由上穿下,當下斜率非正、前一段斜率非負
二、上揚均線跌破後站回 收盤由下穿上均線,當下與前一段均線斜率都為正 收盤由上穿下,當下與前一段斜率都為負
三、回測上揚均線守住 前收盤在線上,當日低價靠近均線,收盤仍在線上且均線上揚 前收盤在線下,當日高價靠近均線,收盤仍在線下且均線下彎
四、負乖離反彈 收盤遠低於下彎均線 收盤遠高於上揚均線

這裡的賣出是把原先持股賣掉,沒有放空。買點與賣點同日出現時,賣出優先;沒有賣訊就繼續持有,未另外加停損。尤其第四點可能長時間等不到對應賣點,這個代價也算進結果。若研究的是均線本身,相關背景整理在均線擇時回測;兩條均線交叉的問題,則另見黃金交叉選股,不能把兩種實驗混在一起。

主要測試結果

先看「年化報酬」:平均每年賺或賠多少;「最大回撤」是從高點最多跌多少。日夏普比較報酬與波動,數字越高越好,但不保證獲利。

  • 十二個設計都未通過,換鄰近參數後無法穩定領先。
  • 第一買點0050版:年化報酬15.8%,期間最大跌幅34.0%;同期持有0050為年化13.9%、最大跌幅52.4%。
  • 這組主要設定看似較好,但九組參數只有三組贏0050,未達至少七組的門檻。

完整逐項數字如下;手機可左右滑動表格比較。

設計 年化報酬 日夏普 最大回撤 前/後半段日夏普 9格贏0050 在場比例
買點1・個股 6.9% 0.44 -61.8% 0.21/0.67 0/9 100.0%
買點1・0050 15.8% 0.95 -34.0% 0.71/1.14 3/9 76.2%
買點1・避開後持有0050 -1.9% -0.12 -52.4% -0.14/-0.11 0/9 23.8%
買點2・個股 6.6% 0.42 -61.4% 0.19/0.65 0/9 100.0%
買點2・0050 9.3% 0.59 -53.1% 0.24/0.93 0/9 68.6%
買點2・避開後持有0050 3.4% 0.40 -25.6% 0.29/0.50 0/9 31.4%
買點3・個股 5.4% 0.36 -62.1% 0.12/0.61 0/9 100.0%
買點3・0050 10.3% 0.68 -28.2% 0.49/0.83 0/9 70.5%
買點3・避開後持有0050 1.2% 0.16 -47.6% -0.14/0.66 1/9 29.5%
買點4・個股 0.4% 0.12 -63.3% -0.02/0.28 0/9 100.0%
買點4・0050 7.6% 0.55 -52.4% 0.20/1.03 1/9 65.1%
買點4・避開後持有0050 5.6% 0.49 -28.0% 0.44/0.54 1/9 34.9%
同期0050含息持有 13.9% 0.74 -52.4% 0.39/1.10 — 100%

本文提供研究結果,沒有推薦這些買賣規則。想自行重跑,可先 設定 FinLab 環境,再 下載研究程式(.py);其他檔案見 研究下載區。

中心設定下,第一買點用於0050的日夏普為 0.95,高於同期0050的 0.74,但九格只有 3格贏。單一中心點較好,沒有形成可依賴的一片鄰近區域。四種個股買點則沒有任何一格勝過0050,不能用「每檔都有均線訊號」推論成分散後就有優勢。

第一買點個股版平均持有 274 檔,整段 3,531 筆交易;0050版 6 筆。持股數很多只能分散單一公司的風險,無法消除共同的市場下跌與進出成本。下方互動報告是第一買點個股版,另一份下載報告是同買點的0050版,均為中心參數,沒有從九格挑出成績最高者。

回測方法與判讀限制

資料截至 2026-11-09,重跑日為 2026-11-10,套件 finlab 2.3.8。期間從 2008-01-02 開始。基準採 etl:adj_close 的 0050 還原收盤價,包含配息與分割調整;停牌日沿用前一價格。基準用還原價比值計算買進持有,不經回測引擎,也不扣成本。所有表格與圖都用同一段交易日,起點淨值同為一;訊號還沒出現的空手日也保留。

項目 設定與限制
成交時間 當天收盤算訊號,隔一個交易日收盤成交;無法用今天的訊號買回今天的收盤
成本 sim() 預設手續費買賣各 0.1425%,賣出證交稅 0.3%,未打折;ETF 也沿用這個較高的股票稅率,沒有另切較低稅率
周轉率 本次未計算含價格漂移的實際成交金額周轉率,交易筆數不能直接換算周轉率;下方另列目標權重變化的月周轉估計
滑價與容量 未另外假設滑價,未估算策略容量;實際成交可能受漲跌停、成交量與委託影響
股票池 個股實驗用歷史四碼普通股,排除0開頭與91開頭代號;20日平均成交金額至少2,000萬元才能進場,保留下市股票,未另外排除金融、KY與全額交割股
權重 個股對當時持股等權,不限制檔數;0050設計只在持有0050與現金之間切換;現金報酬設為零
資料可得日 價量使用資料原有日期,當日高低價收盤後才完整可得;未使用個別投資人的策略或交易紀錄
樣本 全段樣本內,沒有樣本外或前瞻實盤驗證;切前後半段也不能替代樣本外

「贏」採日夏普:日報酬平均除以標準差,再乘以252的平方根,不扣無風險利率。每個設計換兩個參數、各取三個值,共九格,至少七格要高於同期0050;中心參數在交易日對半切的兩段,也各自要高於0050;全部用扣成本結果。平均有多少天持股,就是表中的在場比例。有現金的設計還要高於「每天固定維持同平均權重的0050、其餘現金」對照,避免把少投資帶來的較小波動誤認成擇時能力。這個固定權重對照不扣調倉成本。

通過上述三項後,還須拿掉中心參數報酬最好的一個日曆年,再次高於同期0050,才算通過本次整體檢查;這不能補救前面未過的項目。未通過者不設成公開策略,也不提供把它當成已驗證策略的 Studio 捷徑。若要理解含息與一般收盤價的差異,可看回測方法;量化交易指南則說明研究結果與實際執行的距離。

換參數後,哪個買點還站得住

均線長度固定測四十、六十、八十日,中心為六十日。第一、二點的斜率用三、五、十日價差,中心五日;第三點的高低價距均線範圍為0.5%、1%、2%,中心1%;第四點偏離幅度為8%、12%、16%,中心12%。第三、四點的均線斜率都看五日。每個買點完整跑三乘三,沒有先看結果再改成另一條均線。

葛蘭碧四個買點個股選股九格參數與0050的日夏普差 葛蘭碧四個買點0050擇時九格參數的日夏普差 避開葛蘭碧四買點持有時段的0050參數熱圖

熱圖每格是策略減去0050的日夏普,藍色正值才是該格比較高,紅色負值代表比較低。個股版四張小圖全為負值;0050版第一點有局部正值,其他買點偶有一格勝出,互補方向也沒有達到七格門檻。「避開訊號、其他時間持有」仍要測,因為稀疏的反彈訊號容易讓資金長期空手;但改成互補方向也不能自動通過驗證。

葛蘭碧八大法則12個中心設計前後半段日夏普 葛蘭碧第一買點個股與0050、第四買點互補方向的同起點淨值 淨值圖保留第一點的個股版與0050版,以及第四點避開後持有的版本,灰線為0050含息。累積線回答資金最後走到哪裡,前後段圖則回答改善是否只集中於某一段;兩個問題都需要看。回撤較小也可能來自大量現金,必須同時交代在場比例與少參與上漲的成本。

從圖形解讀到交易規則,中間差了什麼

第一,均線轉向是一段持續演變的過程。第一買點要求「當下轉平、之前沒有上揚」,第二買點要求「之前也在上揚」,所以同樣的向上突破會被分配到不同情境。若看到結果後把某次不漂亮的突破改稱「假突破」、排除在八法則之外,就無法得到可重跑的研究。

第二,回測守住要事前定義。本文用當日最低價距均線的百分比範圍,收盤再確認仍在線上;這會排除跌得太深才拉回的長下影線。另一位研究者可以採不同定義,但應先寫定,再完整公布相鄰參數。這份結果只適用於表中設定,不能延伸成所有均線回檔都無效。

第三,負乖離大可能伴隨市場風險持續上升。知道價格離均線很遠,不代表知道反彈哪天開始;等到對稱賣點又可能錯過先前反彈。把乖離率改當排名因子是另一個題目,相關機制可對照技術指標研究,不能把那類組合的成績移植到本次單獨買賣規則。

Brock、Lakonishok與LeBaron(1992)研究過移動平均與區間突破,對象與年代不同,不能直接替這十二個台股設計背書。Sullivan、Timmermann與White(1999)則提醒,多看許多技術規則再挑最好者,會引入資料探勘偏誤。本次固定參數與完整表格可以減少挑漂亮格子的空間,但沒有做該論文的統計檢定。

常見問題

葛蘭碧八大法則適合看日線還是週線?

本文只測日線。改成週線會改變訊號確認、持有長度與成交次數,屬於新的研究,不能直接沿用這次數字。

葛蘭碧法則一定要用二百日均線嗎?

沒有在這次研究測二百日。本次事前固定四十、六十、八十日,目的是觀察季線附近的敏感度,不提供一條適用所有市場的最佳天數。

四個買點可以混在一起使用嗎?

可以另提組合假說,但本次分開測。混用後還要寫清楚哪個賣點管理哪次進場,不能在出場時才挑當時看起來最有利的解釋。

回測均線有撐就能當天買進嗎?

當日最低與收盤價要到收盤後才完整確定。本文隔日收盤成交,因此沒有把事後已知的支撐買回當日最低價。

沒有通過,是否代表技術分析都沒用?

只能說這十二個固定設計在這段台股期間沒有穩定勝過0050。加上其他資料、換市場或換持有方式,都是需要另驗的題目。可對照大盤均線濾網的不同用途。

新手可以怎麼重跑?

從下載研究程式開始,保留原參數與固定迄日,對照本文的九格與逐日淨值。能重現後,再把新想法當成新實驗;程式交易入門說明整個流程。

用Python表達第一買點

這段是第一買點用於0050的中心設定。hold_until把進場事件延續到對應賣出事件,期間仍包含沒有新訊號的交易日。完整研究程式另跑其他買點與所有鄰近參數。

顯示程式碼
from finlab import data
from finlab.backtest import sim
 
close = data.get("etl:adj_close")[["0050"]].loc[:"2026-11-09"]
ma = close.rolling(60).mean()
slope = ma.diff(5)
cross_up = (close > ma) & (close.shift(1) <= ma.shift(1))
cross_down = (close < ma) & (close.shift(1) >= ma.shift(1))
buy = cross_up & (slope >= 0) & (slope.shift(5) <= 0)
sell = cross_down & (slope <= 0) & (slope.shift(5) >= 0)
position = buy.hold_until(sell) & close.notna()
report = sim(
    position.loc["2008-01-02":],
    retain_initial_cash=True,
    end_date="2026-11-09",
    upload=False,
)

目標權重變化與月周轉

下表將每日目標等權部位的變化取絕對值,買進與賣出相加後按月加總。持股從零到滿倉計100%,再全部賣出另計100%;只轉換同一檔持股的期間不重複計算。這是不含價格漂移的目標權重周轉估計,並非回測引擎實際成交金額除淨值;平均包含空手月份,資料最後不足一個月也納入。交易筆數則可能同時包含許多檔股票,不能拿來替代周轉率。

中心設計 平均每月雙邊周轉 單月最高
買點1・個股 19.7% 123.9%
買點1・0050 4.8% 200.0%
買點1・避開後持有0050 5.3% 200.0%
買點2・個股 47.6% 157.1%
買點2・0050 12.8% 200.0%
買點2・避開後持有0050 12.3% 200.0%
買點3・個股 84.2% 175.7%
買點3・0050 30.4% 300.0%
買點3・避開後持有0050 30.0% 300.0%
買點4・個股 57.6% 371.5%
買點4・0050 4.8% 200.0%
買點4・避開後持有0050 4.4% 200.0%

下載與重跑

只想看結果,不用安裝軟體或執行程式。 下方兩份互動網頁可查看歷年報酬與最大跌幅;要自行重跑全部研究,再選擇下載Python程式。

選擇性:自行重跑完整研究

  1. 下載共用研究程式,存成 research.py。
  2. 依FinLab設定流程準備環境,安裝finlab、numpy與pandas,依套件指示登入。資料權限依登入帳號而定。
  3. 在程式所在資料夾執行:
顯示程式碼
python research.py --out results

這個命令會跑三個主題、十八個設計的全部162組,並非只跑本文。輸出的 results/metrics.json 包含完整參數與統計,各設計另有具名的互動HTML報告與每日淨值CSV;程式不會部署或下單。

兩份互動報告對應表格具名的兩個中心設計,沒有從九格中挑最好者。報告內建市場線不替代本文依同期0050還原價算出的對照表。後續資料修補或套件更新可能使重跑數字小幅不同;本文保留這次執行的數字與日期。

投資有風險,過去績效不代表未來表現。本文僅供教學與研究參考,不構成投資建議,不推薦買賣任何個股。最大回撤、空手機會成本與交易成本請一併評估。

最後更新:2026-11|回測區間:2008-01-02~2026-11-09|作者:FinLab 量化研究團隊。團隊以歷史資料與可重跑程式研究台股及美股策略。

FinLab AI

想建立自己的策略?

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

免費開始

更多技術指標研究

查看全部