ewma模型r语言loop_R语言COPULA和金融时间序列案例

news/2024/9/16 18:03:03

最近我被要求撰写关于金融时间序列的copulas的调查。 从读取数据中获得各种模型的描述,包括一些图形和统计输出。> oil = read.xlsx(temp,sheetName =“DATA”,dec =“,”)

> oil = read.xlsx(“D:\\ home \\ acharpen \\ mes documents \\ oil.xls”,sheetName =“DATA”)

然后我们可以绘制这三个时间序列1 1997-01-10 2.73672 2.25465 3.3673 1.5400

2 1997-01-17 -3.40326 -6.01433 -3.8249 -4.1076

3 1997-01-24 -4.09531 -1.43076 -6.6375 -4.6166

4 1997-01-31 -0.65789 0.34873 0.7326 -1.5122

5 1997-02-07 -3.14293 -1.97765 -0.7326 -1.8798

6 1997-02-14 -5.60321 -7.84534 -7.6372 -11.0549

这个想法是在这里使用一些多变量ARMA-GARCH过程。这里的启发式是第一部分用于模拟时间序列平均值的动态,第二部分用于模拟时间序列方差的动态。本文考虑了两种模型关于ARMA模型残差的多变量GARCH过程(或方差矩阵动力学模型)

关于ARMA-GARCH过程残差的多变量模型(基于copula)

因此,这里将考虑不同的系列,作为不同模型的残差获得。我们还可以将这些残差标准化。来自ARMA模型> fit1 = arima(x = dat [,1],order = c(2,0,1))

> fit2 = arima(x = dat [,2],order = c(1,0,1))

> fit3 = arima(x = dat [,3],order = c(1,0,1))

> m < - apply(dat_arma,2,mean)

> v < - apply(dat_arma,2,var)

> dat_arma_std < - t((t(dat_arma)-m)/ sqrt(v))

或者来自ARMA-GARCH模型> fit1 = garchFit(formula = ~arma(2,1)+ garch(1,1),data = dat [,1],cond.dist =“std”)

> fit2 = garchFit(formula = ~arma(1,1)+ garch(1,1),data = dat [,2],cond.dist =“std”)

> fit3 = garchFit(formula = ~arma(1,1)+ garch(1,1),data = dat [,3],cond.dist =“std”)

> m_res < - apply(dat_res,2,mean)

> v_res < - apply(dat_res,2,var)

> dat_res_std = cbind((dat_res [,1] -m_res [1])/ sqrt(v_res [1]),(dat_res [,2] -m_res [2])/ sqrt(v_res [2]),(dat_res [ ,3] -m_res [3])/ SQRT(v_res [3]))

===

多变量GARCH模型

可以考虑的第一个模型是协方差矩阵的多变量EWMA,> ewma = EWMAvol(dat_res_std,lambda = 0.96)

要想象波动性,请使用> emwa_series_vol = function(i = 1){

+ lines(Time,dat_arma [,i] + 40,col =“gray”)

+ j = 1

+ if(i == 2)j = 5

+ if(i == 3)j = 9

隐含的相关性在这里> emwa_series_cor = function(i = 1,j = 2){

+ if((min(i,j)== 1)&(max(i,j)== 2)){

+ a = 1; B = 9; AB = 3}

+ r = ewma $ Sigma.t [,ab] / sqrt(ewma $ Sigma.t [,a] *

+ ewma $ Sigma.t [,b])

+ plot(Time,r,type =“l”,ylim = c(0,1))

+}

也可能有一些多变量GARCH,即BEKK(1,1)模型,例如使用:> bekk = BEKK11(dat_arma)

> bekk_series_vol function(i = 1){

+ plot(Time, $ Sigma.t [,1],type =“l”,

+ ylab = (dat)[i],col =“white”,ylim = c(0,80))

+ lines(Time,dat_arma [,i] + 40,col =“gray”)

+ j = 1

+ if(i == 2)j = 5

+ if(i == 3)j = 9

> bekk_series_cor = function(i = 1,j = 2){

+ a = 1; B = 5; AB = 2}

+ a = 1; B = 9; AB = 3}

+ a = 5; B = 9; AB = 6}

+ r = bk $ Sigma.t [,ab] / sqrt(bk $ Sigma.t [,a] *

+ bk $ Sigma.t [,b])

从单变量GARCH模型中模拟残差

第一步可能是考虑残差的一些静态(联合)分布。单变量边际分布是

而关节密度的轮廓(使用双变量核估计器获得)

也可以将copula密度可视化(顶部有一些非参数估计,下面是参数copula)> copula_NP = function(i = 1,j = 2){

+ n = nrow(uv)

+ s = 0.3

+ norm.cop < - normalCopula(0.5)

+ norm.cop < - normalCopula(fitCopula(norm.cop,uv)@estimate)

+ dc = function(x,y)dCopula(cbind(x,y),norm.cop)

+ ylab = names(dat)[j],zlab =“copule Gaussienne”,ticktype =“detailed”,zlim = zl)

+

+ t.cop < - tCopula(0.5,df = 3)

+ t.cop < - tCopula(t.fit [1],df = t.fit [2])

+ ylab = names(dat)[j],zlab =“copule de Student”,ticktype =“detailed”,zlim = zl)

+}

可以考虑这个

​功能,

计算三对系列的经验版本,并将其与一些参数版本进行比较,>

> lambda = function(C){

+ l = function(u)pcopula(C,cbind(u,u))/ u

+ v = Vectorize(l)(u)

+ return(c(v,rev(v)))

+}

>

> graph_lambda = function(i,j){

+ X = dat_res

+ U = rank(X [,i])/(nrow(X)+1)

+ V = rank(X [,j])/(nrow(X)+1)

+ normal.cop < - normalCopula(.5,dim = 2)

+ t.cop < - tCopula(.5,dim = 2,df = 3)

+ fit1 = fitCopula(normal.cop,cbind(U,V),method =“ml”)

d(U,V),method =“ml”)

+ C1 = normalCopula(fit1 @ copula @ parameters,dim = 2)

+ C2 = tCopula(fit2 @ copula @ parameters [1],dim = 2,df = trunc(fit2 @ copula @ parameters [2]))

+

但人们可能想知道相关性是否随时间稳定。E:> time_varying_correl_2 = function(i = 1,j = 2,

+ nom_arg =“Pearson”){

+ uv = dat_arma [,c(i,j)]

nom_arg))[1,2]

+}

> time_varying_correl_2(1,2)

> time_varying_correl_2(1,2,“spearman”)

> time_varying_correl_2(1,2,“kendall”)

斯皮尔曼与时间排名相关

或肯德尔

为了模型的相关性,考虑DCC模型(S)> m2 = dccFit(dat_res_std)

> m3 = dccFit(dat_res_std,type =“Engle”)

> R2 = m2 $ rho.t

> R3 = m3 $ rho.t

要获得一些预测, 使用例如> garch11.spec = ugarchspec(mean.model = list(armaOrder = c(2,1)),variance.model = list(garchOrder = c(1,1),model =“GARCH”))

> dcc.garch11.spec = dccspec(uspec = multispec(replicate(3,garch11.spec)),dccOrder = c(1,1),

distribution =“mvnorm”)

> dcc.fit = dccfit(dcc.garch11.spec,data = dat)

> fcst = dccforecast(dcc.fit,n.ahead = 200)


http://www.niftyadmin.cn/n/1999974.html

相关文章

day22(过滤器Filter)

过滤器 生命周期&#xff1a;初始化 -----过滤-------销毁 作用&#xff1a;过滤url &#xff0c;特定字符 创建方式&#xff1a;实现一个接口继承Filter  package com.baidu.filter;import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterCh…

一个女强人的经历

一个女强人的经历98年到现在&#xff0c;我一直迈着浮躁的步伐走着我的技术之路。有时候想到底是我从未走近技术&#xff0c;还是技术抛弃了我&#xff0c;还是说大环境让我无法深入某个技术领域&#xff1f;怎么给自己定位? 我显得如此迷惘。98年我还在上大一&#xff0c;从小…

4g镜像安装 centos7_使用KVM制作OpenStack QCOW2格式镜像

1. Centos7安装KVM1.1. 安装相关软件包yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python virt-manager libvirt-client virt-install virt-viewer -yqemu-kvm: KVM模块libvirt: 虚拟管理模块virt-manager: 图形界面管理虚拟机virt-install: 虚拟机命令行安装…

获得本地IP

//一些定义&#xff1a;// hostent declare/*struct hostent { char FAR * h_name; // official name of host char FAR * FAR * h_aliases; // alias list short h_addrtype; // host address type short h…

SSH之struts.xml

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <!-- 使用…

django 模板两次for循环_在Django模板中安全地包含JavaScript数据

Django模板通常用于将数据传递给JavaScript代码。不幸的是&#xff0c;如果实现的不正确的话&#xff0c;就可能会增加HTML注入的可能性&#xff0c;从而导致XSS(跨站点脚本)攻击。这是我在Django项目中遇到的最常见的安全问题之一。事实上&#xff0c;我几乎在每一个大型Djang…

C#使用Xamarin开发可移植移动应用进阶篇(10.综合演练,来一份增删改查CRUD)

前言系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 呃 也有半个月没更新了. 本来这篇的Demo早就写完了,文章也构思好了.迟迟没发布..是因为实在太忙.. 项目要上线..各种 你们懂的.. 正赶上自…

url中能出现的字符_基础篇:一文读懂JAVA.IO、字符编码、URL和Spring.Resource

1 http://JAVA.IO字节流LineNumberInputStream和StringBufferInputStream官方建议不再使用&#xff0c;推荐使用LineNumberReader和StringReader代替ByteArrayInputStream和ByteArrayOutputStream 字节数组处理流&#xff0c;在内存中建立一个缓冲区作为流使用&#xff0c;从缓…