fints储存金融时间序列

处理一分钟沪深高频数据,填补空缺数据。

step1:用excel中的vlookup函数生成一个时间序列完整的表格(缺失的数据为空)
step2:

>>DataSet=importdata('dataa.xlsx'); %导入excel表格数据 用xlsread应该也可以

>> myFTS=fints(DataSet(:,1),DataSet(:,2:7),{'a','b','c','d','e','f'}); %返回金融时间序列对象

1、访问fints对象的数据

 >>myFTS(7:8)  %第7行到第8行的数据
>>myFTS([1 3 4])  %第1、3、4行的数据
(index只能是行)
>>myFTS.close   %名为“close”列的数据
(DOT indexing,列)
>>myFTS.close(1:3)    %名为“close”列 从第一行到第三行的数据
(两者结合)
注意,无论使用什么方式访问,最后得到的,仍旧是一个 FINTS 对象

2、fints对象的运算
和矩阵的运算基本相同
>> myFTS.close+1;  % 名为“close”一列数据 加一
>> myFTS.close - myFTS.open; %列相减
>> myFTS.high ./ myFTS.low; %列相除

不能直接做的运算,可以用 fts2mat 方法,把 FINTS 对象的数据先转换成矩阵,再进行运算,如:


>>sum( fts2mat(myFTS.close) )   %fts2mat 转化为矩阵   http://cn.mathworks.com/help/finance/fts2mat.html



参考:https://zhuanlan.zhihu.com/p/21409091

isnan 判断是否为NAN
isempty 判断矩阵(向量)是否为空

for i=1:270:811   #测试前三天数据 以270为跨度进行循环 判断每天第一个数据是否缺失
if isnan(DataSet(i,2))==1 #判断每天第一个数据是否缺失
j=i; 
while isnan(DataSet(j,2))==1  #前j个数据缺失
j=j+1;
end
DataSet(i,2:7)=DataSet(j+1,2:7); #讲第j+1行数据赋值给第j行
end
for k=i+1:1:i+269  #处理中间诗句缺失
if isnan(DataSet(k,2))==1
DataSet(k,2:7)=DataSet(k-1,2:7);
end
end
end

 
posted @ 2017-02-02 13:36  开怀  阅读(487)  评论(0编辑  收藏  举报