matlab financiero - fce.unal.edu.comatlab financiero universidad nacional colombia facultad de...

29
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

Upload: others

Post on 22-Aug-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 2: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 3: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 4: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 5: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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.

Page 6: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 7: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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];

Page 8: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 9: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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’)

Page 10: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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')

Page 11: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 12: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 13: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 14: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 15: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 16: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 17: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 18: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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:

Page 19: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 20: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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))

Page 21: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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’)

Page 22: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 23: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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

Page 24: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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:

Page 25: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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)

Page 26: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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;

Page 27: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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);

Page 28: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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.

Page 29: Matlab financiero - fce.unal.edu.coMATLAB FINANCIERO UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES 11 UNI-FO-02 V 1.0 3.2

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