Sei sulla pagina 1di 20

10/8/2019 Introducción a Finanzas con Python

Raul E. Lopez Briega


(https://relopezbriega.github.io/)
Matemáticas, análisis de datos y python
Atom (/atom.xml)

Search 

About (/pages/acerca-de-mi.html)
Home Page (/index.html)
Archives (/archives.html)
Mi otro Blog (http://relopezbriega.com.ar/)
IAAR Book (https://iaarbook.github.io/)
2048 (/2048/)
Contacto (/pages/contacto.html)

Introducción a Finanzas con Python


vie 28 agosto 2015

Introducción
En el vertiginoso mundo actual de las finanzas (https://es.wikipedia.org/wiki/Finanzas); dónde la velocidad, frecuencia y
volumen de los datos aumentan a un ritmo considerable; la aplicación combinada de tecnología y software, junto con
algoritmos avanzados y diferentes métodos para recopilar, procesar y analizar datos se ha vuelto fundamental para obtener

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 1/20
10/8/2019 Introducción a Finanzas con Python

la información necesaria para una eficiente toma de decisiones. Es dentro de este contexto, que se viene produciendo un
gran crecimento en la utilización de Python (https://www.python.org/) dentro de la industria de las finanzas
(https://es.wikipedia.org/wiki/Servicios_financieros).

Python (https://www.python.org/) se esta comenzando a utilizar ampliamente en diversos sectores de las finanzas
(https://es.wikipedia.org/wiki/Finanzas), como la banca, la gestión de inversiones, los seguros, e incluso en los bienes
raíces; se utiliza principalmente para la construcción de herramientas que ayuden en la creación de modelos financieros
(https://en.wikipedia.org/wiki/Financial_modeling), gestión de riesgos
(https://es.wikipedia.org/wiki/Gesti%C3%B3n_de_riesgos), y el comercio. Incluso las grandes corporaciones financieras,
como Bank of America (https://www.bankofamerica.com/) o JP Morgan (https://www.jpmorgan.com/pages/jpmorgan), estan
comenzando a utilizar Python (https://www.python.org/) para construir su infraestructura para la gestión de posiciones
financieras, precios de activos (https://es.wikipedia.org/wiki/Modelo_de_valoraci%C3%B3n_de_activos_financieros),
gestión de riesgos (https://es.wikipedia.org/wiki/Gesti%C3%B3n_de_riesgos), sistemas de comercio y comercio algoritmico
(https://en.wikipedia.org/wiki/Algorithmic_trading).

Algunas de las razones que hacen de Python (https://www.python.org/) un lenguaje de programación


(https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n) tan atractivo en el mundo de las finanzas son:

Su simple sintaxis: Python (https://www.python.org/) es mundialmente conocido por lo fácil que resulta leerlo,
muchas veces no existen casi diferencias entre seudo código y Python (https://www.python.org/); tampoco suelen
existir muchas diferencias entre expresar un algoritmo (https://es.wikipedia.org/wiki/Algoritmo) matematicamente o
en Python (https://www.python.org/).

Su ecosistema: Python (https://www.python.org/) es mucho más que un lenguaje de programación


(https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n), es todo un ecosistema en sí mismo; ya que
podemos encontrar un sinnúmero de herramientas para realizar cualquier tipo de tareas; en Python
(https://www.python.org/) podemos encontrar módulos para realizar cálculos científicos, módulos para desarrollar
aplicaciones webs, módulos para realizar tareas de administración de sistemas, módulos para trabajar con bases
de datos; entre otros. Todos ellos muy fácilmente integrables dentro del lenguaje. La variedad del ecosistema de
herramientas de Python (https://www.python.org/), nos ofrece la posibilidad de desarrollar una solución completa a
cualquier tipo de problema utilizando un solo lenguaje de programación
(https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n).

Su integración: Otras de las características por la que Python (https://www.python.org/) es también famoso, es
por su fácil integración con otros lenguajes de programación
(https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n). Generalmente, las grandes empresas suelen
tener herramientas desarrolladas en distintos lenguajes de programación
(https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n); las características dinámicas de Python
(https://www.python.org/), hacen que sea ideal para unir todos esos distintos componentes en una sola gran
aplicación. Python (https://www.python.org/) puede ser enlazado fácilmente a herramientas desarrollas en C
(https://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n)), C++
(https://es.wikipedia.org/wiki/C%2B%2B) o Fortran (https://es.wikipedia.org/wiki/Fortran).

Eficiencia y productividad: Por último, otra de las características que hacen a Python (https://www.python.org/)
tan atractivo, es que con él, se pueden lograr resultados de calidad en una forma mucho más eficiente y
productiva. La mayoría de sus módulos están ampliamente testeados y cuentan con el soporte de una amplia
comunidad de usuarios; sus características dinámicas e interactivas lo hacen ideal para el análisis exploratorio de
datos facilitando los análisis financieros. También es sabido, que la elegancia de su sintaxis hace que se
necesiten mucho menos líneas de código para desarrollar un programa en Python (https://www.python.org/) que
en casi cualquier otro lenguaje de programación
(https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n).

Principales librerías
Las principales librerías que vamos a utilizar para realizar tareas de analisis financiero con Python
(https://www.python.org/) son muchas de las que ya he venido hablando en anteriores artículos; principalmente:
https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 2/20
10/8/2019 Introducción a Finanzas con Python

Pandas (https://pandas.pydata.org/): La cual fue diseñada desde un comienzo para facilitar el análisis de datos
financieros, principalmente las series de tiempo (https://es.wikipedia.org/wiki/Serie_temporal) propias del mercado
cambiario de acciones. Con las estructuras de datos (https://es.wikipedia.org/wiki/Estructura_de_datos) que nos
brinda esta librería se vuelve sumamente fácil modelar y resolver problemas financieros.
Numpy (https://www.numpy.org/): El principal modulo matemático que nos ofrece Python
(https://www.python.org/), en el no solo vamos a encontrar las siempre prácticas matrices
(https://es.wikipedia.org/wiki/Matriz_(matem%C3%A1ticas)) que facilitan en sobremanera el manejo de
información numérica; sino que también vamos a poder encontrar un gran número de funciones matemáticas.
Matplotlib (https://matplotlib.org/): La siempre vigente librería para realizar gráficos en Python
(https://www.python.org/).
statsmodels (https://statsmodels.sourceforge.net/): Si de estadística se trata, no hay como esta librería para
realizar cualquier tipo de analisis estadístico.
PuLP (https://pythonhosted.org//PuLP/): La cual nos permite crear modelos de programación lineal
(https://es.wikipedia.org/wiki/Programaci%C3%B3n_lineal) en forma muy sencilla.
Quandl (https://www.quandl.com/help/python): Este módulo nos permite interactuar fácilmente con la API
(https://es.wikipedia.org/wiki/Interfaz_de_programaci%C3%B3n_de_aplicaciones) de quandl.com
(https://www.quandl.com/) para obtener en forma muy sencilla todo tipo de información financiera.
Zipline (https://www.zipline.io/): Zipline (https://www.zipline.io/) es una librería para el comercio algoritmico
(https://en.wikipedia.org/wiki/Algorithmic_trading); esta basada en eventos y trata de aproximarse lo más cerca
posible a como operan los verdades sistemas de comercio electrónico de las principales bolsas del mundo. Zipline
(https://www.zipline.io/) es una de las principales tecnologías detrás del popular sitio quantopian.com
(https://www.quantopian.com/), la comunidad web que pone a prueba distintos algoritmos
(https://es.wikipedia.org/wiki/Algoritmo) de comercio algoritmico (https://en.wikipedia.org/wiki/Algorithmic_trading).

Bueno, pero basta de introducciones y pasamos a describir los principales conceptos financieros y como podemos
calcularlos con la ayuda de Python (https://www.python.org/), ya que el tiempo es dinero!!.

Conceptos básicos de Finanzas


Los conceptos más básicos que podemos encontrar dentro de las finanzas son: valor futuro
(https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero), valor presente
(https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero), y la tasa interna de retorno
(https://es.wikipedia.org/wiki/Tasa_interna_de_retorno). Estos conceptos nos dicen cuanto nuestro dinero va a crecer si lo
depositamos en un banco (valor futuro (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero)), cuanto vale hoy la promesa
de unos pagos que recibiremos en el futuro(valor presente (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero)), y qué
tasa de rendimiento podemos obtener de nuestras inversiones (tasa interna de retorno
(https://es.wikipedia.org/wiki/Tasa_interna_de_retorno)). Recordemos que todos los activos financieros y toda planificación
financiera siempre tiene una dimensión de tiempo; así por ejemplo si depositamos USD 100 en un banco que nos paga
una tasa de interés anual de 6% , luego de un año obtendríamos un importe de USD 106.

Valor Futuro
El valor futuro (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) o FV (por sus siglas en inglés), nos indica el valor en
el futuro que tendrá el dinero depositado hoy en una cuenta bancaria que nos pague intereses. El valor futuro
(https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) de USD X depositado hoy en una cuenta que paga r% de interés
anual y que es dejado en la cuenta durante n años es X ∗ (1 + r)n . El valor futuro
(https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) es nuestro primer ejemplo de interés compuesto
(https://es.wikipedia.org/wiki/Inter%C3%A9s_compuesto), es decir, el principio de que podemos ganar intereses sobre los
intereses. De la definición que dimos del valor futuro (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero), podemos
obtener su expresión matemática:
n
F V = X ∗ (1 + r)

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 3/20
10/8/2019 Introducción a Finanzas con Python

Como podemos ver, su cálculo es bastante simple. Veamos un ejemplo de como calcular el FV de un depósito de USD
1000 a 3 años y con una tasa de interés del 6% anual.

In [1]: # graficos embebidos


%matplotlib inline

In [2]: # Ejemplo FV con python


# $1000 al 6% anual por 3 años.

# importando librerías
import numpy as np
import matplotlib.pyplot as plt

x = -1000 # deposito
r = .06 # tasa de interes
n = 3 # cantidad de años

# usando la funcion fv de numpy


FV = np.fv(pv=x, rate=r, nper=n, pmt=0)
FV
Out[2]: 1191.016

In [3]: # Controlando el resultado


x * (1 + r)**n
Out[3]: -1191.016

In [4]: # Graficando las funciones con interes de 6 y 12 % a 20 años.


t = list(range(0, 21))

def fv6(num):
return np.fv(pv=-1000, rate=r, pmt=0, nper=num)

def fv12(num):
return np.fv(pv=-1000, rate=.12, pmt=0, nper=num)

In [5]: plt.title("Graficando FV 6 y 12 %")


plt.plot(t, fv6(t), label="interes 6 %")
plt.plot(t, fv12(t), label="interes 12 %")
plt.legend(loc='upper left')
plt.show()

Al graficar dos funciones de FV (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero), una con una tasa de interes del 6%

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 4/20
10/8/2019 Introducción a Finanzas con Python

y otra con una tasa más alta del 12%, podemos ver que el valor futuro
(https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) suele ser bastante sensitivo a los cambios en la tasa de interes,
pequeñas variaciones en ella pueden generar grandes saltos a lo largo del tiempo.

Anualidades

Como podemos ver en el ejemplo anterior, la función fv de Numpy (https://www.numpy.org/) tiene varios parámetros, esto
es así, porque existen otros casos en los que el cálculo del valor futuro
(https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) se puede volver más complicado; es aquí cuando comenzamos a
hablar de anulidades. La idea de las anualidades es no solo quedarse con el cálculo simple de cuanto me va a rendir un
solo deposito inicial a fin de un período, sino también poder calcular el valor futuro
(https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) de múltiples depósitos que se reinvierten a una misma tasa de
interés. Supongamos por ejemplo que queremos hacer 10 depósitos anuales de USD 1000 cada uno, los cuales vamos a ir
depositando al comienzo de cada año. ¿Cuál sería en este caso el valor futuro
(https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) de nuestra anualidad luego del décimo año?. Ayudémonos de
Python (https://www.python.org/) para calcular la respuesta!

In [6]: # Calculando el valor de la anualidad con 6% anual


x = -1000 # valor de depositos
r = .06 # tasa de interes
n = 10 # cantidad de años

# usando la funcion fv de numpy


FV = np.fv(pv=0, rate=r, nper=n, pmt=x, when='begin')
FV
Out[6]: 13971.642638923764

Aquí comenzamos con un valor presente (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero)(PV) de cero, luego


realizamos el primer deposito de USD 1000 al comienzo del primer año y continuamos con los sucesivos depósitos al
comienzo de cada uno de los restantes años. Para poder entender mejor como funciona la función fv de Numpy
(https://www.numpy.org/) voy a explicar un poco más sus parámetros.

pv = este parametro es el valor presente (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) de nuestra


inversión o anualidad; en nuestro ejemplo empezamos con un valor de cero; ya que luego vamos a ir realizando
los diferentes depósitos de USD 1000.
rate = es la tasa efectiva de interés que nos rendirá la anualidad por cada período.
nper = Es el número de períodos. Tener en cuenta que si aquí estamos utilizando como unidad de medida de
años, nuestra tasa de interés deberá estar expresada en la misma unidad.
pmt = El valor de los depósitos que vamos a ir invirtiendo en nuestra anualidad. En nuestro caso el valor de -1000
refleja el importe que vamos a ir depositando año a año.(se expresa con signo negativo, ya que un deposito
implica una salida de dinero).
when = Este parámetro nos dice cuando se van a hacer efectivos nuestros depósitos, ya que el resultado puede
ser muy distinto si realizamos el deposito al comienzo(como en nuestro ejemplo) o al final de cada período.

In [7]: # mismo caso pero con la diferencia de que los depositos se


# realizan al final de cada período.
FV = np.fv(pv=0, rate=r, nper=n, pmt=x, when='end')
FV
Out[7]: 13180.79494238091

En este último ejemplo, el valor es menor por las perdidas relativas de interés que vamos teniendo al realizar los depósitos
al final de cada período en lugar de al comienzo.

Valor Presente
https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 5/20
10/8/2019 Introducción a Finanzas con Python

El valor presente (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) o PV (por sus siglas en inglés), nos indica el valor
que tienen hoy un pago o pagos que recibiremos en el futuro. Supongamos por ejemplo que sabemos que un tío nos va a
regalar USD 1000 dentro de 3 años porque somos su sobrino favorito, si también sabemos que un banco nos pagaría un
6% de interés por los depósitos en una caja de ahorro, podríamos calcular el valor presente
(https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) que tendría ese pago futuro de nuestro tío en el día de hoy. La
formula para calcular el valor presente (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) la podemos derivar de la que
utilizamos para calcular el valor futuro (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) y se expresaría del siguiente
modo:

fv
PV =
n
(1 + r)

Aplicando la esta formula sobre los datos con que contamos, podríamos calcular el valor de hoy de la promesa de pago de
USD 1000 de nuestro tío, los que nos daría un valor presente (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) de
USD 839.62 como se desprende del siguiente cálculo.

In [8]: fv = 1000 # valor futuro


r = .06 # tasa de interes
n = 3 # cantidad de años

fv / ((1 + r)**n)
Out[8]: 839.6192830323018

In [9]: # usando la funcion pv de numpy


PV = np.pv(fv=fv, rate=r, nper=n, pmt=0)
PV
Out[9]: -839.6192830323018

Estos USD 839.62 en realidad lo que representan es que si nosotros hoy depositáramos en la caja de ahorro de un banco
que nos pague 6% anual de interés el importe de USD 839.62, obtendríamos dentro de los 3 años los mismos USD 1000
que nos ofreció dar nuestro tío dentro de 3 años; o lo que es lo mismo que decir que el valor futuro
(https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) dentro de 3 años de USD 839.62 son los USD 1000 de nuestro
querido tío.

In [10]: # Calculando el valor futuro de los 839.62


np.fv(pv=-839.62, rate=r, nper=n, pmt=0)
Out[10]: 1000.00085392

Valor presente y anualidades

Al igual que en el caso del valor futuro (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero), aquí también podemos
encontrarnos con las anualidades, es decir, una serie de pagos iguales que recibiremos. El valor presente
(https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) de una anualidad nos va a decir el valor que tienen hoy los futuros
pagos de la anualidad. Así, por ejemplo si nuestro tío en lugar de regalarnos USD 1000 dentro de 3 años, decide darnos
USD 250 al final de cada año durante 5 años; y asumiendo la misma tasa de interés que nos ofrece el banco de 6% anual.
El valor presente de esta anualidad sería USD 1053.09.

In [11]: # Calculando el valor de la anualidad


PV = np.pv(fv=0, rate=r, nper=5, pmt=-250, when='end')
PV
Out[11]: 1053.090946391429

Eligiendo la tasa de descuento


https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 6/20
10/8/2019 Introducción a Finanzas con Python

Uno de los puntos sobre el que hacer más foco al calcular el valor presente
(https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) de un flujo de fondos futuro, es el de como elegir la tasa para
descontar estos fondos, ya que la tasa que utilicemos es la pieza clave para la exactitud de nuestros cálculos. El principio
básico que nos debe guiar la elegir la tasa de descuento es el de tratar de elegir que sea apropiada al riesgo y la duración
de los flujos de fondos que estamos descontando. En el ejemplo que venimos viendo, como sabemos que nuestro tío es
una persona muy solvente y de palabra, podemos considerar que no existe mucho riesgo en ese flujo de fondos, por lo que
utilizar la tasa de interés de una caja de ahorro parece ser un buen criterio para descontar ese flujo. En los casos de las
empresas, las mismas suelen utilizar el costo del capital como una tasa de descuento apropiada para descontar el flujo
futuro de sus inversiones o proyectos.

Valor Presente Neto


Un concepto que merece una especial mención, por su importancia dentro del mundo de las finanzas, cuando hablamos
del valor presente (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero), es el de Valor Presente Neto
(https://es.wikipedia.org/wiki/Valor_actual_neto). Cuando estamos descontando flujos de fondos futuros para traerlos a su
valor actual, puede ser que éstos flujos no sean homogeneos, por lo que ya no podríamos tratarlos como una anualidad, ya
que los pagos son por importes distintos todos los años; para estos casos debemos utilizar el Valor Presente Neto
(https://es.wikipedia.org/wiki/Valor_actual_neto).

El Valor Presente Neto (https://es.wikipedia.org/wiki/Valor_actual_neto) o NPV (por sus siglas en inglés) de una serie de
flujos futuros de fondos es su igual a su valor presente (https://es.wikipedia.org/wiki/Valor_tiempo_del_dinero) menos el
importe de la inversión inicial necesaria para obtener esos mismos flujos de fondos futuros. Su expresión matemática sería
la siguiente:
n
Vt
NPV = ∑ − I0
t
(1 + r)
t=1

donde, Vt representa el flujo de fondos de cada período t ; I0 es el valor inicial de la inversión; r es la tasa de descuento
utilizada; y n es la cantidad de períodos considerados.

Volviendo al ejemplo que veníamos utilizando de nuestro generoso tío, esta vez no ofrece pagarnos USD 500 al final del
primer año, USD 750 al final del segundo año, USD 1000 al final del tercer año, USD 1250 al final del cuarto año y USD
500 al final del quinto año. El NPV (https://es.wikipedia.org/wiki/Valor_actual_neto) de este flujo de fondos sería de USD
3342.56.

In [12]: # Calculando el valor presente neto.


NPV = np.npv(rate=.06, values=[0, 500, 750, 1000, 1250, 500])
NPV
Out[12]: 3342.560891731083

El Valor Presente Neto (https://es.wikipedia.org/wiki/Valor_actual_neto) es sumamente utilizado en los análisis financieros,


principalmente para evaluar inversiones o proyectos. Como regla general se considera que si el NPV
(https://es.wikipedia.org/wiki/Valor_actual_neto) de un proyecto o inversión es positivo, se trata de un proyecto rentable en
el que deberíamos invertir; en cambio si el NPV (https://es.wikipedia.org/wiki/Valor_actual_neto) es negativo estamos ante
un mal negocio.

Si por ejemplo, tendríamos que invertir hoy USD 4000 para poder obtener un flujo de fondos de USD 500 al final del primer
año, USD 750 al final del segundo año, USD 1000 al final del tercer año, USD 1250 al final del cuarto año y USD 500 al
final del quinto año; estaríamos haciendo un mal negocio, ya que como sabemos el valor presente de esos flujos de fondos
es de USD 3342.56, un valor mucho menor a los USD 4000 que deberíamos invertir.

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 7/20
10/8/2019 Introducción a Finanzas con Python

In [13]: # Calculando el NPV de la inversión de 4000.


NPV = np.npv(rate=.06, values=[-4000, 500, 750, 1000, 1250, 500])
NPV
Out[13]: -657.4391082689172

En el ejemplo podemos ver que al utilizar la función npv de Numpy (https://www.numpy.org/), el primer valor en la lista de
valores que le pasamos al parámetro values debe ser el monto de la inversión inicial, y como implica un desembolso de
dinero, su signo es negativo.

Si en lugar de tener que invertir USD 4000, tendríamos que invertir USD 3000 para obtener el mismo flujo de fondos, ya
estaríamos realizando una buena inversión, con NPV (https://es.wikipedia.org/wiki/Valor_actual_neto) positivo.

In [14]: # Calculando el NPV de la inversión de 3000.


NPV = np.npv(rate=.06, values=[-3000, 500, 750, 1000, 1250, 500])
NPV
Out[14]: 342.56089173108285

Tasa interna de Retorno


La tasa interna de retorno (https://es.wikipedia.org/wiki/Tasa_interna_de_retorno) o IRR (por sus siglas en inglés) es la tasa
de descuento que hace que el Valor Presente Neto (https://es.wikipedia.org/wiki/Valor_actual_neto) de los flujos de fondos
futuros sea igual a cero; también puede ser definida como la tasa de interés compuesto
(https://es.wikipedia.org/wiki/Inter%C3%A9s_compuesto) que nos paga nuestra inversión.

Al igual que como sucede con el Valor Presente Neto (https://es.wikipedia.org/wiki/Valor_actual_neto), podemos utilizar a la
tasa interna de retorno (https://es.wikipedia.org/wiki/Tasa_interna_de_retorno) para tomar decisiones financieras. Aquí la
regla general es que, al momento de decidir entre diferentes inversiones, deberíamos elegir aquella con una tasa interna
de retorno (https://es.wikipedia.org/wiki/Tasa_interna_de_retorno) más alta; ya que es la que en menos tiempo no va a
devolver nuestra inversión inicial.

Veamos un ejemplo, supongamos que tenemos USD 1000 para invertir, y que podemos decidir invertir ese dinero en una
compañía que nos va a pagar USD 300 al final de cada uno de los próximos cuatro años; o por otra lado, podemos invertir
el dinero en una caja de ahorro de un banco que nos va a pagar 5% anual. ¿Dónde deberíamos invertir nuestro dinero?

In [15]: # Calculando la tasa interna de retorno de la inversion en la compañía


IRR = np.irr([-1000, 300, 300, 300, 300])
IRR * 100
Out[15]: 7.713847295208343

Al calcular la IRR (https://es.wikipedia.org/wiki/Tasa_interna_de_retorno) de la inversión que podríamos hacer en la


compañía, vemos que nos da un valor de 7.71%; esta tasa es más alta que la tasa del 5% que nos ofrece el banco por el
deposito en su caja de ahorro, por lo que deberíamos decidir invertir nuestro dinero en la compañía en lugar de en el
banco.

La IRR graficamente

Como se desprende de su definición, la tasa interna de retorno (https://es.wikipedia.org/wiki/Tasa_interna_de_retorno) es la


tasa que hace que el NPV (https://es.wikipedia.org/wiki/Valor_actual_neto) se haga cero, por lo que si nos propusiesemos
graficar el NPV (https://es.wikipedia.org/wiki/Valor_actual_neto) en función de la tasa de descuento, podríamos encontrar a
simple vista, cual es la IRR (https://es.wikipedia.org/wiki/Tasa_interna_de_retorno) de un determinado flujo de fondos.
Veamos un ejemplo, graficando el flujo de fondos con el que trabajamos anteriormente.

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 8/20
10/8/2019 Introducción a Finanzas con Python

In [16]: # Graficando el NPV en función de la tasa de descuento


def npv_irr(tasas):
result = []
for tasa in tasas:
result.append(np.npv(tasa/100,[-1000, 300, 300, 300, 300] ))
return result

tasas = list(range(14))

plt.title("NPV y la tasa de descuento")


plt.plot(tasas, npv_irr(tasas), marker='o', label='NPV')
plt.axhline(0, color='red')
axes = plt.gca()
axes.set_ylim([-200,250])
plt.xticks(tasas)
plt.legend(loc='upper right')
plt.show()

Como podemos ver en el gráfico, la función de NPV (https://es.wikipedia.org/wiki/Valor_actual_neto), se hace cero en


aproximadamente 7.71%; es decir, el valor de la IRR (https://es.wikipedia.org/wiki/Tasa_interna_de_retorno) para ese flujo
de fondos.

Información financiera y Pandas


En las finanzas, una de las formas de datos más comunes e importantes con la que nos vamos a encontrar son las series
de tiempo (https://es.wikipedia.org/wiki/Serie_temporal); para trabajar con este tipo de información en Python
(https://www.python.org/), no existe mejor librería que Pandas (https://pandas.pydata.org/); sus dos estructuras de datos
básicas, las Series y el Dataframe, nos ayudan a manipular información financiera de forma muy conveniente. Además
Pandas (https://pandas.pydata.org/) nos proporciona una gran batería de métodos y funciones que nos facilitan la
obtención y el análisis de datos financieros. Veamos algunos ejemplos de las cosas que podemos con Pandas
(https://pandas.pydata.org/).

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 9/20
10/8/2019 Introducción a Finanzas con Python

In [17]: # Importando pandas y datetime


import pandas as pd
import pandas_datareader.data as web
import datetime as dt

# Extrayendo información financiera de Yahoo! Finance


inicio = dt.datetime(2014, 1, 1)
fin = dt.datetime(2014, 12, 31)

msft = web.DataReader("MSFT", 'yahoo', inicio, fin) # información de Microsoft


aapl = web.DataReader("AAPL", 'yahoo', inicio, fin) # información de Apple

In [18]: msft[:3]

Out[18]:
High Low Open Close Volume Adj Close

Date

2014-01-02 37.400002 37.099998 37.349998 37.160000 30632200.0 32.951675

2014-01-03 37.220001 36.599998 37.200001 36.910000 31134800.0 32.729988

2014-01-06 36.889999 36.110001 36.849998 36.130001 43603700.0 32.038334

In [19]: aapl[:3]
Out[19]:
High Low Open Close Volume Adj Close

Date

2014-01-02 79.575714 78.860001 79.382858 79.018570 58671200.0 67.251503

2014-01-03 79.099998 77.204285 78.980003 77.282860 98116900.0 65.774300

2014-01-06 78.114288 76.228569 76.778572 77.704285 103152700.0 66.132957

In [20]: # Seleccionando solo el Adj Close price de Enero 2014


msft01 = msft['2014-01'][['Close']]
aapl01 = aapl['2014-01'][['Close']]

msft01[:3]
Out[20]:
Close

Date

2014-01-02 37.160000

2014-01-03 36.910000

2014-01-06 36.130001

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 10/20
10/8/2019 Introducción a Finanzas con Python

In [21]: aapl01.head() # head() nos muestra los primeros 5 registros

Out[21]:
Close

Date

2014-01-02 79.018570

2014-01-03 77.282860

2014-01-06 77.704285

2014-01-07 77.148575

2014-01-08 77.637146

In [22]: # tambien se puede seleccionar un rango de tiempo


msft['2014-02':'2014-02-13'] # desde el 1 al 13 de febrero
Out[22]:
High Low Open Close Volume Adj Close

Date

2014-02-03 37.990002 36.430000 37.740002 36.480000 64063100.0 32.348686

2014-02-04 37.189999 36.250000 36.970001 36.349998 54697900.0 32.233410

2014-02-05 36.470001 35.799999 36.290001 35.820000 55814400.0 31.763430

2014-02-06 36.250000 35.689999 35.799999 36.180000 35351800.0 32.082653

2014-02-07 36.590000 36.009998 36.320000 36.560001 33260500.0 32.419632

2014-02-10 36.799999 36.290001 36.630001 36.799999 26767000.0 32.632454

2014-02-11 37.259998 36.860001 36.880001 37.169998 32141400.0 32.960541

2014-02-12 37.599998 37.299999 37.349998 37.470001 27051800.0 33.226574

2014-02-13 37.860001 37.330002 37.330002 37.610001 37635500.0 33.350716

In [23]: # combinando ambos resultados


close = pd.concat([msft01, aapl01], keys=['MSFT', 'AAPL'])
close[:5]
Out[23]:
Close

Date

MSFT 2014-01-02 37.160000

2014-01-03 36.910000

2014-01-06 36.130001

2014-01-07 36.410000

2014-01-08 35.759998

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 11/20
10/8/2019 Introducción a Finanzas con Python

In [24]: # seleccionando los primeros 5 registros de AAPL


close.loc['AAPL'][:5]
Out[24]:
Close

Date

2014-01-02 79.018570

2014-01-03 77.282860

2014-01-06 77.704285

2014-01-07 77.148575

2014-01-08 77.637146

In [25]: # insertando una nueva columna con el simbolo


msft.insert(0, 'Symbol', 'MSFT')
aapl.insert(0, 'Symbol', 'AAPL')

msft.head()
Out[25]:
Symbol High Low Open Close Volume Adj Close

Date

2014-01-02 MSFT 37.400002 37.099998 37.349998 37.160000 30632200.0 32.951675

2014-01-03 MSFT 37.220001 36.599998 37.200001 36.910000 31134800.0 32.729988

2014-01-06 MSFT 36.889999 36.110001 36.849998 36.130001 43603700.0 32.038334

2014-01-07 MSFT 36.490002 36.209999 36.330002 36.410000 35802800.0 32.286613

2014-01-08 MSFT 36.139999 35.580002 36.000000 35.759998 59971700.0 31.710232

In [26]: # concatenando toda la información y reseteando el indice


combinado = pd.concat([msft, aapl]).sort_index()
datos_todo = combinado.reset_index()

datos_todo.head()
Out[26]:
Date Symbol High Low Open Close Volume Adj Close

0 2014-01-02 MSFT 37.400002 37.099998 37.349998 37.160000 30632200.0 32.951675

1 2014-01-02 AAPL 79.575714 78.860001 79.382858 79.018570 58671200.0 67.251503

2 2014-01-03 MSFT 37.220001 36.599998 37.200001 36.910000 31134800.0 32.729988

3 2014-01-03 AAPL 79.099998 77.204285 78.980003 77.282860 98116900.0 65.774300

4 2014-01-06 MSFT 36.889999 36.110001 36.849998 36.130001 43603700.0 32.038334

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 12/20
10/8/2019 Introducción a Finanzas con Python

In [27]: # Armando una tabla pivot del precio de cierre


pivot = datos_todo.pivot(index='Date', columns='Symbol',
values='Close')

pivot.head()
Out[27]:
Symbol AAPL MSFT

Date

2014-01-02 79.018570 37.160000

2014-01-03 77.282860 36.910000

2014-01-06 77.704285 36.130001

2014-01-07 77.148575 36.410000

2014-01-08 77.637146 35.759998

In [28]: # Obteniendo datos de multiples empresas


def all_stocks(symbols, start, end):
def data(symbols):
return web.DataReader(symbols, 'yahoo', start, end)
datas = map(data, symbols)
return pd.concat(datas, keys=symbols, names=['symbols','Date'])

simbolos = ['AAPL','MSFT','GOOG','IBM']

all_data = all_stocks(simbolos, inicio, fin)


all_data.head()
Out[28]:
High Low Open Close Volume Adj Close

symbols Date

AAPL 2014-01-02 79.575714 78.860001 79.382858 79.018570 58671200.0 67.251503

2014-01-03 79.099998 77.204285 78.980003 77.282860 98116900.0 65.774300

2014-01-06 78.114288 76.228569 76.778572 77.704285 103152700.0 66.132957

2014-01-07 77.994286 76.845711 77.760002 77.148575 79302300.0 65.660004

2014-01-08 77.937141 76.955711 76.972855 77.637146 64632400.0 66.075813

In [29]: all_data.loc['GOOG'].head() # información de google

Out[29]:
High Low Open Close Volume Adj Close

Date

2014-01-02 555.263550 550.549194 554.125916 552.963501 3666400.0 552.963501

2014-01-03 554.856201 548.894958 553.897461 548.929749 3355000.0 548.929749

2014-01-06 555.814941 549.645081 552.908875 555.049927 3561600.0 555.049927

2014-01-07 566.162659 556.957520 558.865112 565.750366 5138400.0 565.750366

2014-01-08 569.953003 562.983337 569.297241 566.927673 4514100.0 566.927673

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 13/20
10/8/2019 Introducción a Finanzas con Python

In [30]: # Graficando los datos.


solo_cierre = all_data[['Close']].reset_index()
pivot_cierre = solo_cierre.pivot('Date', 'symbols', 'Close')

pivot_cierre.head()
Out[30]:
symbols AAPL GOOG IBM MSFT

Date

2014-01-02 79.018570 552.963501 185.529999 37.160000

2014-01-03 77.282860 548.929749 186.639999 36.910000

2014-01-06 77.704285 555.049927 186.000000 36.130001

2014-01-07 77.148575 565.750366 189.710007 36.410000

2014-01-08 77.637146 566.927673 187.970001 35.759998

In [31]: # Graficando la información de Apple


plot=pivot_cierre['AAPL'].plot(figsize=(12,8))

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 14/20
10/8/2019 Introducción a Finanzas con Python

In [32]: # Graficando todos


plot = pivot_cierre.plot(figsize=(12,8))

Como podemos ver Pandas (https://pandas.pydata.org/) es una librería muy versátil, con ella podemos hacer todo tipo de
manipulaciones de datos, desde obtener los datos desde la web hasta realizar concatenaciones, tablas pivot o incluso
realizar gráficos.

Con esto termino esta introducción a finanzas con Python (https://www.python.org/); los dejo para que se entretengan con
sus propios ejemplos, a practicar!

Saludos!

Este post fue escrito utilizando IPython notebook. Pueden descargar este notebook
(https://github.com/relopezbriega/relopezbriega.github.io/blob/master/downloads/pyFinance.ipynb) o ver su version estática
en nbviewer
(https://nbviewer.ipython.org/github/relopezbriega/relopezbriega.github.io/blob/master/downloads/pyFinance.ipynb).

Este articulo fue escrito utilizando Jupyter notebook


(https://github.com/relopezbriega/blog/tree/master/content/notebooks/pyFinance.ipynb). Presionar aquí para la versión
interactiva: launch binder (https://mybinder.org/v2/gh/relopezbriega/blog/master?
filepath=content/notebooks/pyFinance.ipynb)

Posted by Raul E. Lopez Briega vie 28 agosto 2015 python (https://relopezbriega.github.io/tag/python.html) finanzas
(https://relopezbriega.github.io/tag/finanzas.html) programacion (https://relopezbriega.github.io/tag/programacion.html) analisis
de datos (https://relopezbriega.github.io/tag/analisis-de-datos.html)
Tweet

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 15/20
10/8/2019 Introducción a Finanzas con Python

Comments
13 Comments relopezbriega_github 
1 Login

 Recommend 2 t Tweet f Share Sort by Best

Join the discussion…

LOG IN WITH
OR SIGN UP WITH DISQUS ?

Name

Fernando Sierra Ortega • 18 days ago


hola
esta muy bueno tu post
tenía una duda respecto a la extracción de la información financiera desde la web
yo estoy trabajando un modelo de high frequency trading
lo estoy trabajndo en R y necesito los datos por segundo en tiempo real
con la función que llamas veo que se obtiene la información diraria
y mi duda es respecto a eso
es decir, ¿podré obtener los datos por segundo de un dia del precio de una acción cualquiera ??

muchas gracias
△ ▽ • Reply • Share ›

Jose Arcenio Lopez • 2 months ago • edited


Como hago el calculo de los rendimientos en excel es una formula, pero en python aun no entiendo si
es con una formula o se hace con pandas, me puedes indicar de favor
△ ▽ • Reply • Share ›

Rodrigo Agurto • 2 months ago


Hola, como puedo conectar python con los indices en tiempo real y realizar inversiones automaticas o
enviarme alertas de compra y venta
△ ▽ • Reply • Share ›

Melina Celeste Crettaz Minagli • 8 months ago


Hola! ¿Los gráficos de las series temporales con qué librería se realizan?
Gracias!
△ ▽ • Reply • Share ›

Raul Lopez Briega Mod > Melina Celeste Crettaz Minagli • 8 months ago

Los graficos son con matplotlib que ya viene integrado con pandas. slds
△ ▽ • Reply • Share ›

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 16/20
10/8/2019 Introducción a Finanzas con Python
Melina Celeste Crettaz Minagli • 8 months ago
Hola! Buenísimo el post. En la parte de uso de pandas, en esas lineas, en lugar de 'google', debe decir
'yahoo'. Al menos, así me funcionó, sino, me daba error. ¿Es correcto?
Saludos.

msft = web.DataReader("MSFT", 'google', inicio, fin) # información de Microsoft


aapl = web.DataReader("AAPL", 'google', inicio, fin) # información de Apple
△ ▽ • Reply • Share ›

Raul Lopez Briega Mod > Melina Celeste Crettaz Minagli • 8 months ago

Hola Melina, Sí..esta correcto...vivimos en un mundo muy cambiante y las librerías se van
actualizando constantemente...ya no se puede utilizar más google en el DataReader. Podes
utilizar yahoo que todavía funciona iex o quandl. slds
△ ▽ • Reply • Share ›

Andy Jimenez • a year ago • edited


Gracias por compartir! Ahora ya no funciona el paquete pandas.io para descargar las series históricas.
Slds.
△ ▽ • Reply • Share ›

Raul Lopez Briega Mod > Andy Jimenez • a year ago


Hola Andy, Sí...pandas.io fue reemplazado por pandas-datareader(https://pandas-
datareader.r.... Actualicé el notebook para que funcione con datareader. Muchas gracias!
Saludos!
△ ▽ • Reply • Share ›

Jennifer > Raul Lopez Briega • a year ago


Hola Raúl, estoy aprendiendo y tú entrada es muy interesante pero no me funciona la
parte de extraer datos. Con el siguiente código:

import pandas as pd
import pandas_datareader.data as web
import datetime as dt

Me da error:

File "<ipython-input-8-f36c92d0402b>", line 2, in <module>


import pandas_datareader.data as web
ModuleNotFoundError: No module named 'pandas_datareader'
¿Sabes que puedo hacer para que me funcione?
Muchas gracias.
△ ▽ • Reply • Share ›

Raul Lopez Briega Mod > Jennifer • a year ago

Hola Jennifer, tenes que instalar el paquete pandas-datareader(https://pandas-


datareader.r... en tu entorno de python. Puedes usar pip:
pip install pandas-datareader
https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 17/20
10/8/2019 Introducción a Finanzas con Python

Saludos
△ ▽ • Reply • Share ›

eliano > Raul Lopez Briega • 8 months ago


Hola Raúl como estas? podrías explicar cómo es esta instalación "pip" con un
poco mas detalle o dejar el codeo para que sigamos tus pasos. Muchas gracias¡¡
comparto mis resultados
△ ▽ • Reply • Share ›

Iván Martínez Gil • 2 years ago


Buenísimo!
△ ▽ • Reply • Share ›

Most Popular
Probabilidad y Estadística con Python (https://relopezbriega.github.io/blog/2015/06/27/probabilidad-y-estadistica-con-
python/)
Ecuaciones Diferenciales con Python (https://relopezbriega.github.io/blog/2016/01/10/ecuaciones-diferenciales-con-
python/)
Algebra lineal con Python (https://relopezbriega.github.io/blog/2015/06/14/algebra-lineal-con-python/)
Expresiones regulares con Python (https://relopezbriega.github.io/blog/2015/07/19/expresiones-regulares-con-python/)
Machine Learning con Python (https://relopezbriega.github.io/blog/2015/10/10/machine-learning-con-python/)

Subscribe to my mailing list


email address

Subscribe

Recent Posts
Jugando la Copa América con Python (https://relopezbriega.github.io/blog/2019/06/09/jugando-la-copa-america-con-
python/)
El sistema de numeración Binario (https://relopezbriega.github.io/blog/2019/03/09/el-sistema-de-numeracion-binario/)
Introducción a la Teoría de la información con python (https://relopezbriega.github.io/blog/2018/03/30/introduccion-a-la-
teoria-de-la-informacion-con-python/)
Procesamiento del Lenguaje Natural con Python (https://relopezbriega.github.io/blog/2017/09/23/procesamiento-del-
lenguaje-natural-con-python/)
Introducción al Deep Learning (https://relopezbriega.github.io/blog/2017/06/13/introduccion-al-deep-learning/)

Categories
Algebra (https://relopezbriega.github.io/category/algebra.html)
Analisis de datos (https://relopezbriega.github.io/category/analisis-de-datos.html)

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 18/20
10/8/2019 Introducción a Finanzas con Python

Calculo (https://relopezbriega.github.io/category/calculo.html)
Finanzas (https://relopezbriega.github.io/category/finanzas.html)
IA (https://relopezbriega.github.io/category/ia.html)
Machine Learning (https://relopezbriega.github.io/category/machine-learning.html)
Matematica (https://relopezbriega.github.io/category/matematica.html)
Pobabilidad y Estadistica (https://relopezbriega.github.io/category/pobabilidad-y-estadistica.html)
Programacion (https://relopezbriega.github.io/category/programacion.html)
Redes Neuronales (https://relopezbriega.github.io/category/redes-neuronales.html)

Tags
python (https://relopezbriega.github.io/tag/python.html), programacion (https://relopezbriega.github.io/tag/programacion.html),
matematica (https://relopezbriega.github.io/tag/matematica.html), futbol (https://relopezbriega.github.io/tag/futbol.html), copa
america (https://relopezbriega.github.io/tag/copa-america.html), Machine Learning (https://relopezbriega.github.io/tag/machine-
learning.html), binario (https://relopezbriega.github.io/tag/binario.html), numeros
(https://relopezbriega.github.io/tag/numeros.html), decimales (https://relopezbriega.github.io/tag/decimales.html), multiplicar
(https://relopezbriega.github.io/tag/multiplicar.html), sumar (https://relopezbriega.github.io/tag/sumar.html), restar
(https://relopezbriega.github.io/tag/restar.html), dividir (https://relopezbriega.github.io/tag/dividir.html), informacion
(https://relopezbriega.github.io/tag/informacion.html), incertidumbre (https://relopezbriega.github.io/tag/incertidumbre.html),
entropia (https://relopezbriega.github.io/tag/entropia.html), bit (https://relopezbriega.github.io/tag/bit.html), redundancia
(https://relopezbriega.github.io/tag/redundancia.html), shannon (https://relopezbriega.github.io/tag/shannon.html), estadistica
(https://relopezbriega.github.io/tag/estadistica.html), probabilidad (https://relopezbriega.github.io/tag/probabilidad.html), boosting
(https://relopezbriega.github.io/tag/boosting.html), xgboost (https://relopezbriega.github.io/tag/xgboost.html), adaboost
(https://relopezbriega.github.io/tag/adaboost.html), gradientboost (https://relopezbriega.github.io/tag/gradientboost.html), analisis
de datos (https://relopezbriega.github.io/tag/analisis-de-datos.html), Inteligencia Artificial
(https://relopezbriega.github.io/tag/inteligencia-artificial.html), TensorFlow (https://relopezbriega.github.io/tag/tensorflow.html),
Redes Neuronales (https://relopezbriega.github.io/tag/redes-neuronales.html), distribuciones
(https://relopezbriega.github.io/tag/distribuciones.html), Monte-Carlo (https://relopezbriega.github.io/tag/monte-carlo.html),
MCMC (https://relopezbriega.github.io/tag/mcmc.html), Metropolis (https://relopezbriega.github.io/tag/metropolis.html), Bayes
(https://relopezbriega.github.io/tag/bayes.html), inferencia (https://relopezbriega.github.io/tag/inferencia.html), optimizacion
(https://relopezbriega.github.io/tag/optimizacion.html), scipy (https://relopezbriega.github.io/tag/scipy.html), cvxopt
(https://relopezbriega.github.io/tag/cvxopt.html), pulp (https://relopezbriega.github.io/tag/pulp.html), visualizaciones
(https://relopezbriega.github.io/tag/visualizaciones.html), series de tiempo (https://relopezbriega.github.io/tag/series-de-
tiempo.html), finanzas (https://relopezbriega.github.io/tag/finanzas.html), bokeh (https://relopezbriega.github.io/tag/bokeh.html),
folium (https://relopezbriega.github.io/tag/folium.html), seaborn (https://relopezbriega.github.io/tag/seaborn.html), matplotlib
(https://relopezbriega.github.io/tag/matplotlib.html), algebra (https://relopezbriega.github.io/tag/algebra.html), matrices
(https://relopezbriega.github.io/tag/matrices.html), recomendaciones (https://relopezbriega.github.io/tag/recomendaciones.html),
Sobreajuste (https://relopezbriega.github.io/tag/sobreajuste.html), calculo (https://relopezbriega.github.io/tag/calculo.html),
ecuaciones diferenciales (https://relopezbriega.github.io/tag/ecuaciones-diferenciales.html), vectores
(https://relopezbriega.github.io/tag/vectores.html), derivada (https://relopezbriega.github.io/tag/derivada.html), integral
(https://relopezbriega.github.io/tag/integral.html), derivadas parciales (https://relopezbriega.github.io/tag/derivadas-
parciales.html), logaritmo (https://relopezbriega.github.io/tag/logaritmo.html), limite
(https://relopezbriega.github.io/tag/limite.html), infinito (https://relopezbriega.github.io/tag/infinito.html), complejos
(https://relopezbriega.github.io/tag/complejos.html), conjuntos (https://relopezbriega.github.io/tag/conjuntos.html), batman
(https://relopezbriega.github.io/tag/batman.html), regex (https://relopezbriega.github.io/tag/regex.html), funcional
(https://relopezbriega.github.io/tag/funcional.html), pi (https://relopezbriega.github.io/tag/pi.html), map-reduce
(https://relopezbriega.github.io/tag/map-reduce.html)

Social
Atom (/atom.xml)
twitter (https://twitter.com/relopezbriega)
linkedin (https://ar.linkedin.com/in/relopezbriega)

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 19/20
10/8/2019 Introducción a Finanzas con Python

github (https://github.com/relopezbriega/)

Blogroll
Mi otro blog (http://relopezbriega.com.ar)
IAAR Book (https://iaarbook.github.io/)
Pelican (http://getpelican.com/)
Python.org (http://python.org/)
Jinja2 (http://jinja.pocoo.org/)

Follow @relopezbriega 287 followers

Copyright © 2018 - Raul E. Lopez Briega - Powered by Pelican (https://getpelican.com)

https://relopezbriega.github.io/blog/2015/08/28/introduccion-a-finanzas-con-python/ 20/20

Potrebbero piacerti anche