Main Content

将金融时间序列对象 (fints) 转换为时间表

在 R2023a 中,删除了金融时间序列 (fints) 及其关联方法,并用 MATLAB® timetable 函数将其替代。如果您使用 fints 或其关联方法,您会遇到错误。为了帮助您从较旧的 fints 转换为更新的 timetable 功能,请使用以下信息。

创建时间序列

I/O 相关操作

任务已删除的功能使用此功能
通过传入数据和日期来构造fints(dates,data,datanames)

使用 timetable

timetable(rowTimes,var1,...,varN,'VariableNames',{'a','b',...})

通过转换文件来构造ascii2fts(filename,descrow,colheadrow,skiprows)使用 readtabletable2timetable

T = readtable(filename,opts,Name,Value)

TT = table2timetable(T,'RowTimes',timeVarName)

写入文件fts2ascii(filename,tsobj,exttext)使用 writetable

writetable(TT,filename)

转换为矩阵fts2mat(tsobj)

S = vartype('numeric');

TT2 = TT(:,S)

TT2.Variables

对对象进行索引

对对象进行索引

任务已删除的功能使用此功能
使用日期进行索引myfts('05/11/99')

TT({'1999-05-11'},:)

使用日期范围进行索引myfts ('05/11/99::05/15/99')

使用 timerange

S = timerange('1999-05-11','1999-05-15');

TT2 = TT(S,:)

使用整数进行行索引

myfts.series2(1)

myfts.series2([1, 3, 5])

myfts.series2(16:20)

TT(1,{'series2'})

TT([1, 3, 5],{'series2'})

TT(16:20,{'series2'})

特定时间字段的内容myfts.times使用 timeofday

timeofday(TT.Properties.RowTimes)

矩阵中特定字段的内容fts2mat(myfts.series2)

TT.series2

变换时间序列

假设所有变量都是时间表中的数值,或者可以对 TT2 应用运算:

S = vartype('numeric');

TT2 = TT(:,S)

过滤时间序列

任务已删除的功能使用此功能
博克斯考克斯变换newfts = boxcox(oldfts)

使用 boxcox

TT.Variables = boxcox(TT.Variables)

差分diff(myfts)

TT{2:end,:} = diff(TT.Variables)

TT(1,:) = []

使用整数进行行索引

fillts(oldfts,fill_method)

使用 fillmissing

fillmissing(TT,method)

(假设没有日期缺失)

线性滤波filter(B,A, myfts)

使用 filter

TT.Variables = filter(b,a,TT.Variables)

使时间序列对象滞后或超前

lagts(myfts,lagperiod)

leadts(myfts,leadperiod)

使用 lag

lag(TT,lagperiod)

lag(TT,-leadperiod)

(假设时间表有固定间隔)

定期平均peravg(myfts)

使用 retime

retime(TT,newTimes,'mean')

对数据进行下采样resamplets(oldfts,samplestep)

使用 retime

retime(TT,newTimeStep,method)

平滑处理数据smoothts(input)

使用 smoothdata

smoothdata(TT)

移动平均线tsmovavg(tsobj,method,lag)

使用 movavg

movavg(TT,type,windowSize)

转换时间序列

假设所有变量都是时间表中的数值,或者可以对 TT2 应用运算:

S = vartype('numeric');

TT2 = TT(:,S)

转换运算

任务已删除的功能使用此功能
转换为指定频率convertto(oldfts,newfreq)

使用 retime

retime(TT,newTimeStep,method)

转换为每年toannual(oldfts,...)

使用 convert2annual

convert2annual(TT,…)

转换为每日todaily(oldfts,...)使用 convert2daily

convert2daily(TT,…)

转换为每月tomonthly(oldfts,...)使用 convert2monthly

convert2monthly(TT,…)

转换为每季度toquarterly(oldfts,...)

使用 convert2quarterly

convert2quarterly(TT,…)

转换为每半年tosemi(oldfts,...)

使用 convert2semiannual

convert2semiannual(TT,…)

转换为每周toweekly(oldfts,...)

使用 convert2weekly

convert2weekly(TT,…)

合并时间序列

合并运算

任务已删除的功能使用此功能
合并多个时间序列对象merge(fts1,fts2)

[TT1;TT2](要求变量名称相同)

unique(TT)

将金融时间序列对象水平串联horzcat(fts1,fts2)[fts1,fts2]

使用 horzcatsynchronize

horzcat[TT1,TT2](要求变量名称相同)或

synchronize(TT1,TT2)

将金融时间序列对象垂直串联vertcat(fts1,fts2)[fts1;fts2]使用 vertcat

vertcat[TT1;TT2]

分析时间序列

由于时间表具有可包含异构变量的灵活性,它不支持数学运算,也不支持描述性统计计算。如果您想要对时间表应用任何数值计算,请按照以下规范操作。

假设所有变量都是时间表中的数值,或者可以对 TT2 应用运算:

S = vartype('numeric');

TT2 = TT(:,S)

描述统计学以及算术和数学运算

任务已删除的功能 使用此功能
提取数值数据srs2 = myfts.series2

TT.Variables

应用一些选项(统计量)例如:minmaxmeanmediancovstdvar

使用 cov(或者 maxmeanmedianminstdvar):

cov(TT.Variables)

应用一些选项(运算)例如:sumcumsum

使用 sumcumsum

TT.Variables = cumsum(TT.Variables)

数据提取

有关数据提取方法和示例,请参阅 timetable 文档。

另请参阅

| | | | | | | | | | | | | | | | | |

相关主题