VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 策略生成

美股當沖:先測試日內想法

把日內想法寫成明確規則,在紐約一般交易時段測試,所有交易都在收盤前出場,計入合理的交易成本,並且只有在保留的資料上也站得住腳時才接受它。

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

目錄
  1. 當沖是什麼意思,要怎麼測試?
  2. 日內回測該用多大的 K 棒週期?
  3. 美股開盤換算成台灣時間是幾點?
  4. 手續費、滑價與成交,會吃掉多少小優勢?
  5. 為什麼當沖技巧與推薦策略需要樣本外檢驗?
  6. 為什麼要在指數期貨上測試同一個想法?
  7. 第一次日內測試該按什麼順序進行?
  8. 常見問題
  9. 參考資料

要從台灣測試美股當沖想法,先把它寫成明確規則,再用紐約一般交易時段的日內 K 棒執行(美國夏令時間為台灣時間 21:30–04:00,冬令時間為 22:30–05:00)。所有交易都要在收盤前出場,每筆交易都要計入交易成本,並且只用保留下來的資料來評斷這個想法。

當沖是什麼意思,要怎麼測試?

當沖回測必須在交易時段結束前強制讓所有部位平倉,之後才衡量結果。當沖(當日沖銷,也稱日內交易)是在同一個交易時段內建立並平掉部位,所以不留隔夜部位。如果測試讓交易延續到隔天早上,結果就包含了隔夜跳空,測的是另一種策略。這樣測試當沖想法,就是走向程式交易的第一步。

回測只能照著有明確數值的配方執行。「早盤買強勢股,快速停利」只是建議。一個可測試的美股當沖策略,必須回答下列每個問題:

  1. 交易哪些標的:單一股票、固定清單,或是每天依事先寫好的規則挑選出來的清單。
  2. 進場時段:例如只在紐約時間 9:45 到 11:00 之間。
  3. 進場條件:觸發進場的明確價格事件,例如突破前 15 分鐘的高點。
  4. 出場:停損距離、停利目標,或兩者並用。
  5. 強制出場時間:例如紐約時間 15:55 平掉所有未平倉部位。
  6. 交易次數限制:每天允許幾筆交易,以及停損後是否允許再次進場。

只要其中一行寫不出來,回測就會用預設設定去填補空缺,結果描述的就是那個預設值,而不是你的想法。

日內回測該用多大的 K 棒週期?

使用你的規則實際做決策的 K 棒週期,並讓回測在決策之後的下一根 K 棒執行。K 棒是一列資料,包含固定時間長度內的開盤、最高、最低與收盤價。一般交易時段長 6.5 小時,所以 K 棒週期決定了策略一天能做出多少次決策。在 AlphaPrime(Valynox) 回測的資料解析度選好 K 棒週期,每個決策都會在下一根 K 棒成交,正是這段要求的執行時點。

K 棒週期每個一般交易時段的 K 棒數適用要檢查什麼
1 分鐘390開盤前後的快速進場交易次數多,所以交易成本占主導。資料必須乾淨。
5 分鐘78大多數開盤區間與日內趨勢想法停損與停利是否可能在同一根 K 棒內都被觸及。
15 分鐘26較慢的日內波段交易次數較少,所以需要更多年的資料。
紐約一個一般交易時段 9:30 至 16:00,以相同長度畫三次:分成 390 根 1 分鐘 K 棒、78 根 5 分鐘 K 棒或 26 根 15 分鐘 K 棒,K 棒越小,決策與交易越多,需負擔的成本也越多 K 棒越小,交易越多 9:30–16:00 時段的 K 棒數 1 分鐘 390 5 分鐘 78 15 分鐘 26 K 棒越多,付出成本的交易越多。 因此:使用規則所用的 K 棒週期。
一個一般交易時段切成 390、78 或 26 根 K 棒:K 棒越小,決策越多,要負擔交易成本的交易也越多。

有三個資料細節對結果的影響,比多數交易者預期的更大:

  • K 棒時間戳記。有些資料用 K 棒的起始時間標記,有些用結束時間標記。像「在 9:30 那根 K 棒之後進場」這樣的規則,在兩種慣例下指的是不同的 K 棒。
  • 分割調整。未調整的價格會在股票分割當天出現假的暴跌。停損規則會對一個從未發生的走勢做出反應。
  • 下一根 K 棒成交。以某根 K 棒收盤價做決策的規則,不能同時以同一個收盤價成交。為了貼近現實,請以下一根 K 棒的開盤價成交。

美股開盤換算成台灣時間是幾點?

一般交易時段為紐約時間 9:30 到 16:00,在美國夏令時間期間為台灣時間 21:30 到 04:00,其餘時間為 22:30 到 05:00。

期間紐約時間台灣時間
美國夏令時間(3 月第二個星期日到 11 月第一個星期日)9:30–16:0021:30–隔天 04:00
美國標準時間(一年中的其餘時間)9:30–16:0022:30–隔天 05:00
紐約一般交易時段換算成台灣時間:美國夏令時間為 21:30 至 04:00,美國標準時間為 22:30 至 05:00,晚一小時,因此 K 棒應以紐約時間儲存 同一時段,冬季較晚 紐約 9:30–16:00 的台灣時間 夏季 21:30–04:00 冬季 22:30–05:00 +1 小時 K 棒以紐約時間儲存。 如此:進場時段全年固定。
紐約一般交易時段以紐約時間來看從不變動,但在美國標準時間期間,換算成台灣時間會晚一小時開始、晚一小時結束。

請用紐約時間儲存 K 棒,這樣「只交易第一個小時」這類固定的進場時段,全年指的都是同一個小時。如果你的資料是台灣時間,像「22:30 開始」這樣的規則在夏季會跳過交易時段的第一個小時,而像「21:30 開始」這樣的規則在冬季會比開盤早一小時開始。完整的交易時段與延長交易時段時間表,請見美股交易時間與期貨交易時段。

NYSE 每年也有幾個提早收盤日,這些日子的交易時段在紐約時間 13:00 結束。除非測試知道提早收盤,否則 15:55 的強制出場在這些日子永遠不會觸發。股市假日工具列出交易所休市日與提早收盤日,期貨交易時間工具則以你自己的時區顯示交易時段。交易所可能調整交易時間與合約規格,最終請以交易所自己的交易時間頁面與合約頁面為準。

手續費、滑價與成交,會吃掉多少小優勢?

對大多數日內股票想法而言,交易成本決定了結果,因為平均每筆損益往往只有每股幾分錢。滑價是回測假設的價格與你實際能成交的價格之間的差距。對使用複委託或美國券商的台灣交易者來說,每一次一買一賣(來回,進場加出場)的成本通常包括:

  • 手續費,通常每筆委託有最低收費,這對小部位的傷害最大。手續費結構因券商而異,所以請填入你自己的券商每筆委託的最低收費。
  • 賣出時的規費,如果你的券商會轉嫁給你。
  • 買賣價差,如果你的 K 棒用的是最後成交價,但你實際是以賣價買進、以買價賣出。
  • 市價單與停損單的滑價,通常在開盤後最初幾分鐘最大。

第一個要做的檢查很簡單:

淨平均每筆損益 = 毛平均每筆損益 − 來回成本

這裡的「毛平均每筆損益」是回測中扣除任何成本之前每筆交易的獲利,「來回成本」是一次進場加一次出場的手續費、規費、價差與滑價。

假設性範例

某個開盤區間想法每次交易 100 股。400 筆交易下來,毛損益為 +$2,400,也就是每筆 +$6(每股 6 美分)。手續費每筆委託 $3,所以一買一賣為 $6。價差與滑價每邊每股 2 美分,所以一買一賣為 $4。淨結果為 6 − 6 − 4 = 每筆 −$4,400 筆共 −$1,600。毛回測看起來是正的,但這個想法付不起自己的交易成本。

假設的開盤區間交易,100 股:毛損益每筆 +6 美元,手續費 6 美元,價差加滑價每一買一賣 4 美元,淨損益每筆 −4 美元 成本使 +$6 變成 −$4 每筆,100 股,假設 毛損益 +$6 手續費 −$6 價差+滑價 −$4 淨損益 −$4 +$6 付不起 $10 成本。 所以:先看淨損益。
假設性範例的每筆交易:計入來回成本後,正的毛優勢變成虧損。

成交假設需要和手續費同樣謹慎。回測只要價格碰到限價單就視為成交,現實中往往不會成交。股票放空需要有股票可借,而難借的股票在你的規則想要放空的那天可能借不到。把滑價加倍後重跑測試。如果想法就此失效,代表它依賴低成本的執行。回測中的交易成本這篇文章說明如何用你自己的成交資料估算滑價。

一個技巧通常是某人試過許多想法之後留下來的倖存者,所以它過去的結果看起來比未來的結果好,直到它在沒人用來挑選它的資料上也有效為止。想像一千個人各自擲十次硬幣。平均而言,大約會有一個人擲出十次正面。那個人並不是更會擲硬幣,只是你聽到的剛好是他。熱門的美股當沖推薦與美股當沖技巧,往往也是用同樣方式呈現:過去表現最好的版本,才是被分享出來的版本。

樣本外資料是沒有被用來建構、挑選或調整規則的價格歷史。關於技術交易規則的研究顯示這種選擇效應有多強:當許多規則在同一份資料上測試時,最好的那個可能只是靠運氣看起來很好(Sullivan、Timmermann 與 White,1999;White,2000)。Bailey 與共同作者(2014)指出,你試的變化版本越多,最佳回測就越會高估你之後該預期的結果。

一個實用的流程如下:

  1. 在看任何結果之前,先把技巧中的規則連同每一項設定都寫下來。
  2. 保留最近一到兩年的資料,不要打開來看。
  3. 只用較早的年份建構與調整規則,並記下你試過多少個版本。
  4. 把最終版本在保留的年份上執行一次,並計入完整的交易成本。
  5. 只有在保留資料的結果保留了較早結果的明顯一部分,且交易次數多到有意義時,才接受這個想法。

假設性範例

某論壇的技巧說「買進開盤跳空上漲最大的股票,11:00 賣出。」你在 2019–2023 年測試,並嘗試了 20 種跳空大小與出場時間的變化。最好的變化版本顯示每筆淨賺 +$10。在保留的 2024–2025 年,同樣的規則在 150 筆交易中每筆淨損 −$2。較早的結果主要來自從 20 個變化版本中挑出最好的那個,所以你拒絕這個技巧。

假設性落差提示:規則以 2019 至 2023 年建立並調整,試了 20 個版本,最佳版本每筆淨賺 10 美元;保留的 2024 至 2025 年僅測試一次,共 150 筆交易,每筆淨虧 2 美元 保留最後兩年 假設性落差提示,每筆淨損益 建立與調整 保留不用 2019–2023 2024–2025 20 選最佳:+$10 僅一次:−$2 試了 20 個版本 150 筆交易 +$10 來自挑選最佳。 所以:保留年份只測一次。
只在較早的年份建構與調整;保留的年份只用一次,作為最終測試。

選股還會多一個陷阱。存活者偏誤是指只在目前仍然存在且受歡迎的股票上測試所犯的錯誤。今天大家最愛的當沖股票,排除了那些崩跌或下市的股票,所以在它們身上的測試會讓過去看起來比實際更好。保留測試的重複版本就是推進分析,它在一個視窗上調整、在下一個視窗上測試,然後沿著歷史往前推進。

為什麼要在指數期貨上測試同一個想法?

指數期貨提供一個流動性好的單一商品,每跳動點價值固定,並且有很長的連續歷史,所以不必挑選股票就能測試日內想法。如果你的想法是關於美股開盤後的大盤走勢,S&P 500 或 Nasdaq 100 期貨可以直接衡量這個走勢。

測試問題美股美股指數期貨
哪個商品?你必須挑選股票,這會帶來存活者偏誤每個指數一個合約
交易時段一般交易時段加上較清淡的延長交易時段平日近 24 小時,每天有一小時休息
放空需要有股票可借與做多的委託類型相同
成本單位每股或每筆委託每口,每跳動點有固定價值
主要資料問題分割與已下市的股票合約轉倉

合約規格由交易所固定。在 CME,E-mini S&P 500(ES)每個指數點價值 $50,Micro E-mini(MES)每點 $5,兩者最小跳動點都是 0.25 點,所以一個跳動點在 ES 是 $12.50,在 MES 是 $1.25。期貨合約計算器可以顯示其他合約的每跳動點價值與一筆交易的損益。

有兩個設定能讓期貨測試與你的股票想法保持可比性。第一,使用連續月,也就是把每個到期合約接到下一個合約的序列;ES 在 3 月、6 月、9 月與 12 月到期,所以這個序列必須處理這些轉倉。第二,加上交易時段過濾,讓規則只在紐約時間 9:30–16:00 交易,即使該合約幾乎全天都有交易。

ES 紐約時間的一個平日:該合約從前一晚 18:00 到 17:00 幾乎 24 小時交易,中間休息一小時,而交易時段過濾只交易 9:30 至 16:00 的時段,與股票測試的時間相同 只交易股市時段 ES 一個平日,紐約時間 交易時段過濾 近 24 小時 已交易 18:00 9:30 16:00 休息 1 小時 過濾為紐約時間 9:30–16:00。 期貨與股票測試因此一致。
近 24 小時的期貨交易時段,搭配只保留紐約時間 9:30–16:00 的過濾,與股票測試一致。

AlphaPrime使用你自己的期貨市場歷史 K 棒資料,包括美股指數期貨與台指期。它的策略檢驗包含推進分析,所以保留資料的測試是流程的一部分,而不是額外的步驟。

第一次日內測試該按什麼順序進行?

在看任何結果之前,先確定資料與交易成本,因為之後的每個數字都取決於它們。這個順序能讓每一步都誠實:

  1. 選擇商品,並以紐約時間載入 K 棒;股票要做分割調整,期貨則使用連續月。
  2. 把交易時段設為紐約時間 9:30–16:00,並納入提早收盤日。
  3. 寫出第一節的六行規則,包括強制出場時間。
  4. 設定每次一買一賣的手續費、規費與滑價,並使用下一根 K 棒成交。
  5. 保留最近一到兩年的資料。
  6. 在較早的年份上執行測試,並檢查毛平均每筆損益相對於來回成本。
  7. 把保留資料的測試只跑一次,然後用雙倍滑價重跑。

如果你使用 AlphaPrime,這代表:AlphaPrime 會用手續費、滑價、下一根 K 棒成交與你設定的交易時段來評估每個候選策略,所以日內期貨想法從第一次執行起就在相同條件下測試。載入美股指數期貨 K 棒、把交易時段限制在紐約一般交易時間,並依推進分析的結果而不是單一最佳回測來評斷這個想法。

常見問題

美股在台灣時間幾點開盤?

紐約一般交易時段在紐約時間 9:30 開盤。在美國夏令時間期間(3 月第二個星期日到 11 月第一個星期日)為台灣時間 21:30,其餘時間為台灣時間 22:30。交易時段在隔天早上台灣時間 04:00 或 05:00 收盤。

怎麼回測美股當沖策略?

把想法寫成明確規則,包括進場時段、進場條件、停損、停利,以及收盤前的強制出場。在紐約時間的日內 K 棒上執行,每筆交易都計入手續費、價差與滑價,並以下一根 K 棒成交。保留最近一到兩年的資料,並只用最終規則在上面測試一次。

當沖回測用哪種 K 棒週期最好?

使用你的規則做決策的 K 棒週期。5 分鐘 K 棒每個一般交易時段有 78 根,適合大多數開盤區間與日內趨勢想法。1 分鐘 K 棒交易次數更多,但讓交易成本與資料品質更重要,而 15 分鐘 K 棒則需要更多年的資料才能累積足夠的交易次數。

在指數期貨上測試當沖,會比在股票上容易嗎?

對於關於大盤的想法,通常是的。指數期貨是一個流動性好、每跳動點價值固定的單一合約,放空與做多的方式相同,而且你不必挑選股票,也避開隨之而來的存活者偏誤。你需要能處理每季轉倉的連續月,若只想交易股市時段,還需要交易時段過濾。

當沖回測應該包含盤前時段嗎?

只有在你的規則真的會在盤前交易時,才納入盤前 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.
  • Sullivan, R., Timmermann, A., & White, H. (1999). Data-Snooping, Technical Trading Rule Performance, and the Bootstrap. The Journal of Finance, 54(5), 1647–1691.
  • White, H. (2000). A Reality Check for Data Snooping. Econometrica, 68(5), 1097–1126.