2010-06-24 20 views
5

Estoy buscando un complemento de Python que calcule el P & L realizado para un número de transacciones de valores utilizando el método FIFO.¿Cómo calcular las pérdidas y ganancias realizadas de las operaciones bursátiles utilizando el método FIFO en Python?

Por ejemplo, supongamos que tenemos las siguientes tres operaciones: MSFT

75 MSFT 25.10
50 MSFT 25.12
-100 MSFT 25.22

La venta de 100 acciones a 25,22 haría totalmente neta contra la compra de 75 a 25,10 y parcialmente red contra la compra de 50 a 25,12 es decir

Realizada P & L = 75 * (25,22-25,10) + 25 * (25,22 - 25,12) = $ 11,50

La posición destacada sería:

25 MSFT 25.12

+0

No busco que me lo codifique, sino que estoy buscando una biblioteca que maneje el aspecto transaccional y contable de la negociación. –

Respuesta

4

Sin Python, pero el proyecto Rblotter --- que es parte/núcleo del proyecto más amplio TradeAnalytics en R-Forge hace justamente eso.

Recientemente necesité un subconjunto de la funcionalidad en C++ y usé el código blotter para comparar/guiar mi puerto a C++. (Eso estaba en el trabajo, así que no C++ público de eso, lo siento.)

+0

Los plugins rpy http://rpy.sourceforge.net/ y rpy2 http://rpy.sourceforge.net/rpy2.html de python le permiten llamar al código R desde dentro de python. Son un poco dolorosos de usar, pero puedes hacer que funcionen con bastante facilidad si conoces a R. Sin embargo, es probablemente exagerado usarlos en esta situación. – Wilduck

+0

secante dará 'Period.Realized.PL' de $ 11.2 y' Period.Unrealized.PL' de $ 1.3 para el ejemplo anterior. no es lo mismo que fifo. papel secante utiliza 'TxnQty * ConMult * (PrevPosAvgCost - TxnAvgCost)' para calcular 'Period.Realized.PL' –

4

Esto debería ser fácil de escribir en Python. "FIFO" es la abreviatura de "primero en entrar, primero en salir queue". Las compras se agregan al final de la cola. Vende munch compras (o partes de ellas) fuera del frente de la cola.

Python's collection.deque (cola de doble extremo) es lo que necesita para la mecánica.

+0

Hola John, es posible que desee modificar su respuesta a la cuenta para posiciones cortas. –

Cuestiones relacionadas