期貨策略的停損怎麼設:固定跳動點、ATR、時間還是移動停損?
把停損放在市場 K 棒之間正常雜訊的範圍之外,再讓測試來決定類型。先從依波動度調整的 ATR 停損開始,在完全相同的規則、成本與推進分析視窗下測試固定、時間與移動停損版本,留下扣除成本後期望值與回撤都改善的那一個。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
系統化期貨策略的停損應該放在哪裡?
把停損放在 K 棒之間正常的小幅波動碰不到的位置,再讓資料決定類型。先從幾倍 ATR 的依波動度停損開始,在完全相同的規則、成本與推進分析視窗下測試固定跳動點、時間與移動停損版本,留下扣除成本後期望值與回撤都改善的那一個,而不是感覺最安全的那一個。
停損是一張掛著的委託單,當價格朝不利方向走了設定的距離時就把部位平掉。在系統化策略裡,停損就像均線長度一樣是一個參數:它有數值,這個數值會改變結果,而合適的值要靠測試找出來。平均真實波幅(ATR)是在選定的 K 棒數內,一根 K 棒完整波動(包含跳空)的平均大小,所以以 ATR 衡量的停損會在市場變平靜或變劇烈時自動調整。期望值是扣除成本後每筆交易的平均結果;你可以用勝率與期望值計算器,由勝率與平均獲利、平均虧損算出來。
實務上的工作順序:
- 先完全不加停損,建立並測試進場與出場規則,這樣你才知道原始想法本身的表現。
- 加上一個夠寬、落在正常雜訊之外的 ATR 停損。交易 K 棒週期的 2 到 3 倍 ATR 是常見的起始範圍。
- 在完全相同的規則下測試固定跳動點、時間與移動停損版本。
- 留下在扣除手續費與滑價後,期望值與最大回撤同時改善的版本。
四種停損類型是什麼,彼此有何不同?
四種停損類型回答四個不同的問題:距離多遠、相對於波動度多遠、持有多久,以及要回吐多少未實現獲利。
- 固定跳動點停損是放在距離進場價固定跳動點數(或點數)的停損,每筆交易的距離都一樣。
- ATR 停損是放在距離進場價 k 倍當前 ATR 的停損,所以距離在波動大的市場會變大,在平靜的市場會縮小。
- 時間停損是在經過設定的 K 棒數後,若交易沒有達到規則預期的結果,就不論價格如何將交易平掉的出場方式。
- 移動停損是以固定距離跟隨進場後所達到的最佳價格、且只往對交易有利的方向移動的停損。
| 固定跳動點 | 以 ATR 為基礎 | 以時間為基礎 | 移動停損 | |
|---|---|---|---|---|
| 距離由什麼決定 | 距離進場價的跳動點數 | 距離進場價 k × ATR | 進場後經過的 K 棒數 | 距離進場後最佳價格的距離 |
| 防範什麼 | 單筆大額虧損 | 波動度的改變 | 占用保證金的停滯交易 | 回吐未實現獲利 |
| 常見失敗 | 波動度上升時太緊 | ATR 長度也需要測試 | 把仍然有效的交易出場 | 距離小時,每次拉回都把趨勢出場 |
| 實單交易的委託類型 | 停損市價單 | 停損市價單 | 在該 K 棒以市價單出場 | 停損市價單,每根 K 棒調整一次 |
這些類型可以組合。常見的一組是前幾根 K 棒用 ATR 停損,再加上一個時間停損,把原地不動的交易清掉。每一種組合都是多一個要測試的版本,所以請一次加一個。
為什麼停損收得更緊常常讓策略更差?
放在市場正常雜訊之內的停損,會在預期的行情出現之前就被隨機的小波動打到,所以策略虧損更頻繁、付出更多成本,即使每一筆單獨的虧損比較小。
想像一個靈敏度調得太高的煙霧偵測器,你每次烤吐司它都會響。你沒有得到更多安全,只得到更多誤報,最後你把電池拿掉。太緊的停損也是同樣的道理。價格在每個 K 棒週期上都在一個區間內上下移動,停損若落在這個區間之內,就會被毫無意義的波動觸發。
當停損移到雜訊之內,會同時發生三件事:
- 勝率下降,因為本來會達到目標的交易被提早平掉。
- 交易筆數上升,因為規則常在停損後重新進場,一個想法就變成兩三個一買一賣(來回)。
- 成本隨交易筆數上升,而且每筆被停損出場的交易在出場時也要付滑價。
還有第二個容易忽略的影響。策略的最大回撤通常是一連串的虧損,而不是單一的大額虧損。緊的停損讓每筆虧損變小,但讓連續虧損變長,所以回撤往往完全沒有改善。這就是為什麼解讀結果的那一節要同時看期望值、回撤與交易筆數。
移動停損的公式怎麼運作?
移動停損以固定距離跟隨進場後的最佳價格,且只往對交易有利的方向移動,所以它能鎖住一部分未實現獲利,但也會在第一次比它的距離更深的拉回時結束趨勢。
對多單,規則是:
停損 = 進場後最高價 − k × ATR
這裡的進場後最高價是自交易建立以來市場所達到的最高價格,ATR 是計算當時的平均真實波幅,k 是你選的乘數,例如 2 或 3。空單則是對稱的:進場後最低價加上 k × ATR。停損在每根 K 棒結束時重新計算。如果新的值比舊的高,停損就上移;如果比較低,停損就留在原處,絕不會下移。
把它變成可測試的規則時,有兩個細節很重要:
- 用已完成的 K 棒計算停損,並套用到下一根 K 棒。如果當根 K 棒的停損用到那根 K 棒自己的最高價,回測就在 K 棒還沒走完時就知道了最高價,這是一種前視偏誤。
- 決定移動停損是立刻取代初始停損,還是等交易獲利達到某個幅度之後才取代。兩種都可以;它們是不同的版本。
k 的值決定出場的性格。小的 k 回吐的未實現獲利少,但每次拉回都會出場,這對順勢規則不利。大的 k 讓趨勢能跑,但最後回吐得比較多。沒有通用的 k;它和其他停損參數一樣,用「如何在同一個策略上測試各種停損版本?」那一節描述的測試找出來。在 AlphaPrime(Valynox) 策略生成的出場條件裡替 k 設一段範圍,就能在同一個進場規則下比較一組移動停損版本。
快市場裡的停損會發生什麼事?
停損通常是停損市價單,所以在快速行情或跨交易時段的跳空時,它會以下一個可成交的價格成交,這個價格會越過停損位置;而把每一筆停損都剛好成交在停損價的回測是過於樂觀的。
滑價是回測所假設的價格與你實際拿到的價格之間的差距。對停損單而言,假設的就是停損位置。在正常的市場裡,成交價通常差一個跳動點左右。在快市場,例如消息公布前後或交易時段的開盤,停損被觸發後的第一筆成交可能差上許多跳動點。跨過交易時段的中斷,最後一次收盤與低很多的開盤之間可能完全沒有成交,停損就成交在那個開盤價。
測試時該怎麼做:
- 為停損出場設定獨立的滑價,比進場與限價型出場的滑價更大。對流動性好、用市價單或停損單的期貨,每邊一個跳動點是常見的最低值;停損值得設得更高。
- 當 K 棒開盤就已越過停損位置時,以該 K 棒的開盤價成交停損,而不是以停損位置成交。
- 把停損滑價加倍後重跑一次測試。結果取決於停損剛好成交在哪個價位的策略,有的是成本問題,不是優勢。
這裡適用與回測中的交易成本相同的邏輯:越緊的停損被打到的次數越多,所以更常付出這筆額外的滑價。在回測設定中,在比較任何停損版本之前,就應該先固定好手續費、滑價與下一根 K 棒成交。
如何在同一個策略上測試各種停損版本?
讓進場規則、資料、交易時段、成本與下一根 K 棒成交完全相同,只改變停損,讓每個版本跑相同的期間、通過相同的推進分析視窗,並比較串接後的樣本外結果,而不是單一的樣本內數字。
只有一次只改變一件事,測試才公平。如果版本 A 用日盤 K 棒跑,版本 B 用全時段 K 棒跑,或兩者滑價不同,結果的差異就和停損無關。
- 鎖定基礎設定。進場與出場規則、資料序列、交易時段、手續費、進場與停損的滑價,以及下一根 K 棒成交。把它們寫下來。
- 定義各版本。例如:不加停損;固定 20 個跳動點;1、2 與 3 倍 ATR;10 根 K 棒的時間停損;2 倍 ATR 的移動停損。清單要短到你能看完每一個結果。
- 讓所有版本在同一個完整期間上執行。這會給你樣本內的視角。
- 對每個版本執行相同的推進分析視窗。推進分析在一個視窗上調整、在下一個視窗上測試,所以串接後的樣本外曲線顯示停損在調整時沒看過的資料上表現如何。
- 比較各版本的樣本外期望值、最大回撤與交易筆數,如下一節所述。
你比較的每一個版本,都是從同一份資料多抽一次,而多次抽取中的最佳者有一部分是運氣。Bailey 與 López de Prado(2014)描述了許多次試驗中的最佳結果如何因這種選擇而被誇大,以及為什麼解讀時必須把試驗次數考慮進去。保持版本清單簡短,並看樣本外曲線而不是樣本內的高點,是實務上的防線。
如何解讀結果:期望值、回撤與交易筆數?
評斷一個停損,要同時看扣除成本後每筆交易的期望值、最大回撤與交易筆數;一個只把回撤降低一點,卻削弱期望值、又讓被停損出場的交易成倍增加的停損,讓策略變得更差。
把這三個數字當成一組來讀:
- 扣除成本後每筆交易的期望值。這是停損不能破壞的數字。如果它隨著停損收緊而趨近於零,這個停損就落在雜訊之內。
- 最大回撤,你可以用回撤計算器由權益序列算出來。這是停損本來應該改善的東西。如果停損收緊時它沒有下降,停損只是改變了虧損的形狀,而不是虧損的總量。
- 交易筆數。停損收緊時筆數上升,代表停損後有重新進場。每一次都要付一個一買一賣(來回)的成本。
假設範例
同樣的進場規則用在微型指數期貨上,期間同為十年、成本相同,只改變停損。數字取整數,僅供說明。
| 0.5 ATR | 1 ATR | 2 ATR | 3 ATR | 不加停損 | |
|---|---|---|---|---|---|
| 交易筆數 | 900 | 700 | 500 | 450 | 420 |
| 扣除成本後每筆期望值 | −$5 | $10 | $30 | $35 | $32 |
| 最大回撤 | $9,000 | $8,000 | $7,000 | $8,500 | $12,000 |
| 解讀 | 停損落在雜訊之內 | 仍然太緊 | 良好 | 良好 | 回撤最大 |
在 0.5 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.

