%接上文的例MATLAB代碼
%累積收益率
cumret= cumprod(1+netRet)-l;plot(cumret);
[maxDrawdown maxDrawdownDuration]=…
calculateMaxDD(cumret);
[maxDrawdownmaxDrawdownDuration]=…
calculateMaxDD(cumret);
%最大挫跌,輸出結果應該是0.1053
maxDrawdown
%最長挫跌期,輸出結果應該爲497
maxDrawdownDuration
注意,上述代碼調用了子程序“calculateMaxDrawdown”,內容所示:
function [maxDDmaxDDD]=calculateMaxDD(cumret)
%[maxDD maxDDD]=calculateMaxDD(cumret)
%在累積收益率的基礎上計算最大挫跌和最長挫跌期
%將高水位線初始化爲0.
highwatermark=zeros( size(cumret));
%將挫跌初始化爲0.
drawdown = zeros(size(cumret));
%將最長挫跌期初始化爲0.
drawdownduration=zeros(size(cumret));
for t=2:length(cumret)
high watermark(t)=max(highwatermark(t-1),cumret(t));
%計算每日挫映(相對於高水位)
drawdown(t)=(1+highwatermark(t))/(1 +cumret(t))一1;
if(drawdown(t)==0)
drawdownduration(t)=0;
else
drawdownduration(t) =drawdownduration(t一1)+1;
end
end
maxDD=max(drawdown);%最大挫跌
maxDDD=max(drawdownduration);%最長挫跌期
這個程序文件可在epchan.com/book/calculateMaxDD.m下載。圖
3-1中的這段累積收益率曲線顯示了最大挫跌和最長挫跌期。

圖3-1 例3.4的最大挫跌和最長挫跌期