Excel数组公式每日%差异计算St偏差

时间:2017-08-03 17:12:35

标签: arrays excel

使用彭博公式:

=BDH("AAPL US Equity", "PX_LAST", "01/01/2017", "30/06/2017", "Array=True", "dts=h")

在一个单元格中将每日价格作为数组:

[116.15,116.02, 116.61, 117.91, 118.99, 119.11, 119.75, 119.25, 119.04,...143.68,144.02]

我的想法是在bloomberg公式中创建两组数据偏移1天,或者最好通过简单地从每个数组的每一端删除一条数据。

[116.15 [116.02
116.02  116.61
116.61  117.91
117.91  118.99
118.99  119.11
119.11  119.75
119.75  119.25
119.25] 119.04]

然后我使用公式:

=STDEV(SUMPRODUCT(1/([Array1]), [Array2]))

但我收到错误#DIV/1!

相当确定我对数组除法做错了,因为sumproduct给出1个数字,我希望它的输出是一个数组来计算st.dev。

我正在寻找每日回报创建一个数组:

[-0.001119242   0.00508533  0.011148272 0.009159528 0.001008488 0.005373184 -0.004175365    -0.001761006    0.008064516 -8.33333E-05    -0.001750146    0.001836701 0.000666667 -0.000916056    0.015920647 0.000492287 8.20075E-05 -0.002624026]

然后我可以使用STDEV()公式来获得标准偏差。

我想在一个单元格中执行此操作,以免浪费电子表格空间。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我们假设B2包含您的Bloomberg公式,返回以下字符串......

116.15, 116.02, 116.61, 117.91, 118.99, etc...

首先定义一个名称,使其以数组的形式返回这些价格......

Name:  Prices

Refers to:  =EVALUATE("{"&Sheet1!$B$2&"}")

然后定义另一个名称,以便它返回该数组中的元素数...

Name:  PriceCnt

Refers to:  =COUNT(Prices)

现在您可以使用以下数组公式,需要使用CONTROL + SHIFT + ENTER ...

进行确认
=STDEV((INDEX(Prices,N(IF(1,ROW(INDEX($A:$A,2):INDEX($A:$A,PriceCnt)))))-INDEX(Prices,N(IF(1,ROW(INDEX($A:$A,1):INDEX($A:$A,PriceCnt-1))))))/INDEX(Prices,N(IF(1,ROW(INDEX($A:$A,1):INDEX($A:$A,PriceCnt-1))))))

希望这有帮助!