我这学期的R作业遇到了问题。
这是我的任务,我对此感到困惑:
iv. 从 Fred 下载 1993 年 1 月 1 日至 2013 年 12 月 31 日相同样本期的 3 个月 TBill 费率。
- 有用的提示:您可能需要切碎数据以匹配采样周期。
v. 构建一个回报序列矩阵,结合样本期的股票、标准普尔500指数和TBill。
有用的提示:
-
请注意,尽管月份和年份匹配,但 TBill 的行名可能与其他两个返回序列不匹配,因为日期不匹配
-
您必须将每个系列的行名称构造为年-月格式(例如 1993-01(或从 T-bill 中删除行名,然后才能将所有三个系列合并为一个 Return 矩阵。
在使用 lm(( 函数之前,必须将返回矩阵转换为数据帧。
我在下面尝试过这个,就像我之前在 SPY 和 AAPL 中使用过 getSymbol 一样,但它提取了整个数据集而不是特定的日期范围。如何切碎数据以使其符合所需的日期范围?
getSymbols('TB3MS', src = 'FRED', from = "1993-01-01", to = "2013-12-31")
接下来,我将如何构建结合所有股票的回报序列矩阵?谁能指出我正确的方向?
过滤 xts 对象:请参阅 xts 文档中的示例?xts
。
# filter 1993 until 2013
TB3MS["1993/2013"]
但是这些日期是的,因为 tbills 是在每月的第一天,所以股票日期是该月的最后一天。使用coredata
,您可以提取 tbill 数据,并在行匹配时将其粘贴到其他时间序列中。
以您上一个问题中的数据为例,您可以执行以下操作(我正在创建比需要更多的步骤,您可以将一些语句合并为一个(:
# create monthly returns of the spy data and give the column a better name than monthly.returns
spy_returns <- monthlyReturn(SPY)
colnames(spy_returns) <- "SPY_returns"
# filter the tbill data
TB3MS_1993_2013 <- TB3MS["1993/2013"]
# add tbill data to spy data
spy_returns$TB3MS <- coredata(TB3MS_1993_2013)
合并 xts 对象只需使用merge
即可完成。它们将在日期合并。
merge(spy_returns, aapl_returns)
将把这两者结合起来。如果您有很多股票代码,请使用Reduce
(查看帮助和SO了解如何将Reduce
与merge
一起使用(,但如果允许,最好使用tidyquant包。