r - 使用日内价格计算每日收益?
问题描述
我从 09:30 到 4:00 pm 开始每天有 1 分钟的价格,我需要计算每日对数回报,即对数(当天收盘价/当天开盘价)?如何使用 R 做到这一点?
我的数据看起来像
2014-02-03 09:30:00 10.450000
2014-02-03 09:31:00 10.450000
2014-02-03 09:32:00 10.326600
2014-02-03 09:33:00 10.290000
.
.
2014-02-03 04:00:00 10.326500
...
2014-07-31 09:30:00 15.8500
2014-07-31 09:31:00 15.8600
2014-07-31 09:32:00 15.8600
.
2014-07-31 03:50:00 15.9101
2014-07-31 04:00:00 15.9300
解决方案
您可以使用apply.daily()
. 这是一个使用apply.monthly()
每日数据的示例。概念是一样的。
data(sample_matrix)
x <- as.xts(sample_matrix[,"Close"])
apply.monthly(x, function(p) log(last(p)/as.numeric(first(p))))
[,1]
2007-01-31 0.002152642
2007-02-28 0.008169076
2007-03-31 -0.032065389
2007-04-30 0.009559690
2007-05-31 -0.035670840
2007-06-30 0.002430626
您需要as.numeric()
调用,因为 xts/zoo 对象上的算术运算总是首先按索引对齐。as.numeric()
删除索引。
推荐阅读
- c# - 当我尝试调用实例对象时出现空引用异常
- cocoa - MacOS / appkit NSPrint 逻辑,用于打印长而复杂的报告
- javascript - Sqlite如何访问每个具有特定值的用户
- postgresql - 如何根据时间戳更新最新记录 - Postgres
- tensorflow - Tensorflow 数据集地图功能问题
- html - 无法让字间距 CSS 属性正常工作
- android - ImageView 上的阴影效果
- python-3.x - 如何使用 pipe() 和 apply() 根据条件更新数据框列
- javascript - 在 for 循环中将布尔值评估为真或假
- vega-lite - 如何根据条件更改 vega-lite 中的线条描边颜色