Я пытаюсь создать небольшую отчетность по торговле акциями в пандах.Это становится немного сложнее из-за последующих покупок и продаж.Предполагая, что у меня есть покупки и продажи в фрейме данных:
import pandas as pd
data = pd.read_csv("ticker1.csv", delimiter=";")
data['cumsum']=data['quantity'].cumsum(axis=0)
data
Date qty price cumsum
0 2018-01-20 80 20.70 80
1 2018-02-14 90 20.82 170
2 2018-02-19 -100 20.62 70
3 2018-02-27 -70 20.55 0
4 2018-03-13 30 19.80 30
5 2018-03-14 10 19.55 40
6 2018-03-30 -20 20.92 20
7 2018-04-01 -10 20.95 10
8 2018-04-10 -10 21.03 0
9 2018-05-04 25 19.77 25
10 2018-05-31 -10 20.22 15
Таким образом, могут быть «завершенные» циклы покупки и продажи, когда cumsum = 0 (нет коротких продаж).В этом примере в конце будет открытая позиция 15.Чтобы проанализировать сделки, я хотел бы сгруппировать их следующим образом:
Date qty price cumsum group
0 2018-01-20 80 20.70 80 1
1 2018-02-14 90 20.82 170 1
2 2018-02-19 -100 20.62 70 1
3 2018-02-27 -70 20.55 0 1
4 2018-03-13 30 19.80 30 2
5 2018-03-14 10 19.55 40 2
6 2018-03-30 -20 20.92 20 2
7 2018-04-01 -10 20.95 10 2
8 2018-04-10 -10 21.03 0 2
9 2018-05-04 25 19.77 25 3
10 2018-05-31 -10 20.22 15 3
Я пытаюсь сгруппировать транзакции до следующего раза cumsum = 0.Затем я мог бы просмотреть группы для дальнейшего анализа (например, посмотреть, была ли это выигрышная или убыточная сделка, # дней между первой покупкой и последней продажей и т. Д.), И я мог бы видеть, что в этом случае есть открытая позиция вмомент (если последнее значение для cumsum! = 0).
Может, кто-нибудь подскажет, как я могу реализовать группировку?
Спасибо