Notas de clase sobre ingeniería economica avanzada usando Python
Juan David Velásquez Henao
jdvelasq@unal.edu.co
Universidad Nacional de Colombia, Sede Medellín
Facultad de Minas
Medellín, Colombia
Software utilizado
Este es un documento interactivo escrito como un notebook de Jupyter , en el cual se presenta un tutorial sobre finanzas corporativas usando Python. Los notebooks de Jupyter permiten incoporar simultáneamente código, texto, gráficos y ecuaciones. El código presentado en este notebook puede ejecutarse en los sistemas operativos Linux y OS X.
Haga click aquí para obtener instrucciones detalladas sobre como instalar Jupyter en Windows y Mac OS X.
Descargue la última versión de este documento a su disco duro; luego, carguelo y ejecutelo en línea en Try Jupyter!
>
Bibliografía
- [1] SAS/ETS 14.1 User's Guide, 2015.
- [2] hp 12c platinum financial calculator. User's guide.
- [3] HP Business Consultant II Owner's manual.
- [4] C.S. Park and G.P. Sharp-Bette. Advanced Engineering Economics. John Wiley & Sons, Inc., 1990.
Una compañía tiene las siguientes fuentes de financiamiento:
El impuesto de renta es del 30%.
Solución
In [1]:
import cashflows as cf
In [2]:
##
## Se tienen cuatro fuentes de capital con diferentes costos
## sus datos se almacenarar en las siguientes listas:
##
monto = [0] * 4
interes = [0] * 4
In [19]:
## emision de acciones
## --------------------------------------
monto[0] = 4000
interes[0] = 25.0 / 1.0 # tasa de descueto de la accion
In [4]:
## préstamo 1.
## -------------------------------------------------------
##
nrate = cf.nominal_rate(const_value=20, nper=5)
credito1 = cf.fixed_ppal_loan(amount = 2000, # monto
nrate = nrate, # tasa de interés
orgpoints = 50/2000) # costos de originación
credito1
Out[4]:
En la modelación de créditos con cashflow
se consideran dos tipos de costos:
Ya que los intereses de los créditos pueden descontarse como costos financieros, estos disminuyen el pago del impuesto de renta. Por consiguiente, en el análisis de los créditos debe tenerse en cuenta el beneficio por pago de intereses el cual equivale a los impuestos pagados por periodo multiplicados por la tasa del impuesto de renta. Ya que los puntos de descuento son intereses, estos se tienen en cuenta en el cálculo de este beneficio.
In [5]:
## flujo de caja para el crédito antes de impuestos
credito1.to_cashflow(tax_rate = 30.0)
Out[5]:
In [6]:
## la tasa efectiva pagada por el crédito es
## aquella que hace el valor presente cero para
## el flujo de caja anterior (antes o después de
## impuestos)
credito1.true_rate(tax_rate = 30.0)
Out[6]:
In [7]:
## se almacenna los datos para este credito
monto[1] = 2000
interes[1] = credito1.true_rate(tax_rate = 30.0)
In [8]:
## préstamo 2.
## -------------------------------------------------------
##
credito2 = cf.fixed_rate_loan(amount = 1000, # monto
nrate = 20, # tasa de interés
start = None,
grace = 0,
life = 4, # número de cuotas
dispoints = 0.24) # costos de originación
credito2
Out[8]:
In [9]:
credito2.to_cashflow(tax_rate = 30)
Out[9]:
In [10]:
credito2.true_rate(tax_rate = 30)
Out[10]:
In [11]:
## se almacenna los datos para este credito
monto[2] = 1000
interes[2] = credito2.true_rate(tax_rate = 30)
In [12]:
## préstamo 3.
## -------------------------------------------------------
##
nrate = cf.nominal_rate(const_value=7, nper=5)
credito3 = cf.bullet_loan(amount = 5000, # monto
nrate = nrate, # tasa de interés
orgpoints = 0.01, # costos de originación
dispoints = 0.20) # puntos de descuento
credito3
Out[12]:
In [13]:
credito3.to_cashflow(tax_rate = 30.0) ### malo
Out[13]:
In [15]:
credito3.true_rate(tax_rate = 30.0)
Out[15]:
In [16]:
## se almacenan los datos de este crédito
monto[3] = 5000
interes[3] = credito3.true_rate(tax_rate = 30.0)
In [20]:
## montos
monto
Out[20]:
In [21]:
## tasas
interes
Out[21]:
In [22]:
## Costo ponderado del capital (WACC)
## -------------------------------------------------------------
## es el promdio ponderado de las tasas por
## el porcentaje de capital correspondiente a cada fuente
##
s = sum(monto) # capital total
wacc = sum([x*r/s for x, r in zip(monto, interes)])
wacc
Out[22]: