Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

maxdrawdown

计算一个或多个价格序列的最大回撤

说明

示例

MaxDD = maxdrawdown(Data) 计算每个序列的最大回撤并在长度为 N 的向量 MaxDD 中返回,还可标识每个序列的最大回撤周期的开始和结束索引并在 2×N 矩阵 MaxDDIndex 中返回。

示例

MaxDD = maxdrawdown(___,Format) 添加了一个可选参量 Format

示例

[MaxDD,MaxDDIndex] = maxdrawdown(___) 添加了一个可选输出 MaxDDIndex

示例

全部折叠

使用包含基金、市场和现金序列的示例数据计算最大回撤 (MaxDD):

load FundMarketCash
MaxDD = maxdrawdown(TestData)
MaxDD = 1×3

    0.1658    0.3381         0

基金序列在给定时间段内的最大跌幅为 16.58%,市场序列为 33.81%。正如预期的那样,现金序列并未下降,因为现金账户永远不会贬值。

maxdrawdown 还会在可选输出参量中返回每个序列的最大回撤区间的索引 (MaxDDIndex)。

[MaxDD, MaxDDIndex] = maxdrawdown(TestData)
MaxDD = 1×3

    0.1658    0.3381         0

MaxDDIndex = 2×3

     2     2   NaN
    18    18   NaN

数据显示前两个序列从第 2 个月到第 18 个月经历了其最大回撤。第三个序列的索引是 NaN,因为它根本没有出现回撤。

基金序列从第 2 个月到第 18 个月的 16.58% 亏损可以通过报告的索引进行验证。

Start = MaxDDIndex(1,:);
End = MaxDDIndex(2,:);
(TestData(Start(1),1) - TestData(End(1),1))/TestData(Start(1),1)
ans = 0.1658

ans = 0.1658

虽然最大回撤是用收益来测量的,但 maxdrawdown 还可以用价值绝对下降或对数收益来测量回撤。要更清晰地对比这些备选方法,您可以使用基金序列来进行验证,假定初始投资为 50 美元:

Fund50 = 50*TestData(:,1);
plot(Fund50);
title('\bfFive-Year Fund Performance, Initial Investment 50 usd');
xlabel('Months');
ylabel('Value of Investment');

Figure contains an axes object. The axes object with title Five-Year Fund Performance, Initial Investment 50 usd, xlabel Months, ylabel Value of Investment contains an object of type line.

首先,计算标准最大回撤,它与上述结果一致,因为收益与初始投资金额无关。

MaxDD50Ret = maxdrawdown(Fund50)
MaxDD50Ret = 0.1658

接下来,使用 'arithmetic' 参量计算价值的最大下降。

[MaxDD50Arith, Ind50Arith] = maxdrawdown(Fund50,'arithmetic')
MaxDD50Arith = 8.4285
Ind50Arith = 2×1

     2
    18

此项投资的价值在第 2 个月为 50.84 美元,但到第 18 个月价值下降到 42.41 美元,下降了 8.43 美元。这是给定时间段内美元价值从上一高位以来的最大亏损。在这种情况下,最大回撤期是相同的,即无论是以收益还是美元亏损的形式来测量,最大回撤期都是从第 2 个月到第 18 个月。

[MaxDD50LogRet, Ind50LogRet] = maxdrawdown(Fund50,'geometric')
MaxDD50LogRet = 0.1813
Ind50LogRet = 2×1

     2
    18

请注意,上一个计算等效于找到序列对数的算术最大回撤。

MaxDD50LogRet2 = maxdrawdown(log(Fund50),'arithmetic')
MaxDD50LogRet2 = 0.1813

输入参数

全部折叠

总收益价格序列,指定为 T×N 矩阵,包含 N 个总收益价格序列的 T 个样本。

数据类型: double

Data 格式,指定为具有以下可能值的字符向量:

  • 'return'(默认值)- 以相对于峰值的最大下降百分比表示的最大回撤。

  • 'arithmetic'

    - 使用以下方程计算的带漂移项(峰谷数据差)的算术布朗运动的最大回撤

    dX(t)=μdt+σdW(t).

  • 'geometric'

    - 使用以下方程计算带漂移项(峰谷对数差)的几何布朗运动的最大回撤

    dS(t)=μ0S(t)dt+σ0S(t)dW(t)

数据类型: char

输出参量

全部折叠

最大回撤,以 1×N 向量形式返回,其中包含 N 个时间序列中每一个序列对应的最大回撤。

注意

  • 回撤是从周期开始到结束的总收益下降的百分比。如果总权益时间序列在整个周期内增加,则回撤为 0。否则,回撤是一个正数。最大回撤是下跌风险的事前代理,计算在最大回撤是下跌风险的事前代理,计算在所有时间期间中某一时间内可能形成的最大回撤。

  • 最大回撤对量化误差很敏感。

每个总权益时间序列的每个最大回撤期的开始和结束索引,以开始和结束索引组成的 2×N 向量形式返回。向量的第一行包含每个最大回撤期的开始索引,第二行包含结束索引。

参考

[1] Christian S. Pederson and Ted Rudholm-Alfvin. "Selecting a Risk-Adjusted Shareholder Performance Measure." Journal of Asset Management. Vol. 4, No. 3, 2003, pp. 152–172.

版本历史记录

在 R2006b 中推出