2017-08-03 109 views
0

使用彭博公式: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] 

我的想法是创建两套数据在彭博公式中偏移了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] 

然后我用公式:

但我得到一个错误#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

让我们假设B2包含您的彭博公式返回下面的字符串...

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) 

现在你可以使用以下数组公式,这需要与控制+ 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)))))) 

希望这有助于!