楼主: Pia
9042 15

[问答] 用r做dcc-garch遇到solve-default的问题,求助! [推广有奖]

  • 0关注
  • 2粉丝

高中生

7%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
99 点
帖子
14
精华
0
在线时间
31 小时
注册时间
2012-11-30
最后登录
2015-2-11

楼主
Pia 发表于 2012-12-3 23:28:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
rt
用r做ABCP90days 和s&p500的dcc-garch的coefficientsx<-read.csv(file="1.csv",header=TRUE) >  y<-x[,2]  > > z<-x[,2]
> p=cbind(y,z) > r<-diff(log(p))
> r[,1]<-r[,1]-mean(r[,1])
> r[,2]<-r[,2]-mean(r[,2])
> T=length(r[,1]) >
library(timeSeries) 载入需要的程辑包:timeDate
> library(ccgarch)
> library(fgarch)


> f1=f1@fit$coef
> f1

omega       alpha1        beta1
0.0004556944 0.5116383451 0.6753094036

f2=garchFit(~garch(1,1),data=r[,2],include.mean=FALSE)

> f2=f2@fit$coef
> f2
       omega       alpha1        beta1
0.0004556944 0.5116383451 0.6753094036
> a=c(f1[1],f2[1])
> A=diag(c(f1[2],f2[2]))
> B=diag(c(f1[3],f2[3]))
> dccpara=c(0.01,0.98)

>dccresults=dcc.estimation(inia=a,iniA=A,iniB=B,ini.dcc=dccpara,dvar=r,model="diagonal")
到这总是显示错误于solve.default(R) : 系统计算上是奇异的: 倒条件数=2.77556e-17
,看了一下COR,结果是1,是不是由于这个原因造成的,按理说cor不会出现为1,有没有老师可以指点一下,谢谢!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:DCC-GARCH Default GARCH fault Solve library

沙发
epoh 发表于 2012-12-5 19:06:46
应该是你自己弄错了.
f1 = f2 ??

藤椅
epoh 发表于 2013-1-13 22:15:42
L=read.csv(file="data.csv",header=TRUE)

x=L[2:120,4]
y=L[2:120,3]
z=L[2:120,13]
r=cbind(y,z)
r[,1]=r[,1]-mean(r[,1])
r[,2]=r[,2]-mean(r[,2])

T=length(r[,1])

f1=garchFit(~garch(1,1),data=r[,1],include.mean = F )
f1=f1@fit$coef
#    omega    alpha1     beta1
#0.5834909 0.2208952 0.7559077

f2=garchFit(~garch(1,1),data=r[,2],include.mean = F)
f2=f2@fit$coef
#      omega      alpha1       beta1
#0.007263227 0.999999990 0.016775958

data=r[,2]
显然有问题,请检查一下.

板凳
Pia 发表于 2013-1-14 01:10:57
epoh 发表于 2013-1-13 22:15
L=read.csv(file="data.csv",header=TRUE)

x=L[2:120,4]
数据的问题,我一个是用的价格计算的收益率,另一个是直接用的的利率,利率基本在50基准点,这个不能直接这么用么?  后面进行dcc.estimation, 通过code上的那种方法得出的是DCC吗?
对于这些源数据,对数据进行过滤,在R程序中如何实现 VAR(1)过滤?
这些东西完全初学,所以问题也比较基础,希望epoh能给予帮助,谢谢!

报纸
Pia 发表于 2013-1-15 07:27:27
老师,我已经弄清楚了之前问题所在了,我想请问一下,dcc.estimation中dcc.para是怎么确定的呢?

地板
epoh 发表于 2013-1-15 11:19:18
Pia 发表于 2013-1-15 07:27
老师,我已经弄清楚了之前问题所在了,我想请问一下,dcc.estimation中dcc.para是怎么确定的呢?
ini.dcc=dcc.para,
ini.dcc : a vector of initial values for the DCC parameters (2 x 1)

dcc.para 就是initial values
设定好适当值,其接果是相近的
如底下:dcc.para  <- c(0.01,0.98)
       dcc.para1 <- c(0.02,0.95)
       dcc.para2 <- c(0.02,0.9)     
####
library(ccgarch)
set.seed(123)
nobs <- 1000; cut <- 1000
a <- c(0.003, 0.005)
A <- diag(c(0.2,0.15))
B <- diag(c(0.75, 0.8))
uncR <- matrix(c(1.0, 0.4, 0.4, 1.0),2,2)
dcc.para <- c(0.01,0.98)
dcc.data <- dcc.sim(nobs, a, A, B, uncR, dcc.para, model="diagonal")

# Estimating a DCC-GARCH(1,1) model
dcc.para1 <- c(0.02,0.95)
dcc.para2 <- c(0.02,0.9)

dcc.results <- dcc.estimation(inia=a, iniA=A, iniB=B, ini.dcc=dcc.para,dvar=dcc.data$eps, model="diagonal")
dcc.results1 <- dcc.estimation(inia=a, iniA=A, iniB=B, ini.dcc=dcc.para1,dvar=dcc.data$eps, model="diagonal")
dcc.results2 <- dcc.estimation(inia=a, iniA=A, iniB=B, ini.dcc=dcc.para2,dvar=dcc.data$eps, model="diagonal")
# Parameter estimates and their robust standard errors
dcc.results$out
#                    a1         a2        A11         A22        B11        B22   dcc alpha   dcc beta
#estimates 0.0020597062 0.00332611 0.19605728 0.190663641 0.77793259 0.78573525 0.006854594 0.98452082
#std.err   0.0007481721 0.03895612 0.04131927 0.001078035 0.02904991 0.03088621 0.006908613 0.02031203

dcc.results1$out
#                    a1         a2        A11         A22        B11        B22   dcc alpha   dcc beta
#estimates 0.0020597062 0.00332611 0.19605728 0.190663641 0.77793259 0.78573525 0.006856761 0.98453281
#std.err   0.0007481721 0.03895612 0.04131927 0.001078035 0.02904991 0.03088621 0.006904375 0.02027669

dcc.results2$out
#                    a1         a2        A11         A22        B11        B22   dcc alpha   dcc beta
#estimates 0.0020597062 0.00332611 0.19605728 0.190663641 0.77793259 0.78573525 0.006872483 0.98447394
#std.err   0.0007481721 0.03895612 0.04131927 0.001078035 0.02904991 0.03088621 0.006925764 0.02037307

7
Pia 发表于 2013-1-16 06:46:40
epoh 发表于 2013-1-15 11:19
ini.dcc=dcc.para,
ini.dcc : a vector of initial values for the DCC parameters (2 x 1)
首先谢谢老师的回答,但我还有些疑问。按您的说法,你看我这样理解对不对?
1.在dcc.estimation中所用的a <- c(0.003, 0.005)
                                   A <- diag(c(0.2,0.15))
                                    B <- diag(c(0.75, 0.8))都是通过两个unigarch的出来的,分别对应的是garchFit中的omega,alpha 和beta, 这些作为dcc.estimation中的初始值使用,ini.dcc中的数值是直接自己设定(一般设定0.01,0.98,但我也有看到设为0.2,0.6,为什么差异这么大),反正原则就是两个都为正,和小于1?如果是这样的话,我设定了一个dcc.para=c(0.02,0.95),用在计算两个ts的动态相关系数是可行的,但是用在另两个ts上得出来的结果就不对,这意味着在每次使用dcc.para都需要根据情况重新设定?
2. 把R中的dcc.estimation函数对应到模型公式上,这个dcc.para中的两个参数是通过最大化释然函数得到参数吗?

希望老师能帮助回答,先谢谢了

8
epoh 发表于 2013-1-16 15:12:36
Pia 发表于 2013-1-16 06:46
首先谢谢老师的回答,但我还有些疑问。按您的说法,你看我这样理解对不对?
1.在dcc.estimation中所用的 ...
a <- c(0.003, 0.005)
A <- diag(c(0.2,0.15))
B <- diag(c(0.75, 0.8))
都是自己给的初始值.

dcc.estimation分两阶段 :
dcc.estimation1() -- the first stage (volatility part) estimation of the (E)DCC-GARCH model.
         对应的释然函数 loglik_dcc1.R

dcc.estimation2() -- the second stage (DCC part) estimation of the (E)DCC-GARCH model
         对应的释然函数 loglik_dcc2.R (the objective function in the 2nd step DCC estimation)

9
Pia 发表于 2013-1-17 06:16:07
epoh 发表于 2013-1-16 15:12
a
谢谢epoh老师的回答。
在用dcc得到动态相关系数之后,发现在某一点这个系数存在巨大转变,有一个break存在,现在要对break进行检验,把整个数据拆成两部分,break之前和之后两个样本,作为两个模型,分别对他们做了dcc,然后计算出前后系数的mean,然后要计算稳健标准误,考虑异方差和自回归的现象,最后做t检验,按这个思路,计算稳健标准误是为了什么呢,证明即使随时间的变化,这两个样本的均值都还是能反应总体的均值吗?(我看了资料单仍然对这个不是很理解)另外这个计算稳健标准差在R程序中如何实现呢,用什么包呢?知道一个car程序包,但是没找到。
又麻烦老师了,这一路上值得学习的太多,谢谢你的帮助。

10
epoh 发表于 2013-1-24 22:34:34
Pia 发表于 2013-1-17 06:16
谢谢epoh老师的回答。
在用dcc得到动态相关系数之后,发现在某一点这个系数存在巨大转变,有一个break存 ...
VAR in DCC model example
   http://r.789695.n4.nabble.com/rg ... 83371.html#a3688600

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 03:44