I am a new user to R and try to calculate weekly auto correlation between 2 financial time series with ccf function.
Here is my code:
SPX_ImpliedVola_ts<-ts(SPX_ImpliedVola$x, start=c(2005), end=c(2014), freq=52)
SPX_GSV_ts<-ts(SPX_GSV$x, start=c(2005), end=c(2014), freq=52)
plot(ccf(SPX_ImpliedVola_ts,SPX_GSV_ts, type= "correlation"))
The results of ccf function make sense, but the labelling of x-axis is wrong. My lags should be weeks. The plot function uses years instead and therefore on lag is =1/52. I do not have enough reputation points to post the plot
Is there an easy way to format the x axis, so that 1 lag = 1 week?
Here is my data for the year 2013:
SPX_GSV_ts
structure(c(-0.172545978, -0.085914629, -0.051152522, -0.191885526,
0.10720997, 0.120573931, 0.123062732, -0.073231914, 0.122783425,
-0.073231914, -0.091330136, -0.108595771, -0.149988456, -0.077412223,
0.017728767, -0.057991947, -0.04522754, 0.098925304, 0.019744058,
-0.042403849, 0.097955247, 0.060480747, -0.096910013, 0.04275198,
-0.111150452, -0.123384909, 0.020203386, 0.02540458, 0.046743404,
0.046743404, 0.096910013, -0.029289376, -0.020203386, 0.019305155,
0.124938737, 0.071494417, 0.080655932, 0.032184683, -0.072195125,
0.08058446, 0.109144469, -0.116215168, -0.003792989, -0.011685758,
0.033281387, -0.011685758, 0.044203662, -0.137383556, -0.023912157,
0.023065304, 0.037141808, -0.128799157, -0.036045104), .Tsp = c(2013,
2014, 52), class = "ts")
SPX_ImpliedVola_ts:
structure(c(0.1551244, 0.1764986, 0.169477, 0.1509566, 0.14180975,
0.1455916, 0.1320918, 0.150884, 0.1519094, 0.1670364, 0.1769658,
0.1491722, 0.14883, 0.13545475, 0.134158, 0.1292596, 0.13465,
0.14380075, 0.136281, 0.1350982, 0.1384192, 0.1467728, 0.161534,
0.14764, 0.1332734, 0.1353106, 0.126313, 0.1268324, 0.1200864,
0.1242202, 0.127857, 0.1382412, 0.1319932, 0.1441192, 0.1316964,
0.1217246, 0.1262966, 0.11574475, 0.1166192, 0.1231602, 0.119756,
0.10622025, 0.1133376, 0.1245488, 0.1124368, 0.11566475, 0.1196388,
0.1003482, 0.0994486, 0.0972232, 0.10798775, 0.1115012, 0.1148464
), .Tsp = c(2013, 2014, 52), class = "ts")
It seems that ccf
does not plot the number of lags properly for ts
class. You need to change the class of your data to data.frame
to get the proper number of lags on the x-axis. You can use the following code:
ccf.results<-ccf(data.frame(SPX_ImpliedVola_ts),data.frame(SPX_GSV_ts), type= "correlation", ylab="Auto-correlation", main="Weekely Auto-corelations")
You can remove type= "correlation"
and you will still get the same results as the default type
for ccf
is correlation
Also the plot you have from last code does not give access to the specific value of each lag. To check the value of each lag you need to assign the ccf
results variable name and thin print it as follow:
ccf.results<-ccf(data.frame(SPX_ImpliedVola_ts),data.frame(SPX_GSV_ts), type= "correlation")
print(ccf.results)
You will get:
Autocorrelations of series ‘X’, by lag
-14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
-0.010 0.076 0.011 -0.017 -0.031 -0.057 -0.037 0.059 0.067 0.033 0.105 0.000 -0.242 -0.181
0 1 2 3 4 5 6 7 8 9 10 11 12 13
-0.189 -0.157 -0.079 0.041 0.080 -0.015 -0.098 -0.302 -0.303 -0.355 -0.323 -0.264 -0.222 -0.116
14
-0.121
Note that 0
in the results above means the correlation
without any lags.