在程式交易中有許多數值來評價一個策略的特性或表現,這篇介紹其中一個重要的數值 MDD(Max Drawdown), 也稱作 “最大回撤” 或 “最大回檔” ,更嚴謹的策略品質分析中不只是看 MDD,也可能會看到 2nd DD、3rd DD。發生的時間也是有相當的參考價值。底下介紹 MDD 的定義與在程式語言 R 中的應用。
Drawdown ( DD )
DD 又稱 “回撤” 或 “回檔” ,看的是策略 “累計獲利” 的損失,也就是損益曲線中一個波峰到波谷的距離。要注意的是波谷的確認方法,是指兩次波段高點形成的這段區間中的最低點,而 DD 就是計算前波高點到這中間低點的距離(如圖上紅線),當策略損益創新高後,前波高點又會重新計算(如圖上紅圈)。總之 DD 就是在衡量獲利回吐的程度。
Max Drawdown (MDD)
延續 DD 的概念,MDD 就是最大的一筆連續虧損,也就是 DD 中的最大值。為什麼對一個策略而言 MDD 如此重要呢? 因為一個策略不可能永遠是賺錢的狀況,MDD 則是讓我們了解到策略歷史最大的連續虧損,透過 MDD 來評量一個策略在目前市場表現的狀況,若出現連續虧損已經超過歷史的 MDD 則要考慮,這個策略在市場是否繼續有效,或是因為事件所導致的正常狀況。同時 MDD 也可以做為需要多少超額保證金的依據。
R 套件-fTrading
在這裡介紹 R 套件——fTrading,fTrading 提供簡單計算 MDD 的函數,只需要給函數累計獲利就可以計算 MDD。如下的結果,我們會得到 MDD 的值,第幾筆開始損失,第幾筆結束。
data(EuStockMarkets)
dax = log(EuStockMarkets[, "DAX"])
mdd = maxDrawDown(dax)
mdd
$maxdrawdown
[1] 0.256471
$from
[1] 236
$to
[1] 331
策略退場機制
一般人對於程式交易往往有種迷思,認為程式只要長期有紀律的執行下去就一定可以獲利,其實不然。
以台指期商品為例,臺灣期貨市場至今不過 19 年的歷史,市場上無論何種程式,最多也只不過利用了這 19 年的資料進行交易模型訓練,可以想像再過 20 年之後,期貨市場勢必有很大的不同,目前的策略將很難在未來的 20 年持續獲利,甚至可能在幾個月內就會變成一個只會虧損的策略,因此我們認為策略除了每三、五個月便應依據最新的市場變化進行檢視與微調外,也必須訂定一個明確的退場機制,當符合退場條件後,便應暫時停用該策略。
這就如同一般散戶下單,明知道這個單已經有明顯問題了,卻不願認錯,持續攤平凹單期待能翻身一樣,最終將導致鉅額虧損。
那策略什麼時候該停用?這邊介紹其中一個參考指標,就是當策略開始經歷連續的波段虧損(Drawdown),虧損金額超過操作商品的 2 倍原始保證金時,就是該進入觀察期、重新檢視與調整該策略的時候。若連續虧損金額超過 3 倍原始保證金時,即應該立即停止使用該策略。因為策略一旦超過上述條件,即代表其運作情形已經超出策略設計當初的預期,開始邁入未知的地帶。因此在此時停用會是個明確的停損點,同時我們將可鎖住策略過往大部份獲利。
有了這個明確的管理機制 ( 停損點 ),便可以保証我們過去的大部份獲利不會被侵蝕掉,協助我們未來可以更安心、更有紀律地執行各種交易策略。
結論
MDD 作為評測策略的標準之一,但不盡然 MDD 越小就越好,投資人在選擇投資策略時,應該將 MDD 視為該策略的風險,就自己能力可以承擔的情況下,選擇最好的投資策略,並在損失超出預期時停止策略的使用。
【延伸閱讀】