miércoles, 22 de junio de 2022

Financial Modeling - Ejercicio 10 Capítulo1 , Plan de Ahorros - Simon Benninga

Hola a todos, hoy vamos a resolver el ejercicio número 10 del capítulo 1, del libro: Financial Modeling - Simon Benninga y que tiene el siguiente planteamiento:

10. You are considering a savings plan which calls for a deposit of $15,000 at the end of each of the next 5 years. If the plan offers an interest rate of 10%, how much will you accumulate at the end of year 5? Do this calculation by completing the following spreadsheet. 

Tabla 1.

This spreadsheet does the calculation twice—once using the FV function and once using a simple table which shows the accumulation at the beginning of each year.

Traducción:

10. Usted esta considera realizar un plan de ahorros que se compone de depósitos de $15,000 al final de cada uno de los próximos 5 años. Si el plan le ofrece una tasa de interés del 10%, cuál será el valor que le entregará este plan al final del quinto año? Realice el calculo construyendo una hoja de calculo como la de la tabla 1. 

Como puede ver, este modelo realiza el calculo de dos maneras: la primera es usando la función VF (valor futuro) y la segunda es mediante el calculo compuesto año a año.

Para resolver este ejercicio, vamos a elaborar el siguiente modelo financiero en Google Sheets.




Como podemos ver, el total que se acumula en el plan de ahorros, al final del quinto año es de $91,576.50.

Hasta la próxima.

domingo, 19 de junio de 2022

Financial Modeling - Ejercicio 9 Capítulo1 , Compra de vehículo usando Google Sheets y Python ¿Financiado o al contado? - Simon Benninga

Hola a todos, hoy vamos a retomar los ejercicios del libro: Financial Modeling - Simmon Benninga. El día de hoy, resolveremos el ejercicio 9 del capítulo 1, que dice así:

9. You are considering buying a car from a local auto dealer. The dealer offers you one of two payment options:


• You can pay $30,000 cash.


• The “deferred payment plan”: You can pay the dealer $5,000 cash today and a payment of $1,050 at the end of each of the next 30 months.


As an alternative to the dealer financing, you have approached a local bank, which is willing to give you a car loan of $25,000 at the rate of 1.25% per month.

 a. Assuming that 1.25% is the opportunity cost, calculate the present value of all the payments on the dealer’s deferred payment plan.

b. What is the effective interest rate being charged by the dealer? Do this calculation by preparing a spreadsheet like this (only part of the spreadsheet is shown—you have to do this calculation for all 30 months):


Tabla 1.


Now calculate the IRR of the difference column; this is the monthly effective interest rate on the deferred payment plan.


Traducción:


Usted esta considerando comprar un carro en una agencia local. El vendedor le ofrece las siguientes dos opciones de pago para adquirirlo:


1. Pagar $30,000 en efectivo.

2. Financiar la compra así: Pagar $5,000 en efectivo y realizar pagos de $1,050 al final de cada mes durante los siguientes 30 meses.


Como una alternativa al plan de financiación ofrecido por la agencia, usted ha contactado un banco local, que le ofrece prestarle los $25,000 a una tasa del 1.25% mensual.


a. Asumiendo que el costo de oportunidad es el 1.25%, calcule el valor presente de todos los pagos realizados a la agencia en el plan de financiación.


b. Cuál es la tasa efectiva cobrada por la agencia? Realice el cálculo en una hoja de cálculo como la de la Tabla 1.


Calcule la TIR para la columna diferencia. Esa es la tasa mensual efectiva de la financiación ofrecida por el vendedor.


Para resolver el problema, vamos a construir el siguiente modelo financiero en Google Sheets:



Como podemos ver, al calcular el VPN de los flujos del plan de financiación y descontarlos con la tasa del costo de oportunidad del 1.25%, estamos llegando a un valor más alto de los $30,000 que vale el vehículo. Esto quiere decir, que la tasa que cobra la agencia, es más alta que nuestro costo de oportunidad (tasa ofrecida por el banco).

domingo, 12 de junio de 2022

Usar pandas_datareader de Python para conectarnos a Yahoo Finance y extraer los precios de los activos que necesitemos.

Hola a todos, en un post del 17 de julio de 2019, mostré los pasos para extraer la información de precios de un activo cualquiera, usando como fuente finance.yahoo.com, el proceso era bastante manual, y consistía en ingresar unos parámetros de la data a descargar, bajarla como un archivo separado por comas y luego abrirlo en excel para separar las columnas y poder organizarlo. 

Esta operatividad, la debíamos realizar para cada activo del que queríamos obtener los datos. 

Este paso a paso fue con el que aprendimos en la especialización en finanzas en la Universidad EAFIT, por allá en el año 2012.

Después de investigar un poco y de irme introduciendo al lenguaje de programación Python, encontré una librería con la que este proceso se puede hacer mucho más rápido, en el que si quieres cambiar el rango de fechas o incluir nuevos activos, no tenemos que volver a iniciar desde cero y repetir todo el ciclo - pandas_datareader.

La página con la documentación es esta:


En la opción Data Readers, podemos encontrar la documentación para las diferentes fuentes a las que soporta la conexión y extracción de datos el paquete, incluyendo Yahoo Finance:



Ahora, vamos a entrar en materia en nuestro código en Python, para ejecutar el proceso y liberarnos de la tediosa operatividad del paso a paso en excel.

domingo, 5 de junio de 2022

Matemática Financiera: Maximizar el VPN de un Portafolio de Inversión. Problema 5.23 - Evaluación Económica de Inversiones. Rodrigo Varela

Hola a todos, hoy, por solicitud de un lector del blog, vamos a desarrollar el ejercicio 5.23, del libro: Evaluación económica de inversiones, de Rodrigo Varela.

5.23 La empresa “Rentabimaxi” ha venido trabajando con una tasa mínima del 35% por año y tienen que decidir cómo asignar los $3.500.000 de que dispone entre los 5 proyectos que a continuación se describen:


(Entre las filas 3 a la 10, tenemos los 5 proyectos, con las diferentes variables que los caracterizan. En la fila 10, tenemos las restricciones para las diferentes variables).

Se sabe que el proyecto 3 sólo se puede hacer si se realiza el 5; que el 1 y el 4 son mutuamente excluyentes; que los proyectos 2 y 4 son complementarios con un efecto sinérgico positivo sobre el 4 del 5% en ingresos netos. Los proyectos 1 y 5 son complementarios, con un efecto sinérgico de reducción de inversión del 2% sobre cada proyecto.

¿Cuál sería la decisión que le recomendaría a “Rentabimaxi”?

Para resolver el ejercicio, vamos a construir un modelo financiero en Google Sheets con la siguiente formulación: 


Como podemos ver, en el modelo he incluido en el rango C12:C17, la formulación que resuelve las restricción que nos exige que el proyecto 3 solo se realiza si se ejecuta el 5 y que el 1 y el 4 son mutuamente excluyentes. El rango D12:D17, recoge el efecto sinérgico positivo en los ingresos del proyecto 4 y por último, el rango E12:E17, recoge el efecto de la reducción de la inversión para los proyectos 1 y 5 cuando se realizan al tiempo.

viernes, 15 de abril de 2022

Financial Modeling - Ejercicio 8 Capítulo1 , Préstamo de vehículo usando Google Sheets y Python - Simon Benninga

Hola a todos, hoy estamos de regreso para continuar con el desarrollo de los ejercicios del libro: Financial Modeling - Simon Benninga. En esta oportunidad, vamos a resolver el ejercicio 8 que dice asi:

8. You have just taken a car loan of $15,000. The loan is for 48 months at an annual interest rate of 15% (which the bank translates to a monthly rate of 15%/12 = 1.25%). The 48 payments (to be made at the end of each of the next 48 months) are all equal.

a. Calculate the monthly payment on the loan.

b. In a loan table calculate, for each month: the principal remaining on the loan at the beginning of the month and the split of that month’s payment between interest and repayment of principal.

c. Show that the principal at the beginning of each month is the present value of the remaining loan payments at the loan interest rate (use either NPV or the PV functions).

Traducción:

8. Usted toma un préstamo de vehículo por $15,000. El préstamo es por 48 meses a una tasa anual del 15% (que el banco convierte a una tasa mensual así: 15% / 12 = 1.25%). Los 48 pagos (que se realizan al final de cada mes) son todos iguales.

a. Calcule el valor de la cuota mensual.

b. En una tabla de amortización de préstamos, para cada mes, calcule: El saldo a capital al inicio de cada mes y la porción de abono a intereses y capital de cada una de las 48 cuotas.

c. Demuestre que el capital al inicio de cada mes es el valor presente de los pagos pendientes (use las funciones de VPN o VP para calcular).

Para resolver el problema, vamos a construir el siguiente modelo financiero en Google Sheets:


Con este modelo, podemos responder el literal a y b. El valor de la cuota mensual es de $417.46. Y en la columna C y D, tenemos la proporción que en cada cuota corresponde a capital e intereses.

Ahora vamos a responder el literal c:


Lo que hicimos fue calcular en cada periodo, el valor presente de las cuotas restantes, descontándolo con la tasa del 1.25%. Si este cálculo es igual al Saldo (columna E) hemos resuelto el problema.

Veamos la formulación del modelo:

martes, 29 de marzo de 2022

Financial Modeling - Ejercicio 7 Capítulo1 , Calculando la Anualidad para cubrir un Préstamo usando Google Sheets y Python - Simon Benninga

Hola a todos, hoy vamos a continuar resolviendo los problemas del libro: Financial Modeling - Simon Benninga. En esta oportunidad, vamos a resolver el ejercicio 7 del capítulo 1.

7. Calculate the flat annual payment required to pay off a 13%, 5-year loan of $100,000.

Traducción:

7. Calcule el pago anual para cancelar un préstamo de $100,000, que tiene un plazo de 5 años y una tasa efectiva anual del 13%.

Primero, vamos a construir el diagrama de flujos para tener un mejor entendimiento del problema:


Entonces, lo que tenemos que encontrar es el valor de las cinco anualidades uniformes que al traerlas a valor presente y descontarlas con una tasa del 13% equivale a $100,000. 

En el siguiente vídeo, vamos a ver como encontrar dicha anualidad, utilizando Google Sheets y también utilizando Python en la plataforma Colab:


A continuación el código fuente:

sábado, 26 de marzo de 2022

Financial Modeling - Ejercicio 6 Capítulo1 , Cálculando la TIR Utilizando Solver y Google Sheets - Simon Benninga

Hola a todos, hoy vamos a resolver el problema 6 del capítulo 1 del libro: Financial Modeling de Simon Benninga.

En esta oportunidad, el modelo financiero lo vamos a resolver utilizando Google Sheets.

6. An alternative definition of the IRR is the rate which makes the principal at the beginning of year 6 equal to zero.9 This is shown in the printout above, in which cell E9 gives the principal at the beginning of year 6. Using the Goal Seek function of Excel, find this rate (below we illustrate how the screen should look).

Tabla 1.

Traducción:

6. Una definición alterna para la TIR sería: la tasa que hace que el capital al inicio del año 6 sea igual a cero. Esto lo pudimos observar en el ejercicio 5. Usando la función buscar objetivo de Excel, encuentre la TIR.

Como lo mencionamos al inicio del post, en esta oportunidad vamos a trabajar con Google Sheets:


En el menú Extensions vamos a seleccionar la opción Solver:

Financial Modeling - Ejercicio 5 Capítulo1 , Cálculando la TIR de una Inversión - Simon Benninga

Continuando con los problemas del libro: Financial Modeling - Simon Benninga, vamos a trabajar el día de hoy el ejercicio 5 del capítulo 1.

5. In this exercise we solve iteratively for the internal rate of return. Consider an investment which costs 800 and has cash flows of 300, 200, 150, 122, 133 in years 1–5. Setting up the loan table below shows that 10% is greater than the IRR (since the return of principal at the end of year 5 is less than the principal at the beginning of the year):

Tabla 1.

Setting the IRR? cell equal to 3% shows that 3% is less than the IRR, since the return of principal at the end of year 5 is greater than the principal at the beginning of year 5.

By changing the IRR? cell, find the internal rate of return of the investment.

Tabla 2.

Traducción:

En este ejercicio vamos a resolver de manera iterativa para calcular la TIR. Considere una inversión con una inversión inicial de $800 y flujos de caja de $300, $200, $150, $122, $133 en los próximos 5 años. En el modelo financiero de la Tabla 1, podemos ver los flujos y que al trabajar con una tasa estimada de descuento para el proyecto del 10% (celda B1), dicho valor es mayor que la TIR real (Si fuera igual a la TIR, E9 sería igual a cero). Si cambiamos B1 por 3% (ver Tabla 2), encontramos que este valor es menor que la TIR real. Cambiando el valor de B1, encuentre la TIR real del proyecto.

Vamos a realizar nuestros cálculos, utilizando el siguiente modelo financiero:


Y vamos a probar con 5%:

domingo, 20 de marzo de 2022

Financial Modeling - Ejercicio 4 Capítulo1 , Perfil del VPN con dos TIR - Simon Benninga

Hola a todos, hoy vamos a seguir con los ejercicios del libro: Financial Modeling de Simon Benninga. En esta oportunidad, vamos a trabajar el ejercicio número 4 del capítulo 1.

4. The following cash-flow pattern has two IRRs. Use Excel to draw a graph of the NPV of these cash flows as a function of the discount rate. 

Then use the IRR function to identify the two IRRs. Would you invest in this project if the opportunity cost were 20%? 

Traducción:

4. El siguiente flujo de caja produce dos TIR. Use excel para dibujar una gráfica del VPN de estos flujos como función de la tasa de descuento.

Después use la función TIR para identificar las dos tasas. Debería usted invertir en este proyecto si el costo de oportunidad es de 20%?

 

En esta oportunidad, vamos a resolver el problema utilizando excel para calcular las dos TIR y   Python para gráficas el perfil del VPN.

Iniciemos con el cálculo en excel, mediante la construcción del siguiente modelo financiero:


Entonces las dos TIR son: 6,34% y 60,20%. Revisemos la fórmula de la TIR de la celda B12. En esta, hacemos uso del parámetro estimar. Este es necesario para que podamos llegar a la segunda TIR. Con este parámetro le suministramos a la función un número aproximado al valor de la segunda TIR y entonces excel lo que hace es calcularla por nosotros. 
El valor debe ser mas cercano a la segunda que a la primer TIR (ahora con python vamos a confirmarlo gráficamente).

Miremos lo que pasa si en estimar ponemos un 10%:

sábado, 19 de marzo de 2022

Financial Modeling - Ejercicio 3 Capítulo1 , Punto de Indiferencia - Simon Benninga

Hola a todos, continuando con los ejercicios del libro: Financial Modeling de Simon Benninga, hoy vamos a desarrollar el ejercicio 3 del capítulo 1:

3. You are offered an investment with the following conditions: 

• The cost of the investment is 1,000.

• The investment pays out a sum X at the end of the first year; this payout grows at the rate of 10% per year for 11 years.

If your discount rate is 15%, calculate the smallest X which would entice you to purchase the asset. For example, as you can see in the following display, X = $100 is too small—the NPV is negative:

Tabla 1.


Traducción:

3. Le ofrecen una inversión con las siguientes condiciones:

  • El valor a invertir son 1,000.
  • La inversión paga una suma X al final del primer año; este pago se incrementa un 10% al año por los próximos 11 años.
Si su tasa de descuento es del 15%, calcule el valor de X más pequeño, con el que la inversión es atractiva para usted. Por ejemplo, como se ve en la tabla 1, cuando X = 100, el valor es muy pequeño y se llega a un VPN negativo.

Para resolver este problema, vamos a construir el siguiente modelo financiero en Excel:


En este modelo, necesitamos poner a variar la celda B7, cuyo valor original es $100, podemos hacerlo manualmente o utilizando la funcionalidad buscar objetivo que trae Excel. Lo importante es que lleguemos a que el valor del VPN (celda B3) sea igual a cero. 

Entonces, a partir de un flujo en el año 1 de $129,29 tenemos un VPN de 0, es decir no hay ni construcción ni destrucción de valor, a este cifra se le conoce como valor de indiferencia para decidirnos por la inversión, cualquier número que este por encima de $129,29, agregará valor para el inversionista. Sin embargo, hay que tener en cuenta que con VPN muy pequeños, y al analizar los riesgos de cada flujo, puede ser que no sea suficiente para decidirnos a invertir.

miércoles, 16 de marzo de 2022

Financial Modeling - Ejercicio 2 Capítulo 1, Tabla Amortización Préstamo - Simon Benninga

Hola a todos, hoy vamos a continuar con los ejercicios del libro: Financial Modeling de Simon Benninga, hoy vamos a trabajar el ejercicio 2 del capítulo 1 que dice así:

2. You just took a $10,000, 5-year loan. Payments at the end of each year are flat (equal in every year) at an interest rate of 15%. Calculate the appropriate loan table, showing the breakdown in each year between principal and interest.

Traducción:

2. Usted toma un préstamo a 5 años. Se amortiza con pagos iguales al final de cada año con una tasa de interés del 15%. Calcule la tabla del préstamo, separando para cada año los abonos a capital e intereses.


Este ejercicio lo vamos a resolver construyendo el siguiente modelo financiero en Excel:


En el modelo, para cada año podemos identificar claramente los abonos a capital en (columna B), los intereses que se pagan en cada periodo (columna C), el valor de la cuota fija mensual (columna D) y el saldo a capital después de pagar la cuota de cada año. Entre las columnas H y K, se encuentra la formulación del modelo.

Para llegar al mismo resultado en Python, vamos a utilizar un script que hicimos en un ejercicio anterior, solo vamos a cambiar los parámetros de entrada del modelo y lo vamos a ejecutar:


Después de actualizar las variables capital, tasa y plazo y ejecutar el script, tenemos:

martes, 15 de marzo de 2022

Financial Modeling - Ejercicio 1 Capítulo 1, Compra Activo - Simon Benninga

Hola a todos hoy vamos a iniciar a trabajar con los ejercicios del libro: Financial Modeling de Simon Benninga:


Un libro muy utilizado en distintas universidades para cubrir módulos de los postgrados en finanzas. El libro siempre lo he encontrado en inglés, por lo que escribiremos cada ejercicio en su texto original y haremos la traducción respectiva. El profesor Benninga (Q.E.P.D) desarrolla algunos de los ejercicios utilizando VBA, en nuestro caso trataremos de utilizar Python.

Iniciemos entonces con el primer problema del capítulo 1:

1. You are offered an asset costing $600 that has cash flows of $100 at the end of each of the next 10 years.

a. If the appropriate discount rate for the asset is 8%, should you purchase it? 

b. What is the IRR of the asset?

Traducción:

1. Le ofrecen un activo que cuesta $600 y que genera flujos de caja de $100 al final de cada año durante los próximos 10 años.

a. Si la tasa de descuento para el activo es 8%, debería comprarlo?

b. Cual es la TIR del activo?


Para resolver el ejercicio, vamos a construir el siguiente modelo financiero en Excel:


Entonces, partiendo de una tasa de descuento del 8%, se puede concluir que deberíamos comprar el activo, pues al calcular el VPN de los flujos que se generan a lo largo de los 10 años, vamos a obtener una generación de valor de $71 dólares (ver celda B6).

Para el  cálculo de la TIR, usaremos la función de Excel que tiene el mismo nombre, al pasarle como argumentos el rango que contiene los flujos de caja, obtenemos el resultado de 11%. Es de aclarar que la tasa obtenida es anual. Cuando calculamos la TIR, la tasa siempre esta en la misma unidad de tiempo que tienen los flujos.

Para calcular el ejercicio en Python, debemos escribir el siguiente código:


Con lo que llegamos al mismo resultado que obtuvimos en Excel.

A continuación el código fuente: 

sábado, 5 de marzo de 2022

Trabajando en Python con la función criptográfica SHA256

Hola a todos, hoy vamos a trabajar en Python con la función criptográfica SHA256. Esta función nos permite encriptar o cifrar un mensaje de texto, una imagen, un documento en pdf o lo que sea que tengamos digitalizado en nuestro computador. También la podemos utilizar en el proceso de autenticación de una aplicación.

Este tipo de funciones, son conocidas también como funciones de una sola vía, lo que quiere decir que con el resultado entregado por la función, no es posible devolverse y obtener los datos que fueron ingresados y encriptados.

En python, la función SHA256 (SHA quiere decir: Secure Hash Algorithms) requiere que le ingresemos como parámetro los bits del objeto que deseamos encriptar. Para esto, es necesario que primero utilicemos la función encode( ), que es la que convertirá a bits nuestro objeto.

Veamos un ejemplo del uso de la función:


En la línea 5, tenemos el texto que vamos a encriptar. Y en la línea 6, utilizamos la función encode( ) para convertir a bits y luego los pasamos a la función sha256( ) para generar el proceso de encriptado.

Para visualizar el resultado, y presentarlo en formato hexadecimal, utilizaremos la función hexdigest( ):


Como pueden ver, el resultado es una cadena hexadecimal que representa el texto “El amor en los tiempos del cólera” después de ser encriptado con la función sha256( ).

Hasta una próxima.