VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 商品與交易時段

經濟數據行事曆回測:該過濾 CPI、FOMC、NFP 日嗎?

回測跑兩次:一次保留 CPI、FOMC 與非農就業日,一次禁止在這些日子前後進場。預設保留事件日,並對公布 K 棒設定較高滑價;差異夠大、符合規則邏輯,且交易筆數足夠時,才考慮過濾。

作者 · 發佈 · 更新於 · 編輯原則

目錄
  1. 期貨回測該過濾 CPI、FOMC、NFP 日嗎?
  2. 經濟數據行事曆去哪裡找?用的是哪個時區?
  3. 美國數據在台灣是幾點公布?
  4. 高重要性數據公布,會讓波動率與滑價改變多少?
  5. 如何標記事件日,並分別在有、無事件日下回測?
  6. 保留事件日的實際回測是什麼樣子?
  7. 為什麼事件日的小樣本不可靠?
  8. 常見問題
  9. 參考文獻

期貨回測該過濾 CPI、FOMC、NFP 日嗎?

做經濟數據行事曆回測時,策略跑兩次:一次保留 CPI、FOMC 與非農就業日,一次在每次公布前後禁止進場。預設保留事件日,並對公布 K 棒計入較高滑價。差異夠大、符合規則邏輯,且交易筆數足以說明問題時,才考慮過濾。

經濟數據行事曆列出已排定的數據公布與央行決策,附日期、時間與重要性評級。事件日是指當天有高重要性數據公布的交易日:CPI(美國消費者物價指數,主要的通膨數據)、FOMC(聯邦公開市場委員會,負責決定美國政策利率)、NFP(非農就業人數,每月公布的美國就業數據)。這三項對美國股指期貨的影響大於多數其他數據,所以交易人常問要不要排除。

保留是誠實的預設做法,因為實際交易時,這些日子一定會出現。把它們剔除,等於假設你會在場外觀望;這就成了一條必須真正遵守的規則,公布前平倉也有自己的滑價。下表是兩組回測要取捨的內容。

問題保留事件日過濾事件日
回測衡量的是什麼照規則實際交易的結果,包含公布時的跳動規則加上一條實單交易時也必須遵守的「空手觀望」規則
滑價設定公布時段內的 K 棒設較高滑價一般設定,因為時段內不會進場
適用時機規則持倉數日;公布只是眾多 K 棒中的一根規則在公布後數分鐘內反應,且時段內的交易扣除成本後虧損
採信結果之前永遠有效;這是基準情境時段內交易筆數夠多,剔除兩、三筆也不會改變正負號
保留或過濾事件日:保留適合持倉數日的規則,公布 K 棒使用較高滑價,是基準情境;過濾適合交易公布跳動的規則,使用一般滑價,且時段內至少要有 100 筆交易 保留或過濾事件日? 哪類規則適合哪一組回測 保留 持倉數日 較高滑價 基準情境 過濾 交易公布跳動 一般滑價 需 100 筆以上 預設做法是保留事件日。 結論:有證據才過濾。
判斷方式是比較兩組回測,不是一刀切的是非題。窗口內交易夠多、且明確較差,過濾才有存在的理由。

規則的持倉時間,決定你落在哪一欄。日 K 棒的趨勢跟隨規則,是可回測的期貨演算法交易策略所介紹的五種類型之一,每個部位會跨過數十次數據公布,剔除事件日只會少掉它本來就沒交易的 K 棒,影響不大。1 分鐘 K 棒的突破規則,則會在公布的瞬間觸發,這類規則在時段內的交易,是另一群值得單獨衡量的樣本。

經濟數據行事曆去哪裡找?用的是哪個時區?

任何一份免費行事曆列出的排定數據都相同;回測要留意的細節,是行事曆設定的時區。TradingView 的經濟數據行事曆、FXStreet 的經濟數據行事曆與其他外匯行事曆,日期與時間都取自發布機構,所以各列一致。外匯市場行事曆(經濟數據行事曆)用在 NQ 或台指期上,和用在貨幣對上一樣有用,因為 CPI 與 FOMC 對這些商品都有影響。

每份行事曆會列出數據名稱、國家、時間、重要性評級(通常分三級)、前值、預測值,以及公布後的實際值。時間顯示為行事曆所設定的時區,這項設定由你決定。同一筆美國 CPI,行事曆設為紐約時顯示 08:30,美國夏令時間下設為 UTC 顯示 12:30,設為台北則顯示 20:30。數據公布的時間沒變,變的是標籤。

美國夏令時間下的一次美國 CPI 公布,紐約顯示 08:30、UTC 顯示 12:30、台北顯示 20:30,三者都對應資料中同一根 1 分鐘 K 棒 一次公布,三種標籤 美國 CPI,美國夏令時間 紐約 08:30 UTC 12:30 台北 20:30 一根 K 棒 公布時間沒變。 結論:換算成資料的時區。
同一次公布,顯示的時間隨行事曆的時區設定而異。資料中只有一根 1 分鐘 K 棒是公布 K 棒。

標記任何 K 棒之前,回測要先把公布時間換算成 K 棒資料所用的時區。先確認資料檔用哪個時區;資料檔以交易所時間標記、行事曆卻設為台北時,公布會對到差十二或十三小時的錯誤 K 棒。免費的期貨現在有開盤嗎?工具,能以你自己的時區顯示各交易所的交易時段,這和換算公布時間用的是同一種轉換。

過去幾年的日期,能往回捲動的行事曆就足夠。需要更長的歷史,可到發布機構的時間表頁面查往年紀錄:CPI 與非農就業查美國勞工統計局,FOMC 會議日期查聯準會。日期要取自實際時間表,不要套用「每月第一個週五」這類規則,因為數據偶爾會因假日而挪動或延後。

美國數據在台灣是幾點公布?

CPI 與非農就業在美國夏令時間於台灣時間 20:30 公布,美國冬令時間為 21:30;FOMC 聲明在台灣時間隔天凌晨 02:00 或 03:00 公布。美國數據固定採東部時間:CPI 與非農就業為 08:30,FOMC 聲明為 14:00。台灣沒有夏令時間,所以一小時的差距完全來自美國:美國在三月第二個週日把時鐘調快,在十一月第一個週日調回。

數據美國東部時間台灣時間(美國夏令)台灣時間(美國冬令)一般時程
CPI08:3020:3021:30每月一次,約在月中
非農就業08:3020:3021:30通常為每月第一個週五
FOMC 聲明14:00隔天 02:00隔天 03:00每年排定八次會議
美國數據公布的台灣時間:紐約時間 08:30 的 CPI 與非農就業,美國夏令時間為台灣 20:30,美國冬令時間為 21:30;紐約 14:00 的 FOMC 聲明,是台灣隔天的 02:00 或 03:00 美國數據的台灣時間 +1 = 台灣隔天 紐約 美國夏令 美國冬令 CPI 08:30 20:30 21:30 NFP 08:30 20:30 21:30 FOMC 14:00 02:00 +1 03:00 +1 夏令與冬令差一小時。 結論:每個日期各自換算。
美國數據公布的台灣時間,會隨美國夏令時間差一小時,FOMC 聲明則落在台灣的隔天日期。

身在台灣的交易人,有兩點要注意。第一,FOMC 聲明在台灣與美國的日期不同,按美國日期標記,會標到錯的台灣日。第二,20:30 與 02:00 兩個公布時間,都在台灣日盤收盤之後,落在台灣交易人所稱的夜盤,也就是美股交易人說的盤前或盤後;盤後交易時段、流動性與回測陷阱說明這些 K 棒為何與一般交易時段的 K 棒表現不同。美國股指期貨的 08:30 公布,落在一般期貨交易時段內,但比股市開盤早一小時,委託簿比 09:30 時薄。

高重要性數據公布,會讓波動率與滑價改變多少?

公布時的滑價沒有固定數字;公布前後的 K 棒波動區間較寬、委託簿較薄,合適的設定要用自己的資料去量。滑價是回測假設的價格與實際成交價格的差距。一般 K 棒上,流動性高的期貨,停損單或市價單通常在觸發價一兩個跳動點內成交。公布 K 棒上,同一張委託單可能在數個跳動點之外成交。

兩件事同時發生。排定的數據公布前數分鐘,許多流動性提供者會撤單或拉寬報價,因為不想帶著部位承受這項數據。公布的那一秒,委託單集中湧入,價格跳過好幾個價位,新的報價才出現。停損單在這段跳動中觸發,會變成市價單,以下一個可成交的價格成交,離觸發價比任何一根一般 K 棒都遠。K 棒的波動區間,是這段行情看得見的紀錄;委託簿的深度,則是成交變差、卻看不見的原因。

公布日東部時間 08:00 至 09:30 的 1 分鐘 K 棒示意:08:30 之前的 K 棒偏小,08:30 出現一根極高的 K 棒,停損單遠遠超過觸發價才成交,之後 K 棒逐步縮小,到 09:00 已縮回 公布 K 棒成交遠離觸發價 08:30 前後的 1 分鐘 K 棒(示意) 停損 成交 08:00 08:30 09:00 09:30 公布 K 棒成交價遠超過停損價。 結論:這些 K 棒要加計較高滑價。
公布 K 棒的波動區間較寬、委託簿較薄,所以成交離觸發價更遠。每次公布都是同樣的模式,只是幅度不同。

量測方式如下。對歷史中的每個公布日,取公布當分鐘與其後五根 1 分鐘 K 棒的最高價減最低價;再取同月份非公布日的相同時間。兩組平均值的比值,就是你的市場裡公布 K 棒比平常寬多少。接著,把公布時段內 K 棒的滑價,設為一般滑價的倍數,方向與該比值一致;倍數要保守,因為波動區間會低估停損單成交的偏離幅度。AlphaPrime(Valynox)在每一次評估裡,都以次一根 K 棒成交並計入手續費與滑價,詳見回測頁面,因此從公布 K 棒量到的數字,會影響每一個候選策略的排名,而不是事後才套用在勝出者身上。

假設性範例

假設公布前一小時內 1 分鐘 K 棒的平均波動區間為 8 點,公布當分鐘加上其後五根 K 棒平均為 48 點,寬了六倍。一般設定是每筆滑價 $10,公布時段內的 K 棒調高為每筆 $40。一條規則在 600 筆交易中有 60 筆落在時段內,這 60 筆每筆多付 $30,整段回測共多 $1,800,全部 600 筆的平均每筆損益相差 $3。$3 是否重要,要看原本的平均每筆損益有多大。

K 棒週期會改變問題。日 K 棒規則在下一根 K 棒開盤成交,不會在公布那一分鐘送出委託,所以公布只是讓某一根 K 棒的波動區間變寬,不影響成交。1 分鐘或 5 分鐘 K 棒的規則,可能被公布本身觸發,這類規則的滑價倍數,是比較中最重要的單一設定。

如何標記事件日,並分別在有、無事件日下回測?

在每次公布前後的窗口內標記 K 棒,策略不改,先在所有 K 棒上跑一次;再跑一次,窗口內禁止進場;最後比較扣除成本後的平均每筆損益與交易筆數。事件窗口是視為屬於該次公布的一段 K 棒,例如公布前 15 分鐘到公布後 60 分鐘。步驟依序如下:

  1. 匯出測試期間的行事曆。只留下要測的數據(CPI、FOMC 聲明、非農就業),以及各年的實際日期。
  2. 把每個公布時間換算成資料的時區。逐日期換算,因為美國夏令時間調整,同一項數據在夏令與冬令會差一小時。
  3. 標記窗口內的 K 棒。常見的起手做法,是在公布前 15 分鐘到公布後 60 分鐘的每根 K 棒上加旗標;上一節的波動區間量測若顯示 09:30 時市場仍在大幅波動,之後再加寬。
  4. 在所有 K 棒上跑策略,旗標 K 棒使用較高滑價。這是基準回測。
  5. 再跑一次,旗標 K 棒禁止進場。出場仍依規則,所以兩次回測處理未平倉部位的方式相同。
  6. 比較扣除成本後的平均每筆損益與交易筆數,不比較淨損益。第二次的交易筆數較少,即使規則不變,淨損益也會不同;每筆的數字才是公平的比較。
從行事曆到兩次回測的六個步驟:匯出事件日期、換算成 K 棒時間、標記窗口、回測 A 在所有 K 棒上跑、回測 B 在窗口內禁止進場、比較每筆結果;步驟 1 到 3 只做一次,步驟 4 到 6 每個策略各做一次 從行事曆到兩次回測 步驟 1–3 做一次,4–6 每策略各做 123 456 匯出 事件日期 換算 K 棒時間 標記 事件窗口 回測 A 全部 K 棒 回測 B 禁止進場 比較 每筆結果
從匯出行事曆到兩次回測的比較。步驟 1 到 3 是資料工作,只做一次;步驟 4 到 6 則每個策略重複一次。

按日期與時間標記 K 棒,和處理假日與提早收盤是同一套做法,陷阱也相同:因假日而挪動的公布、假日前一天縮短的交易時段,以及年中改變的時區。回測中的休市日與行事曆變動說明如何維護測試能讀取的日期表。比較的成本面,回測的交易成本與平均每筆損益所介紹的手續費與滑價設定方法,原樣適用。

假設性範例

基準回測:600 筆交易,扣除成本後平均每筆損益 $45。禁止進場的回測:540 筆交易,扣除成本後平均每筆損益 $52。窗口剔除的 60 筆,因此平均每筆約 −$18。六十筆是小樣本,若其中十筆是賺 $200 而不是虧損,窗口平均就會是正的。測試前先寫好的規則可以是:只有窗口內交易至少 100 筆,且平均虧損大於一般一買一賣成本時,才採用過濾。這個例子未通過筆數條件,所以過濾只記錄、不採用。

保留事件日的實際回測是什麼樣子?

日 K 棒的波段規則幾乎每次公布都持有部位,無法據此判斷事件日過濾,我們自己的 NQ 回測就說明了原因。下面這次回測測的是以標準指標建成的替身規則:以 ATR 平均真實區間通道作為唯一的進場與出場,沒有停損、停利或濾網;它不是事件日過濾,也不是本文的主題。回測期間為 2019-01-02 至 2025-06-30,NQ 日 K 棒,多空皆做,一口,每筆手續費 $20、滑價 $10。

來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。NQ 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $10。

數字結果
淨利(已平倉)$184,055
最大回撤$108,925
交易筆數34
勝率55.88%
獲利因子2.067
平均每筆$5,413.38
在場時間95.61%

這個候選策略,是搜尋從試過的 1,024 個中留下的一個,依報酬相對回撤的表現選出。事後挑出留下的那個,數字會偏好看:多次嘗試中的最佳者帶有選擇加成,新的一段資料不會重複這個加成,所以 $184,055 只是描述一條過去的路徑,不是這條規則賺到的,也不是讀者可以預期的。

請看曲線只有幾次階梯:每一階是 34 筆交易之一,中間的公布日,部位都直接持有通過。
請看曲線只有幾次階梯:每一階是 34 筆交易之一,中間的公布日,部位都直接持有通過。 NQ · 日 K 棒 · 2019-01-02 至 2025-06-30 · CPU 引擎回測

這次回測對事件日能說明的,只有兩個數字。持倉時間占比 95.61%,代表整段期間幾乎每個交易日都有部位,所以幾乎每個 CPI、FOMC 與 NFP 日也都有。34 筆交易,代表無法拆成「窗口內交易」與「其他交易」來看:在每年約 32 個事件日禁止進場,34 次進場也許只有一兩次挪動一天,結果的變動量與數據公布無關。$108,925 的最大回撤,也不是來自任何單一公布日;在日 K 棒上,公布只是持有數個月的部位裡的一根 K 棒。

請把交易筆數與淨損益對照來看:六年半內完成 34 筆交易,是日 K 棒波段規則的正常筆數,但用來做任何事件日比較都遠遠不夠。
請把交易筆數與淨損益對照來看:六年半內完成 34 筆交易,是日 K 棒波段規則的正常筆數,但用來做任何事件日比較都遠遠不夠。 NQ · 日 K 棒 · 2019-01-02 至 2025-06-30 · CPU 引擎回測

這是波段策略的常態,也是第一節說過濾問題屬於日內規則的原因。以更細的 K 棒週期測試任何 NQ 規則之前,回測 ES 與 NQ 要先設好的五項設定涵蓋了交易時段、轉倉與成本的選擇,兩次回測的比較取決於這些設定。

為什麼事件日的小樣本不可靠?

事件日稀少,任何關於它們的統計,都只建立在幾十筆觀察上;看了這類統計才挑選的過濾,多半是對雜訊過度最佳化。每年有八次排定的 FOMC 會議,加上十二次 CPI 與十二次非農就業,約 32 個事件日,其他交易日約 220 天。六年的歷史約有 48 次 FOMC 聲明,以及每項月度數據約 72 次。每個事件日交易一次的規則,只有幾十筆窗口內交易可供判斷。

事件日稀少:一年約有 8 個 FOMC 聲明日、12 個 CPI 日與 12 個非農就業日,其他交易日約 220 天,所以任何事件日統計都建立在少數交易筆數上 事件日稀少 每年約略數量 FOMC 8 CPI 12 NFP 12 其他交易日 ~220 每年約 32 個事件日。 結論:先數窗口內交易筆數。
事件日稀少,所以任何事件日統計都建立在少數觀察上,而平均值的不確定性,只隨筆數的平方根縮小。

想像用八餐來評斷一家餐廳,和用四百餐來評斷。八餐的平均會隨一個糟糕的夜晚大幅擺動;四百餐的平均幾乎不動。交易也是如此。值得記住的公式只有一個:

平均每筆損益的不確定性 = 單筆交易的離散程度 ÷ √N

這裡的單筆交易的離散程度,是各筆結果通常離平均有多遠,N 是窗口內交易筆數,√N 是它的平方根。筆數從 48 筆增加到 400 筆,不確定性縮小到約三分之一,而不是八分之一。窗口內只有 48 筆交易,加上公布 K 棒造成的大幅離散,窗口平均容易因偶然而落在零的錯誤一側。

第二個問題是事件的順序。先看窗口的結果再決定過濾,等於在兩個選項裡挑出最符合這段歷史的規則,之後的公布日沒有理由重複這個模式。Bailey、Borwein、López de Prado 與 Zhu(2014)說明,看過結果後才做的選擇,在新資料上會多快失去意義;Harvey 與 Liu(2015)主張,結果要依選出之前比較過的變體數量打折。White(2000)則給出針對同一問題的正式檢定。實務上的做法與前面各節一致:在跑比較之前,先寫下筆數條件與要求的差異幅度,並把未通過筆數條件的過濾視為未檢驗,而不是已否決。

下一步只需一個下午。取你最常交易的日內規則,用資料的時區建出最近三年的公布日表,量測公布當分鐘與一般日同一分鐘的波動區間,再用這個量測得出的滑價倍數,跑兩次回測的比較。先看窗口內交易筆數,再看其他;不到 100 筆,就保留事件日,等歷史更長再回來。

常見問題

回測該排除 FOMC 日嗎?

預設不排除。保留 FOMC 日,調高東部時間 14:00 聲明前後 K 棒的滑價設定,再跑第二次回測,在該窗口內禁止進場。只有禁止進場的回測,扣除成本後的平均每筆損益明顯較好,且窗口內的交易夠多、剔除幾筆也不會改變正負號時,才採用過濾。日 K 棒的波段規則,過濾通常沒有實質差別,因為聲明當天本來就持有部位。

非農就業在台灣時間幾點公布?

非農就業在美國東部時間 08:30 公布,通常是每月第一個週五。美國採夏令時間期間(三月到十一月)為台灣時間 20:30,美國冬令時間為台灣時間 21:30。台灣不調整時鐘,所以一小時的差距完全來自美國。第一個週五若是假日,確切日期會挪動,請以當年的時間表為準。

CPI 日的滑價會增加多少?

沒有固定數字。CPI 日東部時間 08:30 的 1 分鐘 K 棒,波動區間比一般日同一分鐘寬得多,委託簿也較薄,所以停損單或市價單離觸發價更遠才成交。請在自己的資料中量測公布 K 棒相對一般 K 棒的波動區間,並以該比值的保守倍數,調高公布時段的滑價設定。不在公布那一分鐘送出委託的規則,例如在下一個開盤成交的日 K 棒規則,幾乎不受影響。

外匯行事曆可以用在期貨回測嗎?

可以。外匯行事曆、匯市行事曆與 TradingView 的經濟數據行事曆,列出的是同一批發布機構的同一批排定數據,重要性評級也相同。CPI、FOMC 與非農就業對股指期貨的影響,不輸給對貨幣對的影響。唯一要確認的是行事曆設定的時區,因為標記任何 K 棒之前,必須先把公布時間換算成 K 棒資料的時區。

參考文獻

  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
  • Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28.
  • White, H. (2000). A Reality Check for Data Snooping. Econometrica, 68(5), 1097–1126.