2010-06-24 2 views
5

Я ищу плагин Python, который бы вычислил реализованный P & L для ряда транзакций с использованием метода FIFO.Как рассчитать реализованные P & L биржевых торгов с использованием метода FIFO в Python?

Например, предположим, что мы имеем следующие три MSFT сделки:

+75 MSFT 25,10
+50 MSFT 25,12
-100 MSFT 25,22

Распродажа 100 акций по 25.22 будет полностью чистой против покупки 75 в 25.10 и частично против чистой покупки 50 в 25.12, т.е.

Реализованный P & L = 75 * (25,22 - 25,10) + 25 * (25,22 - 25,12) = $ 11,50

Выдающееся положение было бы:

+25 MSFT 25,12

+0

не ищу, чтобы вы его кодовое название - скорее, я ищу библиотеку, которая обрабатывает транзакционный и бухгалтерский аспект торговли. –

ответ

4

Нет Python, но R проект blotter --- который является частью/ядро ​​большего TradeAnalytics проекта по R-Forge делает именно это.

Я недавно нуждался в подмножестве функциональности на C++ и использовал код blotter для сравнения/указания моего порта на C++. (Это было на работе, поэтому нет публичного C++ из этого, извините.)

+0

rpy http://rpy.sourceforge.net/ и rpy2 http://rpy.sourceforge.net/rpy2.html плагины для python позволяют вам вызвать R-код из python. Они как бы больно использовать, но вы можете заставить их работать довольно легко, если вы знаете R. Вероятно, слишком сложно использовать их в этой ситуации. – Wilduck

+0

Blotter предоставит 'Period.Realized.PL' из $ 11.2 и' Period.Unrealized.PL' $ 1.3 для приведенного выше примера. это не то же самое, что и у fifo. blotter использует 'TxnQty * ConMult * (PrevPosAvgCost - TxnAvgCost)' для вычисления 'Period.Realized.PL' –

4

Это должно быть легко написать в Python. «FIFO» сокращен для «сначала в, сначала очереди». Покупатели добавляются в конец очереди. Sells munch покупает (или их части) с передней части очереди.

Python's collection.deque (двухсторонняя очередь) - это то, что вам нужно для механики.

+0

Эй, Джон, вы можете изменить свой ответ на счет для коротких позиций. –