
《高级数量分析方法》课程作业
基于MATLAB软件与ARIMA模型的预测
——以人民币对美元的即期汇率为例
院系:管理学院会计系
指导老师:孟力教授
小组成员:张嘉珉 17520121151118
卢梦杉 17520121151097
周姣 17520121151123目录
1研究背景 (1)
1.1人民币对美元的国际化进程 (1)
1.2人民币对美元现状分析 (1)
2ARMA模型与ARIMA介绍 (2)
2.1AR(p)模型 (3)
2.2MA(q)模型 (3)
2.3ARMA(p,q)模型 (4)
2.4ARIMA(p,d,q)模型 (4)
3自相关系数和偏自相关系数 (4)
3.1 p阶自回归AR(p) (4)
3.2平稳时间序列自协方差与自相关系数 (4)
3.3偏相关系数 (5)
4模型的选择 (5)
4.1自回归AR(p)模型 (5)
4.2移动平均MA(q)模型 (5)
4.3自回归移动平均ARMA(p,q)模型 (5)
4.4ARIMA(p,d,q)模型 (6)
4.5模型的选择 (6)
5数据来源及选择 (6)
6模型的建立与预测 (7)
6.1数据的预处理 (7)
6.2模型的识别 (8)
6.3ARIMA模型的建立与检验 (9)
6.4模型预测 (13)7模型预测结果与分析 (14)
7.1模型预测结果描述 (14)
7.2模型预测存在的不足 (15)
7.3不足的原因的分析 (15)
8结语及展望 (16)【摘要】本文以2012年1月——2012年11月人民币对美元的即期汇率中间价数据为基础,运用ARMA模型进行汇率的拟合,经过多次对程序的调用试运行,发现采用观察偏自相关系数与自相关系数的方法定出阶数建立的模型,与实际拟合效果不理想。最终我们决定根据AIC准则,选择使得AIC值最小的模型阶数进一步操作,得出的ARIMA(2,1,2)模型能更好地模拟人民币汇价的走势。文中运用此模型进行预测, 结果具有精度高、稳定性好等特点。通过对未来汇率的预测,为有效制定外汇投资或外汇避险等相关决策提供建议。
【关键词】ARIMA模型;人民币兑美元中间价预测;时序数据;Matlab 软件
1研究背景
1.1人民币对美元的国际化进程
1993年5月25日,美国财政部在一份递交给国会的报告中将中国列为汇率操纵国。1993年9月和1994年7月中国均被置于汇率操纵国名单上。1994年1月1日,中国将双重汇率制度改为单一汇率制,将1美元兑换5.8元人民币的官方汇率调整为当时通行的1美元兑8.7元人民币的市场汇率。2005年7月21日,中国将历时十年的与美元挂钩的制度改为参考一篮子货币进行调节、有管理的浮动汇率制度。人民币一夜之间升值2.1%,汇率为1美元兑8.11元人民币。2012年4月14日,央行决定自4月16日起,银行间即期外汇市场人民币兑美元交易价浮动幅度由5‰扩大至1%。
1.2人民币对美元现状分析
1.2.1中美争议人民币汇率
(1)美国:人民币必须升值
美国今年频繁施压人民币升值,10月美国参院通过“人民币汇率法案”,要求惩罚中国“操纵人民币”行为。之后又采取了QE3、QE4,美国外长、总统等多位频繁强硬表态人民币需要升值。
(2)中国:汇率由市场决定
中国表态始终如一:人民币汇率由市场决定,并非人为控制。中国多个部门曾在美国参院通过“人民币汇率法案”后反击,称中国汇率形成机制合理,美国此举严重阻碍人民币汇率改革。
1.2.2最新状态
2012年的人民币汇率因主要货币汇率走势着实经历了一番大起大落。业内人士形象地将其称为双边波动。截至12月26日,人民币对美元汇率中间价已经连续5个交易日小幅下跌。但是,上周人民币对美元即期汇率连续5个交易日收高,显示客盘中结汇仍然偏强。
从年初到5月中旬,美元对人民币都维持在6.30—6.32的水平,日均整体浮动不超过0.1%。5月中旬开始至今,人民币又开始成为市场的焦点,单月贬值1.42%,为2005年汇改以来的首次,截至7月23日,人民币累计贬值1.45%。9月初,人民币又出现了持续的贬值倾向,美元兑人民币曾触及6.39的高位,人民币的日均价格浮动也多次达到1%。分析人士指出,尽管导致汇市跌宕起伏的因素错综复杂,但是美、日等发达国家不断深化的量化宽松显然是最大的原因。
2ARMA模型与ARIMA介绍
时间序列分析方法最早起源于1927年,数学家耶尔(Yule)提出建立自回归模型(AR模型)来预测市场变化的规律。在1931年,另一位数学家Walker在AR模型的启发下,建立了MA模型,初步奠定了时间序列分析方法的基础,当时主要应用在经济分析和市场预测领域。
近几年来,随着计算机技术和信号处理技术的迅速发展,一方面,时间序列分析的理论和方法更趋向完善,特别是在参数估计,模型识别以及与智能计算技术的融合等方面都取得了丰硕的研究成果。另一方面,时间序列分析的应用范围变得日益广泛,并且应用成果都处于一个较高水平层面上。
ARMA模型是一种常用的随机性时间序列模型,由美国统计学家波克斯(Box)和金肯(Jenkins)于20世纪70年代提出。ARIMA模型,是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。ARIMA模型根据原序列是否平稳以及回归中所含部分的不同,包括移动平均过程(MA)、自回归过程(AR)、自回归移动平均过程(ARMA)以及ARIMA过程。
2.1AR(p)模型
考虑p阶自回归模型AR(p)的。
AR(p)的特征方程:
如果该特征方程所有的根在单位圆外(根的模大于1),则AR(p)模型是平稳的。
2.2MA(q)模型
当滞后期大于q时,X的自协方差系数为0。有限阶移动平均模型总是平稳
2.3ARMA(p,q)模型
ARMA模型是研究时间序列的重要方法,由自回归模型(简称AR模型)与滑动平均模型(简称MA模型)为基础“混合”构成。
ARMA(p,q)平稳性取决于AR(p)的平稳性。当AR(p)部分平稳时,则该ARMA(p,q)模型是平稳的,否则不是平稳的。
2.4ARIMA(p,d,q)模型
ARMIA自回归综合移动平均模型,其形式类似ARMA(p,q)模型,但数据必须经过特殊处理。特别当线性时间序列非平稳时,不能直接利用ARMA(p,q)模型,但可以利用有限阶差分使非平稳时间序列平稳化,实际应用中d一般不超过2。若时间序列存在周期性波动,则可按时间周期进行差分,目的是将随机误差有长久影响的时间序列变成仅有暂时影响的时间序列。即差分处理后新序列符合ARMA(p,q)模型,原序列符合ARIMA(p,d,q)模型。
3自相关系数和偏自相关系数
3.1 p阶自回归AR(p)
自协方差r(t,s)=E[X(t)-EX(t)][X(s)-EX(s)]
自相关系数ACF=r(s,t)/[(DX(t).DX(s))^0.5]
3.2平稳时间序列自协方差与自相关系数
平稳时间序列可以定义r(k)为时间序列的延迟k自协方差函数:r(k)=r(t,t+k)=E[X(t)-EX(t)][X(t+k)-EX(t+k)],平稳时间序列的方差相等DX(t)=DX(t+k)=σ2,所以DX(t)*DX(t+k)=σ2*σ2,所以[DX(t)*DX(t+k)]^0.5=σ2,而r(0)=r(t,t)=E[X(t)-EX(t)][X(t)-EX(t)]=E[X(t)-EX(t)]^2=DX(t)=σ2。简而言之,r(0)就是自己与自己的协方差,就是方差,所以平稳时间序列延迟k的自相关系数ACF等于:p(k)=r(t,t+k)/[(DX(t).DX(t+k))^0.5]=r(k)/σ2=r(k)/r(0),平稳AR(p)的自相关系数具有两个显著特征:一是拖尾性;二是呈负指数衰减。
3.3偏相关系数
对于一个平稳AR(p)模型,求出滞后k自相关系数p(k)时,实际上得到并不是x(t)与x(t-k)之间单纯的相关关系。因为x(t)同时还会受到中间k-1个随机变量x(t-1)、x(t-2)、……、x(t-k+1)的影响,而这k-1个随机变量又都和x(t-k)具有相关关系,所以自相关系数p(k)里实际掺杂了其他变量对x(t)与x(t-k)的影响。为了能单纯测度x(t-k)对x(t)的影响,引进偏自相关系数的概念。
滞后k偏自相关系数的定义:对于平稳时间序列{x(t)},所谓滞后k偏自相关系数,指在给定中间k-1个随机变量x(t-1)、x(t-2)、……、x(t-k+1)的条件下,或者说,在剔除了中间k-1个随机变量x(t-1)、x(t-2)、……、x(t-k+1)的干扰之后,x(t-k)对x(t)影响的相关程度。用数学语言描述就是:
p[(x(t),x(t-k)]|(x(t-1),…,x(t-k+1)
={E[(x(t)-Ex(t)][x(t-k)-Ex(t-k)]}/E{[x(t-k)-Ex(t-k)]^2}
4模型的选择
4.1自回归AR(p)模型
仅通过时间序列变量的自身历史观测值来反映有关因素对预测目标的影响和作用,不受模型变量相互的假设条件约束,所构成的模型可以消除普通回归预测方法中由于自变量选择、多重共线性等造成的困难。
4.2移动平均MA(q)模型
用过去各个时期的随机干扰或预测误差的线性组合来表达当前预测值。AR(p)的假设条件不满足时可以考虑用此形式。
4.3自回归移动平均ARMA(p,q)模型
使用两个多项式的比率近似一个较长的AR多项式,即其中p+q个数比AR(p)模型中阶数p小。前二种模型分别是该种模型的特例。一个ARMA过程可能是AR与MA过程、几个AR过程、AR与AR-MA过程的迭加,也可能是测度误差较大的AR过程。
4.4ARIMA(p,d,q)模型
ARIMA(p,d,q)自回归综合移动平均模型的形式类似ARMA(p,q)模型,但数据必须经过特殊处理。特别当线性时间序列非平稳时,不能直接利用ARMA(p,q)模型,但可以利用有限阶差分使非平稳时间序列平稳化,实际应用中d一般不超过2。若时间序列存在周期性波动,则可按时间周期进行差分,目的是将随机误差有长久影响的时间序列变成仅有暂时影响的时间序列。即差分处理后新序列符合ARMA(p,q)模型,原序列符合ARIMA(p,d,q)模型。
4.5模型的选择
前三种模型只适用于刻画平稳序列的自相关性。然而,对于一个非平稳时间序列而言,往往时间序列的某些数字特征是随时间的变化而变化的,也就是说,非平稳时间序列在各个时间点上的随机规律是不相同的,难以通过序列已知的信息去掌握时间序列整体上的随机性。经济和金融数据大多都是非平稳时间序列。我们选择的汇率数据就是一种非平稳时间序列,因此选择ARIMA模型进行建模,原始数据如图1所示。
图1 原始数据图
5数据来源及选择本次建模数据是我国2012年1月4日至2012年11月13日的人民币对美元即期汇率中间价,共315个,数据来源中国经济数据库(CEIC)。人民币对美元即期汇率有买报价、卖报价和中间价三种,而人民币汇率中间价是即期银行间外汇交易市场和银行挂牌汇价的最重要参考指标。因此,我们选择人民币对美元即期汇率的中间价作为建模的最原始数据。
6模型的建立与预测
6.1数据的预处理
6.1.1数据调入
执行本步骤的目的在于将数据转换为MATLAB可识别的文档,方便后续软件中的数据调用。
✧打开excel软件,调出原始数据;
✧单击A列,单击操作界面上的“数字”设置单元格格式为符合MATLAB
的日期型格式;
✧拖动鼠标确认所要复制的内容,右击将需要的内容的复制到文本文档中;
✧将数据保存到“C:/我的文档/MATLAB/”中的at.txt文本文档中;
✧在command窗口,用type命令调用at.txt文本文档;
✧type at.txt
✧用ascii2fts将文档中的数据读入MATLAB
✧fts=ascii2fts(…at.txt‟,1,1)
6.1.2缺失数据补齐
✧由于假期等因素的影响,我们选取的汇率数值存在不连续的现象。因此,
结合选取数值的变动特点及汇率波动的实际情况,我们拟采用三次条样
插值法对缺失的数据进行补齐。用命令
✧newfts=fillts(fts,‟linear‟)来补齐缺失的数据;
✧键入a=fts2mat(newfts);b=mat2str(a);c=str2num(b);
✧键入ca =c(1:300);cb = c(301:315);将数值型数据c分为两个部分;
✧在命令窗口输入figure(1);plot(c,'r'),调出经过插值处理的建模数据图形。
图形如图2所示。
✧补齐缺失的数据后,调用命令iddata(newfts),可知共315个数据,我们
用前300个数据建立模型,预测之后的15个数据,并与实际数据比较
评价模型的准确度。
图2 经过插值处理的建模数据图形
6.1.3时间序列平稳性检验及其平稳处理
✧输入指令H=adftest(ca),检验初始序列的平稳性,得到H=0 ,这说明原
序列非平稳,有必要对数据进行进一步的差分处理使其满足模型建立的
条件;
✧输入d=diff(ca),对原始数据进行一阶差分;
✧输入H=adftest(d),对差分后的数列进行平稳性检验,得到H=1,说明
经过一阶差分的时间序列是平稳的,满足建立ARMA模型的条件,可
以执行下一步操作。
6.2模型的识别
我们经过多次对程序的调用和试运行,认为采用观察偏自相关系数与自相关系数的方法定阶所建立的模型,与实际拟合效果不理想,且其FPE及AIC数较大。而根据AIC准则,AIC数值越小,模型精度越好的规则。因此,我们拟选择使得AIC值最小的模型阶数进行进一步操作。下面利用循环代码确定出ARMA 模型的阶数。
编入代码:
>> u=iddata(d);
>> test=[];
>> for p=1:12
for q=1:12
m=armax(d(1:299),[p q]);
AIC=aic(m);
test=[test;p q AIC];
end
end
for k=1:size(test,1)
if test(k,3)==min(test(:,3))
p_test=test(k,1)
q_test=test(k,2)
break;
end
end
得出p=2,q=4 ,AIC=-10.7961。
6.3ARIMA模型的建立与检验
6.3.1模型的建立
根据上述的过程,我们知道了ARMA模型的阶数p和q,接下来要建立相应阶数的ARMA模型。
调用ARMA模型,a rmax(u,'na',2,'nc',4)
结果如下:
Discrete-time ARMA model: A(z)y(t) = C(z)e(t)
A(z) = 1 + 0.6051 z^-1 + 0.8417 z^-2
C(z) = 1 + 0.8211 z^-1 + 1.045 z^-2 + 0.2585 z^-3 + 0.181 z^-4 Status:
Estimated using ARMAX on time domain data "u".
Fit to estimation data: 4.68% (prediction focus)
FPE: 1.754e-05, MSE: 1.651e-05
因此,得到的模型结果为:
y(t)=- 0.6051*y(t-1)- 0.8417*y(t-2) +e(t)+
0.8211*e(t-1)+1.045*e(t-2)+0.2583*e(t-3)+0.181*e(t-4)
6.3.2残差检验
(1)对模型进行拟合
在命令窗口输入:
m = armax(u,[p_test q_test]);
>>uu=iddata([],idinput(size(d,1)));
>> y=sim(m,uu);
>> yh=y.OutputData;
继续输入指令:
figure(3);
plot(d,'r');
hold on
plot(yh,'-');
grid
legend('Original Data','Forecasting Data ARMA')
得到拟合效果图,如图3所示。从图中可以看出实际值与模型的计算值从数值及趋势上看都比较接近,可以说拟合度比较高。
图3 拟合效果图
(2)对模型进行残差检验
对模型进行残差性检验的目的在于判定数列是否满足随机性假设。
输入指令:
>> e=resid(m,u);
>> figure(4)
>> subplot(2,2,1)
>> autocorr(e.OutputData,14,[],2)
>>subplot(2,1,2)
>>parcorr(e.OutputData,14,[],2)
得到残差的自相关与偏相关系数图,如图4所示。
图4 残差相关系数图
从图中,可以看出检验结果1-14阶的残差检验值都在95%的置信区间内,因此模型估计结果的残差序列满足随机性假设。
6.3.3模型反差分结果拟合度检验
由于在建模前的数据预处理过程中,我们对插值后的数据进行了一阶差分使得时间序列变平稳,也因此,我们得到的模型实际上是基于一阶差分数据的结果并非其实际的状态。而预测步骤中我们需要使用的是模型反差分后的结果与实际值的比对。基于此,我们有必要在进入预测步骤之前,对模型反差分的结果进行拟合度检验。
在命令窗口输入:
yd1=predict(m,y,1);
yp1=yd1.OutputData;
yc1=cumsum([ca(1);yp1]);
figure(5);
plot(ca,'r');
hold onplot(yc1,'-');
grid
legend('Original Data','Forecasting Data ARMA')
得到模型反差分结果的拟合图形,如图4所示。从图中我们可以看出,预测值与实际值的基本变动趋势及幅度是相符的。
图5 模型反差分结果的拟合图形
6.4模型预测
根据构建的ARIMA(2,1,4)模型,可以对汇率进行预测。本例以从2012年1月4日起至2012年10月29日的汇率为基础数据建立ARIMA模型预测随后十五天的汇率,预测值与实际值的比较可以从图中直观地看出。
输入以下指令:
ym3=[yh;zeros(15,1)];
yd3=predict(m,ym3,1);
yc3=cumsum([ca(1);yd3]);
figure(7);plot(cb(1:15),'r');
hold on
plot(yc2(301:315),'-');
grid
legend('Original Data ','Forecasting Data ARMA')
得到图5,显示的是模型的预测值与实际值的比对情况。
7模型预测结果与分析
7.1模型预测结果描述
从趋势上看,预测模型的结果与实际值相比波动较小。从数值上看,预测值基本与实际值接近,经过计算预测值与实际值的相对误差均小于0.5%。
从图可以看出:与实际值相比,模型的预测值波动并不大。
图6 模型的预测值与实际值的比对情况
将预测数据导出,利用excel计算,模型的实际值与预测值之间的误差小于0.5%,其值基本接近实际值。实际值与预测值的对比表如表1所示。
表1 实际值与预测值的对比
实际值预测值相对误差
6.3028 6.2743 -0.4522%
6.3002 6.2733 -0.4270%
6.3017 6.273 -0.4554%
6.3045 6.2737 -0.4885%
6.3057 6.2738 -0.5059%
6.307 6.2732 -0.5359%
6.3082 6.2735 -0.5501%
6.3078 6.2737 -0.5406%
6.3067 6.2734 -0.5280%
6.306 6.2734 -0.5170%
6.3012 6.2736 -0.4380%
6.2981 6.2735 -0.3906%
6.2951 6.2734 -0.3447%
6.292 6.2736 -0.2924%
6.21 6.2735 -0.2480%
7.2模型预测存在的不足
通过模型预测结果与实际结果的对比图,可以看出模型预测结果的趋势在5天以内与实际值得趋势比较接近,但5天之后误差逐步扩大。从这个角度上来看,模型的预测存在不够准确的地方。但不能否认预测出的结果从数值上看是比较理想的,且我们所做的是短期预测,在趋势的预测上相较于长期来看是很难看出明显的趋势的。
7.3不足的原因的分析
从方法的选取上来说,尽管我们采用的是ARIMA模型,但其在执行的过程中,本质上还是在对非平稳时间序列进行处理成为平稳序列的基础上,利用ARMA模型进行进一步的建模过程。而由于ARMA本身的缺陷,其使用的前提是要保证时间序列的平稳,倘若时间序列不平稳或者不够平稳,其预测精度会受到影响。此外,原始数据是实际的,受到假期等其他因素的影响本身是残缺不全的,但要进行时间序列的预测,数值必须是完整的,因此我们进行了插值的处理,这种不得不进行的人为处理也加大了模型的误差。
从模型计算的精准度上来说,由于我们选取的汇率是明显的非平稳序列,为
基于MA TLAB软件与ARIMA模型的预测——以人民币对美元的即期汇率为例
了建立模型,我们在使用之前,就对原始数据进行了一次差分,而在对模型进行预测的过程中,我们又对数值进行了一次反差分,两次的计算都有一定的误差,会对最终的预测结果产生影响。因而,预测值与实际值之间会存在一定程度的偏离。
从影响汇率的因素的角度上来说,汇率的波动除了受自身因素的影响之外,还受到众多外部因素,诸如:通货膨胀率、国家的外汇储备量等宏观经济因素的影响,本身的决定就比较复杂。而我们使用的ARIMA模型,尽管有较成熟的理论支撑,但无法全面的将所有影响因素考虑进去,这使得模型本身就有一点的局限性,也影响了最终的预测结果。
从数据的选取角度上来说,综合考虑程序运行的时间以及操作电脑的灵敏性等问题,我们在选取样本时,没能选取更大的样本量来建模,大样本量建出的模型精确度会更高,这也是我们自身存在的不足。
8结语及展望
通过本次的实验,我们对ARMA模型有了更加深刻的理解,也掌握了MATLAB的基本运用方法。尽管我们建立的模型存在一定的问题,做出的预测也不能完全让人满意,但从中我们也学习到了建模的基本思路,并掌握了实用软件MATLAB的使用。
尽管ARMA模型具备了相对完备的理论体系,但在解决实际问题的时候,由于其方法的固有局限性,利用其对现实生活的实际情况进行预测是存在一定误差的,也有偏颇不完善的地方。于是,专家学者也提出了诸如:BP神经元网络、混沌模型、分形等一系列的算法,使得模型能够更精准的进行预测,以帮助人们控制风险,进行风险管理等。
16
