在程式交易中有許多數值來評價一個策略的特性或表現,這篇介紹其中一個重要的數值 MDD, 也稱作 “最大回撤" 或 “最大回檔" ,更嚴謹的策略品質分析中不只是看 MDD,也可能會看到2nd DD、3rd DD。發生的時間也是有相當的參考價值。這篇在介紹 MDD 定義與在 R 的應用。
Drawdown ( DD )
DD 又稱 “回撤" 或 “回檔" 也就如中文的字面意思,就是策略的 “累計獲利" 的損失。當交易出現為負的報酬,就會被稱為 DD ,DD 是一個連續虧損的概念,連續為負報酬會被紀錄為一筆 DD,而在一定期間內,如果策略的累計獲利,未形成一個損失的 peak 也會被紀錄為 DD。如下圖,紅色線段為一個 DD,而期間雖然有正報酬,但未形成一個損失的 peak 。而當第 101 筆交易打破損失形成一個 peak 才記錄成一個 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
結論
MDD 作為評測策略的標準之一,但不盡然 MDD 越小就越好,投資人在選擇投資策略時,應該將 MDD 視為該策略的風險,就自己能力可以承擔的風險下,選擇最好的投資策略。