【问题标题】:Calculate Returns of xts object with multiple columns计算具有多列的 xts 对象的返回
【发布时间】:2012-11-23 02:48:03
【问题描述】:

计算 (n x m) xts 对象的回报最直接的方法是什么?

当我将一个 (n x m) xts 对象 mxts 输入到 quantmod 函数 dailyReturn 中时,返回值是一个 (n x 1) 向量,表示第一列的返回值。我正在寻找的是一种生成 (n x m) xts 对象的方法,该对象包含mxts 的每一列的相应返回向量。

我尝试过使用一些应用函数,例如

lapply(mxts,dailyReturn)

但是返回的类型总是错误的并且丢失了它们的标签(dailyReturncolnames 向量的值更改为“daily.returns”)。

有没有一种简单、简单的方法来实现这一点?我可能为这个问题使用了错误的函数吗?

【问题讨论】:

  • 我更喜欢 Joshua 的 TTR::ROC,但试试这个 do.call(cbind, lapply(mxts, dailyReturn))

标签: r xts quantmod


【解决方案1】:

TTR 包中的ROC 函数会执行此操作,但您可以使用lagROC 在内部执行此操作)轻松自己进行计算。

R> require(quantmod)  # loads TTR
R> getSymbols("SPY")
R> head(ROC(OHLC(SPY)))
                SPY.Open      SPY.High       SPY.Low     SPY.Close
2007-01-03            NA            NA            NA            NA
2007-01-04 -0.0071963059 -5.686021e-03  0.0002845153  0.0021198425
2007-01-05  0.0007078143 -4.586355e-03 -0.0016370693 -0.0080082636
2007-01-08 -0.0036151023  7.071886e-05 -0.0009264869  0.0046143553
2007-01-09  0.0034735795  1.342709e-03  0.0010689472 -0.0008502799
2007-01-10 -0.0051793368 -2.118869e-04 -0.0007125045  0.0033261416

【讨论】:

  • 注意ROC默认计算日志返回,但可以用type='discrete'调用得到与dailyReturn相同的结果
猜你喜欢
  • 2011-11-25
  • 1970-01-01
  • 2013-12-30
  • 2020-06-13
  • 1970-01-01
  • 1970-01-01
  • 2022-10-02
  • 2019-02-12
  • 1970-01-01
相关资源
最近更新 更多