2010-02-13 65 views
8

Estoy buscando una biblioteca financiera para Python que me permita hacer un análisis de flujo de caja descontado. He buscado y encontrado QuantLib, que es demasiado para lo que quiero hacer. Solo necesito una pequeña biblioteca que pueda usar para ingresar una serie de flujos de efectivo y hacer que arroje un valor presente neto y una tasa interna de rendimiento. ¿Alguien tiene algo así o sabe dónde puedo encontrarlo?Biblioteca financiera básica para Python

Respuesta

12

Para completar, ya que llego tarde: numpy tiene algunas funciones para los cálculos financieros (muy) básicos. numpy, scipy también podrían utilizarse, para hacer los cálculos de las fórmulas básicas como en R.

valor presente neto del flujo de caja

>>> cashflow = 2*np.ones(6) 
>>> cashflow[-1] +=100 
>>> cashflow 
array([ 2., 2., 2., 2., 2., 102.]) 
>>> np.npv(0.01, cashflow) 
105.79547647457932 

obtener tasa interna o volver

>>> n = np.npv(0.01, cashflow) 
>>> np.irr(np.r_[-n, cashflow]) 
0.010000000000000231 

sólo el conceptos básicos:

>>> [f for f in dir(np.lib.financial) if not f[0] == '_'] 
['fv', 'ipmt', 'irr', 'mirr', 'np', 'nper', 'npv', 'pmt', 'ppmt', 'pv', 'rate'] 

y es necesario vigilar cuál es el momento.

+0

es tan divertido cuando uno puede usar el método irr de np durante la clase de finanzas – moldovean

3

Si realmente solo desea calcular el valor presente neto (== un producto interno de vectores para flujos de caja y factores de descuento) y la tasa interna de rendimiento (== una búsqueda raíz iterativa simple para una variable), puede simplemente codificar arriba.

utilizo R mucho más que Python asi que aquí hay una solución R:

R> data <- data.frame(CF=c(rep(2,5), 102), df=1.01^(-(1:6))) 
R> data 
    CF  df 
1 2 0.9901 
2 2 0.9803 
3 2 0.9706 
4 2 0.9610 
5 2 0.9515 
6 102 0.9420 
R> NPV <- sum(data[,1] * data[,2]) 
R> print(NPV) 
[1] 105.8 
R> 

Esto establece la estructura de datos de dos columnas de flujos de efectivo y los factores de descuento y calcula el VAN como la suma de los productos. Por lo tanto, un bono (simplista) a seis años con un cupón del 2% en una curva de rendimiento plana del 1% valdría 105,80.

Para TIR, que hacen casi lo mismo, pero que el VAN en función de la tasa:

R> irrSearch <- function(rate) { data <- data.frame(CF=c(rep(2,5), 102), 
           df=(1+rate/100)^(-(1:6))); 
           100 - sum(data[,1] * data[,2]) } 
R> uniroot(irrSearch, c(0.01,5)) 
R> irr <- uniroot(irrSearch, c(0.01,5)) 
R> irr$root 
[1] 2 
R> 

Así que la 'raíz' a la búsqueda de la tasa interna de retorno de los bonos al 2% en una el mundo de curva plana es ... como era de esperar, un 2%.

+0

Vea esta biblioteca: http://rpy.sourceforge.net/index.html Eso le permitirá llamar a R desde Python sin mucho trabajo adicional. –

+1

Sí, pero eso está en modo de mantenimiento. Puede ser más prudente usar el nuevo RPy2 en su lugar. –

Cuestiones relacionadas