La duración de Macaulay es un instrumento financiero es una media ponderada en base al flujo de caja (en valor actual).
Por medio de Excel, se puede implementar el cálculo por medio de una Función definida por el usuario, para ello es necesario identificar primero la sumatoria a resolver, para efectos de este ejercicio emplearemos la siguiente fórmula:
Luego partimos eligiendo una de las sumatorias sencillas existentes en UDF con Rangos, y partir de esta sumatoria agregamos las modificaciones, llegando al siguiente código:
Código en la duración de Macaulay:
numfilas = datos.Rows.Count nos permite identificar el número de filas
numcolumnas = datos.Columns.Count sirve para identificar el número de columnas del rango recibido por la función
La combinación de un for dentro de otro permite recorrer los elementos del rango recibido, se pueden emplear otras formas de realizar este recorrido de acuerdo a lo visto en UDF con Rangos
acumula = acumula + t * datos(x , y) / (1 + cok) ^ t corresponde a la sumatoria superior
acumula2 = acumula2 + datos(x, y) / (1 + cok) ^ t corresponde a la sumatoria inferior
macaulay = Round(acumula / acumula2, 2) sirve para retornar el resultado de la función Macaulay a la celda o al proceso que la haya invocado.
Uso de la duración de Macaulay:
Luego de colocar el código mostrado previamente en un módulo, se puede invocar a esta función desde cualquier celda en Excel.
Finalmente, si se desea realizar algún cambio en la fórmula para obtener la duración de Macaulay, o se desea emplear este ejemplo para alguna otra sumatoria, se puede descargar el archivo por medio del siguiente enlace: Duración de Macaulay