Python 使用FIFO计算股票交易的已实现和未实现损益

Python 使用FIFO计算股票交易的已实现和未实现损益,python,dataframe,queue,stock,deque,Python,Dataframe,Queue,Stock,Deque,我对Python非常陌生,我试图弄清楚:如何从交易的数据框架到我的投资组合的数据框架,以及已实现和未实现的损益? 到目前为止,我从我的代理下载了事务列表,只是稍微清理一下这个数据帧。例如,假设我从一个数据框开始,它有两种股票(ABCD和EFGH),按股票和日期排序(最早的在顶部),包括股票名称、数量、交易方向和价格。设置如下所示: ABCD 5 Buy 100 ABCD 3 Buy 90 ABCD 6 Sell 105 EFGH 4 Buy 50 EFGH 3 Sell 55 EFGH 2 Bu

我对Python非常陌生,我试图弄清楚:如何从交易的数据框架到我的投资组合的数据框架,以及已实现和未实现的损益?

到目前为止,我从我的代理下载了事务列表,只是稍微清理一下这个数据帧。例如,假设我从一个数据框开始,它有两种股票(ABCD和EFGH),按股票和日期排序(最早的在顶部),包括股票名称、数量、交易方向和价格。设置如下所示:

ABCD 5 Buy 100
ABCD 3 Buy 90
ABCD 6 Sell 105
EFGH 4 Buy 50
EFGH 3 Sell 55
EFGH 2 Buy 53
EFGH 3 Sell 60
ABCD 2 40 60
EFGH 0 39 0
我希望得到一个数据框,包括股票名称、投资组合中的数量、已变现损益和未变现损益。假设ABCD的当前价格包含在其他地方(例如,在单独的数据框中;假设此时它的交易价格为120),这将用于未变现损益,如下所示:

ABCD 5 Buy 100
ABCD 3 Buy 90
ABCD 6 Sell 105
EFGH 4 Buy 50
EFGH 3 Sell 55
EFGH 2 Buy 53
EFGH 3 Sell 60
ABCD 2 40 60
EFGH 0 39 0
。。。这是真实的。ABCD的P/L为5*(105-100)+1*(105-90)且不真实。P/L应为2*(120-90)等

似乎
queue
deque
是解决方案,我怀疑这最终是一个非常简单的练习,但我真的不知道如何实现它,因此非常感谢您的帮助。我发现了一个类似的问题,但没有应用它的例子