性能分析中的MaxDrawdown给出了不正确的值r
我曾尝试在一列返回数据上使用PerformanceAnalytics中的maxdrawdown函数,它在某些情况下给出了一个稍微不正确的值(在其他情况下给出了非常不正确的值)。我使用了相同的数据集,在excel中计算了maxdrawdown,方法是计算累积回报,找到运行中的最大回报,然后从这个运行中的最大回报中减去每天的累积回报。据我所知,结果列的最大值是最大缩进。在r中使用maxDrawdown函数时,我在maxDrawdown的较大值中得到了相当大的偏差 有人知道为什么会这样吗?我是否在excel中计算不同的提取指标?r中的舍入误差?任何想法都会有帮助性能分析中的MaxDrawdown给出了不正确的值r,r,performanceanalytics,R,Performanceanalytics,我曾尝试在一列返回数据上使用PerformanceAnalytics中的maxdrawdown函数,它在某些情况下给出了一个稍微不正确的值(在其他情况下给出了非常不正确的值)。我使用了相同的数据集,在excel中计算了maxdrawdown,方法是计算累积回报,找到运行中的最大回报,然后从这个运行中的最大回报中减去每天的累积回报。据我所知,结果列的最大值是最大缩进。在r中使用maxDrawdown函数时,我在maxDrawdown的较大值中得到了相当大的偏差 有人知道为什么会这样吗?我是否在ex
还有什么方法可以让我访问maxDrawdown函数的基本代码,以便更好地了解它在做什么?由于没有示例来比较结果,我们只能猜测导致偏差的原因。可能是因为
PerformanceAnalytics
使用了“几何链接”,即cumprod
而不是cumsum
您可以使用maxDrawdowns
中的geometric=FALSE
切换到简单链接,并比较结果
只需键入
maxDrawdown
和PerformanceAnalytics:::Drawdowns
即可查看代码 由于没有比较结果的例子,我们只能猜测导致偏差的原因。可能是因为PerformanceAnalytics
使用了“几何链接”,即cumprod
而不是cumsum
您可以使用maxDrawdowns
中的geometric=FALSE
切换到简单链接,并比较结果
只需键入
maxDrawdown
和PerformanceAnalytics:::Drawdowns
即可查看代码 以下代码显示了表格的问题。PerformanceAnalytics
软件包中的下拉列表
require(quantmod)
require(PerformanceAnalytics)
getSymbols("^GSPC", src="yahoo", from="2005-01-01")
ret = ROC(Ad(GSPC), type="continuous")
table.Drawdowns(ret)
From Trough To Depth Length To Trough Recovery
1 2007-10-10 2009-03-09 2014-04-02 -0.6103 1631 355 1276
2 2020-02-20 2020-03-23 <NA> -0.3610 135 23 NA
3 2018-09-21 2018-12-24 2019-07-01 -0.2025 194 65 129
4 2015-05-22 2016-02-11 2016-07-18 -0.1516 291 183 108
5 2018-01-29 2018-04-02 2018-08-27 -0.1056 147 44 103
对应于ROC
中的“连续”类型,参数geometric
应设置为FALSE
table.Drawdowns(ret, geometric = FALSE)
这就给了,
From Trough To Depth Length To Trough Recovery
1 2007-10-10 2009-03-09 2013-03-28 -0.7627 1376 355 1021
2 2020-02-20 2020-03-23 2020-08-18 -0.2214 126 23 103
3 2018-09-21 2018-12-24 2019-04-23 -0.1276 146 65 81
4 2015-05-22 2016-02-11 2016-07-11 -0.1084 286 183 103
5 2007-07-20 2007-08-15 2007-10-05 -0.0907 55 19 36
表中的默认值。Drawdowns
为TRUE。这一点需要注意。以下代码显示了表格的问题。性能分析
包中的下拉列表
require(quantmod)
require(PerformanceAnalytics)
getSymbols("^GSPC", src="yahoo", from="2005-01-01")
ret = ROC(Ad(GSPC), type="continuous")
table.Drawdowns(ret)
From Trough To Depth Length To Trough Recovery
1 2007-10-10 2009-03-09 2014-04-02 -0.6103 1631 355 1276
2 2020-02-20 2020-03-23 <NA> -0.3610 135 23 NA
3 2018-09-21 2018-12-24 2019-07-01 -0.2025 194 65 129
4 2015-05-22 2016-02-11 2016-07-18 -0.1516 291 183 108
5 2018-01-29 2018-04-02 2018-08-27 -0.1056 147 44 103
对应于ROC
中的“连续”类型,参数geometric
应设置为FALSE
table.Drawdowns(ret, geometric = FALSE)
这就给了,
From Trough To Depth Length To Trough Recovery
1 2007-10-10 2009-03-09 2013-03-28 -0.7627 1376 355 1021
2 2020-02-20 2020-03-23 2020-08-18 -0.2214 126 23 103
3 2018-09-21 2018-12-24 2019-04-23 -0.1276 146 65 81
4 2015-05-22 2016-02-11 2016-07-11 -0.1084 286 183 103
5 2007-07-20 2007-08-15 2007-10-05 -0.0907 55 19 36
表中的默认值。Drawdowns
为TRUE。这需要注意。我之前尝试切换到geometric=False,但它仍然给出了错误的值。我通过使用:colMins(as.matrix(cumsum(pdrawdown)-cummax((cumsum(pdrawdown)щ))
解决了这个问题,这就是我在excel中计算值的有效方法(pdrawdown只是根据日期返回)。这给出了与excel相同的答案。我现在担心的是这个包是完全不准确的,它会为我用它创建的缩图提供不正确的值。我之前尝试切换到geometric=False,但它仍然提供了错误的值。我通过使用:colMins(as.matrix(cumsum(pdrawdown)-cummax((cumsum(pdrawdown)щ))
解决了这个问题,这就是我在excel中计算值的有效方法(pdrawdown只是根据日期返回)。这给出了与excel相同的答案。我现在担心的是,这个包是完全不准确的,并且会为我用它创建的下拉图表提供不正确的值。我有更多的证据表明这个函数有缺陷。只需使用雅虎金融公司标准普尔500指数的每日收益。使用TTR
中的ROC
函数返回计算日志。然后提款(ret)
显示最重要的例子是从2007-10-10开始的金融危机,这是正确的。但标普500指数在2013年5月前已完全恢复。提款表显示,直到2014年4月才出现复苏。我有更多证据表明这一功能存在缺陷。只需使用雅虎金融公司标准普尔500指数的每日收益。使用TTR
中的ROC
函数返回计算日志。然后提款(ret)
显示最重要的例子是从2007-10-10开始的金融危机,这是正确的。但标普500指数在2013年5月前已完全恢复。提款表显示,直到2014年4月才出现复苏。