r - r中面板数据集的不同持有期收益计算
问题描述
我喜欢找到可以从这样的面板数据集中的回报列计算不同持有期回报的代码(其中最后两列是所需的输出)
Date Firms ret ret_2 ret_3
5/1/1988 A 0.5
6/1/1988 A 0.6 1.4
7/1/1988 A 0.4 1.24 2.36
8/1/1988 A 0.5 1.1 2.36
9/1/1988 A 0.6 1.4 2.36
11/1/1988 A 0.6 1.56 2.84
12/1/1988 A 0.4 1.24 2.584
13/01/1988 A 0.5 1.1 2.36
14/01/1988 A 0.6 1.4 2.36
15/01/1988 A 0.5 1.4 2.6
16/01/1988 A 0.6 1.4 2.84
18/01/1988 A 0.6 1.56 2.84
19/01/1988 A 0.4 1.24 2.584
20/01/1988 A 0.5 1.1 2.36
21/01/1988 A 0.6 1.4 2.36
22/01/1988 A 0.4 1.24 2.36
23/01/1988 A 0.5 1.1 2.36
25/01/1988 A 0.6 1.4 2.36
26/01/1988 A 0.5 1.4 2.6
27/01/1988 A 0.6 1.4 2.84
28/01/1988 A 0.5 1.4 2.6
29/01/1988 A 0.6 1.4 2.84
5/1/1988 B 0.5 1.4 2.6
6/1/1988 B 0.6 1.4 2.84
7/1/1988 B 0.6 1.56 2.84
8/1/1988 B 0.4 1.24 2.584
9/1/1988 B 0.5 1.1 2.36
11/1/1988 B 0.6 1.4 2.36
12/1/1988 B 0.6 1.56 2.84
13/01/1988 B 0.4 1.24 2.584
14/01/1988 B 0.5 1.1 2.36
15/01/1988 B 0.4 1.1 1.94
16/01/1988 B 0.5 1.1 2.15
18/01/1988 B 0.6 1.4 2.36
19/01/1988 B 0.4 1.24 2.36
20/01/1988 B 0.5 1.1 2.36
21/01/1988 B 0.5 1.25 2.15
22/01/1988 B 0.6 1.4 2.6
23/01/1988 B 0.6 1.56 2.84
25/01/1988 B 0.4 1.24 2.584
26/01/1988 B 0.5 1.1 2.36
27/01/1988 B 0.6 1.4 2.36
28/01/1988 B 0.4 1.24 2.36
29/01/1988 B 0.5 1.1 2.36
这里
ret_2= [(1 + r1) x (1 + r2)]-1, ret_3= [(1 + r1) x (1 + r2) x (1 + r3)]-1
r1 是第一期回报,r2 是第二期回报
我尝试使用这种代码
library(dplyr)
library(lubridate)
df %>%
group_by(date = format(dmy(Date), '%b-%y'), firms) %>%
summarise(ret2 = ))
但是找不到我如何构建与返回函数的持有期相关的代码。你能在这方面帮助我吗?
解决方案
使用dplyr
我们可以lag
用来计算结果
library(dplyr)
df %>%
mutate(res2 = ((1 + ret) * (1 + lag(ret))) - 1,
res3 = ((1 + ret) * (1 + lag(ret)) * (1 + lag(ret, 2))) - 1)
# Date Firms ret ret_2 ret_3 res2 res3
#1 5/1/1988 A 0.5 NA NA NA NA
#2 6/1/1988 A 0.6 1.40 NA 1.40 NA
#3 7/1/1988 A 0.4 1.24 2.360 1.24 2.360
#4 8/1/1988 A 0.5 1.10 2.360 1.10 2.360
#5 9/1/1988 A 0.6 1.40 2.360 1.40 2.360
#6 11/1/1988 A 0.6 1.56 2.840 1.56 2.840
#7 12/1/1988 A 0.4 1.24 2.584 1.24 2.584
#8 13/01/1988 A 0.5 1.10 2.360 1.10 2.360
#....
保留原始列,以便比较结果。
推荐阅读
- python - 逻辑回归数据的完全分离
- php - 我在这个 foreach 循环中做错了什么?
- javascript - 将 props 传递给封装在 HOC 中的 React Redux 连接组件
- javascript - Vue.js - 在悬停时添加删除按钮并在按下按钮时删除它
- asp.net - 用户“SQLLogin”的 Asp.net LocalDB (SQL) 登录失败
- node.js - 使用 eventemitter 监听事件
- hive - Impala - 将 MON-YY 转换为 YYYYMM
- arduino - Sony Spresense + Arduino:连接基于 W5500 的以太网,如果
- apache-spark - 每次触发后如何更新 HDFS 文件?
- javascript - 在 marklogic 中找不到来自不同数据库的模块