Cálculos sobre flujos de dinero

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!

Contenido

>

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.

In [2]:
import cashflows as cf

 Impuestos corporativos

Tipos de Impuestos.

  • Impuestos sobre activos tangibles o intangibles.
  • Lincencias para establecimiento de negocios.
  • Impuestos al consumo sobre productos básicos.
  • Impuestos a las ventas.
  • Impuestos a la renta.

Deducciones.

El impuesto de renta es calculado como el ingreso bruto menos las deducciones permitidas:

  • Salarios.
  • Rentas.
  • Intereses pagados.
  • Publicidad.
  • Planes de pensión.
  • Gastos de investigación.
  • Depreciación, amortización y agotamiento.

Ejemplo.-- Sea un flujo constante de \$ 1000 para los periodos 1 a 5 y -90 para los periodos 6 a 10. Calcule el impuesto de renta para una tasa impositiva del 30%.


In [6]:
cflo=cf.cashflow(const_value=1000,  nper=10, spec=[(t,-90) for t in range(5,10)])
cf.cfloplot(cflo)


time   value +------------------+------------------+
(0,) 1000.00                    ********************
(1,) 1000.00                    ********************
(2,) 1000.00                    ********************
(3,) 1000.00                    ********************
(4,) 1000.00                    ********************
(5,)  -90.00                    *
(6,)  -90.00                    *
(7,)  -90.00                    *
(8,)  -90.00                    *
(9,)  -90.00                    *

In [7]:
tax_rate = cf.nominal_rate(const_value=[30] * 10)
x=cf.after_tax_cashflow(cflo,           # flujo de efectivo
                    tax_rate = tax_rate) # impuesto de renta
cf.cfloplot(x)


time  value +------------------+------------------+
(0,) 300.00                    ********************
(1,) 300.00                    ********************
(2,) 300.00                    ********************
(3,) 300.00                    ********************
(4,) 300.00                    ********************
(5,)   0.00                    *
(6,)   0.00                    *
(7,)   0.00                    *
(8,)   0.00                    *
(9,)   0.00                    *

Ejemplo.-- Considere un flujo de caja de \$ 100, y una duración de 10 periodos. Calcule el impuesto de renta si la tasa es del 30% para los periodos 1 a 5 y del 35% para los periodos restantes.


In [145]:
cflo = cf.cashflow(const_value=[100]*10)
tax_rate = cf.nominal_rate(const_value=[30] * 10,spec=(5,35))
x=cf.after_tax_cashflow(cflo,           # flujo de efectivo
                    tax_rate = tax_rate) # impuesto de renta
cf.cfloplot(x)


time value +------------------+------------------+
(0,) 30.00                    *****************
(1,) 30.00                    *****************
(2,) 30.00                    *****************
(3,) 30.00                    *****************
(4,) 30.00                    *****************
(5,) 35.00                    ********************
(6,) 35.00                    ********************
(7,) 35.00                    ********************
(8,) 35.00                    ********************
(9,) 35.00                    ********************

 Inflación

Se define como la pérdida de poder adquisitivo de la moneda. Existen diferentes medidas:

  • Indice de precios del consumidos (IPC)
  • Indice de precios del productor (IPP)
  • Medidas derivadas a partir del producto interno bruto

Tasa promedio de inflación: tasa porcentual anual que representa el incremento de los precios sobre un periodo de un año respecto al año anterior.

Tratamiento de la inflación

  • Precios constantes.
  • Precios corrientes.
  • Tasa de interés del mercado $(i)$. Incluye una componente de utilidad económica y una de inflación.
  • Tasa de interés libre de inflación $(i')$. Representa únicamente la componente de utilidad económica
  • Tasa de inflación general $(f)$. Incremento promedio anual en los precios de los bienes y servicios

Relaciones de equivalencia

  • $F_n'$: valor en moneda constante (en precios del periodo 0) que ocurren en el flujo de caja al final del periodo $n$.
  • $F_n$: valor en moneda corriente que ocurren en el flujo de caja al final del periodo $n$.

Conversión entre moneda constante y corriente:

$$F_n=F_n^{'}~(1+f)^n$$

Valor presente:

$$P=F_n^{'}~(1+i^{'})^{-n} = F_n^{'}~(1+i)^{-n}$$

Relación entre tasas:

$$i^{'}=\frac{i-f}{1+f}$$

$$(1+i^{'})(1+f)=1+i$$

Ejemplo.-- Considere un flujo de caja constante de \$ 1000. Conviertalo a dinero del periodo 0 usando una inflación del 5% por periodo.


In [170]:
x = cf.cashflow(const_value=[1000]*10)
x


Out[170]:
Time Series:
Start = (0,)
End = (9,)
pyr = 1
Data = (0,)-(9,) [10] 1000.00 

In [171]:
cf.const2curr(cflo=x,inflation=cf.nominal_rate(const_value=[5]*10))


Out[171]:
Time Series:
Start = (0,)
End = (9,)
pyr = 1
Data = (0,)   1000.00 
       (1,)   1050.00 
       (2,)   1102.50 
       (3,)   1157.63 
       (4,)   1215.51 
       (5,)   1276.28 
       (6,)   1340.10 
       (7,)   1407.10 
       (8,)   1477.46 
       (9,)   1551.33 

Ejemplo.-- Considere un flujo de caja constante de \$ 1000. Conviertalo a dinero del periodo 0 usando una inflación inicial del 5% por periodo. La inflación cambia al 10% a partir del periodo 5.


In [172]:
## flujo de caja
x = cf.cashflow(const_value=[1000]*10)
cf.cfloplot(x)


time   value +------------------+------------------+
(0,) 1000.00                    ********************
(1,) 1000.00                    ********************
(2,) 1000.00                    ********************
(3,) 1000.00                    ********************
(4,) 1000.00                    ********************
(5,) 1000.00                    ********************
(6,) 1000.00                    ********************
(7,) 1000.00                    ********************
(8,) 1000.00                    ********************
(9,) 1000.00                    ********************

In [173]:
## inflacion
inflation = cf.nominal_rate(const_value=[5]*10,spec=(5,10))
cf.cfloplot(inflation)


time value +------------------+------------------+
(0,)  5.00                    **********
(1,)  5.00                    **********
(2,)  5.00                    **********
(3,)  5.00                    **********
(4,)  5.00                    **********
(5,) 10.00                    ********************
(6,) 10.00                    ********************
(7,) 10.00                    ********************
(8,) 10.00                    ********************
(9,) 10.00                    ********************

In [174]:
cf.const2curr(cflo=x,inflation=inflation)


Out[174]:
Time Series:
Start = (0,)
End = (9,)
pyr = 1
Data = (0,)   1000.00 
       (1,)   1050.00 
       (2,)   1102.50 
       (3,)   1157.63 
       (4,)   1215.51 
       (5,)   1337.06 
       (6,)   1470.76 
       (7,)   1617.84 
       (8,)   1779.62 
       (9,)   1957.58 

Devaluación

$$d=\frac{f-f_e}{1+f_e},~~~~1+d=\frac{1+f}{1+f_e}$$

Cálculos con moneda extranjera

  • $i$ -- tasa equivalente de interés en moneda local
  • $i_e$ -- tasa de interés en moneda extranjera
  • $d$ -- tasa de devaluación de la moneda local frente a la moneda extranjera.
  • $f$ -- tasa de inflación interna
  • $f_e$ -- tasa de inflación externa

Interés equivalente para un préstamo en moneda extranjera:

$$1+i=(1+i_e)(1+d)$$

Ejemplo.-- ¿Cuál es la rentabilidad en pesos de un proyecto extranjero que ofrece una rentabilidad del 1.5% mensual?, se estima una devaluación mensual de 2.0%


In [11]:
round((1 + 0.015) * (1 + 0.020) - 1, 4)


Out[11]:
0.0353

Ejemplo.-- Considere un flujo de efectivo constante de \$ 1000 durante 10 periodos. Conviértalo a moneda extranjera si la tasa de cambio es de \$ 2.


In [175]:
x = cf.cashflow([1000]*10)
cf.currency_conversion(cflo=x, exchange_rate = 2)


Out[175]:
Time Series:
Start = (0,)
End = (9,)
pyr = 1
Data = (0,)-(9,) [10] 2000.00 

Ejemplo.-- Considere el mismo caso anterior con una devaluación por periodo del 1%.


In [178]:
x = cf.cashflow([1000]*10)
cf.currency_conversion(cflo=x, exchange_rate = 2, devaluation=cf.nominal_rate(const_value=[1]*10))


Out[178]:
Time Series:
Start = (0,)
End = (9,)
pyr = 1
Data = (0,)   2000.00 
       (1,)   2020.00 
       (2,)   2040.20 
       (3,)   2060.60 
       (4,)   2081.21 
       (5,)   2102.02 
       (6,)   2123.04 
       (7,)   2144.27 
       (8,)   2165.71 
       (9,)   2187.37 

Ejercicio.-- Un invesionista extranjero se encuentra evaluando un proyecto de inversión en Colombia que ofrece una rentabilidad en pesos colombianos de 35% anual. Si él en su país logra una rentabilidad del 10% anual, ¿cuál será la tasa de devaluación del peso respecto al dólar, que hará atractivo el proyecto?


In [ ]:

Ejercicio.-- Un invesionista extranjero se encuentra evaluando un proyecto de inversión en Colombia se estima una rentabilidad en pesos colombianos de 38% anual. Si él en su país logra una rentabilidad del 15% anual, ¿cuál será la tasa de devaluación del peso respecto al dólar, que hará atractivo el proyecto? (Rta: 20%)


In [ ]: