VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 進出場與風控

期貨策略的停損怎麼設:固定跳動點、ATR、時間還是移動停損?

把停損放在市場 K 棒之間正常雜訊的範圍之外,再讓測試來決定類型。先從依波動度調整的 ATR 停損開始,在完全相同的規則、成本與推進分析視窗下測試固定、時間與移動停損版本,留下扣除成本後期望值與回撤都改善的那一個。

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

目錄
  1. 系統化期貨策略的停損應該放在哪裡?
  2. 四種停損類型是什麼,彼此有何不同?
  3. 為什麼停損收得更緊常常讓策略更差?
  4. 移動停損的公式怎麼運作?
  5. 快市場裡的停損會發生什麼事?
  6. 如何在同一個策略上測試各種停損版本?
  7. 如何解讀結果:期望值、回撤與交易筆數?
  8. 常見問題
  9. 參考文獻

系統化期貨策略的停損應該放在哪裡?

把停損放在 K 棒之間正常的小幅波動碰不到的位置,再讓資料決定類型。先從幾倍 ATR 的依波動度停損開始,在完全相同的規則、成本與推進分析視窗下測試固定跳動點、時間與移動停損版本,留下扣除成本後期望值與回撤都改善的那一個,而不是感覺最安全的那一個。

停損是一張掛著的委託單,當價格朝不利方向走了設定的距離時就把部位平掉。在系統化策略裡,停損就像均線長度一樣是一個參數:它有數值,這個數值會改變結果,而合適的值要靠測試找出來。平均真實波幅(ATR)是在選定的 K 棒數內,一根 K 棒完整波動(包含跳空)的平均大小,所以以 ATR 衡量的停損會在市場變平靜或變劇烈時自動調整。期望值是扣除成本後每筆交易的平均結果;你可以用勝率與期望值計算器,由勝率與平均獲利、平均虧損算出來。

實務上的工作順序:

  1. 先完全不加停損,建立並測試進場與出場規則,這樣你才知道原始想法本身的表現。
  2. 加上一個夠寬、落在正常雜訊之外的 ATR 停損。交易 K 棒週期的 2 到 3 倍 ATR 是常見的起始範圍。
  3. 在完全相同的規則下測試固定跳動點、時間與移動停損版本。
  4. 留下在扣除手續費與滑價後,期望值與最大回撤同時改善的版本。
依序四個步驟:先以無停損測試規則作為基準,再加入2至3倍ATR的寬幅ATR停損,接著在相同規則與成本下測試固定、時間與移動停損變化版本,最後保留扣除成本後期望值與回撤較佳的版本 用測試選擇停損 四個步驟,依此順序 1 2 3 4 無停損 原始規則基準 ATR 停損 2 至 3 倍 ATR 寬 變化版本 規則、成本相同 留最佳者 期望值+回撤 由測試決定停損類型。 所以:先從完全不設停損開始。
工作順序:先測試原始規則,加上寬的 ATR 停損,在相同規則下測試其他停損類型,再留下扣除成本後期望值與回撤同時改善的版本。

四種停損類型是什麼,彼此有何不同?

四種停損類型回答四個不同的問題:距離多遠、相對於波動度多遠、持有多久,以及要回吐多少未實現獲利。

  • 固定跳動點停損是放在距離進場價固定跳動點數(或點數)的停損,每筆交易的距離都一樣。
  • ATR 停損是放在距離進場價 k 倍當前 ATR 的停損,所以距離在波動大的市場會變大,在平靜的市場會縮小。
  • 時間停損是在經過設定的 K 棒數後,若交易沒有達到規則預期的結果,就不論價格如何將交易平掉的出場方式。
  • 移動停損是以固定距離跟隨進場後所達到的最佳價格、且只往對交易有利的方向移動的停損。
固定跳動點以 ATR 為基礎以時間為基礎移動停損
距離由什麼決定距離進場價的跳動點數距離進場價 k × ATR進場後經過的 K 棒數距離進場後最佳價格的距離
防範什麼單筆大額虧損波動度的改變占用保證金的停滯交易回吐未實現獲利
常見失敗波動度上升時太緊ATR 長度也需要測試把仍然有效的交易出場距離小時,每次拉回都把趨勢出場
實單交易的委託類型停損市價單停損市價單在該 K 棒以市價單出場停損市價單,每根 K 棒調整一次
四種停損類型:固定跳動點停損維持相同距離,ATR 停損跟隨波動,時間停損在一定 K 棒數後出場,移動停損跟隨最佳價格 設定停損的四種方式 各自以不同方式衡量距離 固定跳動點 距離不變 ATR 停損 跟隨波動 時間停損 N 根 K 棒後出場 移動停損 跟隨最佳價格
四種停損類型用不同的單位衡量距離,防範的也是不同的事。沒有哪一種適合所有策略。

這些類型可以組合。常見的一組是前幾根 K 棒用 ATR 停損,再加上一個時間停損,把原地不動的交易清掉。每一種組合都是多一個要測試的版本,所以請一次加一個。

為什麼停損收得更緊常常讓策略更差?

放在市場正常雜訊之內的停損,會在預期的行情出現之前就被隨機的小波動打到,所以策略虧損更頻繁、付出更多成本,即使每一筆單獨的虧損比較小。

想像一個靈敏度調得太高的煙霧偵測器,你每次烤吐司它都會響。你沒有得到更多安全,只得到更多誤報,最後你把電池拿掉。太緊的停損也是同樣的道理。價格在每個 K 棒週期上都在一個區間內上下移動,停損若落在這個區間之內,就會被毫無意義的波動觸發。

當停損移到雜訊之內,會同時發生三件事:

  1. 勝率下降,因為本來會達到目標的交易被提早平掉。
  2. 交易筆數上升,因為規則常在停損後重新進場,一個想法就變成兩三個一買一賣(來回)。
  3. 成本隨交易筆數上升,而且每筆被停損出場的交易在出場時也要付滑價。
同一個進場搭配兩種停損:第一次回檔觸及緊停損,而寬停損守住,交易後續達到停利目標 過緊的停損容易被雜訊打到 同一進場,兩種停損(示意) 進場 停利 緊:被打到 寬:守住 緊停損讓好交易被出場。 所以:停損要設在雜訊之外。
同樣的進場配上兩種停損。緊的停損被第一次拉回打到;寬的停損撐過去,交易走到了目標。

還有第二個容易忽略的影響。策略的最大回撤通常是一連串的虧損,而不是單一的大額虧損。緊的停損讓每筆虧損變小,但讓連續虧損變長,所以回撤往往完全沒有改善。這就是為什麼解讀結果的那一節要同時看期望值、回撤與交易筆數。

移動停損的公式怎麼運作?

移動停損以固定距離跟隨進場後的最佳價格,且只往對交易有利的方向移動,所以它能鎖住一部分未實現獲利,但也會在第一次比它的距離更深的拉回時結束趨勢。

對多單,規則是:

停損 = 進場後最高價 − k × ATR

這裡的進場後最高價是自交易建立以來市場所達到的最高價格,ATR 是計算當時的平均真實波幅,k 是你選的乘數,例如 2 或 3。空單則是對稱的:進場後最低價加上 k × ATR。停損在每根 K 棒結束時重新計算。如果新的值比舊的高,停損就上移;如果比較低,停損就留在原處,絕不會下移。

多單的移動停損會隨進場後每個新高墊高,回檔時維持不動、絕不下移,價格跌破停損位置時出場 停損只上移 多單:最高價 − k × ATR 出場 價格 停損 創新高就上移,絕不下移。 因此:測試 k;k 小會提早出場。
移動停損隨進場後的每個新高往上推,拉回期間維持不動,也絕不下移。出場發生在價格跌穿那條持平的停損之處。

把它變成可測試的規則時,有兩個細節很重要:

  • 用已完成的 K 棒計算停損,並套用到下一根 K 棒。如果當根 K 棒的停損用到那根 K 棒自己的最高價,回測就在 K 棒還沒走完時就知道了最高價,這是一種前視偏誤。
  • 決定移動停損是立刻取代初始停損,還是等交易獲利達到某個幅度之後才取代。兩種都可以;它們是不同的版本。

k 的值決定出場的性格。小的 k 回吐的未實現獲利少,但每次拉回都會出場,這對順勢規則不利。大的 k 讓趨勢能跑,但最後回吐得比較多。沒有通用的 k;它和其他停損參數一樣,用「如何在同一個策略上測試各種停損版本?」那一節描述的測試找出來。在 AlphaPrime(Valynox) 策略生成的出場條件裡替 k 設一段範圍,就能在同一個進場規則下比較一組移動停損版本。

快市場裡的停損會發生什麼事?

停損通常是停損市價單,所以在快速行情或跨交易時段的跳空時,它會以下一個可成交的價格成交,這個價格會越過停損位置;而把每一筆停損都剛好成交在停損價的回測是過於樂觀的。

滑價是回測所假設的價格與你實際拿到的價格之間的差距。對停損單而言,假設的就是停損位置。在正常的市場裡,成交價通常差一個跳動點左右。在快市場,例如消息公布前後或交易時段的開盤,停損被觸發後的第一筆成交可能差上許多跳動點。跨過交易時段的中斷,最後一次收盤與低很多的開盤之間可能完全沒有成交,停損就成交在那個開盤價。

停損市價單會以下一個可成交價格成交:一般市況下約在停損價位之外一個跳動點,快速行情或開盤跳空時則可能比停損價位低多個跳動點 停損單以下一個價格成交 停損市價單(示意) 一般 快速或跳空 停損 停損 1 跳動點 多個跳動點 停損單會在停損價位之外成交。 因此:停損要多抓滑價。
停損單以下一個可成交的價格成交。在正常市場,那會接近停損位置;在快速行情或開盤跳空時,可能遠低於停損位置。

測試時該怎麼做:

  1. 為停損出場設定獨立的滑價,比進場與限價型出場的滑價更大。對流動性好、用市價單或停損單的期貨,每邊一個跳動點是常見的最低值;停損值得設得更高。
  2. 當 K 棒開盤就已越過停損位置時,以該 K 棒的開盤價成交停損,而不是以停損位置成交。
  3. 把停損滑價加倍後重跑一次測試。結果取決於停損剛好成交在哪個價位的策略,有的是成本問題,不是優勢。

這裡適用與回測中的交易成本相同的邏輯:越緊的停損被打到的次數越多,所以更常付出這筆額外的滑價。在回測設定中,在比較任何停損版本之前,就應該先固定好手續費、滑價與下一根 K 棒成交。

如何在同一個策略上測試各種停損版本?

讓進場規則、資料、交易時段、成本與下一根 K 棒成交完全相同,只改變停損,讓每個版本跑相同的期間、通過相同的推進分析視窗,並比較串接後的樣本外結果,而不是單一的樣本內數字。

只有一次只改變一件事,測試才公平。如果版本 A 用日盤 K 棒跑,版本 B 用全時段 K 棒跑,或兩者滑價不同,結果的差異就和停損無關。

兩個停損版本共用相同的鎖定規則、資料、成本與成交設定;只有停損不同,一個用 ATR 停損,另一個用時間停損,所以結果的差異都來自停損 只改停損 其他一律鎖定 鎖定 變動 A B 規則 資料 成本 成交 規則 資料 成本 成交 ATR 停損 時間停損 差異都來自停損。 所以:先寫下基準。
各版本之間只有停損改變;規則、資料、交易時段、成本與成交都鎖定,所以結果的任何差異都來自停損。
  1. 鎖定基礎設定。進場與出場規則、資料序列、交易時段、手續費、進場與停損的滑價,以及下一根 K 棒成交。把它們寫下來。
  2. 定義各版本。例如:不加停損;固定 20 個跳動點;1、2 與 3 倍 ATR;10 根 K 棒的時間停損;2 倍 ATR 的移動停損。清單要短到你能看完每一個結果。
  3. 讓所有版本在同一個完整期間上執行。這會給你樣本內的視角。
  4. 對每個版本執行相同的推進分析視窗。推進分析在一個視窗上調整、在下一個視窗上測試,所以串接後的樣本外曲線顯示停損在調整時沒看過的資料上表現如何。
  5. 比較各版本的樣本外期望值、最大回撤與交易筆數,如下一節所述。

你比較的每一個版本,都是從同一份資料多抽一次,而多次抽取中的最佳者有一部分是運氣。Bailey 與 López de Prado(2014)描述了許多次試驗中的最佳結果如何因這種選擇而被誇大,以及為什麼解讀時必須把試驗次數考慮進去。保持版本清單簡短,並看樣本外曲線而不是樣本內的高點,是實務上的防線。

如何解讀結果:期望值、回撤與交易筆數?

評斷一個停損,要同時看扣除成本後每筆交易的期望值、最大回撤與交易筆數;一個只把回撤降低一點,卻削弱期望值、又讓被停損出場的交易成倍增加的停損,讓策略變得更差。

把這三個數字當成一組來讀:

  • 扣除成本後每筆交易的期望值。這是停損不能破壞的數字。如果它隨著停損收緊而趨近於零,這個停損就落在雜訊之內。
  • 最大回撤,你可以用回撤計算器由權益序列算出來。這是停損本來應該改善的東西。如果停損收緊時它沒有下降,停損只是改變了虧損的形狀,而不是虧損的總量。
  • 交易筆數。停損收緊時筆數上升,代表停損後有重新進場。每一次都要付一個一買一賣(來回)的成本。

假設範例

同樣的進場規則用在微型指數期貨上,期間同為十年、成本相同,只改變停損。數字取整數,僅供說明。

0.5 ATR1 ATR2 ATR3 ATR不加停損
交易筆數900700500450420
扣除成本後每筆期望值−$5$10$30$35$32
最大回撤$9,000$8,000$7,000$8,500$12,000
解讀停損落在雜訊之內仍然太緊良好良好回撤最大

在 0.5 ATR 時,停損把一個原本為正的想法變成虧損:交易筆數是不加停損時的兩倍,每一筆都要付成本,而回撤也幾乎不比不加停損好。在 2 到 3 ATR,期望值接近最高,而在 2 ATR 回撤最低。拿掉停損會保留大部分期望值,但讓最糟的連續虧損變大。

依停損距離計算、扣除成本後的假設每筆期望值:0.5 ATR 為 −5 美元,1 ATR 為 10 美元,2 ATR 為 30 美元,3 ATR 為 35 美元,無停損為 32 美元,且回撤最深 過緊的停損削弱期望值 扣除成本後每筆,假設 0.5 ATR 1 ATR 2 ATR 3 ATR 無停損 −$5 $10 $30 $35 $32 雜訊 過緊 良好 良好 高風險 僅 2–3 ATR 能保住優勢。 所以:選一個寬範圍,而非單點。
假設範例:隨著停損收緊,交易筆數上升、期望值下降,只有 2 到 3 ATR 的範圍能讓兩者都在可接受的程度,而回撤在 2 ATR 最低。

把同樣的表格拿到推進分析跑出來的樣本外曲線上再檢查一次。樣本內的表格告訴你哪些停損值得看;樣本外的表格告訴你哪些撐得住。

如果你使用 AlphaPrime,這代表:停損類型與其距離都是參數,AlphaPrime 對每個版本都用相同的手續費、滑價與下一根 K 棒成交來評估,所以停損比較只是在相同規則上多跑一次,而策略檢驗會對每個版本套用相同的推進分析視窗。

常見問題

期貨交易中的停損是什麼意思?

停損是一張掛著的委託單,當價格朝不利方向走了設定的距離時,就把未平倉的期貨部位平掉。它通常是停損市價單:一旦停損價成交,這張單就變成市價單,以下一個可成交的價格成交。在系統化策略裡,停損距離是一個經過測試的參數,而不是固定的習慣。

ATR 停損怎麼設定?

在你的交易 K 棒週期上,以選定的 K 棒數量計算平均真實波幅,乘上係數 k,再把停損放在距離進場價那麼遠的位置。2 到 3 倍 ATR 是第一次測試常見的起始範圍。接著測試相鄰的值,因為合適的 k 取決於進場規則與市場。

移動停損的公式是什麼?

對多單,停損等於進場後最高價減去 k 倍 ATR;對空單,則是進場後最低價加上 k 倍 ATR。停損在每根 K 棒結束時重新計算,只往對交易有利的方向移動,絕不往回。用已完成的 K 棒計算,並套用到下一根 K 棒,以避免前視偏誤。

回測中可以不設停損嗎?

可以,作為基準。測試不加停損的原始規則,能顯示這個想法本身的表現,之後每個停損版本都拿來和這個基準比較。許多規則組合本來就依訊號或在交易時段收盤時出場,所以停損的工作是限制最糟的連續虧損,也就是最大回撤所衡量的東西。

參考文獻

  • Bailey, D. H., & López de Prado, M. (2014). The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting and Non-Normality. The Journal of Portfolio Management, 40(5), 94–107.