Excel数组公式每日差异计算St偏差
采用彭博公式:
=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公式中创build两组偏移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。
我正在寻找与每个每日回报创build一个数组:
[-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()公式来获得标准偏差。
我想在一个单元格中这样做,以免浪费电子表格空间。
有任何想法吗?
让我们假设B2包含您的彭博公式返回以下string…
116.15, 116.02, 116.61, 117.91, 118.99, etc...
首先定义一个名称,以便以数组的forms返回这些价格…
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))))))
希望这可以帮助!