我正在学习 R(及其通过 quantmod lib 在交易任务中的应用),并定期浏览社区,从这里获得很多新知识和技巧。我对 R 的总体印象,特别是 quantmod lib - 它非常棒。
此时我需要经验丰富的 R 用户的帮助。我正在使用通过 getSymbols 下载的时间序列,我需要分别计算局部最小值/最大值的累积增长/下降。
我可以使用 FOR 循环来解决我的任务,也可以在 MS Excel 中进行必要的建模,但我想找出更简单的解决方案,不需要 FOR 循环,并且在 R 中更“原生”。
例子。
输入数据:
20121121 79810
20121122 79100
20121123 80045
20121126 81020
20121127 80200
20121128 81350
20121129 81010
20121130 80550
20121203 80780
20121204 81700
20121205 83705
20121206 83350
20121207 83800
20121210 85385
Result:
CLOSE Cumulative gr/dd
20121121 79810 N/A
20121122 79100 0.58%
20121123 80045 1.55%
20121126 81020 2.37%
20121127 80200 -0.10%
20121128 81350 0.06%
20121129 81010 -0.76%
20121130 80550 -0.82%
20121203 80780 0.73%
20121204 81700 3.78%
20121205 83705 5.19%
20121206 83350 -1.50%
20121207 83800 1.67%
20121210 85385 2.22%
计算已经在tseries http://cran.r-project.org/package=tseries封装为函数maxdrawdown
。这是其示例的开头:
mxdrwdR> # Toy example
mxdrwdR> x <- c(1:10, 9:7, 8:14, 13:8, 9:20)
mxdrwdR> mdd <- maxdrawdown(x)
mxdrwdR> mdd
$maxdrawdown
[1] 6
$from
[1] 20
$to
[1] 26
将其转换为百分比非常简单——查看函数本身的(短)代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)