如何获得 r 中单个 CSV 中 100 家公司的 GARCH 波动率?
Posted
技术标签:
【中文标题】如何获得 r 中单个 CSV 中 100 家公司的 GARCH 波动率?【英文标题】:How to obtain GARCH volatility for 100 firms in a single CSV in r? 【发布时间】:2020-11-24 15:25:14 【问题描述】:我是 R 编程环境的新手。谁能帮我解决以下问题:
我有一个 .csv
文件,其中包含 100 多家公司(每家 207 天)的股票回报数据。我需要估计每个公司的GARCH
波动率,并将所有公司的输出保存在一个.csv
文件中。我的数据如下所示:
StockData
以下是我迄今为止尝试过但未成功的可重现代码:
library(fGarch)
stdata <- read.csv("StockData.csv", header = T)
out <- vector("list",c(437))
for(j in length(names(stdata[,-1])))
fit = garchFit(~arma(1,0)+garch(1,1), data = stdata[,j], trace = F)
volatility(fit)
out = as.data.frame(volatility(fit))
write.csv(out, 'volatility.csv')
输出 .csv
文件仅打印 最后一个 公司(第 100 家公司)的波动率。我还收到以下警告消息:
Warning message:
Using formula(x) is deprecated when x is a character vector of length > 1.
Consider formula(paste(x, collapse = " ")) instead.
我的预期输出如下:
SampleVolatilityOutput
请告诉我是否有办法在一个 .csv
文件中一次获取所有波动率。
【问题讨论】:
【参考方案1】:你得到你的输出,因为你覆盖了循环中每个 j 的“out”。如果将其存储在矩阵中,即每一列是一家公司的波动率,则不需要列表:
library(fGarch)
stdata <- matrix(rnorm(100 * 207), ncol = 100)
out <- matrix(rep(NA, 100*207), ncol = 100)
for (j in 1:ncol(stdata))
fit <-
garchFit(
formula = ~ arma(1, 0) + garch(1, 1),
data = stdata[, j],
trace = F
)
out[, j] = volatility(fit)
write.csv(out, 'volatility.csv')
【讨论】:
谢谢!这是救命稻草。效果很好。 虽然我之前已经计算了波动率,但我必须一次只做一家公司(我有一个截止日期!)。这对我未来的项目非常有帮助。以上是关于如何获得 r 中单个 CSV 中 100 家公司的 GARCH 波动率?的主要内容,如果未能解决你的问题,请参考以下文章