dornik&amp ;;在garch(1,1)中检测异常值ooms(2002)

时间:2016-07-27 18:35:09

标签: r financial volatility

我尝试使用Doornik& Sons方法在德国股票指数(dax)中找到加性和创新异常值。奥姆斯在2002年解释说:

步骤1估算基线GARCH模型以获得对数似然(lb)和残差

步骤2在t = s处找出最大(绝对值)标准化残差。估计扩展的GARCH模型,其中虚拟dt = 1 if(t = s)in mean,and dt-1 in the variance。这给出了增加的参数和log-likekihood(lm)的估计值。

步骤3如果2(lm-lb)< C然后终止:不再存在异常值,C = 5.66 + 1.88log(T)。 T是观察的数量。

数据是2014年6月2日至2016年1月1日期间的DAX(Deutscher Aktienindex)数据,我通过Datastream得到它,因为当时pdfetch无法正常工作。 我的问题是我如何将虚拟变量实现到扩展的GARCH模型中。

到目前为止我的代码:

    # Preparation:
    library("rugarch")
    library("tseries")
    library("xts")

    dax <-read.csv2("~/Bachelorarbeit/Daten/DAXINDX_Time_Series_010114_010116_final.csv", stringsAsFactors=FALSE)
    dax_xts<-xts(dax, order.by=as.Date.character(dax$Date, format="%Y-%m-%d")) #Convert into xts-format
    dax_xts$Date=NULL #Remove "Date"-Column
    storage.mode(dax_xts)<- "numeric"
    colnames(dax_xts)<-c("Dax") #Rename Column-Names

    dax.logs.prep<-diff(log(dax$Index), lag=1)
    dax.date<-dax$Date[-1]
    dax.logs<-data.frame(dax.date,dax.logs.prep)
    dax_ret<-xts(dax.logs, order.by=as.Date.character(dax.logs$Date, format="%Y-%m-%d")) #Convert into xts-format
    dax_ret$Date=NULL #Remove "Date"-Column
    storage.mode(dax_ret)<- "numeric"
    colnames(dax_ret)<-c("Index Returns") #Rename Column-Names

    # Step 1: Estimate baseline GARCH model to obtain log-likelihood and residuals
    dax_mod<-garch(dax_ret, order = c(1,1))
    l.b<-dax_mod$n.likeli
    dax_mod.res<-data.frame(dax.date, dax_mod$residuals)

    # Step 2: Find largest absolute standardized residual
    max(abs(dax_mod.res$dax_mod.residuals/sd(dax_mod.res$dax_mod.residuals,    na.rm = TRUE)), na.rm = TRUE)
    specgarch <- ugarchspec(variance.model=list(model="sGARCH", external.regressors= dummy), mean.model=list(external.regressor=dummy), distribution="norm")
    garchfit <- ugarchfit(data=dax_ret, spec=specgarch)

0 个答案:

没有答案