所有圖均可點開,手機可雙指放大;完整數字與逐日淨值可從文末下載。
均線糾結突破、月線與季線扣抵,這次七個設計、63組參數沒有一個通過驗證。本文以反面教材為主:均線聚在一起能量化,未來要移出的價格也能提前知道;這兩個事實仍不足以保證買入後有較高的風險調整報酬。
均線糾結與均線扣抵各自在看什麼
均線糾結指不同天期的移動平均線彼此靠近,常被理解為成本接近或方向尚未明朗。均線扣抵則觀察均線接下來要移除的舊價格,用來推估新價格進入後,平均值可能往哪裡走。前者看同一天多條線的距離,後者看同一條線的資料更替,兩者回答的問題不同。
月線、季線在本文分別以20、60個交易日為中心設定,並非每月最後一天或完整一季的日曆平均。市場遇到休市時,這些交易日會跨越不同長度的日曆期間。文章中的「未來三天」同樣指三個交易日,不能直接把日期加三個曆日。
均線糾結的數值定義
對每檔股票計算5、10、20、60日均線,取當天最大值除以最小值再減一。差距不超過2%,連續五天成立,才算中心設定的糾結。買點要求昨天還符合這段糾結,今天收盤由下穿上全部四條線;若昨天已經在線上,不會每天重複當成新突破。進場後持有到收盤跌破20日均線,賣訊優先,沒有另加停損。
這裡沒有要求今天仍維持2%以內,因為突破當日均線距離可能開始擴大。若把「今天也要緊密」與「今天突破」綁在一起,就會變成另一個更嚴格的規則。本文使用前一天已確認的連續糾結,並把所有條件寫在下載程式中,避免從圖上回看才圈出一段漂亮盤整。
扣抵可以提前知道多少
一條n日均線,在下一個交易日會拿掉今天往前數n減一日的價格。因此明天均線是否上升,取決於明天的新收盤價是否高於那個舊價;明天收盤尚未知,現在只能作情境比較。未來三天要移出的三個價格已經知道,未來三個新價格的平均則不知道。
本次把「未來k天將移出的舊價平均低於現價」定為持有條件,等於用今天價格當未來新價格的參考。它是明確的持有假設,沒有宣稱預知未來。月線用20日、季線用60日,k的中心為3天;0050符合就持有、不符合就現金。個股每天重新按相同條件與流動性篩選,當日合格持股等權。
均線糾結、月線扣抵與季線扣抵的結果
中心設定的比較如下,最大跌幅指從歷史高點最多下跌多少。
- 月線0050擇時:年化 5.51%,最大跌幅 37.52%。
- 季線0050擇時:年化 6.13%,最大跌幅 39.08%。
- 0050含息持有:年化 14.07%,最大跌幅 52.38%。
- 均線糾結個股:年化 −13.15%,最大跌幅 93.82%。
扣抵擇時減少部分跌幅,也犧牲長期報酬。
下表保留七個設計。手機可左右滑動,看最大回撤與前後半段;日夏普越高,代表報酬相對波動的表現越好。
| 設計 | 年化報酬 | 日夏普 | 最大回撤 | 前/後半段日夏普 | 鄰近參數贏的格數 |
|---|---|---|---|---|---|
| 均線糾結突破 | -13.2% | -0.89 | -93.82% | -0.87/-0.94 | 0/9 |
| 月線扣抵・個股 | -6.7% | -0.22 | -84.38% | -0.46/0.02 | 0/9 |
| 季線扣抵・個股 | -0.7% | 0.08 | -73.53% | -0.29/0.45 | 0/9 |
| 月線扣抵・0050 | 5.5% | 0.46 | -37.52% | 0.00/0.89 | 0/9 |
| 季線扣抵・0050 | 6.1% | 0.49 | -39.08% | 0.24/0.69 | 1/9 |
| 避開月線訊號 | -2.9% | -0.12 | -58.76% | -0.18/-0.04 | 0/9 |
| 避開季線訊號 | 1.0% | 0.14 | -49.72% | -0.13/0.49 | 0/9 |
| 同期0050含息持有 | 14.1% | 0.75 | -52.38% | 0.39/1.11 | — |
本文提供研究結果,沒有推薦這些買賣規則。想自行重跑,可先 設定 FinLab 環境,再 下載研究程式(.py);其他檔案見 研究下載區。
季線只有一格通過全段比較,沒有形成一片鄰近參數都成立的區域;均線糾結也沒有出現可依賴的突破優勢。
互動報告採均線糾結個股版;另一份下載報告是月線扣抵個股版。下圖另把月線0050、季線0050與0050含息持有畫在一起,所有線共用相同起點。表中保留月線與季線的個股版,以及「避開訊號、其餘時間持有0050」兩個方向,沒有只留下較好看的那一邊。
避開扣抵訊號的兩組也沒有通過,所以這次結果沒有支持「訊號正著做沒用,反過來就有效」。訊號與互補訊號各自有買賣成本,兩條策略淨值不能相加當成買進持有;空手那段市場上漲,也可能是長期報酬落後的來源。本文沒有估計哪種原因佔多少,不能把圖上的差距直接解讀成單一因果。
回測方法與驗證門檻
資料截至 2026-11-10,於 2026-11-11 重跑,使用 finlab 2.3.8。區間為2008-01-02至2026-11-10,前置資料從2006年載入以暖機。基準採 etl:adj_close 的0050還原收盤價,包含配息與分割調整,純粹以價格比值計算含息持有,不經回測引擎,也不扣交易成本。所有比較保留相同交易日與空手日,淨值共同從一開始。
| 項目 | 本次設定 |
|---|---|
| 成交時點 | 當日收盤後形成訊號,隔一個交易日收盤成交;未使用當日訊號回買當日收盤 |
| 成本 | sim() 預設買賣手續費各0.1425%、賣出證交稅0.3%,沒有打折或設為零;0050擇時也沿用這個較高的股票稅率 |
| 股票池 | 使用歷史四碼普通股代號,排除0與91開頭;保留下市資料,不按今日上市名單預篩;未另排除金融、KY與全額交割股 |
| 流動性 | 進場須20日平均成交金額至少2,000萬元;成交金額來自 price:成交金額,並非還原股價乘原始成交量 |
| 部位 | 個股每日依訊號等權,持股不設檔數上限;空手時現金報酬為零,沒有槓桿或放空 |
| 滑價與容量 | 未另設滑價,未估計可容納資金;真實委託仍可能碰到漲跌停或成交量不足 |
| 資料可得性 | 開高低收採同口徑還原價;只使用當日及更早資料,不把事後找到的轉折回填 |
| 樣本 | 全段樣本內,沒有樣本外、滾動訓練或前瞻實盤驗證;前後切半不能替代樣本外 |
本研究的「贏」定義為日夏普高於同期0050:日報酬平均除以標準差,再乘252的平方根,不扣無風險利率。每個設計有九組鄰近參數,至少七組要贏;事前指定的中心參數在前、後半段也必須各自贏,全部使用扣成本結果。中心取參數中間值,沒有改採績效最好的格子。
有現金的設計另比較「每天固定維持同平均市場權重的0050,其餘現金」。平均權重取隔日成交後的目標總權重;個股等權持有任意檔時總權重為一,完全空手才是零,不能把股票數量或訊號出現頻率當曝險。固定權重對照不扣調倉成本,用來檢查低波動是否只是少投資造成。通過前三項後,再拿掉報酬最好的一個日曆年,要求日夏普仍高於同期0050。
下表的周轉為目標權重變動絕對值的月合計,包含買與賣,沒有除以二;不是按實際成交金額與價格漂移計算的周轉率。交易筆數也不能當成周轉率。這個估計可以顯示換股負擔,但不足以推算實際資金容量。
| 設計 | 平均持股檔數 | 交易筆數 | 每月目標周轉平均/最高 | 持股日比例 |
|---|---|---|---|---|
| 均線糾結突破 | 24.9 | 11,750 | 696.5%/1642.6% | 95.5% |
| 月線扣抵・個股 | 354.3 | 136,291 | 571.5%/1962.6% | 100.0% |
| 季線扣抵・個股 | 391.7 | 81,135 | 321.4%/1309.4% | 100.0% |
| 月線扣抵・0050 | 0.6 | 175 | 154.2%/600.0% | 61.4% |
| 季線扣抵・0050 | 0.7 | 102 | 89.9%/800.0% | 68.4% |
| 避開月線訊號 | 0.4 | 175 | 153.7%/600.0% | 38.5% |
| 避開季線訊號 | 0.3 | 102 | 89.4%/800.0% | 31.5% |
九格參數與前後半段
糾結門檻固定為1%、2%、3%,連續天數取3、5、10,中心為2%與5天。月線長度取15、20、25日;季線取50、60、70日,兩者的扣抵天數都取1、3、5。四條均線的糾結設計只改差距與持續天數,沒有同時另找均線組合;七個設計共63格,全部保留。
每張圖都列完整三乘三,不能只看中心格或某一格日夏普較高就宣告有效。月線與季線的對照也不能用同一條還原價、不同起點各自正規化;本篇所有格子使用共同交易日,結果檔列出相同基準數字,讀者可以逐格檢查。
前後半段圖將糾結、兩個個股濾網、兩個0050擇時及兩個避開方向一起列出。即使某組在後段市場較強時改善,也必須回頭檢查前段與九格門檻,不能用全期平均掩蓋時間不穩定。表中的日夏普衡量報酬與波動,不代表年化報酬一定較高;技術指標總覽也區分了趨勢訊號與獲利保證。
均線上彎與交易優勢之間,還少什麼
扣抵公式最有用的地方,是把「均線可能轉向」寫成可核對的價格條件。但高於一批舊價,可能只是價格已經上漲的結果;現在買入仍要支付進出成本,未來的新價格也可能迅速下跌。糾結後突破則可能遇到來回穿越,短均線很快變動,長均線仍然遲緩,單次收盤站上不能保證趨勢延續。
Brock、Lakonishok與LeBaron(1992)的〈Simple Technical Trading Rules and the Stochastic Properties of Stock Returns〉,刊於《The Journal of Finance》47卷5期、1731–1764頁,研究移動平均與區間突破規則。它提供歷史技術規則檢驗的背景,並未替本文的四均線糾結或未來三日扣抵條件提供直接證明。
Sullivan、Timmermann與White(1999)的〈Data-Snooping, Technical Trading Rule Performance, and the Bootstrap〉,刊於同刊54卷5期、1647–1691頁,討論大量挑規則造成的資料探勘偏誤。本次先固定九格並完整刊出,是避免只報好看參數的基本做法;並沒有執行該文的完整自助抽樣檢定,也沒有宣稱統計顯著。
用Python核對未來三日的月線扣抵
以今天為t,20日均線接下來三天要移出的價格是t減19、t減18、t減17。程式先往後移17天,再取三天平均,取得的正是這三筆已知舊價。直接使用未來價格或負向位移,會把未知資料帶回今天;前視偏差說明這種錯誤為何會讓回測變好看。
顯示程式碼
import finlab
from finlab import data
from finlab.backtest import sim
finlab.login()
data.truncate_end = "2026-11-10"
close = data.get("etl:adj_close")[["0050"]]
outgoing = close.shift(20 - 3).rolling(3).mean()
position = close.gt(outgoing) & close.notna()
report = sim(position.loc["2008-01-02":], resample=None,
upload=False, retain_initial_cash=True, end_date="2026-11-10")
report.to_html("month_deduction_report.html")完整研究程式另含全部個股流動性條件、九格與互補方向。單獨跑這段只會得到月線0050中心設定,不能拿它當成整個七設計已重跑完成。若要從視覺看均線和價格的關係,可另讀均線擇時研究;它測價格在線上與其他均線規則,和本篇的糾結距離與待移出價格不同。
均線糾結與扣抵常見問題
均線糾結多久比較有效?
本次固定測3、5、10天,九格都未提供穩定優勢。不能從這次結果選出最漂亮的一天數,再稱它是最佳等待時間。
扣抵低值,均線一定上彎嗎?
仍要看新進來的收盤價。已知的是舊價,未知的是未來價格;現價高於舊價只是本次策略採用的參考條件。
月線和季線要一起看嗎?
本文分開測,沒有把兩條線都符合才買的交集當成第八個設計。合併可能改變在場比例、成本與持股,必須另驗。
均線糾結與黃金交叉一樣嗎?
糾結限制多條線的距離,突破再加價格位置;黃金交叉看兩條線穿越,兩者不互相替代。葛蘭碧八大法則又加入均線方向與乖離情境,不能共用同一份績效。
可以用收盤價乘成交量當成交金額嗎?
還原價和原始股數尺度可能不同。本文採用資料中的成交金額,減少公司行動造成的篩選失真。
個股濾網失敗,能當買賣建議嗎?
不能。本篇只記錄固定規則的失敗結果;十字線與錘子線回測測反轉型態,寶塔線研究測線段翻色,各有不同條件。程式交易完整指南提供把假設寫清楚再驗證的入門路徑。
研究下載與重跑
- 研究程式 .py:三篇共用的完整程式,一次重跑12個設計、108組回測,每組另存HTML報告。
- 逐日淨值 .csv:只列本文中心參數與0050的每日淨值。
- 完整數字 .json:只列本文全部參數、扣成本指標、前後半段與移除最佳年結果。
- 互動報告 .html:本文主要設計的回測儀表板。
- 對照報告 .html:本文說明的另一組規則報告。
從AI輔助安裝流程設定 FinLab 後,把下載檔交給AI並要求「保留固定日期、參數與預設交易成本,重跑這份研究」。程式會引導登入、讀取所需資料,先產出各組結果,再彙整;資料權限與下載額度依帳號方案,原始資料不隨文章再散布。重跑期間較長,可先閱讀現成的逐日淨值與報告。這些未通過驗證的設計沒有公開策略頁與 Studio 策略捷徑。
歷史資料修補與套件更新可能讓同區間重跑數字不同;本文採本次完整執行結果,不把不同快照的成績拼在一起。若研究自己的新規則,應另留一段完全未看過的資料,並在下一次實驗前寫定條件。回測方法說明常見偏差,量化交易指南則整理從研究到執行需要補足的證據。
投資警語:本文僅供教學參考,不構成投資建議。過去績效不代表未來表現,投資有風險。本文結果僅涵蓋指定規則、成本與期間,未驗證實盤可成交性,也沒有保證未來報酬。
作者簡介:FinLab量化研究團隊以FinLab資料與Python程式整理台股、美股的策略研究,提供規則、回測與可下載產物,讓讀者能核對研究結果與限制。
最後更新:2026-11|回測區間:2008-01-02~2026-11-10|作者:FinLab量化研究團隊
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始











