I was recently asked to write a survey on copulas for financial time series. The paper is, so far, unfortunately, in French, and is available on https://hal.archives-ouvertes.fr/. There is a description of various models, including some graphs and statistical outputs, obtained from read data.
The dataset is available from an excel file, oil.xls (I thought it was possible to load it direclty from the internet, but it did not work… so I suggest to download the file first, and then load it)
> library(xlsx) > temp <- tempfile() > download.file( + "http://freakonometrics.free.fr/oil.xls",temp) trying URL 'http://freakonometrics.free.fr/oil.xls' Content type 'application/vnd.ms-excel' length 99328 bytes (97 KB) downloaded 97 KB > oil=read.xlsx(temp,sheetName="DATA",dec=",") Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, : java.io.IOException: block[ 0 ] already removed - does your POIFS have circular or duplicate block references? > oil=read.xlsx("D:\\home\\acharpen\\mes documents\\oil.xls",sheetName="DATA")
Then we can plot those three time series
> head(oil) Date WTI brent Dubai Maya 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 > Time=as.Date(oil$Date,"%Y-%m-%d") > plot(Time,oil[,3],type="l",ylab="Brent, weekly log returns",ylim=range(oil[,3:5]))
The idea is to use some multivariate ARMA-GARCH processes here. The heuristics here is that the first part is used to model the dynamics of the average value of the time series, and the second part is used to model the dynamics of the variance of the time series. Two kinds of models are considered in the paper
- a mutivariate GARCH process (or a model on the dynamics of the variance matrix) on the residuals from the ARMA models
- a multivariate model (based on copulas) on the residuals of the ARMA-GARCH process