从一组公司的 R 中的每日收盘价计算年度对数 return

Calculating yearly log return from daily closing price in R for a panel of companies

我有一个包含 2007 年到 2020 年 34 家银行的面板数据集。我需要根据这些银行每日调整后的收盘价计算年度对数 return。数据结构如下:

导入R后的日期为POSIXct格式,价格为数字格式。总共有121323个观察。

任何人都可以帮我用代码从每日价格计算年度 returns 吗?问题之一是考虑面板数据结构,银行 A 的 return 计算必须在最后日期结束,银行 B 必须重复该过程并在最后日期结束,依此类推。在上面的数据结构中,银行 A 的 return 计算必须在 07-01-2007 结束。我尝试使用 quantmod 但没有成功。非常感谢任何帮助。

谢谢

如果数据是已发布的格式,这是一个有效的解决方案。

library(dplyr)

df1 %>%
  mutate(year = format(date, "%Y")) %>%
  group_by(bank, year) %>%
  summarize(LogReturns = log(last(price)) - log(first(price)))

测试数据

library(quantmod)

from <- as.Date("2010-01-01")
to <- Sys.Date()

getSymbols("GOOGL", from = from, to = to)
getSymbols("MSFT", from = from, to = to)

df1 <- data.frame(date = index(GOOGL), price = GOOGL[,4])
df2 <- data.frame(date = index(MSFT), price = MSFT[,4])
names(df1)[2] <- "price"
names(df2)[2] <- "price"
df1$bank <- "GOOGL"
df2$bank <- "MSFT"
df1 <- rbind(df1, df2)
rm(GOOGL, MSFT, df2)