點圖可查看原尺寸;完整數字也列在下方的研究下載區。 0050向下完整跳空缺口,在本次有完整觀察期間的樣本中,五日內回補 62.3%,六十日內回補 90.3%。但「回補後買進」的0050中心設定,日夏普只有 0.42,同期含息持有是 0.74。四個交易設計、三十六組參數沒有一個通過三項驗證,本文以反面教材為主。
本文提供研究結果,沒有推薦這些買賣規則。想自行重跑,可先 設定 FinLab 環境,再 下載研究程式(.py);其他檔案見 研究下載區。
跳空缺口、開盤跳空與缺口回補的差別
跳空缺口有不同口徑。開盤比昨天收盤低,日內價格仍可能和昨天大量重疊;本文採較嚴格的「完整缺口」:當日最高價低於前日最低價。因為要等當天最高價確定,最早也只能收盤後判斷,不會在開盤看到低開就當成完整缺口。
向下缺口的上緣是前日最低價。本文定義「回補」為缺口日之後的最高價碰到這個上緣,影線碰到也算;只回到缺口中間不算補完,缺口日自己不算回補日。向上完整缺口則是當日最低價高於前日最高價,方向相反;本次不重新跑向上不補的選股結果,直接保留先前融資、注意股與缺口研究的連結。
| 常見說法 | 本文如何處理 | 容易誤讀的地方 |
|---|---|---|
| 今天開低就是向下缺口 | 要到當日高價仍低於前日低價才成立 | 開盤價缺口與整日區間缺口是不同樣本 |
| 缺口已經回補 | 之後最高價至少碰到前日最低價 | 碰到上緣不等於收盤站穩 |
| 五天沒補就很弱 | 第五日收盤後才知道五天都沒補 | 不能在缺口當天就知道後面五天 |
| 缺口總有一天補 | 用固定五、二十、六十日觀察窗 | 沒有期限的說法無法形成有期限的交易 |
這次使用還原最高、最低價,避免除權息與分割造成純價格調整被當成交易缺口。還原價是歷史比較口徑,仍可能受上游資料修補影響;它不提供盤中成交順序,也不能回答碰到上緣時委託是否真的成交。
0050與個股缺口回補率
| 標的 | 觀察窗 | 缺口數 | 已回補 | 未回補 | 回補率 |
|---|---|---|---|---|---|
| 0050 | 5交易日 | 432 | 269 | 163 | 62.3% |
| 0050 | 20交易日 | 427 | 346 | 81 | 81.0% |
| 0050 | 60交易日 | 423 | 382 | 41 | 90.3% |
| 流動性合格普通股 | 5交易日 | 97,927 | 52,008 | 45,919 | 53.1% |
| 流動性合格普通股 | 20交易日 | 96,797 | 71,083 | 25,714 | 73.4% |
| 流動性合格普通股 | 60交易日 | 96,060 | 81,515 | 14,545 | 84.9% |
每個觀察窗的分母不同,因為資料尾端還沒走完五日、二十日或六十日的事件不納入該窗。已走完整個日曆交易日窗口但始終沒補的事件保留;股票後來下市、缺少後續報價,也不因為沒有回補而從分母消失。個股要求缺口當日符合流動性條件,0050不加這道篩選。
同一檔股票可以有多個缺口,每個事件各自對照自己的上緣,所以表中的事件不是獨立樣本。一段大跌可能同時產生多個缺口,同一次反彈也可能一次補回多個缺口。不能把事件數直接當成同樣多筆互不相關的交易,這次沒有對重疊事件做統計顯著性檢定。
觀察越久,回補率越高,是累積事件定義的結果。六十日窗口仍有 41個0050缺口沒有補,因此數據不支持「一定會補」;即使後來某一天補上,也不能替前面資金等待、帳面下跌或其他投資機會的成本作保證。
回補率不能直接換成交易勝率
交易從什麼時間買進,決定投資人能拿到哪段報酬。若先等最高價碰到上緣才知道缺口已補,缺口下緣到上緣的反彈已經發生;本次還要等隔日收盤才能買,無法把那段已發生的漲幅算進報酬。若改成缺口剛出現就買,則是另一個進場規則,也要承受它沒有回補時的下跌。
Dahlquist與Bauer的《Technical Analysis of Gaps》討論缺口的不同研究方式,研究期間、缺口口徑與市場都必須分清;不能把其他市場的開盤缺口結論,當成台股完整缺口的回補機率。Lo、Mamaysky與Wang(2000)對技術型態的研究也以明確演算法為基礎,型態含有資訊與扣成本後能形成交易優勢,是兩個不同問題。
四個固定交易設計
- 回補後買個股: 缺口出現後d日內首次回補,回補當天給訊號,隔日收盤買進,持有h個交易日。
- 回補後買0050: 同一規則只用於0050。
- 避開0050回補後時段: 第二種的互補方向,其餘時間持有0050。
- 避開0050缺口未補時段: 第d日收盤仍未補,之後h日空手,其他時間持有0050。這是把「不補可能續跌」寫成避險假說,沒有做融券放空。
缺口事件重疊時取持有或避開時段的聯集,新事件可以延長期限,不會同一標的重複加倍買進。個股訊號在回補當日也要符合流動性門檻。d取三、五、十日,h取十、二十、四十日,中心五日與二十日,完整九格都公布。
主要測試結果
先看「年化報酬」:平均每年賺或賠多少;「最大回撤」是從高點最多跌多少。日夏普比較報酬與波動,數字越高越好,但不保證獲利。
- 回補後買0050:年化報酬6.0%,期間最大跌幅50.5%。
- 同期持有0050:年化報酬13.9%,期間最大跌幅52.4%。
- 缺口六十日回補九成,四個交易設計的三十六組參數仍全部未通過。
完整逐項數字如下;手機可左右滑動表格比較。
| 設計 | 年化報酬 | 日夏普 | 最大回撤 | 前/後半段日夏普 | 9格贏0050 | 在場比例 |
|---|---|---|---|---|---|---|
| 回補後買個股 | -4.5% | -0.09 | -79.9% | -0.34/0.17 | 0/9 | 100.0% |
| 回補後買0050 | 6.0% | 0.42 | -50.5% | -0.06/0.86 | 0/9 | 73.3% |
| 避開回補後時段 | 2.7% | 0.33 | -19.3% | 0.31/0.37 | 0/9 | 26.6% |
| 避開缺口未補時段 | 8.4% | 0.69 | -21.5% | 0.46/0.94 | 0/9 | 55.8% |
| 同期0050含息持有 | 13.9% | 0.74 | -52.4% | 0.39/1.10 | — | 100% |
中心設定的個股版共 34,302 筆交易、平均持有 181 檔;0050回補版 74 筆。回補後買0050的在場比例只有 73.3%,空手期間也納入日夏普與年化。下方互動報告是這個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 捷徑。若要理解含息與一般收盤價的差異,可看回測方法;量化交易指南則說明研究結果與實際執行的距離。
四張參數小圖的每格都是扣成本日夏普減去同期0050;本次全部為負,三十六格裡沒有一格勝出。淨值圖也把回補後持有、兩種避開時段及個股版放在同一條0050基準旁。前後兩段使用同一批交易日對半切,沒有把特定崩盤前後挑成兩段,不能因為某段空手看起來躲過下跌,就忽略其他時期少參與的上漲。
Sullivan、Timmermann與White(1999)提醒技術規則的多重搜尋問題。本次結果公布整張網格,也沒有再改成「只挑大缺口」「量增才買」來使成績好看。缺口大小、成交量與市場趨勢可能是後續問題,但需要新的事前設定;目前數字不替那些尚未執行的設計背書。
常見問題
缺口理論是不是說缺口一定回補?
不同型態的解釋不同,也沒有一個有限觀察期能保證全部回補。本文五、二十、六十日都保留未回補事件,不能用「遲早」把沒有期限的等待包裝成交易規則。
向上跳空和向下跳空可以混算嗎?
不宜。方向、門檻與進場機制不同。本次只新增向下缺口;向上不補結果保留在既有研究,不把兩批日期不同的數字拼成一個勝率。
除息留下的缺口也算嗎?
本次用還原高低價,配息與分割調整造成的價格差已經調整。一般未還原K線看到的除息缺口,不一定符合這次事件定義。
缺口三日不補就會續跌嗎?
這次三、五、十日未補的0050避險版本都沒有勝過基準,沒有支持照這句話直接離場。這也不等於未補缺口之後每次都會上漲,只能解讀為整套規則未通過。
影線碰到就算回補,為何隔天才買?
當天的最高價要到收盤後才完整知道。本文不假設事先掛單正好成交於上緣,也沒有用日線推測盤中先後順序。
缺口交易還要考慮什麼?
要看滑價、周轉率、市場限制與等待成本。可比較道氏兩指數回測與葛蘭碧買賣點如何處理確認延遲;研究步驟則見程式交易指南。
用Python分開事件日與持有日
下載完整研究程式並存為 research.py 後,這段使用相同的首次回補函式,重現0050中心設定。fills只在回補確認日為真;滾動二十日把事件展成持有時段,成交仍由回測引擎延後一個交易日處理。
顯示程式碼
from finlab import data
from finlab.backtest import sim
from research import gap_events
high = data.get("etl:adj_high")[["0050"]].loc[:"2026-11-09"]
low = data.get("etl:adj_low")[["0050"]].loc[:"2026-11-09"]
close = data.get("etl:adj_close")[["0050"]].loc[:"2026-11-09"]
fills, unfilled = gap_events(high, low, close.notna(), delay=5)
position = fills.rolling(20, min_periods=1).max().eq(1)
report = sim(
position.loc["2008-01-02":],
retain_initial_cash=True,
end_date="2026-11-09",
upload=False,
)目標權重變化與月周轉
下表將每日目標等權部位的變化取絕對值,買進與賣出相加後按月加總。持股從零到滿倉計100%,再全部賣出另計100%;只轉換同一檔持股的期間不重複計算。這是不含價格漂移的目標權重周轉估計,並非回測引擎實際成交金額除淨值;平均包含空手月份,資料最後不足一個月也納入。交易筆數則可能同時包含許多檔股票,不能拿來替代周轉率。
| 中心設計 | 平均每月雙邊周轉 | 單月最高 |
|---|---|---|
| 回補後買個股 | 292.5% | 524.5% |
| 回補後買0050 | 64.8% | 200.0% |
| 避開回補後時段 | 65.2% | 200.0% |
| 避開缺口未補時段 | 59.9% | 200.0% |
下載與重跑
只想看結果,不用安裝軟體或執行程式。 下方兩份互動網頁可查看歷年報酬與最大跌幅;要自行重跑全部研究,再選擇下載Python程式。
- 回補後買0050互動報告:看本文主要測試的結果。
- 缺口未補時避開0050互動報告:看另一個固定設計。
- 完整研究程式(Python,.py):自行執行三個主題、全部162組。
- 全部統計(JSON):查看本文全部參數與指標。
- 每日淨值(CSV):下載本文中心參數的每日淨值。
選擇性:自行重跑完整研究
- 下載共用研究程式,存成
research.py。 - 依FinLab設定流程準備環境,安裝finlab、numpy與pandas,依套件指示登入。資料權限依登入帳號而定。
- 在程式所在資料夾執行:
顯示程式碼
python research.py --out results這個命令會跑三個主題、十八個設計的全部162組,並非只跑本文。輸出的 results/metrics.json 包含完整參數與統計,各設計另有具名的互動HTML報告與每日淨值CSV;程式不會部署或下單。
兩份互動報告對應表格具名的兩個中心設計,沒有從九格中挑最好者。報告內建市場線不替代本文依同期0050還原價算出的對照表。後續資料修補或套件更新可能使重跑數字小幅不同;本文保留這次執行的數字與日期。
投資有風險,過去績效不代表未來表現。本文僅供教學與研究參考,不構成投資建議,不推薦買賣任何個股。最大回撤、空手機會成本與交易成本請一併評估。
最後更新:2026-11|回測區間:2008-01-02~2026-11-09|作者:FinLab 量化研究團隊。團隊以歷史資料與可重跑程式研究台股及美股策略。
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始





