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

期貨動能交易策略:規則、回看長度與 NQ 回測

動能交易策略在今日收盤高於 N 根 K 棒前的收盤時買進,低於時放空。測試前先寫好比較方式、回看長度與出場規則;回看長度挑相鄰數值表現一致的區域;先看回撤,再看淨損益。

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

目錄
  1. 動能交易策略的規則長什麼樣子?
  2. 如何用變動率設定動能進場規則?
  3. 動能的回看長度該設多長?
  4. 如何一步步回測動能規則?
  5. NQ 日 K 棒回測的變動率規則呈現什麼?
  6. 動能在各期貨市場仍然有效嗎?
  7. 動能策略在哪裡失效?
  8. 常見問題
  9. References

動能交易策略的規則長什麼樣子?

期貨動能交易策略在今日收盤高於 N 根 K 棒前的收盤時買進,低於時放空。整套想法只有三個部分:一個比較、一個回看長度 N、一條出場規則,測試前全部寫下。變動率把比較結果換成百分比,方便加上門檻。

動能是指:價格在最近 N 根 K 棒內朝某個方向移動,往往會繼續朝同一方向走一段,才會轉向。好比斜坡上的重推車,一旦滾動起來,不會在下一步就停住。動量指標把這件事量化成今日收盤與 N 根 K 棒前收盤的差。回看長度,就是往回數幾根 K 棒去找那個較早的收盤。差為正,代表價格比當時高;差為負,代表比當時低。這個正負號就是整個訊號。

要讓這個想法可測試,載入任何資料之前先寫好並固定三個部分:

  1. 比較方式。今日收盤對 N 根 K 棒前的收盤。進場決策不加入其他條件。
  2. 回看長度 N。一個數字,例如 20 根日 K 棒。第三節說明如何選擇。
  3. 出場。出現反向訊號就反手,差值回到零就平倉,或持有固定根數後離場。每種選擇都是不同的策略,所以要指定一種。

規則寫到這麼明確,程式就能在無人盯盤的情況下執行,這正是程式交易與執行成本的重點。動能也是最古老的量化交易策略之一,因為它只需要價格歷史與一個計數器。

動能就是一個比較:今日收盤高於 20 根 K 棒前的收盤,規則做多;低於則做空 動能只是一個比較 今日收盤對 20 根 K 棒前收盤 較高:做多 較低:做空 20 棒前 今日 20 棒前 今日 較高做多,較低做空。 所以:先寫好 N 與出場。
動能就是一個比較:今日收盤對 N 根 K 棒前的收盤。較高做多,較低做空。

如何用變動率設定動能進場規則?

變動率把動能比較換成百分比數字,進場規則可以看它的正負號(高於零做多、低於零做空),也可以用門檻區間,在波動小到扣除成本後沒有意義時保持空手。變動率是動能差值除以較早的收盤再乘以 100,所以無論 NQ 處在高價位或低價位,同樣幅度的波動代表同樣的百分比。本文用一條公式貫穿:

變動率 =(今日收盤 − N 根 K 棒前收盤)÷ N 根 K 棒前收盤 × 100

其中今日收盤是最後一根完成的 K 棒的收盤,N 根 K 棒前收盤是往前數 N 根 K 棒的收盤,結果是在零上下擺動的百分比。由此衍生出兩種進場方式:

進場方式做多條件做空條件空手條件效果
正負號規則變動率高於 0變動率低於 0無(始終持有部位)交易筆數最多,零軸附近的小幅翻轉也最多
門檻區間變動率高於 +T變動率低於 −T介於 −T 與 +T 之間交易較少,略過不足以支付成本的小波動

設置區間的原因是:+0.3% 與 −0.3% 的讀數,實務上是同一件事,都是零附近的雜訊。正負號規則每次穿越零都交易,每次都付手續費與滑價。門檻 T 設為 2% 的區間,會等波動大到有意義才進場。區間的代價是進場較晚,以及在緩慢趨勢中有一段空手時間。

假設性範例

假設 20 根 K 棒前的收盤是 18,000,今日收盤是 18,540。差為 540 點,變動率是 540 ÷ 18,000 × 100 = 3%。正負號規則做多,因為 3 高於零。T = 2% 的區間規則同樣做多,因為 3 高於 2。如果今日收盤是 18,180,變動率就是 1%:正負號規則仍然做多,區間規則維持空手。

變動率線在零附近擺動;−2% 到 +2% 的區間代表不持倉,區間上方做多、下方做空,標記顯示線離開區間的位置 只在區間之外交易 變動率,區間 −2% 到 +2% 示意圖 做多 不持倉 做空 區間內保持空手。 所以:區間設在成本之上。
變動率在零上下擺動。正負號規則每次穿越都交易;區間規則等線離開陰影區才行動。

出場要和進場寫在一起。最簡單的是反向訊號:做多部位在出現做空條件時平倉,因此規則幾乎一直在市場中。第五節的 NQ 回測用的正是這種結構,它在市場中的時間占比說明了這代表什麼。

動能的回看長度該設多長?

短回看長度交易頻繁,付出較多手續費與滑價;長回看長度進場晚,並會持有到反轉之後。因此要挑相鄰數值表現一致的區域,而不是單一最佳值。沒有正確的 N,只有三者的取捨:訊號有幾個、每個訊號花多少成本、進場落後轉折多遠。

特性短(約 10 根 K 棒)中(約 50 根 K 棒)長(約 200 根 K 棒)
每年訊號數多中等少
成本負擔高中等低
進場落後小中等大
盤整市場的來回假訊號多較少最少
動能回看長度在日 K 棒上的取捨示意:10 根 K 棒交易多、成本高、落後小;50 根 K 棒交易中等、成本中等、落後中等;200 根 K 棒交易少、成本低、落後大 沒有免費的回看長度 取捨示意,日 K 棒 10 棒 50 棒 200 棒 交易數 成本 落後 多 中 少 高 中 低 小 中 大 交易少則成本低,但進場晚。 所以:選擇要付哪種成本。
回看長度讓訊號數、成本負擔與落後互相取捨。沒有一欄不用付成本,要選擇付哪一種。

成本負擔是手續費與滑價占毛損益的比例,隨交易筆數上升。來回假訊號是進場後不久因正負號翻回而反向的交易。短回看長度兩者同時發生,因此日內動能規則要先守住當沖演算法的建立與測試中說明的成本紀律。

假設性範例

兩條日 K 棒規則,毛損益都是每年 $7,200,每筆一買一賣(來回)成本 $30。10 根 K 棒的規則每年交易 60 筆,成本是 60 × $30 = $1,800,淨損益 $5,400:成本吃掉毛損益的四分之一。200 根 K 棒的規則每年交易 4 筆,成本 $120,淨損益 $7,080:成本占比不到 2%。如果滑價加倍,短規則再少 $900,長規則再少 $60。

有了候選的 N,就把它前後的數值也跑一遍,例如 15、18、20、22 與 25,對應 20 根 K 棒的規則。如果 20 表現好,而 18 與 22 表現不佳,那 20 就是被這段歷史的雜訊選出來的。如果五個都落在相同區域,這個區域才有意義。Pardo(2008)把這當作最佳化參數的核心檢驗:看的是周邊的品質,不是峰值的高度。交易筆數對成本面的影響有多大,見回測裡的交易成本與平均每筆損益。

如何一步步回測動能規則?

寫好規則,固定成本與下一根 K 棒成交,在單一商品與單一 K 棒週期上執行,先看交易筆數與回撤再看淨損益,然後在沒用來挑選設定的商品上重複一次。順序之所以重要,是因為每一步都封住一種自欺的方式。

  1. 寫下規則與回看長度。比較方式、N、門檻(若有)與出場,各用一句話寫成。保留這段文字,之後要拿它對照匯出的程式碼。
  2. 設定手續費、滑價與下一根 K 棒成交。下一根 K 棒成交,是指在 K 棒收盤讀到的訊號,在下一根 K 棒成交,這是你最早能成交的價格。在同一個收盤價成交的測試,用的是沒有人拿得到的價格。
  3. 在單一商品與單一 K 棒週期上執行。只選你打算交易的商品與 K 棒週期,不選其他,這樣第一個結果就不是好幾個之中挑出的最佳者。
  4. 看交易筆數、回撤與在市場中的時間。交易筆數告訴你證據有多少。回撤告訴你能不能撐得住。在市場中的時間告訴你這條規則是趨勢跟隨,還是永遠押注市場方向的持倉。淨損益放最後。
  5. 測試相鄰的回看長度。也就是上一節的區域檢驗。
  6. 在其他商品上重複。搜尋從未見過的商品,才是結果成為新資訊的唯一地方。
依序排列的六個回測步驟:寫下規則、設定成本與下一根 K 棒成交、在單一商品上執行、看交易筆數與回撤、測試相鄰回看長度、在新商品上重複;虛線回到起點,代表新的候選策略,而不是重新調整 六個步驟,依此順序 從寫好的規則到可讀的結果 寫規則 設成本 單一商品 看風險 相鄰值 新商品 回到起點代表新候選策略。 所以:別偷偷重調舊的。
從寫好的規則到可讀結果的六個步驟。回到第一步代表新的候選策略,而不是悄悄修改舊的。

第二步是多數手工測試出錯的地方,因為成本放在最後才加,而短回看長度早已因曲線平滑而被選中。在 AlphaPrime(Valynox)中,你設定的手續費、滑價與下一根 K 棒成交,會在回測時計入每個候選策略,所以 10 根 K 棒的規則從第一次執行起就以淨值和 50 根 K 棒的規則競爭,無法靠毛值勝出。如果你從沒跑過這樣的測試,第一支程式交易策略的 30 天路線會帶你走過設定;研究、檢驗與檢視的完整順序,見一步步建立量化交易流程。

NQ 日 K 棒回測的變動率規則呈現什麼?

在 1,024 個嘗試中留下的那一個候選策略,淨損益為正,回撤約為淨損益的三分之二,在市場中的時間占 91%,意思是規則幾乎一直持有部位,而且事後挑出被留下的那個,會讓結果看起來更好。這次回測使用 2019-01-02 至 2025-06-30 的 NQ 日 K 棒,多空皆做,一口,只以變動率規則作為進出場:沒有停損、沒有停利、沒有濾網。搜尋嘗試了 1,024 種變體,以報酬對回撤比留下這一個。

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

數字結果
淨損益(已平倉交易)$172,380
最大回撤$114,570
交易筆數77
勝率66.23%
獲利因子1.556
平均每筆損益$2,238.7
在市場中的時間91.21%
看形狀,不要只看終點:曲線在長而穩定的區段上升,在較急的轉折中回吐。下方的回撤帶顯示每次回吐有多深、持續多久。
看形狀,不要只看終點:曲線在長而穩定的區段上升,在較急的轉折中回吐。下方的回撤帶顯示每次回吐有多深、持續多久。 NQ · 日線 · 2019-01-02 至 2025-06-30 · CPU 引擎回測

依前一節的順序讀這些數字。在市場中的時間為 91.21%,代表規則在十天中有九天以上持有部位,所以它的權益大致就是 NQ 本身的路徑:上漲時做多、下跌時放空,空手的時間則是一次出場與下一次進場之間的空檔。這段期間包含長期上漲與 2022 年一整年的下跌,曲線記錄了規則對兩者的處理。六年半裡七十七筆交易,約每月一筆,對 $2,238.7 這種每筆數字來說,樣本偏小。最大回撤 $114,570 對照淨損益 $172,380,是最值得細想的數字:以一口計,這是在最終結果出現之前,帳戶在最糟時點所處的坑。

把淨損益與最大回撤當成一對來讀,再對照期間檢查交易筆數,才能相信平均每筆損益。
把淨損益與最大回撤當成一對來讀,再對照期間檢查交易筆數,才能相信平均每筆損益。 NQ · 日線 · 2019-01-02 至 2025-06-30 · CPU 引擎回測

兩項關於挑選的事實,決定這個結果有多少分量。第一,留下的候選策略是同一段歷史上 1,024 個中最好的;Bailey、Borwein、López de Prado 與 Zhu(2014)指出,即使所有規則都沒有優勢,多次嘗試中的最佳結果仍會因挑選而膨脹。第二,這張表記錄的是一段歷史、一個市場、一口的結果;它說明的是那條規則在那裡做了什麼,不是規則賺多少,也不是讀者可以期待什麼。有用的讀法是結構:沒有停損、始終持有部位的動能規則,成敗取決於它所順著的趨勢有多長。

動能在各期貨市場仍然有效嗎?

時間序列動能的研究發現,這個效應在數十年間出現在許多期貨市場,但它出現在長段趨勢中,並在急劇反轉時回吐大部分,因此交易者應在每個打算交易的市場上測試,並逐年讀結果。Moskowitz、Ooi 與 Pedersen(2012)研究了股價指數、外匯、商品與債券的數十種期貨與遠期合約,發現過去幾個月的報酬傾向於在接下來幾個月延續,較長期間內則有一部分反轉。這就是許多系統化交易者起步時採用數個月至一年回看區間的公開依據。

跨許多市場、數十年的發現,並不能告訴你一個回看長度在一個市場、一個年度做了什麼。動能規則出了名地在盤整市場中長期持平或虧損,接著一個趨勢年貢獻大部分成果。因此讀動能回測的正確方式是逐年或逐季:數有幾個期間為正,以及總額有多少來自最好的那一個。若整段期間的成果全由一年創造,那就是押注那一年會重演。

同一條動能規則在兩個示意市場中的表現:在趨勢中只進場一次並抱過整段上漲;在盤整區間中來回做多做空六次,在接近高點買進、接近低點賣出,每次翻轉都虧損 趨勢賺錢,盤整花錢 同一規則,兩個市場(示意) 趨勢 1 筆交易 盤整 6 反手 盤整中,每次反手都付成本。 所以:逐年讀結果。
同一條規則,兩個市場。在趨勢中持有一個部位、出場一次;在盤整中翻轉六次,每次翻轉都付成本。

在你交易的其他市場上重複測試,回看長度事先固定。同一個 N 在股價指數、債券期貨與商品上表現相近,說明的是動能;若每個市場都需要不同的 N,說明的是它被調校時的資料。各市場的設定與成本要保持完全一致,讓唯一改變的只有市場。

動能策略在哪裡失效?

動能規則會在這些情況失效:正負號每隔幾根 K 棒就翻轉的盤整市場、長趨勢之後的急轉、回看長度只擬合單一歷史,以及短回看長度遇上真實成本;每一種失效在實單交易前都有可跑的檢查。這些都會在報表上留下痕跡,所以檢查只是看對地方。

失效點報表上的表現要做的檢查
盤整震盪連續多筆小額虧損計算連續虧損筆數及發生的月份
長趨勢後的急轉一筆大虧損抹去數月的獲利查看最大虧損交易,以及它逆向走了多少根 K 棒
回看長度只擬合單一歷史相鄰回看長度明顯較差跑相鄰回看長度並比較區域
短回看長度遇上成本平均每筆損益接近來回成本滑價加倍後重跑
除了反向訊號外沒有停損或出場回撤接近淨損益加入時間或 ATR 出場作為新候選策略並比較
動能規則的五種失效方式,以及各自的檢查:盤整震盪,數連續虧損;急轉,查最大虧損;擬合的回看長度,跑相鄰值;真實成本,滑價加倍;沒有停損,加入時間出場 動能的五種失效 每一種都有檢查可跑 盤整 急轉 擬合的 N 真實成本 無停損 數連續虧損 查最大虧損 跑相鄰數值 滑價加倍 加時間出場 每種失效都留下痕跡。 所以:實單前逐項檢查。
動能規則的五種失效方式、各自在報表上留下的症狀,以及實單交易前能揭露它的檢查。

最後一列是上述 NQ 回測所指向的。反向訊號是唯一出場時,在長趨勢後段開出的部位會一路持有整段轉折,直到變動率變號,在日 K 棒上可能要數週。以時間出場(持有固定根數後離場)或以波動率出場(價格逆向移動達近期區間的某個倍數時離場)會改變策略,所以要在相同資料、相同成本下當作新候選策略測試,並比較兩者的回撤,而不是兩者的淨損益。

下一步只要一個下午:選定你想交易的回看長度,連同最接近的四個相鄰值,在一個市場上用你真實的手續費、滑價與下一根 K 棒成交各跑一次,寫下每一個的最大回撤。如果五個回撤彼此接近,這個區域值得拿到第二個市場上測試。如果有一個與其他明顯不同,先改區域,再改其他任何東西。

常見問題

動能與變動率有什麼差別?

動能是今日收盤與 N 根 K 棒前收盤的點數差。變動率是同一個差除以較早的收盤再乘以 100,所以是百分比。兩者的正負號相同,所以正負號規則無論用哪個,交易都一樣。變動率更容易跨價位、跨市場比較,所以門檻通常設在它上面。

動能策略是量化交易策略嗎?

是。量化策略是用數字定義、交易前先在歷史資料上測試的規則,動能規則是最簡單的例子之一:一個比較、一個回看長度、一條出場。使它成為量化的不是想法,而是它周圍的流程:固定成本、下一根 K 棒成交、從區域而非峰值挑選回看長度,以及在沒有參與挑選設定的市場上測試。

動能策略需要停損嗎?

依定義不需要。許多動能規則只在反向訊號出場,因此幾乎一直在市場中。這個選擇的代價是回撤可能逼近淨損益,因為趨勢後段開出的部位會一路持有整段轉折。時間出場或波動率出場會改變策略,所以要當作獨立的候選策略測試,並比較回撤,而不只是淨損益。

為什麼動能回測有些年度好看、有些年度難看?

因為規則只在趨勢中賺錢,在盤整中付費。趨勢年度它一次持有數個月;盤整年度它每隔幾根 K 棒就多空翻轉,每次翻轉都付手續費與滑價。逐年或逐季讀結果,可以看出總額有多少來自單一期間。依賴單一年度的結果,就是押注那一年會重演。

References

  • Moskowitz, T. J., Ooi, Y. H., & Pedersen, L. H. (2012). Time Series Momentum. Journal of Financial Economics, 104(2), 228–250.
  • 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.
  • Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies (2nd ed.). John Wiley & Sons.