電子信箱 service [at] bituzi.com
幣圖誌首頁 facebook粉絲團 google plus google plus

累計損益的回檔,DD怎麼用R寫?


交易最怕遇到獲利回檔(DrawDown),我們簡稱為DD,雖然DD人人討厭,但這是不可避免的。也只有DD,才能換來獲利創新高。重點在你如何控制好DD!

本篇我想跟大家介紹一下如何用R語言畫出累計損益曲線上的DD。如果你對R完全陌生,把下面的程式碼複製貼上就能執行瞜~

首先我們要先有每次交易的損益向量,隨機產生用 profit 表示如下:


profit = sample(-20:25, 200, replace=TRUE)    ##隨機產生損益向量

DD = rep(0, length(profit))     ##產生向量,記錄目前DD
topprofit = rep(profit[1], length(profit))    ##紀錄過去的最高累計獲利

for (m in 2:length(profit)){    ##開始計算損益向量裡的回檔
     if (sum(profit[1:m]) > topprofit[m-1]){   
     ##目前累計獲利 > 過去最高獲利 i.e.創新高

          topprofit[m:length(profit)]=sum(profit[1:m])  
          ## 更新創新高的值到 topprofit

     }
     DD[m]=sum(profit[1:m])-topprofit[m]
     ## DD的定義: 目前累計獲利 - 歷史新高
}

ts.plot(cbind(cumsum(profit),DD),col=c("red","blue"))  ##畫圖

for (m in 2:length(profit)){
     if (topprofit[m]>topprofit[m-1]){
          points(m,topprofit[m],pch=4,col="purple")
     }     ##當獲利創新高,打個紫色XX
}

abline(h=0,col="green") ##畫水平線

完成後,就會如下圖所示瞜~ 
(ps: 由於每個人的損益向量是隨機產生,所以每個人的圖都不一樣)






0 意見: