Preparación
In [1]:
# Importa la librería financiera.
# Solo es necesario ejecutar la importación una sola vez.
import cashflows as cf
bullet_loan(amount, nrate, dispoints=0, orgpoints=0, prepmt=None)
En este tipo de préstamo se pagan únicamente intereses durante la vida del crédito; con la última cuota se paga el capital.
amount
-- monto del crédito.nrate
-- tasa nominal de interés.dispoints
-- puntos (costo) de descuento como porcentaje de amount
. Se consideran como intereses anticipados y son deducibles de impuestos.orgpoints
-- puntos (costo) de constitución como porcentaje de amount
. Son costos no deducibles para el pago de impuestos. prepmt
-- flujo de efectivo que representa prepago de la deuda.Ejemplo.- Modele un préstamo de $
1000 a una tasa de interés del 10% y una duración de 10 años.
In [2]:
cf.bullet_loan(amount=1000,
nrate=cf.interest_rate(const_value=10, periods=11, start=2017, freq='A'),
dispoints=0,
orgpoints=0,
prepmt=None)
Out[2]:
In [3]:
## se puede asignar a una variable
x = cf.bullet_loan(amount=1000,
nrate=cf.interest_rate(const_value=10, periods=11, start=2017, freq='A'),
dispoints=0,
orgpoints=0,
prepmt=None)
x
Out[3]:
In [4]:
## todos los tipos de créditos tiene funciones
## para obtener las columnas de la tabla de
## amortizacion como un flujo de efectivo
x.Int_Payment
Out[4]:
In [5]:
sum(x.Int_Payment)
Out[5]:
In [6]:
x.Ppal_Payment ## pagos a capital
Out[6]:
In [7]:
x.Beg_Ppal_Amount ## balance inicial del período
Out[7]:
In [8]:
x.End_Ppal_Amount ## balance final del período
Out[8]:
Ejemplo.-- Para el crédito anterior, suponga que se hace un prepago de la deuda por $
500 en t = 5
.
In [9]:
## tasa de interés
nrate = cf.interest_rate(const_value=[10]*11, start=2018)
## prepago de duda
prepmt = cf.cashflow(const_value=[0]*11, start=2018)
prepmt[5] = 500
## crédito
cf.bullet_loan(amount=1000,
nrate=nrate,
dispoints=0,
orgpoints=0,
prepmt=prepmt)
Out[9]:
In [10]:
## Si el prepago es mayor que la deuda, se ajusta el saldo.
prepmt = cf.cashflow(const_value=[0]*11, start=2018)
prepmt[5] = 5000
cf.bullet_loan(amount=1000,
nrate=nrate,
dispoints=0,
orgpoints=0,
prepmt=prepmt)
Out[10]:
Ejemplo.-- Modele el crédito anterior suponiendo que la tasa cambia al 8% a partir de t = 6
.
In [11]:
nrate = cf.interest_rate(const_value=[10]*11, start=2018, chgpts={'2023':8})
cf.bullet_loan(amount=1000,
nrate=nrate,
dispoints=0,
orgpoints=0,
prepmt=None)
Out[11]:
fixed_rate_loan(amount, nrate, life, start, pyr=1,
grace=0, dispoints=0, orgpoints=0, prepmt=None,
balloonpmt=None)
En este tipo de crédito la tasa permanece fija durante toda la vida de la deuda. El pago periodico (intereses + capital) es constante. Admite la especificación de cuotas extras (balloon payments) pactadas desde el principio del crédito que tienen como fin reducir el pago períodico.
amount
-- monto del crédito.nrate
-- tasa nominal de interés.life
-- plazo del crédito.start
-- especificación del período de inicio del crédito.pyr
-- número de periodos de capitalización por año para la tasa.grace
-- número de períodos de gracia antes del pago del capital.dispoints
-- puntos (costo) de descuento como porcentaje de amount
. Se consideran como intereses anticipados y son deducibles de impuestos.orgpoints
-- puntos (costo) de constitución como porcentaje de amount
. Son costos no deducibles para el pago de impuestos. prepmt
-- flujo de efectivo que representa prepago de la deuda.balloonpmt
-- pagos extra al pago períodico especificados como un objeto cashflow.Ejemplo.-- Modele un préstamo de $
1000 a un plazo de 10 años, cuotas anuales y una tasa del 10%.
In [12]:
cf.fixed_rate_loan(amount=1000, # monto
nrate=10, # tasa de interés
freq='A',
life=10, # número de cuotas
start=2018,
grace=0,
dispoints=0,
orgpoints=0,
prepmt=None,
balloonpmt=None)
Out[12]:
Ejemplo.-- Considere el mismo crédito anterior. ¿Cómo se modifican los pagos períodicos, si se pacta un pago adicional de $
200 en los períodos 5 y 10?.
In [13]:
balloonpmt = cf.cashflow(const_value=[0]*11, start=2018)
balloonpmt['2022'] = 200
balloonpmt['2028'] = 200
cf.fixed_rate_loan(amount=1000, # monto
nrate=10, # tasa de interés por período
life=10, # número de cuotas
start='2018',
grace=0,
dispoints=0,
orgpoints=0,
prepmt=None,
balloonpmt=balloonpmt)
Out[13]:
Ejemplo.-- Considere el caso anterior y un prepago de la deuda de $
100 en los períodos 3 y 7.
In [14]:
prepmt = cf.cashflow(const_value=[0]*11, start=2018)
prepmt['2021'] = 100
prepmt['2025'] = 100
cf.fixed_rate_loan(amount=1000,
nrate=10,
life=10,
start=2018,
grace=0,
dispoints=0,
orgpoints=0,
prepmt=prepmt,
balloonpmt=balloonpmt)
Out[14]:
Ejemplo.-- Un crédito bullet puede modelarse como un crédito balloon usando un prepago al final igual al monto de la deuda.
In [15]:
balloonpmt = cf.cashflow(const_value=[0]*11, start=2018)
balloonpmt['2028'] = 1000
cf.fixed_rate_loan(amount=1000,
nrate=10,
life=10,
start=2018,
grace=0,
dispoints=0,
orgpoints=0,
prepmt=None,
balloonpmt=balloonpmt)
Out[15]:
fixed_ppal_loan(amount, nrate, grace=0, dispoints=0, orgpoints=0,
prepmt=None, balloonpmt=None)
En este tipo de crédito el abono al capital es una cantidad fija durante todos los períodos, de tal forma que el pago total por período es variable (ya que incluye los intereses pagados sobre el saldo de la deuda).
amount
-- monto del crédito.nrate
-- tasa nominal de interés.grace
-- número de períodos de gracia antes del pago del capital.dispoints
-- puntos (costo) de descuento como porcentaje de amount
. Se consideran como intereses anticipados y son deducibles de impuestos.orgpoints
-- puntos (costo) de constitución como porcentaje de amount
. Son costos no deducibles para el pago de impuestos. prepmt
-- flujo de efectivo que representa prepago de la deuda.balloonpmt
-- pagos extra al pago períodico especificados como un objeto cashflow.Ejemplo.-- Modele un crédito por $
1000 a 10 años y una tasa del 10%. Los pagos son anuales.
In [16]:
nrate = cf.interest_rate(const_value=[10]*11, start=2018)
cf.fixed_ppal_loan(amount=1000,
nrate=nrate,
grace=0,
dispoints=0,
orgpoints=0,
prepmt=None,
balloonpmt=None)
Out[16]:
In [17]:
##
## período de gracia de 3
##
nrate = cf.interest_rate(const_value=[10]*11, start=2018)
cf.fixed_ppal_loan(amount=1000,
nrate=nrate,
grace=3,
dispoints=0,
orgpoints=0,
prepmt=None,
balloonpmt=None)
Out[17]:
In [18]:
##
## este tipo de crédito admite una tasa de interés variable
##
nrate = cf.interest_rate(const_value=[10]*11, start=2018, chgpts={'2024':8})
cf.fixed_ppal_loan(amount=1000,
nrate=nrate,
grace=0,
dispoints=0,
orgpoints=0,
prepmt=None,
balloonpmt=None)
Out[18]:
In [19]:
##
## este tipo de crédito admite pagos adicionales
## programados como abono a la deuda
##
nrate = cf.interest_rate(const_value=[10]*11, start=2018)
balloonpmt = cf.cashflow(const_value=[0]*11, start=2018)
balloonpmt['2023'] = 500
cf.fixed_ppal_loan(amount=1000,
nrate=nrate,
grace=0,
dispoints=0,
orgpoints=0,
prepmt=None,
balloonpmt=balloonpmt)
Out[19]:
In [20]:
##
## este tipo de crédito admite
## una tasa de interés variable
##
nrate = cf.interest_rate(const_value=[10]*11, start=2018, chgpts={'2024':8})
balloonpmt = cf.cashflow(const_value=[0]*11, start=2018)
balloonpmt['2023'] = 500
cf.fixed_ppal_loan(amount=1000,
nrate=nrate,
grace=0,
dispoints=0,
orgpoints=0,
prepmt=None,
balloonpmt=balloonpmt)
Out[20]:
In [21]:
##
## ejemplo anterior con período de gracia
##
nrate = cf.interest_rate(const_value=[10]*11, start=2018, chgpts={'2024':8})
balloonpmt = cf.cashflow(const_value=[0]*11, start=2018)
balloonpmt['2023'] = 500
cf.fixed_ppal_loan(amount=1000,
nrate=nrate,
grace=5,
dispoints=0,
orgpoints=0,
prepmt=None,
balloonpmt=balloonpmt)
Out[21]:
buydown_loan(amount, nrate, grace=0, dispoints=0,
orgpoints=0, prepmt=None)
Este tipo de préstamo es similar a los préstamos de cuota fija (balloon loans) pero con tasa cambiante en el tiempo. No admiten cuotas adicionales para reducir el pago fijo períodico. Cuando hay un cambio en la tasa de interés, el pago períodico total se recalcula para reflejar el cambio de tasa de interés.
amount
-- monto del crédito.nrate
-- tasa nominal de interés.grace
-- número de períodos de gracia antes del pago del capital.dispoints
-- puntos (costo) de descuento como porcentaje de amount
. Se consideran como intereses anticipados y son deducibles de impuestos.orgpoints
-- puntos (costo) de constitución como porcentaje de amount
. Son costos no deducibles para el pago de impuestos. prepmt
-- flujo de efectivo que representa prepago de la deuda.
In [22]:
##
## los resultados son iguales a un crédito balloon
##
nrate = cf.interest_rate(const_value=[10]*11, start=2018)
cf.buydown_loan(amount=1000,
nrate=nrate,
dispoints=0,
orgpoints=0,
prepmt=None)
Out[22]:
In [23]:
##
## cambios en la tasa de interés
##
nrate = cf.interest_rate(const_value=[10]*11, start=2018, chgpts={'2024':5})
cf.buydown_loan(amount=1000,
nrate=nrate,
dispoints=0,
orgpoints=0,
prepmt=None)
Out[23]:
In [24]:
##
## se introducen 2 prepagos por $ 100 cada uno
## en t = 3, 6
##
nrate = cf.interest_rate(const_value=[10]*11, start=2018)
prepmt = cf.cashflow(const_value=[0]*11, start='2018')
prepmt['2021'] = 100
prepmt['2024'] = 100
cf.buydown_loan(amount=1000,
nrate=nrate,
dispoints=0,
orgpoints=0,
prepmt=prepmt)
Out[24]:
to_cashflow(tax_rate=0)
Convierte el crédito a un flujo de fondos equivalente.
tax_rate
-- impuesto de renta. Se usa para tener en cuenta la reducción del pago por impuesto de renta debido a que los intereses son considerados como costo financiero deducible de impuestos.
In [25]:
nrate = cf.interest_rate(const_value=[10]*11, start=2018)
prepmt = cf.cashflow(const_value=[0]*11, start='2018')
prepmt['2021'] = 100
prepmt['2024'] = 100
cf.buydown_loan(amount=1000,
nrate=nrate,
dispoints=0,
orgpoints=0,
prepmt=prepmt).tocashflow()
Out[25]:
true_rate(tax_rate=0)
Calcula la tasa real del interés del crédito. Permite la comparación de créditos. Para el cálculo, el préstamo es convertido al flujo de efectivo equivalente teniendo en cuenta lo siguiente:
Los puntos de causación son considerados como no deducibles y son ignorados en el cálculo del beneficio del impuesto de renta.
Los puntos de descuento son considerado como intereses prepagados y son deducibles de impuestos.
Si tax_rate
es diferente de cero, la tasa de interés verdadera después de impuestos es calculada. Esto implica que en el cálculo solo la porción (1-tax_rate)
de los intereses (incluyendo los puntos de descuento) es considerada en el cálculo.
In [26]:
nrate = cf.interest_rate(const_value=[10]*11, start=2018)
prepmt = cf.cashflow(const_value=[0]*11, start='2018')
prepmt['2021'] = 100
prepmt['2024'] = 100
cf.buydown_loan(amount=1000,
nrate=nrate,
dispoints=0,
orgpoints=0,
prepmt=prepmt).true_rate()
Out[26]:
Ejercicio.-- Una empresa financiará la nueva construcción de una central de generación con los siguientes prestamos.
$
800 a 72 meses con un desembolso único en 2018-06. La tasa nominal de interés es del 25% nominal. La tasa cambia al 20% en 2020-03. $
700 a 80 meses con un desembolso único en 2018-09. La tasa nominal de interés es del 23% nominal. La tasa cambia al 19% en 2021-01. Calcule y grafique los intereses pagados por trimestre.
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.