matlab 金融时间序列工具箱,Matlatb金融时间序列工具箱——建立金融时间序列

1.学计量经济学源于对数学感兴趣,也源于对一些未知的东西进行预测,比如股市,而中国股市在2005年已经达到了弱式有效(本人通过谱分布检验股市收益率是否为鞅过程得到的结论),再运用模型进行预测好比预测彩票,于是学习计量更多的是数学的因素,而非应用的驱使。不再迷信小波分析、神经网络、ARIMA等一些线性的非线性的预测模型,逐渐的转向对宏观经济学的学习中去,同时,也渐渐的喜欢上了经济史,因为每一部历史都是事物相互作用的结果,去研究这个世界发展的规律,这才是走好经济学的根本,而不是计量经济学。

2.重申我的格言“计量仅仅是工具,代替不了思考”

3.注重思考,阅读一本书能吸收20%已较为不错了,不要往脑袋里装书,即使将一本书搬进脑袋,充其量也就一本书的价值,几十块钱罢了!

4.入门很难,真的很难,想起当年做一个东西时,没师傅指导,从零开始,没有休息,做不出来,躺地上,绝望,哭,站起来,继续……,最终解决。于是,总结出来,入门很难,只要能挺过来,你就算成功了!

Matlatb金融时间序列工具箱(Financial Time Series Toolbox)

建立金融时间序列

金融时间序列是一个结构变量,有五个属性:描述(description)、频率(frequency)、日期(dates)、显示(display)和至少一个数据列向量名(dataname),前三个属性的名字是固定的,分别为desc、freq和dates,时间序列的名字用户可以自行规定,如不更改的话,matlab默认为series1、series2、……、seriesN。

一、利用函数fints来创建金触时间序列对象

根据输入参数的类型,可分为五种形式:

(1)简单的矩阵输入

格式:ftsdata=fints(dates_data)

输入:dates_data是一个矩阵,第一列是时间,从第二列开始是时间序列的样本数据。

(2)向量输入

格式:ftsdata=fints(dates,data)

输入:dates是时间列向量,或者是元包列(非数据型,即文本型日期); data是时间序列的样本数据。

(3)自定义时间序列名

格式:ftsdata=fints(dates,data,dataNames)

输入:dates是时间列向量,或者是元包列(非数据型,即文本型日期); data是时间序列的样本数据,dataNames是变量名,如果是多个,应该用元包{’name1’,’name2’,……,’nameN’}的形式输入。

(4)输入频率

格式:ftsdata=fints(dates,data,datanames,freq)

输入:dates是时间列向量,或者是元包列(非数据型,即文本型日期); data是时间序列的样本数据。Freq有固定的格式:

1.UNKNOWN,Unknown ,unknown,U,u

2.DAILY,Daily,daily,D,d,1

3.WEEKLY,Weekly ,weekly,W,w,2

4.MONTHLY,Monthly,monthly,M,m,3

5.QUARTERLY,Quarterly, quarterly,Q,q,4

6.SEMIANNUAL,Semiannual,semiannual,S,s,5

7.ANNUAL,Annual,annua,A,a,6

5.输入变量描述

格式:ftsdata=fints(dates,data,datanames,freq,desc)

输入:dates是时间列向量,或者是元包列(非数据型,即文本型日期); data是时间序列的样本数据。Desc的形式是单个的字符型变量。

注意:1.第一种矩阵输入的方式,日期必须是数值型,其余的四种日期可以是数值型也可以是字符型。

2.所有的数据输入必须放在矩阵里,不能一个一个输入。

3.变量名由于是字符型,所有要用到元包。

4.描述性变量是单变量的字符型。

例子 创建日度数据(frequency=daily),变量名分别为data1、data2,描述字段为“实验数据”(desc=‘实验数据’).

5. datanames的列要与时间序列的个数即data的列相同。

例子,创建二元时间序列,第一个变量命名为data1,第二个变量命名为data2,数据的频率是日度数据,并给时间序列描述为“实验数据”

输入以下代码:

ftsdata=fints(dates,[data y],{'data1','data2'},1,'实验数据');

查看其第一行数据:

ftsdata(1)

则显示:

desc:  实验数据

freq:  Daily (1)

'dates:  (1)'    'data1:  (1)'    'data2:  (1)'

'03-Apr-1991'    [     727291]    [     988.05]

二、文本文件的转换方式(ascii2fts)(略)

三、调用金触时间序列对象(假设已经创建二维时间序列ftsdata)

(1)查看整个时间序列对象

在命令窗口中输入时间序列对象的名字即可

(2)查看部分行数据

跟查看矩阵的元素一样,查看第一行,就输入ftsdata(1)

(3)查看时间序列中的时间变量

法一:对象名.变量名

如    ftsdata.dates1

year(ftsdata.dates1) %查看时间序列的日期中的年份

month(ftsdata.dates1) %查看时间序列的日期中的月份

day(ftsdata.dates1) %查看时间序列的日期中的天

法二:ftse = extfiield(tsobj,fieldnames)

输入参数:

tsobj:对象名称

fieldnames:变量名称

例 ftse = extfiield(ftsdata,‘data1’)

其效果与ftsdata.data1相同。

(4)用时间标签提取数据

格式:newtsobj= tsobj(时间标签/整数标签)

1.时间标签引用:

时间标签的格式可以是文本格式,也可以是数值型的时间序列,可以是单个的也可以是多个的。

如:

ftsdata(‘3/4/2008’)

ftsdata({‘3/4/2008’, ‘10/4/2008’})

如果是连续日期则用双冒号隔开:

ftsdata({‘3/4/2008’ ::‘10/4/2008’})

这种引用方式,如果时间区间内有一个时间不在时间序列的中,则会提示出错。

2.整数标签引用:

整数标签引用与引用向量的元素一样。

演示生成金融时间序列数据

%% 生成一列时间序列

format short g  %设置数据精度

load szchengzhi.mat

dates=datenum(textdata);  %将字符型日期转化为数值型

ftsdata=fints([dates data]);

ftsdata.series1

ftsdata.dates %查看时间序列的日期

year(ftsdata.dates) %查看时间序列的日期中的年份

month(ftsdata.dates) %查看时间序列的日期中的月份

day(ftsdata.dates) %查看时间序列的日期中的天

%% 生成多列时间序列,以两列为例

x = randn(5341,1);y = filter([1 -1 1],1,x); %生成一个ma(2)过程ftsdata=fints([dates data y]);%生成两个时间序列,默认命名series1、series2

ftsdata       %查看整个时间序列

ftsdata.series1 %查看时间序列1

ftsdata.series2  %查看时间序列2

ftsdata(1)  %查看第1行时间序列

ftsdata=fints(dates,[data y],{'data1','data2'},1,'实验数据')

四、金融时间序列的使用和修改

(1)查看金融时间序列的属性

fnames=fieldnames(tsobj,srsnameonly)

显示金融时间序列的五个属性,由于'desc'、 'freq'、 'dates',描述性属性、频率属性和日期属性是不能自命名的,fnames的前三个变量分别是上述三个,接下来就是变量的名字了,以列数组的形式储存在fnames中。

Srsnameonly默认为0,表示列出所有属性,为1表示只列出变量名。

例  fnames = fieldnames(ftsdata)

fnames =

'desc'

'freq'

'dates'

'data1'

'data2'

例  fnames = fieldnames(ftsdata,1)

fnames =

'data1'

'data2'

(2)时间序列重命名

Newfts = chfield(oldfts,oldname,newname)

输入参数意义:

Oldfts:时间序列结构变量名

Oldname:时间序列中变量名称

Newname:时间序列中变量的新名称

例 对时间序列对象ftsdata中的变量data2命名为series2,新的时间序列对象命名Newfts

Newfts = chfield(ftsdata, ‘data2’, ‘series2’)

注意:字符型的输入都要加单引号’’,包括其他函数。

(3)对时间序列进行排序

Sfts = Sortfts(tsobj,seriesnames,flag)

输入参数为:

tsobj :时间序列对象

seriesnames:排序的变量名(字符型),即按哪一个变量进行排序,若不输入,则默认按第一个变量排序。

flag:排序方式(升序or降序),flag=1(默认),升序;flag=0,降序。

例子

Sfts1 = sortfts(ftsdata)

Sfts2 = sortfts(ftsdata,’data2’)

Sfts3 = sortfts(ftsdata,’data2’,-1)

Sfts4 = sortfts(ftsdata,-1)

(4)时间序列起始时间点

Datesbound=ftsbound(tsobj)

(5)删除时间序列的一列数据

Newobj = rmfield(oldtsobj,’fields’)

输入参数:fields是时间序列的名字,可以是单个也可以是多个,多个时是字符型数组。

例 ftsdata=fints(dates,[dates,data y],{'data1','data2','data3',},1,'实验数据')

删除data1

Nodata1=rmfield(ftsdata,’data1’);

删除data1和data2

Nodata2==rmfield(ftsdata,{'data1','data2'});

五.时间序列转化为矩阵数据、文本文件

(1)转化为矩阵

格式:data=fts2mat(ftsobj,IncludeDates,seriesnames)

输入参数:

fts2mat将时间对象ftsobj中的全部或部分时间序列转化为矩阵。

IncludeDates:是否将日期导出。

IncludeDates=0,或不输入,默认只对时间序列转化,不转化时间。IncludeDates=1,则把时间和时间序列数据转化在一个矩阵中。

Seriesnames:需要导出的时间序列名称,如果不输入默认为全部时间序列。

注意:1.第一个参数必须有,第二和第三个参数如果不输入,则取默认。

2.由于时间序列对象的引用后也是时间序列对象,因此,ftsobj

可以直接是引用后的时间对象,比如fts2mat (ftsdata.data1);

(2)转化为文本文件

格式:

Stat=fts2ascii(filename,tsobj,exttext)

Stat= fts2ascii(filename,dates,data,colheads,desc,exttext)

输入参数:

Filename:ASCII文件名称

Tsobj:需要转换的fints型格式的金融时间序列数据

Exttext:不需要的描述项的行数

Dates:包含日起的列向量,日期格式必须是序数型

Data:列转置矩阵,每一列是一个数据序列

Dcolheads:列标题的单元数组,第一个单元列一定是日期列

Desc:描述性字符串,是文件的第一行

输出:stat:转换成功标志,成功为1,否则为0.

例 fints1 = fts2ascii(‘aa.txt’,ftsdata)

六、时间序列的缺失值补齐

格式:fillts(oldfts,fill_method,‘增加新日期’)

fill_method:处理缺失值的方法,常用的有以下五种。

1.线性插值方法  ‘linear’、‘l’、‘le’

2.3次多项式插值‘cubic’、‘c’、‘ce’

3.样条插值‘spline’、‘s’、‘se’

4.最近插值法‘nearest‘、‘n’、‘ne‘

5.逐段光滑的三次Hemite多项式法‘pchip‘、‘p’、‘pe’

6. 常数插值。用固定的常数代替缺失值。

7. ‘增加新日期’表示增加时间序列的长度,增加一个日期。以后探索。

七、时间序列频率的转换

格式:newfts=convertto(oldfts,newfreq)

八、价格与收益率相互转换

(1)价格转化为收益率

格式[RetSeries,RetIntervals]=price2ret(TickSeries,TickTimes,Method)

输入参数

TickSeries:价格列向量或矩阵,如果是矩阵的话,则每一列是一个时间序列。

TickTimes:单调递增的时间向量,长度与价格序列长度一致,如果不输入,或者为‘[]’,则默认样本点从1,2……,length(时间序列)

Method:计算收益率的方法,menthd不输入或者输入‘Continuous’ /[]时,默认为连续复利的形式。输入‘periodic’表示单利。

输出:

RetSeries:资产收益率矩阵,行数比价格矩阵少一行

RetIntervals:相邻的时间差。RetIntervals(i)=TickTimes(i+1)-TickTime(i)

注:

Method=‘continuous’时,第i期的收益率计算公式如下:

RetSeries(i)=log[TickTimes(i+1)/TickTimes(i+1)]/ RetIntervals(i).

Method=‘periodic’时, 第i期的收益率计算公式如下:

RetSeries(i)= [TickTimes(i+1)/TickTimes(i+1)-1]/ RetIntervals(i).

如果没有后面两个参数,则直接公式log[TickTimes(i+1)/TickTimes(i+1)]计算。

(2)收益率转化为价格

格式:

[TickSeries,TickTimes]=ret2price(RetSeries,StartPrice,,retinterval,starttime,method)

输入参数:

Retseries:收益率数据列向量/矩阵

StartPrice:资产的初试价格向量,元素个数为收益率矩阵的列数。默认值为1.

Retinterval:时间区间,默认值为1

Starttime:初试时间,标量,默认值为0

Method:与(1)相同。

输出:

TickSeries:资产价格矩阵

Starttime:时间向量。

1 2/3维图像分割工具箱 2 PSORT粒子群优化工具箱 3 matlab计量工具箱Lesage 4 MatCont7p1 5 matlab模糊逻辑工具箱函数 6 医学图像处理工具箱 7 人工蜂群工具箱 8 MPT3安装包 9 drEEM toolbox 10 DOMFluor Toolbox v1.7 11 Matlab数学建模工具箱 12 马尔可夫决策过程(MDP)工具箱MDPtoolbox 13 国立SVM工具箱 14 模式识别与机器学习工具箱 15 ttsbox1.1语音合成工具箱 16 分数阶傅里叶变换的程序FRFT 17 魔方模拟器与规划求解 18 隐马尔可夫模型工具箱 HMM 19 图理论工具箱GrTheory 20 自由曲线拟合工具箱ezyfit 21 分形维数计算工具箱FracLab 2.2 22 For-Each 23 PlotPub 24 Sheffield大学最新遗传算法工具箱 25 Camera Calibration 像机标定工具箱 26 Qhull(二维三维三角分解、泰森图)凸包工具箱 2019版 27 jplv7 28 MatlabFns 29 张量工具箱Tensor Toolbox 30 海洋要素计算工具箱seawater 31 地图工具箱m_map 32 othercolor配色工具包 33 Matlab数学建模工具箱 34 元胞自动机 35 量子波函数演示工具箱 36 图像局域特征匹配工具箱 37 图像分割graphcut工具箱 38 NSGA-II工具箱 39 chinamap中国地图数据工具箱(大陆地区) 40 2D GaussFit高斯拟合工具箱 41 dijkstra最小成本路径算法 42 多维数据快速矩阵乘法 43 约束粒子群优化算法 44 脑MRI肿瘤的检测与分类 45 Matlab数值分析算法程序 46 matlab车牌识别完整程序 47 机器人工具箱robot-10.3.1 48 cvx凸优化处理工具箱 49 hctsa时间序列分析工具箱 50 神经科学工具箱Psychtoolbox-3-PTB 51 地震数据处理工具CREWES1990版 52 经济最优化工具箱CompEcon 53 基于约束的重构分析工具箱Cobratoolbox 54 Schwarz-Christoffel Toolbox 55 Gibbs-SeaWater (GSW)海洋学工具箱 56 光声仿真工具箱K-Wave-toolbox-1.2.1 57 语音处理工具箱Sap-Voicebox 58 贝叶斯网工具箱Bayes Net Toolbox(BNT) 59 计算机视觉工具箱VFfeat-0.9.21 60 全向相机校准工具箱OCamCalib_v3.0 61 心理物理学数据分析工具箱Palamedes1_10_3 62 生理学研究工具箱EEGLAB 63 磁共振成像处理工具箱CONN 18b 64 matlab 复杂网络工具箱 65 聚类分析工具箱FuzzyClusteringToolbox 66 遗传规划matlab工具箱 67 粒子群优化工具箱 68 数字图像处理工具箱DIPUM Toolbax V1.1.3 69 遗传算法工具箱 70 鱼群算法工具箱OptimizedAFSAr 71 蚁群算法工具箱 72 matlab优化工具箱 73 数据包络分析工具箱 74 图像分割质量评估工具包 75 相关向量机工具箱 76 音频处理工具箱 77 nurbs工具箱 78 Nurbs-surface工具箱 79 grabit数据提取工具箱 80 量子信息工具箱QLib 81 DYNAMO工具箱 82 NEDC循环的整车油耗量 83 PlotHub工具箱 84 MvCAT_Ver02.01 85 Regularization Tools Version 4.1 86 MatrixVB 4.5(含注册) 87 空间几何工具箱 matGeom-1.2.2 88 大数计算工具箱 VariablePrecisionIntegers 89 晶体织构分析工具包 mtex-5.7.0 90 Minimal Paths 2工具箱 91 Matlab数学建模工具箱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值