0

假设我有一个矩阵 (NX2),其中第一列的元素是秒数(从午夜开始),第二列是与秒相关联的股票收益。如何使用函数 geomean 并计算特定时间间隔的几何回报?假设几何平均值每隔一分钟返回一次?问题是我可能会说在某个特定的分钟间隔内有 4 次股票回报,而有时在另一个间隔内有 10 次回报。如果我按分钟提取所有交易,则每分钟间隔内登记的回报数量将不一样。
谢谢!

4

2 回答 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 回答