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

下载本文档

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

文档简介

1、金融时间序列文本文件的转换* 函数ascii2fts从一个文本数据文件f.txt)中创建了一 个金融时间序列对象,如果文本数搪文已符合下列的 格式:* 包含标题文本行* 包含标题信息.标题信息必须在数据信息列之前,除 非文件中不需要输入的行被规定。* 最左边的一列必须是日期,而且日期必须是一个有 效的日期字符串格式。'ddmmmyy'或'ddmmmyyyy''mm/dd/yy'或'mm/dd/yyyy,'dd-mmm-yy'或'dd-mmm-yyyy''mmm.dd,yy'或'mmm

2、.dd,yyyy'* 每一列必须用空格键或tab键分开调用方式:* tsobj = ascii2fts(filename, descrow, colheadrow5 skiprows);* tsobj = ascii2fts(filename, timedata, descrow, colheadrow, skiprows)* 输入参数:filename%文件名,必须用单引号括起来descrow%(Optional)确定文本文件中文字说明的行数 colheadrow % (Optional)说明每列变量名所在的行数 skiprows %(Optional)ASCII文件中不需要输入的行

3、 数timedata%判定是否包含时间信息,若是输入字符串T,若不是则输入“nt”*以金融工具箱自带的数据文件disney.dat为 例* (1)查看文件内容»type disney.dat» disfts = ascii2ftsCdisney.dat')? Error using => ascii2fts.原因是文件disney.dat的前3行不是数据而描 述数据的内容,因此直接调用函数ascii2fts 就无法识别该文件»disfts = ascii2ftsCdisney.dat', 1,3, 2)例子:数据文件times.txt,内容如

4、下:* 1 /3/09 12:00 36.75 36.9063 36.6563 36.875 1167900* 1 /4/09 12:00 3737.2813 36.62537.1563 1994700»times1 = ascii2fts('times.txt7f)金融时间序列的使用*时间序列数据的提取与索引 (一)从金融时间序列数据中提取数据 创建一个金融时间序列对象myfts 创建一个仅仅包含series2值的时间序列» srs2 = myfts.series2总结:日寸间序列srs2包含了 myfts的所有日期和 字段名为series2的数据序列,而且数据序

5、 列的名称仍然是原始时间序列对象myfts的 名称.* extfield功能:实现对时间序列数据的抽取*调用方式:ftse = extfield(tsobj, fieldnames) %JAtsobj 中 提取日期和字段名为fieldnames的数据序列 成一个新的金融时间序列对象ftse. ftse包含 tsobj中所有的日期,但是较少的数据序列输入参数:tsobj %原始数据fieldnames %原始数据中的字段名* 注意:执行ftse = extfield(myfts,'Series2') 与ftse = myfts.Series2得蓟的结果是相同自勺*金融时间序列的索

6、引用户可以使用一个字符串日期,字符串日期范 围,字符串日期的单元数组或普通的整数 对金融时间序列进行索引.但是,用户不能使 用序数型日期对金融时间序列进行索引每一个字符串日期必须包含日,月和年.每当数据通过一个频率转换时,所有的数 据落在显示的时间日期的末端,例如,每 周的数据是星期五,每月的数据是每月的 最后一天等等* 1、对字符串日期进行索引例如,从上例的时间序列myfts中提取2008年3月8日的所有值,执行: »myfts(,03/08/08,)从myfts中提取2008年3月8日的series2的值» myfts.series2('03/08/08'

7、;)从myfts中提取2008年3月8日,3月10日和3月15日的所有值,执行:» myfts('03/08/08', '03/10/08', '03/15/08')从myfts中提取2008年3月8日,3月10日和3月15日的series2的值,执行:» myfts.series2(103/08/08', '03/10/08', ,03/15/08')* 2、对日期字符串范围进行索引从时间序列对象myfts中提取2008年3月8日到3月15日的所有值,执行: » myfts('

8、;03/08/08:03/15/08')注意:一个日期字符串的范围是由双冒号(:)分 开的两个日期字符串构成如果一个日期不存在于时间序列对象中,一 个错误的信息将会出现» myfts.series2(103/10/08:03/19/08')*3、用整数索引时间序列对象的内容 整数是MATLAB的普通索引形式。索引从1开始(不是0) ; index=1对应于第1个元素, index=2对应于第2个元素,依次类推。例如,提取myfts中series2的第一项,执行:» myfts.series2(1)提取myfts中series2的第1, 3, 5项,执行:&#

9、187; myfts.series2(1 3 5)提取myfts的最后一项,执行:» myfts(end)*4、包含时间信息的金融时间序列的索引» data = round(10*rand(6,2);»fts= fints('01-Jan-2008 11 :OO''O1-Jan- 2008 12:00' '02-Jan-2008 11:00',f02-Jan-2008 12:00' '03-Jan-200811:00''03-Jan-2008 12:00',data)»

10、;fts('01-Jan-2008 12:00') %对2008年1 月 1 日,12: 00进行索引»fts('01-Jan-2008 12:00:03-Jan-200811 :00') %使用(:)对包含时间的日期进行索 引练习:任意找一支股票,把数据导入EXCEL中,然 后转换成MATLAB的时间序列格式,要求:(1)仅仅包含该股票从2008年3月1日到4月1日的收盘价和最高价(2) desc的内容为股票的代码和名称(3)以周为频率(4)显示该股票在2008年3月8日,3月12日及3月15日的最高价,最低价和成交量。(5)把该股票的最高价序列降序

11、排列 hyzhang_69*时间序列数据转换成矩阵数据tsmat = fts2mat(tsobj)tsmat = fts2mat(tsobj5 datesflag)tsmat = fts2mat(tsobj3 seriesnames)tsmat = fts2mat(tsobj3 datesflag, seriesnames) 输入参数:tsobj %需要转换的金融口里序列对象的名称 datesflaa %(ODtional)表示转换成矩阵时是否W日地到矩阵中:datesflag=O (默认值)表示不输出datesflag=1表示输出日期到矩阵中。seriesnames %(Optional)需

12、要导出的某列数据序列 的名称。输出参数:tsmat %表示转换后的矩阵。例如:提取myfts中的series2的数据: » srs2_vec = fts2mat(myfts.series2) 如果用户想让输出矩阵中包含日期: »srs2_mtx = fts2mat(myfts.series2, 1) data %列转置矩阵每一列是一个数据序列.金融时间序列数据转换为其它类型数据* 1、将时间序列数据保存为文本文件stat = fts2ascii(filename, tsobj, exttext)stat = fts2ascii(filename, dates, data,

13、colheads, desc, exttext)输入参数:filename %ASCII文件的名称tsobj %需要转换的fints型格式的金融时间序列数据 exttext %(Optional)不需要的描述项的行数dates %包含日期的列向量,日期格式必须是序数型colheads %(Optional)列标题的单元数组;第1个单元列一定是 日期列desc %(Optional)描述性字符串,是文件的第1行.输出参数:stat %转换成功标志,1表示转换成功;。表示转换不成功。例如创建一个时间序列fints,然后将变量fints 的内容保存到aa.txt文件中,执行代码如下:»fi

14、nts1=fts2ascii(£aa.txf,fints);fints=1表示转换成功,MATLAB的work目录 下生成了aa.txt文件,调用type命令浏览文 件的内容,执行:»type aa.txt2、把时间序列数据频率转换成规定的频率 newfts = co n vertto (o Idftsrn ewf req)* 输入参数:* oldfts %需要转换的数据* newfreq %转换的目标,根据要求具体情况如下:1, DAILY, Daily, daily, D, d 为天2, WEEKLY, Weekly, weekly, W, w 为周3, MONTHLY

15、, Monthly, monthly, M, m 为月4, QUARTERLY, Quarterly, quarterly, Q, q 为季度5, SEMIANNUAL, Semiannual, semiannual, S, s 为 半年6, ANNUAL, Annual, annual, A, a 为年* 3、时间序列中的缺失数据的处理* ewfts = fillts(oldfts, fill_method)* 输入参数:一* oldfts %金融时间序列对象的原始数据* fill method %(Optional)处理缺失值的方法,常用 的有如下5种:* 'linear 或I或I

16、e'%线形插值方法(默认值)*'cubic'或'C'或'ce' %3次插值'spline'或或00 样条插值'nearest'或H或'ne' %最近插值法'pchip或'p'或'pe' %逐段光滑的3次Hem计e多项式 法*输出参数: n ewfts %处理后的数据例子:首先,创建一个金融时间序列,在 MATLAB中执行如下命令:* » randnCseedO);* » a=randn(6,1);数向量%随机数的初值为0%生成6行1列的随机* » b=today:today+5'* »fts=fints(b,a)* »fts(3)=NaN;%将第3个数据变为缺失值NaN>>fts 查看改变后的fts变量中第3个数据的值* ans =* desc: (none)* freq: Unknown (0)* 'dates: (1)' 'seriesl: (1)

温馨提示

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

评论

0/150

提交评论