【发布时间】:2015-12-07 23:05:55
【问题描述】:
我想计算大量公司的财政年度回报和每日回报的标准差。我对 R 比较陌生,以前使用 SAS 来计算回报等。但是,我想在短期/中期切换到 R。
我有两个文件:1) 包含公司标识符、日期、每日收益 (df.1) 和 2) 我想汇总收益的样本 (df.2)
firm date ret
1 01/01/1992 0.024
1 02/01/1992 0.010
. . .
. . .
1 31/12/2014 0.002
2 01/01/1992 0.004
2 02/01/1992 0.012
文件非常大,大约有 1M 行。
第二个文件是这样的:
firm fiscal_year_start fiscal_year_end
1 01/01/1992 31/12/1992
1 01/01/1993 31/12/1993
1 01/01/1994 31/12/1994
我想计算财政年度回报和年化标准差。两个 .csv 文件都作为数据帧加载到 R 中。我不确定如何最好地处理日期变量以及如何构造 for 循环以遍历每日返回文件。
任何帮助将不胜感激。
编辑1
我可以使用这个函数对大数据框进行子集化:
myfunc <- function(x,y,z){df.1(df.1$date1 >= x & df.1$date1 < y & df.1$firm == firm1,]}
firm1 <- df.2$firm[1]
start_date <- df.2$StartDate[1]
end_date <- df.2$EndDate[1]
Test <- myfunc(start_date,end_date, firm1)
对于这个子集,我可以获得财政年度回报和标准:
# return
fiscal_year_ret <- with(Test, sum(Test$ret))
# annualized variance
var <- with(Test, var(Test$ret))
annualized_var <- var*length(Test)
annualized_st.dev <- sqrt(annualized_var)
我的大问题是将它嵌入到一个循环中,让我可以遍历 df.2 中的不同公司标识符和日期
EDIT2
所以我有这样的东西
df.output <- data.frame(returns=as.numeric(),
std.deviation=as.numeric(),
stringsAsFactors=FALSE)
我想用结果填充上述数据框。
for (i in sample) {
myfunc <- function(x,y,z){df.1[df.1$date1 >= x & df.1$date1 < y & df.1$firm == firm1,]}
firm1 <- df.2$firm[i]
start_date <- df.2$StartDate[i]
end_date <- df.2$EndDate[i]
subset <- myfunc(start_date,end_date, firm1)
# return
fiscal_year_ret <- with(subset, sum(subset$ret))
df.output$returns <-fiscal_year_ret
# variance
var <- with(subset, var(subset$ret))
annualized_var <- var*length(subset)
annualized_st.dev <- sqrt(annualized_var)
}
类似的东西。
【问题讨论】:
-
查看
quantmod包