views:

50

answers:

2

I'm looking for a Python plugin that would calculate the realized P&L for a number of stock transactions using the FIFO method.

For example, assume we have the following three MSFT trades :

+75 MSFT 25.10
+50 MSFT 25.12
-100 MSFT 25.22

The sell of 100 shares at 25.22 would fully net against the buy of 75 at 25.10 and partially net against the buy of 50 at 25.12 i.e.

Realized P&L = 75 * (25.22 - 25.10) + 25 * (25.22 - 25.12) = $ 11.50

The outstanding position would be:

+25 MSFT 25.12

+1  A: 

No Python, but the R project blotter --- which is part / core of the larger TradeAnalytics project on R-Forge does just that.

I recently needed a subset of the functionality in C++ and used the blotter code to benchmark / guide my port to C++. (That was at work, so no public C++ from that, sorry.)

Dirk Eddelbuettel
The rpy http://rpy.sourceforge.net/ and rpy2 http://rpy.sourceforge.net/rpy2.html plugins to python let you call R code from within python. They're kind of a pain to use, but you can get them working fairly easily if you know R. It's probably overkill to use them in this situation though.
Wilduck
A: 

This should be easy to write yourself in Python. "FIFO" is short for "first in, first out queue". Buys are added to the back of the queue. Sells munch buys (or parts of them) off the front of the queue.

Python's collection.deque (double-ended queue) is what you need for the mechanics.

John Machin