当从单变量波动率预测跳到多变量波动率预测时,咱们须要明白,如今咱们不只要预测单变量波动率元素,还要预测协方差元素。假设你有两个序列,那么这个协方差元素就是2乘2方差-协方差矩阵的对角线。咱们应该使用的准确术语是 "方差-协方差矩阵",由于该矩阵由对角线上的方差元素和非对角线上的协方差元素组成。可是因为读 "方差-协方差矩阵 "很是累人,因此一般被称为协方差矩阵,或者有时不太正式地称为var-covar矩阵。算法
若是你还在读这篇文章,说明你在创建相关关系模型方面有一些经验。鉴于你知道各个序列的方差,相关和协方差之间的联系是直接的。 网络
因此当我第一次研究这个问题时,我不明白为何咱们不单独创建全部非对角线的模型,例如使用样本成对相关的滚动窗口呢?你想有一个有效的相关矩阵,这意味着对称(很容易施加)和正负无限。ide
首先,为何非负定属性很重要,其次,为何它不容易施加。把非负定属性看做是多变量的,至关于单变量状况下对波动率的正向施加。你不会想让你的模型生成负的波动率吧?在单变量的状况下,乘以任何平方数,咱们均可以保持在正数的范围内。在更高的维度上,确保协方差的 "正性 "涉及到乘法,不是乘以一个平方的标量,而是乘以一个 "平方 "的矢量。
3d
将XC表示为居中的随机变量X,因此 。如今根据定义
是一个协方差矩阵,显然是非负定的。如今,若是咱们用矩阵乘以一个 "平方 "向量,
咱们能够将向量 "插入 "指望值中(由于(1)向量不是随机变量,以及(2)指望算子的线性)。咱们(应该)仍然获得非负定矩阵
。 你用哪一个向量
并不重要,由于它是 "平方 "的。blog
若是咱们对协方差条目进行单独建模,并将它们 "修补 "成一个矩阵,将每一个成对的协方差放在正确的位置(例如,变量1和变量3之间的协方差在条目和
,不能保证咱们最终获得一个非负定的矩阵。因为不存在非负定的协方差矩阵,那么咱们就有可能获得一个无效的协方差矩阵。递归
从业人员因为摆脱了繁琐的学术判断过程,可能会摆脱这个理论上的失误。然而,还有其余问题,在本质上是计算上的问题。一个非负的无限矩阵能够有零或负的行列式。在许多贝叶斯的应用中,咱们但愿使用精确矩阵而不是协方差矩阵。为了计算精确矩阵,咱们简单地反转协方差矩阵,但这意味着咱们要除以行列式,所以,行列式为零就会产生问题。
get
文献中的主要构建模块是GARCH过程。假设咱们有一个随机变量,咱们能够用它的波动率来建模。 it
(1) io
很容易理解。对于今天的波动率来讲,重要的是昨天的波动率,特别强调的是昨天的冲击,
。请记住,若是
,那么
仅仅是对方差
的估计,而没有考虑到t-1之前的任何状况。
class
如今,添加另外一个随机变量 。你如今有两个波动率和一个协方差项。可是,为何不以向量自动回归(VAR)扩展自动回归的一样方式来扩展这个过程?进入VEC模型。
(2)
这里是一个矢量化运算符,将一个矩阵做为一个矢量进行堆叠。因为矩阵的对称性,咱们不须要全部的系数,因此更好的表述:
(3)
这个模型背后的直觉与VAR的基础是同样的。也许当股票的波动率高时,债券的波动率就低,也许当债券的波动率高时,与股票的协方差就高,等等。
这个模型的一个潜在问题,也是与VAR类似的,就是波动率是独立的过程,这意味着只有A和B的对角线是重要的,在这种状况下,咱们只是用没必要要的估计噪音来干扰这个模型。以前提到的另外一个计算问题是,因为咱们没有对矩阵过程自己进行建模,而是对三个项逐一进行建模,因此咱们不能确保结果是一个有效的协方差矩阵,特别是没有施加非负-无限约束。BEKK模型(Baba, Engle, Kraft and Kroner, 1990)取得了这一进展。有一个很好的理由不详细讨论这些 "第一代 "模型。它们对于少数几个变量来讲是很是难以估计的。我没有亲自尝试过那些模型。对于这些模型,即便人们成功地进行了估计,就实践者而言,估计的复杂性给结果带来了很大问题。
恩格尔(2002)在其开创性的论文中提出了下一个重要的步骤,随后文献中出现了一个高潮。"Dynamic Conditional Correlation: 一类简单的多变量广义自回归条件异方差模型"。从摘要中能够看出:"这些(模型)具备单变量GARCH模型的灵活性,加上参数化的相关模型"。这类条件相关模型的关键切入点是要认识到
(4)
是一个矩阵,对角线上是各个序列的波动率(如今单独估计),对角线外是零。这只是以矩阵形式对咱们开始时的常规方程进行了处理。
,由于
。如今具有几个条件:
如今咱们进行估计。
让咱们获得一些数据。咱们提取三个ETF的过去几年的数据。SPY(追踪标准普尔500指数),TLT和IEF(分别追踪长期和中期债券)。
k <- 3 # 多少年数据 sym = c('SPY', 'TLT', "IEF") # 标准普尔500指数,长期和中期债券,全部ETFs for (i in 1:l)getSymbols(sym[i], src="yahoo", from=start, to=end) ret <- na.omit(ret)# 删除第一个观察值
如今来演示如何使用CCC和DCC模型构建协方差矩阵。咱们首先获得单变量波动率。咱们须要它们,它们位于对角线矩阵的对角线上。咱们用重尾的不对称GARCH来估计它们。
garch(distribution="std") #std是学生t分布 volatilityfit # 用一个矩阵来保存三种资产的波动率 for (i in 1:l) model = ugarchfit(spec,ret[,i])
如今,一旦咱们有了,咱们就可以建立基于CCC和DCC的协方差矩阵。对于CCC(恒定条件相关),咱们使用样本相关矩阵,而对于DCC(动态),咱们使用基于例如3个月的移动窗口估计的相关矩阵。
# 建立一个CCC模型的协方差 nassets <- l # 为了提升可读性,l看起来太像1了。 # 为不一样时期的矩阵制做容器。 array(dim=c(n, nassets, TT)) # 计算样本无条件的相关矩阵。 samp_cor <- cor(ret) # 在整个循环过程当中会保持不变 wind <- 60 # 大概三个月的时间 for (i in (w+1):TT) (volatilitfit[i,])*diag(assets) cov_ccc cor_tv cov_dcc<- dt %*% cor_tv[,,i] %*% dt
结果按年计算,并乘以100,转为百分比,以提升可读性。绘制它。
par()$mar # 边距 plot(ann*cov_ccc[1,1,]~time plot(ann*cov_ccc[1,2,]~time)
在上图中,咱们有协方差矩阵的对角线。咱们看到(1)中期债券的波动性最低,正如预期的那样,(2)SPY的波动性很大,方差也很高。(3) 曲线长端的方差高于中期的方差,这是收益率曲线文献中一个典型的事实。(4) 有趣的是,长期债券的波动性一直在上升,这多是对即将提升政策利率的高度警觉。
在下图中,咱们有三个协方差项,一次是假设CCC的估计(实线),一次是假设DCC的估计(虚线)。对于中期和长期债券之间的协方差,若是你假设恒定或动态相关矩阵,并不重要。然而,这对SPY与债券的协方差项确实很重要。例如,基于DCC的协方差矩阵认为在2013年中期股票和债券之间的协方差几乎为零,而基于CCC的协方差则代表在此期间的协方差为负。到底是恒定的仍是动态的,对跨资产投资组合的构建可能有很大的影响。
最受欢迎的看法
1.HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频波动率
2.R语言中基于混合数据抽样(MIDAS)回归的HAR-RV模型预测GDP增加
3.波动率的实现:ARCH模型与HAR-RV模型
4.R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
5.GARCH(1,1),MA以及历史模拟法的VaR比较
6.R语言多元COPULA GARCH 模型时间序列预测
7.R语言基于ARMA-GARCH过程的VAR拟合和预测
8.matlab预测ARMA-GARCH 条件均值和方差模型
9.R语言对S&P500股票指数进行ARIMA + GARCH交易策略