使用彭博公式:
=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()公式来获得标准偏差。
我想在一个单元格中执行此操作,以免浪费电子表格空间。
有什么想法吗?
答案 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))))))
希望这有帮助!