章金融时间序列分析_第1页
章金融时间序列分析_第2页
章金融时间序列分析_第3页
章金融时间序列分析_第4页
章金融时间序列分析_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

金融数值计算与应用软件

--MATLAB王辉中央财经大学金融学院E-mail:第5章金融时间序列分析5.1MATLAB中时间序列变量的创立

(a)使用函数fints(b)函数ascii2fts把文本文件ASCII内容保存为时间序列变量。

利用fints函数创立时间序列对象

(a)简单矩阵的输入(b)向量输入(c)数据名输入(d)频率显示输入(e)描述字段的输入fints函数—简单矩阵的输入

调用方式:fts=fints(dates_and_data)【例5.1.1】创建一个仅仅包含一组观察值(或一个数据序列)的金融时间序列。答案见ex5_1_1.m【例5.1.2】创建一个包含两组观察值(两个数据序列)的金融时间序列。

答案见ex5_1_2.m【例5.1.3】创建一个金融时间序列,包含时间信息。答案见ex5_1_3.mfints函数—向量输入

调用方式:fts=fints(dates,data)【例5.1.4】包含时间信息的例子。答案见ex5_1_4.m日期字符串可允许的输入格式(1)'ddmmmyyhh:mm'或'ddmmmyyyyhh:mm'(2)'mm/dd/yyhh:mm'或'mm/dd/yyyyhh:mm'(3)'dd-mmm-yyhh:mm'或'dd-mmm-yyyyhh:mm’(4)'mmm.dd,yyhh:mm'或'mmm.dd,yyyyhh:mm'如果时间的信息包含在日期字符串格式中,用户必须把它作为一个列转置元胞数组提供给函数fints。

f=fints({'01-Jan-2008';'02-Jan-2008'},(1:2)')

fints函数—数据名输入、频率显示输入、描述字段的输入fts=fints(dates,data,datanames,freq,desc)datanames:一个字符串的元胞数组freq:有效的频率显示Desc:其内容用户可以任意设置【例5.1.5】本例假设有两个数据序列,它们的名称分别为First和Second,在MATLAB中执行如下m文件:答案见ex5_1_5.m金融时间序列文件的读取

文本文件所满足的条件:包含标题文本行包含标题信息。最左边的一列必须是日期,而且日期必须是一个有效的日期字符串格式列与列之间必须用空格键或tab键分开金融时间序列文件的读取

函数的调用方式:

tsobj=ascii2fts(filename,descrow,colheadrow,skiprows);tsobj=ascii2fts(filename,timedata,descrow,colheadrow,skiprows);【例5.1.6】查阅ftsdata中的ASCII文件disney.dat,它位于ftsdata子目录下。typedisney.dat

disfts=ascii2fts('disney.dat')disfts=ascii2fts('disney.dat',1,3,2)

disfts.freq=1【例5.1.7】现有一个数据文件times.txt,该文件没有对它所包含的数据做任何描述,文件内容如下:

1/3/9512:0036.7536.906336.656336.875116791/4/9512:003737.281336.62537.156319947在MATLAB中输入如下命令:times1=ascii2fts('times.txt',’t’)

日期运算

1)查找现在时刻:>>now2)查询当天时间:>>today3)序数型日期转换为字符串日期:>>datestr(732714)>>datestr(733064.7394612615,’yyyy,mm,dd,HH:MM.SS.FFFAM’)日期运算4)确定每月的第几天:>>day1=day(’22-Jan-2007’)>>day2=day(733064)5)查询星期:>>[N,s]=weekday(733064)>>weekday(’22-Jan-2007’)日期运算7)把字符串型日期转换为序数型日期>>datenum(’03-aug-2000’)8)计算日期间隔>>dasact(’27-feb-2006’,’01-mar-2006’)日期运算—特定日期抽取函数(1)todaily函数:从时间序列中抽取日数据。(2)toweekly函数:从时间序列中抽取周末数据。(3)tomonthly函数:从时间序列中抽取月末数据。(4)toquarterly函数:从时间序列中抽取季度末数据。(5)tosemi函数:从时间序列中抽取半年度末数据。(6)toannual函数:从时间序列中抽取年度末数据。【例5.1.8】文本文件bldcts.txt中保存了保利地产从2010.316到2010.4.16日的交易数据,利用该数据创建金融时间序列对象,并抽取周末数据

答案见ex5_1_8.m

将时间序列数据保存为文本文件

调用方式stat=fts2ascii(filename,tsobj,exttext)stat=fts2ascii(filename,dates,data,colheads,desc,exttext)【例5.1.9】baolidichan=ascii2fts('bldcts.txt',1,2);a=fts2ascii('mytxt.txt',baolidichan,'price')将时间序列数据转换为矩阵数据

调用方式tsmat=fts2mat(tsobj,datesflag)tsmat=fts2mat(tsobj,seriesnames)tsmat=fts2mat(tsobj,datesflag,seriesnames)例如baolidichan是fints型数据,现转化为矩阵,如果不输入datesflag,则日期就不会出现,代码如下:>>a1=fts2mat(baolidichan);如果将datesflag设为1,则日期也被输出,代码如下:>>a2=fts2mat(baolidichan,1);也可以只转化其中的某些变量:>>a3=fts2mat(baolidichan.Open,1);金融时间序列的使用

1)fieldnamesfnames=fieldnames(tsobj)fnames=fieldnames(tsobj,srsnameonly)>>na1=fieldnames(baolidichan)

>>na2=fieldnames(baolidichan,1)

2)chfieldnewfts=chfield(oldfts,oldn,newn)>>nb=chfield(baolidichan,'Open','oprice')

金融时间序列的使用3)fints型数据求最大值、最小值、均值、标准差和排序:命令分别是max、min、mean、std和sortfts。>>min(baolidichan)>>sortfts(baolidichan,'Open')4)实现时间序列的转换newfts=convertto(oldfts,newfreq)

>>wbaolidichan=convertto(baolidichan,'w')金融时间序列的使用5)查找金融时间序列对象的开始日期和结束日期:ftsbound

>>myd=ftsbound(baolidichan)>>datestr(myd)%转换成字符型日期6)删除时间序列中的某些数据序列:rmfields=rmfield(s,'fieldname')s=rmfield(s,fields)>>nhigh=rmfield(baolidichan,'Open')>>nnc=rmfield(baolidichan,{'High','Low'})时间序列数据的提取可以直接抽取:>>tem=baolidichan.Close利用extfield函数实现时间序列数据的抽取。调用方式

ftse=extfield(tsobj,fieldnames)

>>tem2=extfield(baolidichan,'Close')金融时间序列的索引

>>baolidichan('18-Mar-2010')>>baolidichan.close('18-Mar-2010')>>baolidichan({'18-Mar-2010','30-Mar-2010'})>>baolidichan(2)处理时间序列中缺失的数据ewfts=fillts(oldfts,fill_method)oldfts%金融时间序列对象的原始数据fill_method%(Optional)处理缺失值的方法:

'linear'或‘l’或‘le’%线形插值方法(默认值)

'cubic'或‘c’或‘ce’%3次插值

'spline'或‘s’或‘se’%样条插值

'nearest'或‘n’或‘ne’%最近插值法

'pchip'或‘p’或‘pe’%逐段光滑的3次Hemite多项式法

处理时间序列中缺失的数据>>randn('seed',0);>>a=randn(6,1);>>b=[today:today+5]';>>fts=fints(b,a)>>fts(3)=NaN;>>fts(3)>>newdata=fillts(fts,'linear')金融时间序列对象的加、减、乘、除等运算

【例5.1.11】下载一个MAT-file,该文件包含了一些金融时间序列对象。在MATLAB中执行如下命令:>>loaddji30short>>myfts1>>newfts=fints(myfts1.dates,fts2mat(myfts1)/100,{'Open','High','Low','Close'},1,'NewFTS')>>addup=myfts1+newfts>>newfts2=fints(myfts1.dates,fts2mat(myfts1/10000),...{'Rat1','Rat2','Rat3','Rat4'},1,'NewFTS');>>myfts1+fts2mat(newfts2)具有不同数据序列名称的代数运算金融时间序列建模

建立具体的时间序列模型,需解决如下三个问题:(1)模型的具体形式(2)时间序列变量的滞后期(3)通过检查随机扰动项的结构对模型进行检验常用的线性模型(均值模型)p阶自回归过程(AR(p)):Xt=

1Xt-1+

2Xt-2+…+

pXt-p+

t

q阶滑动平均过程(MA(q)):Xt=

t+

1

t-1+

2

t-2+

+

q

t-q(p,q)阶自回归滑动平均过程Xt=

1Xt-1+

2Xt-2+…+

pXt-p+

t

1+

t-1+

2

t-2+

+

q

t-q自相关函数与偏自相关函数(1)autocorrautocorr(Series,nLags,M,nSTDs)[ACF,Lags,Bounds]=autocorr(Series,nLags,M,nSTDs)(2)parcorr

parcorr(Series,nLags,R,nSTDs)[PartialACF,Lags,Bounds]=parcorr(Series,nLags,R,nSTDs)利用MATLAB自带数据进行演示>>loadgarchdata.mat>>a=price2ret(DEM2GBP);>>parcorr(a);%计算并画出收益率序列的偏相关系数>>title('DEM2GBP的PACF')>>[PartialACF,Lags,Bounds]=parcorr(a,[],2);

>>autocorr(a);title('DEM2GBP的ACF')%计算并画出收益率序列的自相关系数>>[ACF,Lags]=autocorr(a);时间序列的定阶

ACF和PACFFPE

AIC和BIC也是判别时间序列模型优劣的标准AIC=(-2×LIF)+2×参数个数

BIC=(-2×LIF)+参数个数×log(样本个数)

带外部变量的ARMA模型m=armax(data,orders)m=armax(data,'na',na,'nb',nb,'nc',nc,'nk',nk)例:用MA(5)时间序列模型对深发展2005年10月21日到2006年9月29日的日收益率进行估计,并计算其自相关系数。

【例5.2.1】下面我们利用MATLAB自带数据进行演示,执行如下代码:>>loadgarchdata.mat>>a=price2ret(DEM2GBP);>>parcorr(a);>>title('DEM2GBP的PACF')>>[PartialACF,Lags,Bounds]=parcorr(a,[],2);>>[Lags,PartialACF]ARMA-GARCH模型garchset、garchfit、garchsim、garchinfer和garchpred。,,

garchset具有创建或修改GARCH模型结构的功能

调用方式:Spec=garchset('Parameter1',Value1,'Parameter2',Value2,...)Spec=garchset(OldSpec,'Parameter1',Value1,...)Spec=garchsetgarchset【例5.2.3】建立一个GARCH(1,1)模型,然后将其修改成一个GARCH(1,2)模型,并且提取参数P,Q的值。在MATLAB中执行如下命令:>>spec=garchset(‘P’,1,‘Q’,1)%建立一个GARCH(P=1,Q=1)模型>>spec=garchset(spec,'Q',2)%改变spec成一个GARCH(P=1,Q=2)模型创建AR(2)-GARCH(1,2)的模型>>spec=garchset('C',0,'AR',[0.5-0.8],'K',0.0002,'GARCH',0.8,'ARCH',[0.10.05],'distribution','T','DoF',5);>>garchplot(garchsim(spec))GARCH过程的参数估计

garchfit的调用方式:[Coeff,Errors,LLF,Innovations,Sigmas,Summary]=garchfit(Series)[Coeff,Errors,LLF,Innovations,Sigmas,Summary]=garchfit(Spec,Series)[Coeff,Errors,LLF,Innovations,Sigmas,Summary]=garchfit(Spec,Series,X)【例5.2.5】对自带数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论