matlab financiero - fce.unal.edu.comatlab financiero universidad nacional colombia facultad de...
TRANSCRIPT
Consecutivo: INF-INV-MATFR-INF-2010/II
UNI-FO-13 V 1.0
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
Consecutivo: INF-INV-MATFR-INF-2010/II
UNI-FO-13 V 1.0
matlab Financiero
Director Unidad Informática: Henry Martínez Sarmiento
Tutor Investigación: Alejandro Nieto
Auxiliares de Investigación:
GLORIA STELLA BARRERA ARDILA DAVID FELIPE BELTRAN GOMEZ
PEDRO ANDRES BOHORQUEZ IVAN ALBEIRO CABEZAS MARTINEZ
SANDRA MILENA CASTELLANOS PÁEZ EDGAR ANDRES GARCIA HERNANDEZ
CESAR LEONARDO GARIBELLO OSPINA FRANCISCO GONZÁLEZ BUITRAGO
LILIANA CAROLINA HERRERA PRIETO LUIS CARLOS MARTÍNEZ RUIZ
JEIMMY PAOLA MUÑOZ SORACIPA LINETH JOHANA NIETO CHAVEZ
JAVIER ALEJANDRO ORTIZ VARELA CINDY LORENA PABÓN GÓMEZ
JUAN DAVID PÁEZ ALVAREZ CAMILO ALEXANDRY PEÑA TALERO
DIEGO ARMANDO POVEDA ZAMORA DANIEL FRANCISCO ROJAS MARTÍN
JUAN CARLOS TARAPUEZ ROA CAMILO ALBERTO ZAPATA MARTINEZ
Este trabajo es resultado del esfuerzo de todo el
equipo perteneciente a la Unidad de Informática.
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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 3
UNI-FO-02 V 1.0
TABLA DE CONTENIDO
TABLA DE CONTENIDO ................................................................................................................... 3
1. RESUMEN ....................................................................................................................................... 5
2. ABSTRACT ..................................................................................................................................... 5
3. INTRODUCCIÓN ........................................................................................................................ 6
3.1. VIABILIDAD ............................................................................................................................ 6
3.1.1. ¿Se puede en Matlab? .................................................................................................... 6
3.2. 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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 4
UNI-FO-02 V 1.0
4 CONCLUSIONES ...................................................................................................................... 28
5 BIBLIOGRAFIA ........................................................................................................................... 29
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 5
UNI-FO-02 V 1.0
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.
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 6
UNI-FO-02 V 1.0
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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 7
UNI-FO-02 V 1.0
($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];
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 8
UNI-FO-02 V 1.0
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 en EXCEL TIR.NO.PER(valores;fechas;estimar) presentado en la tabla 1.
Valores Fechas -10000 12/01/2007
2500 14/02/2008 2000 03/03/2008
3000 14/06/2008 4000 01/12/2008
Fórmula 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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 9
UNI-FO-02 V 1.0
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’)
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 10
UNI-FO-02 V 1.0
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')
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11
UNI-FO-02 V 1.0
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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 12
UNI-FO-02 V 1.0
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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 13
UNI-FO-02 V 1.0
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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 14
UNI-FO-02 V 1.0
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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 15
UNI-FO-02 V 1.0
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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 16
UNI-FO-02 V 1.0
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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 17
UNI-FO-02 V 1.0
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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 18
UNI-FO-02 V 1.0
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, m (Opcional),Basis(Opcional), EndMonthRule(Opcional),IsuueDate(Opcional),
FirstCouponRate (Opcional), Last CouponRate(opcional) )
para ver las fechas utilizaremos la funcion datestr
>> datestr(CfFechas)
Ejemplo:
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 19
UNI-FO-02 V 1.0
%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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 20
UNI-FO-02 V 1.0
%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, Valorpresente,valorfuturo(opc),anticipado=1,vencido=0(por defecto=0))
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 21
UNI-FO-02 V 1.0
%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’)
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 22
UNI-FO-02 V 1.0
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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 23
UNI-FO-02 V 1.0
%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
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 24
UNI-FO-02 V 1.0
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:
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 25
UNI-FO-02 V 1.0
% 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)
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 26
UNI-FO-02 V 1.0
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;
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 27
UNI-FO-02 V 1.0
ggi= A/(i-G);
vpago=A*(1+G)^(n-1);
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 28
UNI-FO-02 V 1.0
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.
MATLAB FINANCIERO
UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS
UNIDAD DE INFORMÁTICA Y COMUNICACIONES 29
UNI-FO-02 V 1.0
5 BIBLIOGRAFIA
[1] UIFCE, MANUAL MATLAB FINANCIERO, 2005 http://www.fce.unal.edu.co/uifce/newuifce/conf/documentos/modelamiento_y_analisis_financiero_en_matlab.pdf
[2] GARCIA, Javier Aprenda MATLAB como si estuviera en primero http://mat21.etsii.upm.es/ayudainf/aprendainf/Matlab70/matlab70primero.pdf
[3]THE MATWORKS Inc, Financial Toolbox User’s Manual, 2005 http://dali.feld.cvut.cz/ucebna/matlab/pdf_doc/finance/finance.pdf
[4] APLICACIONES FINANCIERAS CON EXCEL, 2005 http://www.scribd.com/doc/1555996/Aplicaciones-Financieras-de-Excel