逐筆資料回測:期貨回測何時不能只用 K 棒
只有在一筆交易能於同一根 K 棒內進場又出場,或 K 棒內的成交價決定結果時,才需要逐筆資料回測。在 K 棒收盤做決定、下一根 K 棒成交的策略,用 K 棒即可充分評估。先把同一個策略放到更細的 K 棒上跑一次;結果有變動,才買逐筆資料。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
回測期貨策略需要逐筆資料嗎?
只有兩種情況需要逐筆資料回測:一筆交易能在同一根 K 棒內進場又出場,或 K 棒內的確切成交價決定結果。在 K 棒收盤做決定、下一根 K 棒成交的策略,用 K 棒即可充分評估。先用更細的 K 棒測試;結果有變動,再買逐筆資料。
「Tick」一詞在期貨有兩種意思,這個差別在此至關重要。其一是跳動點,也就是價格上的最小一步,例如 E-mini 那斯達克 100 期貨(NQ)的 0.25 個指數點,每口價值 $5.00;免費的期貨合約與損益計算機會顯示你所交易合約的這個數值。其二是逐筆資料,也就是交易所成交的一筆紀錄,帶有時間、價格與口數。本文談的是第二種:把規則放在每一筆成交上重播,而不是放在 K 棒上。
K 棒回測是用彙總後的價格重播規則,期貨回測的意義對這個重播有完整說明。問題在於,彙總是否丟掉了策略需要的資訊。兩個條件決定答案:
- 一筆交易能否在同一根 K 棒內進場又出場?若停損與停利在 K 棒收盤前都可能被觸及,K 棒無法告訴你哪一個先到。
- K 棒內的價格是否決定成交?限價單要價格穿過該價位才成交,停損單的滑價取決於價格走得多快,兩者都需要價格路徑,而不只是最高價與最低價。
若兩題答案都是否,你的策略就是在收盤做決定、下一根 K 棒成交。下一根 K 棒成交的規則是:在一根 K 棒收盤時算出的委託單,於下一根 K 棒的開盤成交。依這條規則,唯一重要的價格就是 K 棒儲存的那幾個,逐筆回測與 K 棒回測說出的結果幾乎相同。全文只有一個主張:是否需要逐筆資料,取決於策略如何成交,而不是市場有多快。
逐筆資料包含什麼?有多大?
逐筆資料是某一合約的完整成交清單,每筆成交一列;K 棒則是許多這類資料列的彙總,開盤到收盤之間的路徑已被丟掉。一筆逐筆紀錄至少包含時間戳記、價格與成交口數。許多資料商另加旗標,標示該筆成交是打到買價還是賣價;有些還加上當下的最佳買價與賣價,檔案便由逐筆成交變成成交加報價資料。
K 棒的做法,是取一段時間窗內的所有逐筆資料,只留四個價格與一個總量:第一個價格(開盤價)、最高價、最低價、最後一個價格(收盤價),以及加總後的成交量。最高價與最低價出現的先後、價格在各處停留多久、穿越某個價位幾次,全都消失。Tick 圖是按筆數而非按時間分組,但仍然是 K 棒:每根內部的路徑一樣被丟棄。
兩者的大小差距懸殊,因為流動性高的指數期貨在平日每天交易近 23 小時。單一合約一年的日 K 棒約 250 列。一年的 1 分鐘 K 棒是數十萬列,因為每個交易日的時段逾一千分鐘。一年的逐筆資料是數以百萬計的列,確切數量取決於市場、年份與資料商每列放入什麼。可以把 K 棒想成收銀收據上的當日總額,逐筆資料則是每一件被掃描的商品:總額足以核對當天的營收,但只有商品明細才能告訴你什麼時間買了什麼。
逐筆回測與 K 棒回測的成交差多少?
逐筆回測與 K 棒回測的差異,來自 K 棒內部未知的路徑,所以兩者的結果,恰好在委託成交取決於該路徑之處分歧:停損單、限價單,以及進場那根 K 棒內的出場。下一根開盤的市價單,兩種回測用的是同一個價格。其餘情況,K 棒回測必須假設,逐筆回測則可以直接讀取。
最清楚的例子,是停損與停利同時落在同一根 K 棒內。K 棒顯示最高價高於停利、最低價低於停損,卻沒有顯示哪個先到。K 棒回測得選一條規則:假設最壞情況(先觸及停損)、假設最好情況(先觸及停利),或假設離開盤價較近的那個先被觸及。同一份資料,每種規則會產生不同的權益曲線。逐筆回測則依時間順序走過每筆成交,看出哪個價位先被碰到。
| 委託類型 | K 棒回測必須假設什麼 | 逐筆回測看到什麼 |
|---|---|---|
| 下一根開盤的市價單 | 以開盤價加固定滑價成交 | 同一個開盤價,加上該價位實際成交的口數 |
| 停損單 | 當 K 棒的最高價或最低價穿過停損價時,以停損價加固定滑價成交 | 第一筆等於或穿過停損價的成交,以及價格在下一筆成交前走了多遠 |
| 限價單 | K 棒碰到限價時成交,或只在價格穿過限價時才成交 | 價格是否穿過該價位,以及在那裡成交了多少口 |
| 同一根 K 棒內有停損與停利 | 一條決定哪個先被觸及的規則 | 兩次觸及的先後順序 |
假設性範例
假設一條 NQ 當沖規則在 18,000.00 做多進場,停損設在下方 10 點(每口 $200),停利設在上方 20 點(每口 $400)。進場後有一根 5 分鐘 K 棒,開盤 18,002、最高 18,025、最低 17,988、收盤 18,010。兩個價位都在這根 K 棒內。假設先觸及停損的 K 棒回測,記為 −$200(未計成本);假設先觸及停利的,記為 +$400。光是這一筆交易,差距就是 $600。若一年內出現 20 根這種順序不明的 K 棒,兩種假設相差 $12,000,這可能正是一條看似可交易的規則與一條不可交易的規則之間的全部差別。
滑價,也就是回測假設的價格與你實際會拿到的價格之差,是結果分歧的第二個來源。K 棒回測每邊收固定金額。有買賣報價的逐筆回測,則可以計入當下實際存在的價差,而價差在開盤、消息前後與夜盤都會變寬。Pardo(2008)把這些成交假設是否貼近現實,視為評估本身的一部分,而不是事後補上的細節;輸入是逐筆資料還是 K 棒,這一點都相同。
哪些策略需要逐筆回測,哪些不需要?
剝頭皮、同一根 K 棒內的停損停利出場、限價單進場,以及每分鐘交易多次的策略,都需要逐筆資料;日 K 棒突破搭配下一根 K 棒成交,則較少依賴 K 棒內部的細節。分界線在決策點與成交假設,而不在市場快慢。快市場配慢規則,仍是 K 棒的問題;慢市場配快出場,仍是逐筆的問題。
| 策略類型 | 決策點 | 影響結果的成交假設 | K 棒夠用嗎? |
|---|---|---|---|
| 日 K 棒突破,下一根 K 棒成交 | 日收盤 | 下一個開盤價加固定滑價 | 是 |
| 30 分鐘趨勢追蹤,搭配寬停損 | 30 分鐘收盤 | 停損少有落在進場那根 K 棒內 | 是,再用更細的 K 棒確認 |
| 開盤區間突破,停損與停利在同一根 K 棒內 | K 棒內觸及價位 | 停損與停利哪個先到 | 至少用更細的 K 棒;要確定就用逐筆 |
| 限價單均值回歸 | K 棒內觸及價位 | 價格是否穿過限價 | 逐筆加報價 |
| 不到一分鐘的剝頭皮 | 每一筆成交或報價 | 每次成交時的價差與排隊順位 | 逐筆加報價 |
第三列是常見的陷阱。開盤區間突破的規則與參數常把兩個價位都設在離進場幾點之處,在美股時段第一小時的 5 分鐘 K 棒上,兩者經常落在同一根 K 棒內。這個策略本身並不快,但出場取決於路徑,所以落在逐筆這一側。
第一列是 K 棒明顯足夠的情形,下方 AlphaPrime(Valynox)的一次執行說明了原因。這次測試 NQ 日 K 棒,期間 2019-01-02 至 2025-06-30,多空皆做,一口,每筆交易手續費 $20、滑價 $10。這條規則是本文主題的代表:以「Highest and Lowest」規則作為唯一的進場與出場,沒有停損、沒有停利、沒有濾網,由標準指標組成。它是搜尋所試的 1,024 個候選中留下的唯一一個,依報酬相對於回撤挑選;事後挑出留下的那個,會讓數字好看,這些數字不是規則賺來的,也不是讀者可以期待的。
來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。NQ 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $10。
| 項目 | 結果 |
|---|---|
| 淨利(已平倉) | $58,910 |
| 最大回撤 | $33,420 |
| 交易筆數 | 91 |
| 勝率 | 59.34% |
| 獲利因子 | 1.492 |
| 平均每筆 | $647.36 |
| 在場時間 | 11.84% |
請看兩個數字,而不是獲利。約六年半只有 91 筆交易,部位有 11.84% 的時間在市場中。每次進場與出場都發生在日開盤,決策則在前一天收盤。沒有停損或停利,所以不可能在 K 棒內被觸發。那幾天 K 棒內的路徑,只會改變 182 次成交的滑價,因此對這條規則做逐筆重播,結果的變動幅度有限。Bailey、Borwein、López de Prado 與 Zhu(2014)指出,眾多候選中最好的那個帶有選擇加成,只有未見過的資料才能消除;這次執行首先要打折扣的是這份加成,而不是缺少逐筆資料。

逐筆資料在金錢與儲存上要花多少?
逐筆資料在購買、儲存與處理上都比同一期間的 K 棒花得多,還多出清理工作,所以決定應建立在策略的成交是否確實會改變,而不是籠統認為逐筆「比較精準」。輸入更細,只有在規則讀取那些細節時才會改善回測。對日 K 棒規則來說,多出來的列只是負擔,沒有資訊。
成本分成四部分,後兩項通常被低估:
- 購買。資料商依市場與年份為逐筆歷史資料定價,成交加報價資料比單純的逐筆成交更貴。同一期間的 K 棒,平台常已含有,或定價低得多。
- 儲存。每個合約每年有數以百萬計的列,要建出連續月序列,還得乘上所需的每一個合約月份;若保留報價,再乘一次。
- 處理時間。讀取每一筆逐筆資料的回測,工作量按比例多於只讀每根 K 棒的回測。數千個候選策略的參數搜尋,在日 K 棒上只需幾分鐘,在逐筆資料上可能要數小時或數天,視你的處理器而定。
- 清理。逐筆檔案含有壞成交(遠離市場、後來被取消的成交)、可能是交易所時間也可能是資料商接收時間的時間戳記,以及必須在不產生假跳空的情況下接合的合約轉倉。期貨回測的合約規格與轉倉談的就是轉倉問題;在逐筆解析度下更難,因為切換發生在交易時段內,而不是日 K 棒之間。
同樣的算法也適用於期貨以外。以日 K 棒測試台股或 ETF,檔案不大;台股與 ETF 回測指南說明,對這些規則而言,成本與交易時段的細節比解析度更重要。付費買逐筆資料之前,也先確認你的軟體讀得了:回測軟體付費前的六項檢查包含各類工具接受哪些資料解析度。
假設性範例
一位交易人保留一檔指數期貨十年的資料做研究。日 K 棒約 2,500 列,放得進試算表。1 分鐘 K 棒約三百五十萬列,需要資料庫或二進位檔。逐筆資料是數億列,加上報價之前就有數十吉位元組,每一次搜尋都得讀完全部。若策略在日收盤做決定,第一個檔案回答的問題,與第三個檔案相同。
買逐筆資料前,如何用更細的 K 棒檢查敏感度?
用相同的成本與下一根 K 棒成交,把同一個策略在逐步更細的 K 棒上重跑;若各解析度下的淨損益與平均每筆損益相近,策略對路徑不敏感;若大幅波動,就依賴 K 棒內的成交,需要逐筆資料,或重新設計出場。路徑敏感,指的是 K 棒內價格的順序一變,結果就跟著變。這個解析度階梯,除了你多半已有的 K 棒資料,不需要其他成本。
- 除了 K 棒週期,其他全部固定。相同商品、相同期間、相同交易時段,每邊相同的手續費與滑價,相同的下一根 K 棒成交。把設定記下來,確保各次執行之間沒有其他變動。
- 從規則允許的最粗 K 棒開始。日內規則通常是 60 分鐘或 30 分鐘 K 棒。記錄淨損益、扣除成本後的平均每筆損益與交易筆數。
- 降到 5 分鐘 K 棒,再降到 1 分鐘 K 棒。決策邏輯保持一致。若規則用 20 根 K 棒的回看,只有在規則以 K 棒根數定義時,才在新週期下仍用 20 根;若以時間定義(開盤前 30 分鐘),就要換算,讓時間跨度不變。
- 比較三個結果。先看平均每筆損益,因為它最接近成交。再看交易筆數;決策邏輯相同的話,筆數幾乎不該變動。
- 判斷。各結果落在彼此相近的範圍內,表示 K 棒內的路徑不是策略賴以成立的原因。若 K 棒越細,結果下降或轉為負,表示粗 K 棒回測拿到了它根本無從得知的有利成交。
假設性範例
策略 A 是搭配寬停損的 30 分鐘趨勢規則,在 60 分鐘 K 棒上淨損益為 $14,000,5 分鐘 K 棒上為 $13,200,1 分鐘 K 棒上為 $12,600,平均每筆損益由 $70 降到 $63。落差小而且方向一致,這正是更細的滑價細節通常造成的效果。策略 B 是停損與停利都設得緊的突破,在同一個階梯上依序為 $21,000、$9,000 與 −$3,000。它在粗 K 棒上的結果,靠的是順序不明的 K 棒中,停利先於停損被觸及。策略 A 可以用 K 棒評估;策略 B 需要逐筆資料,或把出場拉開,讓兩個價位不可能同在一根 K 棒內。
階梯的每一步只改變資料解析度,所以各次執行之間的回測設定必須固定;AlphaPrime 直接處理這點,因為它的回測對每個候選策略套用相同的手續費、滑價、交易時段與下一根 K 棒成交,不論你載入的歷史資料是什麼 K 棒週期。階梯也同時檢查規則本身:只在某個解析度下有效的策略,是在告訴你它的出場有問題,通常的修法是把出場拉寬,或把決策移到 K 棒收盤,讓逐筆問題變回 K 棒問題。
下一步:選出你最信任的一個日內策略,這週用相同成本在 60 分鐘、5 分鐘與 1 分鐘 K 棒上各跑一次,把三個平均每筆損益並排寫下。若落在差距不大的範圍內,這個策略的逐筆資料問題就此結案。若不是,先拿停損與停利的距離,對照你所交易市場的 5 分鐘平均波動區間,再決定是否在逐筆資料上花錢。
常見問題
逐筆回測與 K 棒回測差多少?
策略若在 K 棒收盤做決定、下一個開盤成交,兩者只差在滑價細節,結果相近。策略若有可能同在一根 K 棒內的停損與停利,或可能成交也可能不成交的限價單,差異可能就是全部結果,因為 K 棒回測必須猜哪個價位先被觸及。差距多大取決於策略,而不是市場。
逐筆資料有多大?
單一流動性高的指數期貨一年,約有 250 根日 K 棒、數十萬根 1 分鐘 K 棒,以及數以百萬計的逐筆資料。成交加報價資料會在每筆成交附上當下的買價與賣價,檔案更大。確切數量取決於市場、年份與資料商每列儲存的內容。
哪些策略需要逐筆回測?
每分鐘交易多次的剝頭皮、停損與停利可能同在一根 K 棒內被觸及的策略,以及成交取決於價格穿過價位的限價單進場。日 K 棒與數小時週期的規則,只要是下一根 K 棒成交、停損寬或沒有停損,用 K 棒即可充分評估。判斷標準是成交是否取決於 K 棒內的路徑。
可以用 1 分鐘 K 棒取代逐筆資料嗎?
多半可以,當作一個步驟。用相同成本,把同一個策略在 60 分鐘、5 分鐘與 1 分鐘 K 棒上各跑一次,就能看出結果是否取決於 K 棒週期。三次執行的平均每筆損益若相近,1 分鐘 K 棒就夠用。若 K 棒越細就一路下降,策略對路徑敏感,要不就需要逐筆資料,要不就得調整出場,讓兩個價位不可能同在一根 K 棒內。
參考文獻
- CME Group. E-mini Nasdaq-100 Futures Contract Specs. https://www.cmegroup.com/markets/equities/nasdaq/e-mini-nasdaq-100.contractSpecs.html
- Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies (2nd ed.). John Wiley & Sons.
- 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.

