1. 数据介绍
1.1数据来源
美元兑换人民币的汇率是来自凤凰网财经版块的从2008年1月1日至2013年5月31日的数据,而黄金价格是来自investing.com的从2008年1月1日至2013年5月31日的数据。其中美元兑换人民币的汇率用rt表示,黄金价格用pt表示。
1.2数据处理
由于这两个数据的时间有些不一致,于是我做了以下工作使两组数据的时间一致。首先,对于两组数据中的其中一组中缺少一个日期的,我将缺少的那一个日期的数据设置为前后两个数据的平均值。然后,对于缺少的日期不止一个的,我将缺少的那几个日期的数据都设置为临近两个日期的平均值。比如:
表1 缺少一个日期的例子
date | rate | date | price |
2008/1/18 | 725.71 | 2008/1/18 | 880.8 |
2008/1/21 | 725.98 | 2008/1/22 | 889.6 |
2008/1/22 | 725.56 | 2008/1/23 | 882.5 |
如上表1所示,黄金价格缺失了2008年1月21日的值,于是我用2008年1月18日和2008年1月22日的这两个值的平均值885.2代替。
表2 缺少多个日期的例子
date | rate | date | price |
2008/2/5 | 718.46 | 2008/2/5 | 885.9 |
2008/2/13 | 719.52 | 2008/2/6 | 900.7 |
2008/2/14 | 718.9 | 2008/2/7 | 906.1 |
2008/2/15 | 717.63 | 2008/2/8 | 918.4 |
2008/2/18 | 716.67 | 2008/2/11 | 922.9 |
2008/2/19 | 715.74 | 2008/2/12 | 907.4 |
2008/2/20 | 714.52 | 2008/2/13 | 906.5 |
如表2,跟黄金价格的日期相比,汇率缺失了5个日期,于是我用2008年2月5日和2008年2月13日的两个值的平均值718.99作为这5个缺失日期的值。
2.建模过程
2.1汇率的时间序列模型
2.1.1 建立ARIMA模型
首先看美元兑换人民币的汇率的时间序列图:
图1 汇率的时间序列图
从图1中可以看出,这是一个带趋势项的时间序列,且具有很强的趋势性,于是利用一阶差分来消除趋势性,得到:
图2 汇率一阶差分后的时间序列图
通过一阶差分之后,趋势性消除了,接下来开始建立模型,首先通过序列的acf和pacf图尝试确定阶数:
图3 汇率一阶差分后的ACF
图4 汇率一阶差分后的PACF
这两个图都没有明显的截尾性,于是我们直接对一阶差分后的数据建立ARMA模型,首先尝试ARMA(1,1),得到的结果如下:
Series: rt
ARIMA(1,1,1)
Coefficients:
ar1 ma1
0.9983 -0.9843
s.e. 0.0021 0.0050
sigma^2 estimated as 0.29: log likelihood=-1151.72
AIC=2309.44 AICc=2309.46 BIC=2325.26
接下来我们检验模型的有效性:
图5 ARMA(1,1)模型有效性的检验结果
从检验结果来看,这个模型是有效的,再检验模型的系数的有效性:
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ar1 0.9983150 0.0020891 477.86 < 2.2e-16 ***
ma1 -0.9842741 0.0050410 -195.25 < 2.2e-16 ***
两个系数的p值都小于5%,说明这个模型的系数是显著的。所拟合的模型如下:
。
整理得:
。
另外,还尝试了其它的模型,如ARMA(2,1),ARMA(1,2),ARMA(2,2),这些模型都是显著的,但是它们的系数有些不显著,而且它们的BIC值都大于ARMA(1,1),除了ARMA(2,2),其它两个模型的AIC也都大于ARMA(1,1)。综合以上分析,ARMA(1,1)模型是最优的。其残差的acf图也显示无自相关,对残差的25阶检验结果中p值大于5%,即残差无自相关。但是残差的平方的检验结果表明存在自相关性,于是考虑建立GARCH模型。
图6 残差的ACF图
2.1.2 建立GARCH模型
在建立模型之前,先看一下建立ARCH模型的四个步骤:
(1)通过检验数据的序列相关性建立一个均值方程,如有必要,对收益率序列建立一个计量经济模型(如ARMA模型)来消除任何的线性依赖;
(2)对均值方程的残差进行ARCH效应检验;
(3)如果ARCH效应在统计上是显著的,则指定一个波动率模型,并对均值方程和波动率方程进行联合估计;
(4)仔细地检验所拟合的模型,如有必要则对其进行改进。
ARCH模型的建模方法也可以用来建立一个GARCH模型。然而,GARCH模型的阶不太容易确定。在实际应用中,只用到低阶的GARCH模型,如GARCH(1,1)模型,GARCH(2,1)模型,GARCH(1,2)模型等。
前面的检验结果表明ARCH效应在统计上是显著的,于是尝试建立GARCH模型,综合模型的显著性,AIC值越小越好的原则,最后选择了AR(1,1)+GARCH(1,2)模型,建模结果如下:
Title:
GARCH Modelling
Call:
garchFit(formula = rt ~ arma(1, 1) +garch(1, 1), data = r1,
trace = F)
Mean and Variance Equation:
data ~ arma(1, 1) + garch(1, 1)
<environment: 0x10d438a0>
[data = r1]
Conditional Distribution:
norm
Coefficient(s):
mu ar1 ma1 omega alpha1 beta1
-0.0333550 0.0076389 0.0631761 0.0026670 0.0675436 0.9227838
Std. Errors:
based on Hessian
Error Analysis:
Estimate Std. Error t value Pr(>|t|)
mu -0.0333550 0.0248484 -1.342 0.179
ar1 0.0076389 0.7039483 0.011 0.991
ma1 0.0631761 0.7034084 0.090 0.928
omega 0.0026670 0.0004362 6.115 9.67e-10 ***
alpha1 0.0675436 0.0111673 6.048 1.46e-09 ***
beta1 0.9227838 0.0110426 83.565 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Log Likelihood:
-837.6255 normalized: -0.5820886
Description:
Fri Jun 21 23:48:02 2013 by user:Administrator
Standardised Residuals Tests:
Statistic p-Value
Jarque-Bera Test R Chi^2 100128.6 0
Shapiro-Wilk Test R W 0.8568862 0
Ljung-Box Test R Q(10) 9.800271 0.4581876
Ljung-Box Test R Q(15) 12.47034 0.6431355
Ljung-Box Test R Q(20) 17.8987 0.5940815
Ljung-Box Test R^2 Q(10) 0.8269668 0.9999285
Ljung-Box Test R^2 Q(15) 0.9627662 0.9999998
Ljung-Box Test R^2 Q(20) 1.072775 1
LM Arch Test R TR^2 0.8948157 0.9999924
Information Criterion Statistics:
AIC BIC SIC HQIC
1.172516 1.194497 1.172482 1.180722
从上述结果可以看出,建立GARCH(1,2)模型之后残差无自相关,也无异方差(残差的平方无自相关),所以模型是有效的。于是,所拟合的模型为(r1为汇率的一阶差分):
,
2.2 黄金价格与汇率的模型
纵观历史数据,黄金价格与汇率大概成一个此消彼长的关系,由这两个数据计算出来的相关系数为-0.8988,也表明有很强的负相关,下图为它们的时间序列图:
图7 汇率和黄金价格的时间序列图
既然这两个数据是高度相关的,描述这两个数据之间的关系的一个自然方式是利用简单的线性模型,拟合结果为:
Call:
lm(formula = pt ~ rt)
Residuals:
Min 1Q Median 3Q Max
-406.20 -99.46 29.02 94.02 353.63
Coefficients:
Estimate Std. Error t valuePr(>|t|)
(Intercept)8513.7172 92.9791 91.57 <2e-16 ***
rt -10.9046 0.1402 -77.76 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’1
Residual standarderror: 143.2 on 1438 degrees of freedom
Multiple R-squared:0.8079, Adjusted R-squared: 0.8077
F-statistic: 6046 on 1 and 1438 DF, p-value: < 2.2e-16
因此,所拟合的模型为:
画出模型的残差的时间图以及残差的ACF,从图可见,该模型是严重不充分的。特别地,残差的样本ACF是高度显著的并且缓慢衰减,显示出单位根非平稳时间序列的特点,残差的表现说明两个数据间存在明显的差异。
图8 模型残差的时序图和ACF
于是我们考虑这两个数据的变化量序列,设为p1和r1,先看它们的时间图:
图9 一阶差分后的汇率和黄金价格的时序图
再计算这两个变化量序列的相关系数,cor(r1,p1)=-0.016。计算结果表明几乎不存在相关关系,于是对于上面拟合的模型中残差的序列相关性用简单的时间序列模型来描述,从而得到一个带时间序列误差的线性回归。综合AIC值越小越好的原则和模型的相对有效性,最后选择ARMA(1,1)模型:
Series: pt
ARIMA(1,0,1) with non-zero mean
Coefficients:
ar1 ma1 intercept rt
0.9980 -0.1639 2568.7890 -1.9364
s.e. 0.0014 0.0265 639.3145 0.9388
sigma^2 estimated as 377.6: log likelihood=-6318.17
AIC=12646.34 AICc=12646.38 BIC=12672.7
Training set error measures:
ME RMSE MAE MPE MAPE
0.260320469 19.431024708 11.898488052-0.004087602 0.969354535
MASE
1.013218549
检验模型的有效性:
图10 带时间序列误差的回归模型的有效性检验图
从上面第三个图可以看出,这个模型在7阶以下是有效的。接下来检验模型系数的有效性:
z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
ar1 9.9803e-01 1.3888e-03 718.6372< 2.2e-16 ***
ma1 -1.6388e-01 2.6455e-02 -6.1944 5.850e-10 ***
intercept 2.5688e+03 6.3931e+02 4.0180 5.869e-05 ***
rt -1.9364e+00 9.3878e-01 -2.0626 0.03915 *
从检验结果可以看出,系数都是显著的,于是所拟合的模型为:
2.3 模型总结
前面的建模过程表明,美元兑换人民币的汇率的时间序列模型为:
,
而黄金价格与汇率的关系为:
从而汇率可根据自身的时间序列模型来预测未来值,而黄金价格却无法预测,于是可以根据预测出来的汇率通过黄金价格与汇率的关系来预测黄金价格。
本文的不足之处在于黄金价格与汇率的关系式的残差在7阶以上是存在自相关的。
3. 预 测
由于汇率的模型的变量是汇率做了一阶差分之后的数据,所以预测出来的值只是两个相邻汇率值的差,通过计算得出汇率的预测之后代入黄金价格与汇率的模型可直接算出黄金价格的预测值,这个可以通过R软件直接实现,下表是通过拟合的模型预测出来的从2013年6月1日至2013年6月5日的值与真实值:
表3 5个预测值与真实值
date | rate | predict r | price | predict p |
2013/6/1 | 617.96 | 617.91 | 1390.7 | 1391.35 |
2013/6/2 | 617.96 | 617.88 | 1394.05 | 1391.37 |
2013/6/3 | 618.06 | 617.85 | 1412.05 | 1391.39 |
2013/6/4 | 617.35 | 617.81 | 1398.15 | 1391.43 |
2013/6/5 | 617.57 | 617.78 | 1401.05 | 1391.45 |