假设我有一个矩阵 (NX2),其中第一列的元素是秒数(从午夜开始),第二列是与秒相关联的股票收益。如何使用函数 geomean 并计算特定时间间隔的几何回报?假设几何平均值每隔一分钟返回一次?问题是我可能会说在某个特定的分钟间隔内有 4 次股票回报,而有时在另一个间隔内有 10 次回报。如果我按分钟提取所有交易,则每分钟间隔内登记的回报数量将不一样。
谢谢!
问问题
1297 次
2 回答
1
只要您将时间以分钟为单位(从午夜开始)作为整数,您就可以使用我的合并函数和 geomean 来计算您需要的时间,并且它是矢量化的。只需从文件交换处下载即可。
Consolidator将返回它在给定分钟内找到任何数据的时间向量,以及每个时间返回的几何平均值。
于 2012-06-01T10:30:47.877 回答
1
你可以用一个简单的方法做到这一点arrayfun
:
>> n = [15 1;25 2;67 3; 99 4;182 5] #% example data
n =
#% t(s) val
15 1
25 2
67 3
99 4
182 5
>> t1=0:60:240;
>> t2=t1+60;
>> arrayfun(@(t1,t2) geomean(n( n(:,1)>t1 & n(:,1)<=t2, 2)), t1,t2)
ans =
1.4142 3.4641 NaN 5.0000 NaN
t1
并且t2
只是您感兴趣的窗口的开始和结束时间的向量。在这里,我将它们设置为连续的 60 秒间隔;但是它们可以是您想要的任何东西。不连续的,重叠的,你说的。
n
匿名函数在被调用时捕获存在的矩阵arrayfun
,并为每t1,t2
对矩阵的行创建一个逻辑索引。
于 2012-06-01T14:57:20.300 回答