【发布时间】:2019-08-30 09:35:25
【问题描述】:
我的数据看起来像这样
co_code company_name co_stkdate dailylogreturn
1 A 01-01-2000 0.76
1 A 02-01-2000 0.75
.
.
.
1 A 31-12-2019 0.54
2 B 01-01-2000 0.98
2 B 02-01-2000 0.45
。 . 以此类推
我想求每周收益等于一周的每日日志收益之和。
输出应该是这样的
co_code company_name co_stkdate weeklyreturns
1 A 07-01-2000 1.34
1 A 14-01-2000 0.95
.
.
.
1 A 31-12-2019 0.54
2 B 07-01-2000 0.98
2 B 14-01-2000 0.45
我尝试在 quantmod 包中应用函数,但这些函数仅适用于 xts 对象。 xts 对象中的另一个问题是不能使用函数“group_by()”。因此,我只想在通常的数据框中工作。
代码看起来像这样
library(dplyr)
### Reading txt file
df <- read.csv("33339_1_120_20190405_165913_dat.csv")
计算每日日志回报
df <- mutate(df, "dailylogrtn"=log(nse_returns)) %>% as.data.frame()
格式化日期
df$co_stkdate<- as.Date(as.character(df$co_stkdate), format="%d-%m-%Y")
【问题讨论】:
-
根据我的交易知识了解到,几乎所有交易所都有节假日和休市日(周六和周日)。您需要创建一个数据集,该数据集应包含这些天,但这些天的交易回报为 0,以在一年中整整 52(或 53)周(取决于闰年和非闰年)。这是一个典型的练习。但是,如果您想从实际数据继续,请使用 ceiling() 按 7 天分组数据。
-
类似
DF %>% group_by(group = ceiling((1:nrow(DF)/ 7))),然后计算每个组的平均值。 -
如何进行“典型练习”?任何想法...增加天数
-
当然。一种方法是在这些天填充,因为这些是假期,我们通常在这些天开盘时采用最后一个交易日的收盘价以及收盘价。这样做是为了避免任何日期超出实际的 52 或 53 周。
标签: r date dataframe dplyr xts