我正在尝试查看大笔订单通过订单时的价格走势。我有订单簿快照数据,如下所示:
bid_price bid_size ask_price ask_size level bid_size_cumsum ask_size_cumsum
2018-08-27 14:25:30+00:00 6717.49 0.735502 6717.50 56.117221 0 0.735502 56.117221
2018-08-27 14:25:30+00:00 6717.22 0.300000 6717.56 0.018600 1 1.035502 56.135821
2018-08-27 14:25:30+00:00 6717.01 1.000000 6717.94 0.001000 2 2.035502 56.136821
2018-08-27 14:25:30+00:00 6717.00 2.500000 6718.30 0.001000 3 4.535502 56.137821
2018-08-27 14:25:30+00:00 6716.78 0.001000 6718.46 0.003000 4 4.536502 56.140821
2018-08-27 14:25:30+00:00 6716.25 0.617698 6718.95 2.225920 5 5.154200 58.366741
2018-08-27 14:25:30+00:00 6716.19 0.046394 6719.00 6.900000 6 5.200593 65.266741
2018-08-27 14:25:30+00:00 6715.00 0.001000 6719.20 0.001000 7 5.201593 65.267741
2018-08-27 14:25:30+00:00 6712.94 2.895080 6719.26 0.001000 8 8.096673 65.268741
2018-08-27 14:25:30+00:00 6710.98 1.033114 6719.96 0.001000 9 9.129787 65.269741
2018-08-27 14:25:30+00:00 6710.85 1.870000 6720.00 8.316950 10 10.999787 73.586691
2018-08-27 14:25:30+00:00 6710.78 0.306467 6720.01 0.001000 11 11.306254 73.587691
2018-08-27 14:25:30+00:00 6710.62 0.900000 6720.02 2.848228 12 12.206254 76.435919
级别是订单簿级别,因此级别0将是订单的顶部。 假设我想通过出价卖出数量10,从bid_size_cumsum中可以看到,当达到10级时,我将得到10。现在,我要计算平均出价,直到10级。这将是加权的平均标价出价大小。有没有一种方法可以计算(bid_price bid_size)/ total_size直到第10级,而无需使用For循环?
答案 0 :(得分:1)
假设您的数据存储在df
中。如果数据是数字,则可以将多个操作套用。 /添加和其他到您的数据:
ten_rows = df[:10] # Slice first ten values from your data frame
result = ten_rows['bid_price'] * ten_rows['bid_size'] / ten_rows['bid_size_cumsum']
结果是目标加权平均值。
附言检查数据的dtype,是否会得到TypeError
:df.dtypes
。如果您打算使用数学运算符,则应为int / float类型。