我正在尝试设计一个计算 30 天滚动波动率的函数。我有一个包含 3 列的文件:日期和 2 只股票的每日回报。
我怎样才能做到这一点?我在总结前 30 个条目以获得我的 vol 时遇到问题。
编辑:
因此它将读取一个包含 3 列的 excel 文件:日期和每日收益。
daily.ret = read.csv("abc.csv")
例如日期 stock1 stock2 01/01/2000 0.01 0.02
等等等等,有多年的数据。我想计算滚动 30 天的年化成交量。这是我的功能:
calc_30day_vol = function()
{
stock1 = abc$stock1^2
stock2 = abc$stock1^2
j = 30
approx_days_in_year = length(abc$stock1)/10
vol_1 = 1: length(a1)
vol_2 = 1: length(a2)
for (i in 1 : length(a1))
{
vol_1[j] = sqrt( (approx_days_in_year / 30 ) * rowSums(a1[i:j])
vol_2[j] = sqrt( (approx_days_in_year / 30 ) * rowSums(a2[i:j])
j = j + 1
}
}
所以 stock1 和 stock 2 是来自 excel 文件的每日收益的平方,需要计算 vol。vol_1 和 vol_2 的条目 1-30 为空,因为我们正在计算 30 天的 vol。我正在尝试使用 rowSums 函数对前 30 个条目的每日收益平方求和,然后在每次迭代中向下移动索引。所以从第 1-30 天、第 2-31 天、第 3-32 天等开始,这就是我定义“j”的原因。
我是 R 的新手,如果这听起来很愚蠢,我深表歉意。