matlab financiero - Facultad de Ciencias Económicas

Anuncio
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
Descargar