r - 每天计算多期股票收益
问题描述
我想每天计算多期(每日、每月、每周、每季度等)股票收益。基本上,我有以下数据集,我想添加其他列,在这些列中,对于每一天,我都有每周、每月、每季度等的回报。
library(tidyquant)
library(dplyr)
MSFT <- na.omit(SP500) %>% select(c('symbol', 'date', 'adjusted')) %>%
filter(symbol=='MSFT') %>%
tq_mutate(select = adjusted, mutate_fun = dailyReturn, col_rename = 'simple_daily')
使用 tidyquant 包,例如,如果我使用该monthlyReturn
函数,我只能在每个月底获得回报。相反,我想要的是我的数据集每一天的每月回报。
有没有办法将此函数应用于我的数据集的每个观察(天)?有关执行此过程的替代方案的任何建议?
非常感谢,
伊曼纽尔
解决方案
lag
您需要使用20 个工作日的数据来计算回报,如下所示:
library(dplyr
df <- data.frame(symbol="MSFT",Price=runif(40))
df%>%
mutate(monthly_return=Price/lag(Price,20)-1)
symbol Price monthly_return
1 MSFT 0.06606346 NA
2 MSFT 0.93950484 NA
3 MSFT 0.35694822 NA
4 MSFT 0.50215478 NA
5 MSFT 0.55052927 NA
6 MSFT 0.10507392 NA
7 MSFT 0.70965491 NA
8 MSFT 0.73443583 NA
9 MSFT 0.18867477 NA
10 MSFT 0.47592981 NA
11 MSFT 0.47760796 NA
12 MSFT 0.10975491 NA
13 MSFT 0.67172197 NA
14 MSFT 0.65957624 NA
15 MSFT 0.53295690 NA
16 MSFT 0.60927845 NA
17 MSFT 0.34113058 NA
18 MSFT 0.55938078 NA
19 MSFT 0.19547903 NA
20 MSFT 0.25671083 NA
21 MSFT 0.05525222 -0.16364940
22 MSFT 0.85370547 -0.09132403
23 MSFT 0.14294135 -0.59954598
24 MSFT 0.39539573 -0.21260188
25 MSFT 0.93238011 0.69360678
26 MSFT 0.20216682 0.92404382
27 MSFT 0.75496007 0.06384112
28 MSFT 0.62566157 -0.14810588
29 MSFT 0.57485095 2.04678225
30 MSFT 0.36178250 -0.23984063
31 MSFT 0.78743389 0.64870344
32 MSFT 0.92720872 7.44799343
33 MSFT 0.25836030 -0.61537614
34 MSFT 0.36156615 -0.45182053
35 MSFT 0.65566870 0.23024713
36 MSFT 0.17325979 -0.71563119
37 MSFT 0.55117234 0.61572246
38 MSFT 0.31505656 -0.43677621
39 MSFT 0.21256675 0.08741456
40 MSFT 0.44369580 0.72838754
推荐阅读
- mysql - 在 MySQL 或类似数据库中存储类似数组的数据的最佳实践?
- java - spring-ws:使用 ClientInterceptor 修改 Soap Header
- ios - Xcode 支持特殊字符
- node.js - 续集操纵操作
- ssas - 导入在 SSAS 中意外删除的列
- sql - 数组输出的正则表达式
- django - Django 内置 url 'logout' 反向 URL 正在返回一个相对路径
- javascript - 在 Pug 中循环多个变量
- html - CountryDropdown 看起来类似于默认的 Select 样式
- c# - Console.Clear() 没有清除控制台