Consecutivo: INF-INV-MATFR-INF-2010/II Esta obra esta bajo una licencia de reconocimiento-no comercial 2.5 Colombia de creativecommons. Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by/2.5/co/ o envié una carta a creative commons, 171second street, suite 30 San Francisco, California 94105, USA Matlab financiero Autores: Jeimmy Paola Muñoz Soracipa Francisco González Buitrago Director Unidad Informática: Henry Martínez Sarmiento Tutor Investigación: Alejandro NIeto Coordinadores: Alejandro Nieto Ramos Laura Vanessa Hernandez Juan Felipe Reyes Rodríguez Coordinador Servicios Web: Miguel Ibañez Analista de Infraestructura y Comunicaciones: Alejandro Bolivar Analista de Sistemas de Información: Mesias Anacona Obando Coordinadora Inventarios: Sandra Yazmin Corrales UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES BOGOTÁ D.C. NOVIEMBRE DE 2010 UNI-FO-13 V 1.0 Consecutivo: INF-INV-MATFR-INF-2010/II matlab Financiero Director Unidad Informática: Tutor Investigación: Henry Martínez Sarmiento Alejandro Nieto Auxiliares de Investigación: GLORIA STELLA DAVID FELIPE PEDRO ANDRES IVAN ALBEIRO SANDRA MILENA EDGAR ANDRES CESAR LEONARDO FRANCISCO LILIANA CAROLINA LUIS CARLOS JEIMMY PAOLA LINETH JOHANA JAVIER ALEJANDRO CINDY LORENA JUAN DAVID CAMILO ALEXANDRY DIEGO ARMANDO DANIEL FRANCISCO JUAN CARLOS CAMILO ALBERTO BARRERA ARDILA BELTRAN GOMEZ BOHORQUEZ CABEZAS MARTINEZ CASTELLANOS PÁEZ GARCIA HERNANDEZ GARIBELLO OSPINA GONZÁLEZ BUITRAGO HERRERA PRIETO MARTÍNEZ RUIZ MUÑOZ SORACIPA NIETO CHAVEZ ORTIZ VARELA PABÓN GÓMEZ PÁEZ ALVAREZ PEÑA TALERO POVEDA ZAMORA ROJAS MARTÍN TARAPUEZ ROA ZAPATA MARTINEZ Este trabajo es resultado del esfuerzo de todo equipo perteneciente a la Unidad de Informática. el Se prohíbe la reproducción parcial o total de este documento, por cualquier tipo de método fotomecánico y/o electrónico, sin previa autorización de la Universidad Nacional de Colombia. UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES BOGOTÁ D.C. SEPTIEMBRE DE 2010 UNI-FO-13 V 1.0 MATLAB FINANCIERO TABLA DE CONTENIDO TABLA DE CONTENIDO ...................................................................................................................3 1. RESUMEN .......................................................................................................................................5 2. ABSTRACT .....................................................................................................................................5 3. INTRODUCCIÓN........................................................................................................................6 3.1. VIABILIDAD............................................................................................................................6 3.1.1. 3.2. ¿Se puede en Matlab? ....................................................................................................6 EJERCICIOS PRACTICOS (Enfocados al Curso de MATLAB FINANCIERO) .... 11 3.2.1. Tasa de interés simple y compuesta....................................................................... 11 3.2.2. Tasa Interna de retorno............................................................................................ 12 3.2.3 Tasa nominal y tasa efectiva ..................................................................................... 13 3.2.4. Anualidades .................................................................................................................. 14 3.2.5. Valor presente y valor futuro .................................................................................. 14 3.2.6. Valor Presente Neto ...................................................................................................... 15 3.2.7. Bonos ................................................................................................................................. 15 3.2.8. Amortizaciones ................................................................................................................ 20 3.3. CREAR UNA FUNCIÓN.................................................................................................. 22 3.3.1. Gradientes .................................................................................................................... 24 3.3.1.1. Gradientes Geométricos .................................................................................. 24 3.3.1.2. Gradientes lineales ............................................................................................. 26 UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 3 UNI-FO-02 V 1.0 MATLAB FINANCIERO 4 CONCLUSIONES ...................................................................................................................... 28 5 BIBLIOGRAFIA ........................................................................................................................... 29 UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 4 UNI-FO-02 V 1.0 MATLAB FINANCIERO 1. RESUMEN Este informe es la continuación de la investigación emprendida por la Unidad de Informática de La facultad de Ciencias Económicas, titulada Modelamiento y análisis financiero en Matlab, en la cual se realizó una inmersión en los toolbox que posee este software aplicativo, haciendo especial énfasis en el financiero, enfocando dichos temas al curso libre de “Excel Financiero”, para su implementación en Matlab; arrojando como conclusión que Matlab es un software que tiene un gran potencial para ser aplicado en el mundo de las finanzas. Así, en este informe se realiza una inspección más exhaustiva de los recursos que ofrece el toolbox financiero, para analizar y demostrar que matlab puede ser usado en la enseñanza de tópicos de índole financiero, siendo mejor en algunos casos que que la hoja de cálculo de Excel. 2. ABSTRACT This report is the continuation of the research undertaken by the Unit of Computer Science of The Economic Sciences Faculty, named “Modelamiento y analisis financiero en Matlab”, in which a dip was realized in the toolbox that it possesses this applicative software, doing special emphasis in the financier, focusing the above mentioned topics on the free course of " Financial Excel ", for their implementation in Matlab; throwing as conclusion that Matlab is a software that has a great potential to be applied in the world of the finance. This way, in this report there is realized a more exhaustive inspection of the resources that the financial toolbox offers, to analyze and to demonstrate that matlab financier can be used in the education of topics of nature, being better in some cases that that the spreadsheet of Excel. UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 5 UNI-FO-02 V 1.0 MATLAB FINANCIERO 3. INTRODUCCIÓN Dentro de la enseñanza de temas concernientes a las finanzas en la Facultad de Ciencias Económicas únicamente se emplean las herramientas que contiene la suite de office, sin embargo estas no son las únicas que tiene la facultad a disposición de la comunidad universitaria. Matlab es una herramienta que podría emplear la facultad, no obstante no se tiene el conocimiento del potencial que esta nos ofrece con su toolbox financiero. En este sentido esta investigación tiene como propósito realiza una inmersión dentro de este toolbox y encontrar su aplicabilidad en el contexto académico de la facultad. 3.1. VIABILIDAD 3.1.1. ¿Se puede en Matlab? El toolbox financiero ofrece un gran número de funciones, que son de gran utilidad a la hora de realizar cálculos financieros, sin embargo para obtener los resultados en formato de número decimal (comúnmente empleado) se recomienda efectuar la siguiente configuración: Files> preferences>command window>text display>numeric format> bank ó long g Se empiezan a realizar algunos ejercicios de MATLAB a nivel básico, al igual que se inicia en la documentación base (Ver ESTADO DEL ARTE). Se observa que algunos ejemplos son fácilmente implementados en Excel… Y además, en el caso particular del manual creado por la UIFCE, son confusos y/o no dan el resultado esperado. Tomemos “de manera literal” el siguiente ejercicio, del manual anteriormente mencionado [1] (página 91), basado en la función xirr que permite calcular la tasa interna de retorno para una programación de flujos de caja no periódicos: Una inversión de $16.000 tiene el siguiente flujo de caja no periódico. La inversión inicial y sus fechas son incluidas. Flujos de caja y fechas UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 6 UNI-FO-02 V 1.0 MATLAB FINANCIERO ($10000) enero 14,2003 * Aquí por ejemplo se notan problemas de digitación $3500 Febrero 20, 2003 $3000 Marzo 3, 2003 $3000 Junio 14,2004 $4000 Diciembre 1,2004 %Calcula la tasa interna de retorno para flujos no periódicos. Flujo de caja =[-16000,3500,3000,3000,4000]; Fechas=[‘01/12/2003’ ’02/14/2004’ ’03/03/2041’ ’06/14/2004’ ’12/01/2004’]; Retorno= xirr (CashFlow, CashFlowDates) Devuelve: Retorno = 0.4644 (ó 43.44) Obviando algunos errores de digitación que se hubieran podido crear en el manual, al implementar el ejercicio en el software literalmente nos devuelve errores puesto que Flujo de Caja no se consideraría una variable, y además en la función se llaman las variables en inglés. Nosotros replanteamos el ejercicio de la siguiente forma: CF = [-10000 ; 2500 ; 2000 ; 3000 ; 4000]; UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 7 UNI-FO-02 V 1.0 MATLAB FINANCIERO DF = {'12-Jan-2007' '14-Feb-2008' '03-Mar-2008' '14-Jun-2008' '01-Dec-2008'}; R = xirr(CF, DF) Devuelve R= 0.1006 Esto es fácilmente calculado con la función TIR.NO.PER(valores;fechas;estimar) presentado en la tabla 1. Valores -10000 Fechas 12/01/2007 2500 2000 14/02/2008 03/03/2008 3000 14/06/2008 en EXCEL 4000 Fórmula 01/12/2008 Descripción (resultado) "=TIR.NO.PER(A2:A6;B2:B6)" Tasa interna de retorno (0,100643784 ó 10,06%) Debido a que MATLAB puede ser un tanto engorroso para ser utilizado por los estudiantes de la facultad de ciencias económicas, planteamos que para solucionar problemas sencillos es mucho más fácil EXCEL en su uso. Por ende se plantean ejercicios UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 8 UNI-FO-02 V 1.0 MATLAB FINANCIERO fáciles de simulación, (facultad que no tiene EXCEL y si MATLAB) para ser utilizados… Veamos el siguiente ejemplo: %Este programa pone de manifiesto la conjetura de Slutsky sobre ciclos %económicos. Él mostró que los ciclos económicos pueden ser el resultado %de la acumulación de choques estocásticos. clear T = 100; phi=0.9; y(1) = 0; for t=2:T a=rand; if a<=0.25 alet(t) = 1; elseif a<=0.5 alet(t) = 0.5; elseif a<=0.75 alet(t) = -0.5; else alet(t) = -1; end y(t) = phi*y(t-1)+alet(t); end plot(y, ‘r’) UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 9 UNI-FO-02 V 1.0 MATLAB FINANCIERO Este programa, de manera muy sencilla muestra gráficamente una variación económica de una empresa. Otro ejemplo analizado, empieza a implementar algunas funciones del toolbox financiero. En este se observa el gráfico de un flujo de caja cuando se compra un bono, su tasa cupón y las fechas de maduración. Mostrando al final el gráfico de flujo de caja. Settle = '03-Aug-1999'; Maturity = ['15-Aug-2000';'15-Dec-2000']; CouponRate= [0.06; 0.05]; Period = [3;2]; Basis = [1;0]; [CFlowAmounts, CFlowDates, TFactors] = cfamounts (CouponRate,... Settle, Maturity, Period, Basis); cfplot(CFlowDates,CFlowAmounts) xlabel('Numeric Cash Flow Dates') ylabel('Bonds') title('Cash Flow Diagram') UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 10 UNI-FO-02 V 1.0 MATLAB FINANCIERO 3.2. EJERCICIOS PRACTICOS (Enfocados al Curso de MATLAB FINANCIERO) 3.2.1. Tasa de interés simple y compuesta Para calcular este tipo de tasas Matlab no ofrece una formula ya predeterminada, entonces para obtener los resultados se parametrizan las variables de la formula o simplemente, realizamos la operación como si Matlab fuera una calculadora así: P: cantidad I: tasa de interés n: periodos Tasa de interés simple >> ((P)+(P)*(n)) >> ((1000)+ (1000*0.2)) ans = 1200 UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 MATLAB FINANCIERO Tasa de interés compuesta >> (P)*(1+i)^n >> ((1000)*((1+0.2)^2)) ans = 1440 Estas funciones pueden ser implementadas en un script (m-file). Esto se verà em profundidad mas adelante. 3.2.2. Tasa Interna de retorno Calcular la TIR de una inversión de 10000 con unas fechas determinadas CF = [-10000 ; 2500 ; 2000 ; 3000 ; 4000];%Flujo de Caja DF = {'12-Jan-2007' '14-Feb-2008' '03-Mar-2008' '14-Jun-2008' '01-Dec-2008'}; %Fechas de cobro del flujo de caja R = xirr(CF, DF) %xirr(flujo,fechas) Devuelve R= 0.1006 UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 12 UNI-FO-02 V 1.0 MATLAB FINANCIERO 3.2.3 Tasa nominal y tasa efectiva Calcular la tasa nominal a la que equivale una tasa de interés efectiva anual de 9.38% >> nomrr(0.0938,12) % nomrr(tasa, numero de periodos) 0.0900 Cual es el interés efectivo de una tasa de interés del 18% anual si se capitaliza: a. Anualmente b. Semestralmente c. Mensualmente d. Diariamente (suponga año de 365 días) a. >> effrr(0.18,1) % effrr(tasa, numero de periodos) ans = 0.1800 b. >> effrr(0.18,2) ans = 0.1881 c. >> effrr(0.18,12) ans = 0.1956 d. >> effrr(0.18,365) ans = 0.1972 UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 13 UNI-FO-02 V 1.0 MATLAB FINANCIERO 3.2.4. Anualidades Una persona deposita $100.000 en una cuenta que paga el 5% semestral. Si esta persona quisiera retirar cantidades iguales al final de cada semestre durante 5 años ¿de que tamaño seria cada retiro? >> payper(0.05,10,100000,0,0) % payper(Tasa, NumPeriods, ValorPresente, ValorFuturo, Días) ans = 12950.46 3.2.5. Valor presente y valor futuro Valor Futuro Si en una cuenta de ahorros que paga el 15% anual se depositan $ 1000 anuales durante cinco años, ¿Qué cantidad se acumularía al final del año 10, si el primer depósito se hizo al final del año 1?. >> fvfix(0.15,5,1000,0,0)%fvfix(interés,tiempo,dinero,pago_extra(opc), %anticipado=1/vencido=0(opc)) ans = 6742.38 Al final del quinto año se acumula $6742.38, entonces como se quiere saber cuánto tenemos al final del año 10 se multiplica la cantidad acumulada por los intereses de los siguientes 5 años >> 6742.38*((1+0.15)^5) %P(1+int)^n UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 14 UNI-FO-02 V 1.0 MATLAB FINANCIERO ans = 13561.33 Nota: Para calcular el valor presente, únicamente se cambia la formula 3.2.6. Valor Presente Neto Valor Presente Neto. MATLAB maneja dos funciones, una con fechas periódicas (pvvar) y otra con fechas manejadas por el usuario (pvfix). Veamos el siguiente ejemplo: %Calcule el valor actual del siguiente flujo de caja considerando una tasa de %descuento de 15% % Años 0 1 2 3 4 %FC 0 500 700 700 900 En MATLAB tenemos: A= pvvar ([0, 500,700,700,900],0.15); % Colocamos los valores futuros y el %porcentaje Devuelve: A= 1938.92 3.2.7. Bonos Antes de hablar sobre bonos es importante analizar algunos componentes utilizados (variables) en MATLAB. Basis: Es la convención utilizada por MATLAB para contar el número de días que resta en un bono para su maduración. Por ejemplo en la expresión actual/ actual el numerador calcula el número de días real entre dos rechas y el denominador cuenta el número de días en un año, es decir 366 o 365 dependiendo de si es bisiesto o no. 0 = actual/actual UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 15 UNI-FO-02 V 1.0 MATLAB FINANCIERO 1 = 30/360 (SIA) 2 = actual/360 3 = actual/365 4 = 30/360 (PSA) 5 = 30/360 (ISDA) 6 = 30/360 (European) 7 = actual/365 (Japanese) 8 = actual/actual (ISMA) 9 = actual/360 (ISMA) 10 = actual/365 (ISMA) 11 = 30/360E (ISMA) 12 = actual/365 (ISDA) 13 = BUS/252 Default: 0 Period(m): Frecuencia de cobro de un cupón. 0=cupón cero 1=anual 2=semestral (por defecto) 3=trimestral 4=cuatrimestral 6=bimestral 12=mensual 3.2.7.1. Rentabilidad de un bono Veamos el siguiente ejemplo, para un bono del estado con tres diferentes rentabilidades: Yield = [0.04; 0.05; 0.06]; %Tasas de Rentabilidad esperadas CouponRate = 0.05; %Tasa Cupón Settle = '20-Jan-1997'; %Fecha de adquisicion del bono UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 16 UNI-FO-02 V 1.0 MATLAB FINANCIERO Maturity = '15-Jun-2002'; %Fecha de Madurez/ Vencimiento del bono Period = 2; %Periodos de Pago (Ver Rangos) Basis = 0; %base (Ver Rangos) [Price, AccruedInt] = bndprice(Yield, CouponRate, Settle,... Maturity, Period, Basis) %Aqui hallamos el precio del bono Esto devuelve: Price = 104.8106 99.9951 95.4384 AccruedInt = 0.4945 0.4945 0.4945 3.2.7.2. Rendimiento de un bono, MATLAB utiliza la expresión bndyield, veamos el siguiente caso de aplicación en el que se analizará el rendimiento de un bono con tres diferentes precios: Price = [95; 100; 105]; %DIferentes precios del bono CouponRate = 0.05; %Tasa Cupón UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 17 UNI-FO-02 V 1.0 MATLAB FINANCIERO Settle = '20-Jan-2002'; %Fecha de adquisicion del bono Maturity = '15-Jun-2007'; %Fecha de Madurez/ Vencimiento del bono Period = 2; %Periodos de Pago (Ver Rangos) Basis = 0; %base (Ver Rangos) Rentabilidad = bndyield(Price, CouponRate, Settle,... Maturity, Period, Basis)% se analiza la rentabilidad Devuelve: Yield = 0.0610 0.0500 0.0396 3.2.7.3. Fechas de un bono Para obtener la estructura de pagos de un bono MATLAB utiliza la siguiente función cfdates Donde: >>CfFechas=cfdates(Settle, Maturity, EndMonthRule(Opcional),IsuueDate(Opcional), m (Opcional),Basis(Opcional), FirstCouponRate (Opcional), Last CouponRate(opcional) ) para ver las fechas utilizaremos la funcion datestr >> datestr(CfFechas) Ejemplo: UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 18 UNI-FO-02 V 1.0 MATLAB FINANCIERO %Sean tres bonos con tres fechas de vencimiento diferentes y las siguientes caracteristicas: %Settle: ’15.Mar.2000’ %Maturity:’30-sept-2001’,’31-oct-2002’,’30-nov-2002’ %Pago cupones semestralmente %Basis actual/actual %EndMonthRule activa >> Maturity =[’30-Sep-2001’;’31-oct-2002’; ’30-Nov-2002’] >>CF=cfdates(’15-Mar-2000’, Maturity) %CF = % 730576 730759 730941 731124 NaN NaN % 730606 730790 730971 731155 731336 731520 % 730637 730820 731002 731185 731367 731550 >> datestr(CF(3,:)) %ans = %31-May-2000 %30-Nov-2000 UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 19 UNI-FO-02 V 1.0 MATLAB FINANCIERO %31-May-2001 %30-Nov-2001 %31-May-2002 %30-Nov-2002 3.2.7.4. Duración y convexidad de un bono Para un bono estándar la duración se calcula: >>[Duration. ModDuration]=cfdur(CashFlow,r) %Donde cashFlow es el flujo de caja y r es la tasa % Si por ejemplo se calcula la duración de un bono A de nominal 100 a cinco años con cupon anual del 10% y cuya TIR es r=12% anual entonces >> CashFlow=[10 10 10 10 110]; >>[Duracion. ModDuracion]=cfdur(CashFlow,0.12) Retorna Duracion= 4.1355 (años) ModDuracion= 3.6924 (años) %El precio de un bono normal coincide con el VAN, por tanto la función pvfix >>P= pvfix(0.12, 5, 10,100,0) P=92,79 3.2.8. Amortizaciones Annurate, sirve para calcular la tasa de interes periodico pagado en un prestamo o anualidad, su sintaxis es r=annurate(Numperiods, defecto=0)) Valorpresente,valorfuturo(opc),anticipado=1,vencido=0(por UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 20 UNI-FO-02 V 1.0 MATLAB FINANCIERO %se toma un prestamo de 8000 por 5 años y se hacen pagos mensuales de 225 al final de cada mes %para calcular la tasa de interes tenemos... >>tasa_mensual=annurate(5*12,225,8000,0,0) Devuelve tasa_mensual= 0.02 Amortize, sirve para generar una tabla de amortización, devuelve el principal y los pagos del prestamo, el saldo del valor original del monto prestado, los intereses pagados y el abono a capital periódico, su sintaxis es: [Principal, tasa, Valor_presente, Pago]=amortize(tasa, Numperiods, Valorpresente, valorfuturo(opc),tipo: anticipado=1,vencido=0(por defecto=0)) %Calcule una tabla de amortización para un prestamo convencional de 30 años a una tasa fija con pagos mensuales constantes. Asuma que la tasa fija es del 12% anual periodica y el valor inicial del prestamo es de 2000000 %para calcular la amortización tenemos... >>tasa_mensual=0.12/12; >>nper=30*12; >>valorpresente= 2000000; [Principal, Interes, Balance, Pago]=amortize (tasa,nper,valorpresente); %Esto nos arroja un array de datos, para una mejor visualización, se %plantea el siguiente gráfico para ver el actual saldo del préstamo, el %abono a capital y el pago de interes sobre el tiempo de amortización. Se %nota que excede los 2700000 mucho mas que la cantidad prestada plot (Balance,’b’), hold(‘on’) plot(cumsum(Principal),’- -k’) plot(cumsum(Interes),’r’) xlabel(‘Pago’) UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 21 UNI-FO-02 V 1.0 MATLAB FINANCIERO ylabel(‘Pesos’) grid(‘on’) title(‘Saldo, Abono a Capital e Interes’) legend(‘Saldo’,’Abono a Capital’,interes acumulado’,’TL’) %La línea azul sólida representa el saldo de la deuda, que declina mientras transcurren los 30 años (360 meses). La línea punteada roja indica el incremento acumulado de los pagos de interés. Finalmente la línea cortada negra representa el abono a capital logrado después de los 30 años. 3.3. CREAR UNA FUNCIÓN Se pueden crear funciones de manera fácil a través del block de notas guardando el archivo con extensión *.m, y si se desea ubicándolo en la carpeta MATLAB de mis documentos. En el presente se utilizará la función de préstamo (un tipo de amortización), escribiéndola de la siguiente manera UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 22 UNI-FO-02 V 1.0 MATLAB FINANCIERO %prestamo.m function [pagom, pagot]=prestamo(cantidad,interes,annios) %Amortizacion mensual y total de un prestamo a lo largo de su vida %Argumentos de entrada: %cantidad=cant. del prestamo en pesos %interes =porcentaje de interes %annios=numeros de años (vida) del prestamo %Argumentos de salida: %padom=amortizacion mensual, pagot * amotizzcion total interesm= interes*0.01/12; a=1+interesm; b=(a^(annios*12)-1)/interesm; pagom=cantidad*a^(annios*12)/(a*b); pagot=pagom*annios*12; Al finalizar nuestra función préstamo la utilizaremos de la siguiente forma en MATLAB >>help prestamo Con este comando veremos todo lo que colocamos en comentarios, para utilizarla tenemos el siguiente ejemplo >>[mensual,total]=préstamo(25000,7.5,4)%prestamo(dinero,tasa,años) En MATLAB retorna Mensual= 600,72 UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 23 UNI-FO-02 V 1.0 MATLAB FINANCIERO Total= 28834.47 3.3.1. Gradientes En matemáticas financieras gradientes son anualidades o serie de pagos periódicos, en los cuales cada pago es igual al anterior más una cantidad; esta cantidad puede ser constante o proporcional al pago inmediatamente anterior. El monto en que varía cada pago determina la clase de gradiente: Si la cantidad es constante el gradiente es aritmético (por ejemplo cada pago aumenta o disminuye en UM 250 mensuales sin importar su monto). Si la cantidad en que varía el pago es proporcional al pago inmediatamente anterior el gradiente es geométrico (por ejemplo cada pago aumenta o disminuye en 3.8% mensual) 3.3.1.1. Gradientes Geométricos En MATLAB para desarrollar un gradiente geométrico se debe crear un script que realice esta tarea, se propone el siguiente programa pero el lector puede crear su aplicación. function [vp, vf, vfi, vpago]=gradlin(A,L,i,n,p) %Gradiente lineal %Argumentos de entrada: %A=Anualidad %L=incremento %i=interés %n=tiempo (meses) %p=valor de un pago %Argumentos de salida: UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 24 UNI-FO-02 V 1.0 MATLAB FINANCIERO % valor presente, valor futuro, gradiente infinito If ( i==0){ disp('Error: Interes igual a cero'); } else { i=i/100; r=-n; vp= A*((1-(1+i)^r)/i) +(L/i)*(((1-(1+i)^r))/i)+r*(1+i)^r); vf=A*(((1+i)^r-1)/i)+(L/i)*(((1+i)^r - 1)/i)+r); vfi= (A+L)/i; vpago=A+(p-1)*L; } end Para ejecutar el script tendríamos el siguiente ejemplo: >>[vp, vf, vfi, vpago]=gradlin(500000, 5000,0.5,60,60) Devuelve vp=33106009 vf= 9772937 vfi= 101000000 vpago=795000 %(este valor equivale a la anualidad en el periodo 60) UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 25 UNI-FO-02 V 1.0 MATLAB FINANCIERO 3.3.1.2. Gradientes lineales En MATLAB para desarrollar un gradiente lineal se debe crear un script que realice esta tarea, se propone el siguiente programa pero el lector puede crear su aplicación. function [vp, vf, ggi, vpago]=gradgeom(A,G,i,n,p) %GRadiente geometrico %Argumentos de entrada: %A=Anualidad %G=incremento %i=interes %n=tiempo (meses) %p=valor de un pago %Argumentos de salida: %pagom=valor presente,valor futuro, gradiente infinito, pago if (i==0) disp('Error: Interes igual a cero'); else if (G~=i); r=-n; vp= A*((1+G)^n*((1+i)^r) -1)/(G-i)); vf= A*((1+G)^n-((1+i)^n))/(G-i)); else if (G==i) vp= (A*n)/(1*n); vf= A*n*((1+i)^(n-1)); end; UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 26 UNI-FO-02 V 1.0 MATLAB FINANCIERO ggi= A/(i-G); vpago=A*(1+G)^(n-1); UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 27 UNI-FO-02 V 1.0 MATLAB FINANCIERO 4 CONCLUSIONES La implementación de MATLAB en el ámbito académico de la Facultad muestra un gran potencial debido a su versatilidad, esta se ve reflejada en la posibilidad de dar solución a ejercicios básicos como los cálculos de las tasa de interés y algunos mas elaborados como lo son las simulaciones, todo depende de que tanto desee programar un estudiante de la facultad de ciencias económicas. El trabajo base de nuestros antiguos compañeros es admirable, sin embargo nuestra propuesta seria la de trabajar sobre el manual existente, mejorarlo, y observar que otros ejemplos agregar, para hacer un curso práctico. Debido a que el toolbox financiero de MATLAB contiene una gran cantidad de funciones, este puede ser utilizado en una materia de finanzas o similar al de Excel Avanzado aplicando casos prácticos, al igual que posibilita el crear funciones para ser utilizadas acorde con lo que necesite el usuario. UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 28 UNI-FO-02 V 1.0 MATLAB FINANCIERO 5 BIBLIOGRAFIA [1] UIFCE, MANUAL MATLAB FINANCIERO, 2005 http://www.fce.unal.edu.co/uifce/newuifce/conf/documentos/modelamiento_y_analisis_fina nciero_en_matlab.pdf [2] GARCIA, Javier Aprenda MATLAB como si estuviera en http://mat21.etsii.upm.es/ayudainf/aprendainf/Matlab70/matlab70primero.pdf [3]THE MATWORKS Inc, Financial Toolbox User’s http://dali.feld.cvut.cz/ucebna/matlab/pdf_doc/finance/finance.pdf Manual, [4] APLICACIONES FINANCIERAS CON EXCEL, http://www.scribd.com/doc/1555996/Aplicaciones-Financieras-de-Excel primero 2005 2005 UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 29 UNI-FO-02 V 1.0