主要内容

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

R2026b

在 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)使用 readtable 和 table2timetable:

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]

使用 horzcat 或 synchronize:

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

应用一些选项(统计量)例如:min、max、mean、median、cov、std 和 var

使用 cov(或者 max、mean、median、min、std 或 var):

cov(TT.Variables)

应用一些选项(运算)例如:sum 和 cumsum

使用 sum 或 cumsum:

TT.Variables = cumsum(TT.Variables)

数据提取

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

另请参阅

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

主题