Взятие средневзвешенного значения до определенного индекса без использования цикла for - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь увидеть, какого ценового движения ожидать, когда большой заказ проходит через книгу заказов. У меня есть данные снимка книги заказов, которые выглядят так:

                         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. Теперь я хочу вычислить среднее значение bid_price до уровня 10. Это был бы взвешенный среднее значение bid_price bid_size. Есть ли способ рассчитать (bid_price bid_size) / total_size до уровня 10 без использования цикла For?

1 Ответ

0 голосов
/ 28 августа 2018

Предположим, ваши данные хранятся в 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, если вы планируете использовать математические операторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...