Simulación de Montecarlo de un subyacente utilizando la fórmula de Black-Scholes con MATLAB

Escrito por Manuel el enero 4, 2012

Anteriormente escribí un post en el que realizaba una simulación de Montecarlo. Dicha simulación es calculada mediante la volatilidad y números aleatorios normales en cada salto de tiempo.

Ahora lo que he implementado es una simulación de Montecarlo algo más compleja, dicha simulación se basa en las fórmulas del modelo de Black-Scholes para obtener las sendas de simulación. Dichas fórmulas se han obtenido con la discretización log-Euler de la fórmula del futuro del subyacente.

Estas fórmulas las he sacado del enunciado del proyecto final del máster pero creo que buscando por Internet no es difícil encontrarlas.

Para calcular el tipo de interés sin riesgo he descargado los datos en formato CSV de la página http://www.ecb.int/stats/money/yc/html/index.en.html, los he pasado a EXCEL para que sea más cómodo su tratamiento y he cargado los datos de la curva en MATLAB para así poder interpolar sobre esa curva, se incluye en el ZIP.

Para los datos del subyacente, he utilizado la función downloadValues, algo ya típico en mis desarrollos de MATLAB, y descargo los datos de cotización del último año a partir de hoy hacia atrás, ya que solo voy a simular un año. Si se quisiera tener una simulación más grande simplemente tendriamos que cambiar en la llamada a esta función el today-365 por el valor que se quiera tener, por ejemplo para 2 años, today-730.

Para la utilización de esta simulación es necesario tener la tasa de dividendos y el tipo de interés sin riesgo que son datos que utiliza el modelo de Black-Scholes. Tanto como la tasa de dividendos como el tipo de interés sin riesgo son recalculados mediante interpolación para cada una de las sendas de simulación con la función curvasRQ. Previamente tenemos que haber calculado la tasa de dividendos para el subyacente, esta tasa la he definido en el propio código fuente para no liar el tema, ya que el objetivo es la simulación no dicho cálculo, pero si se desea se puede utilizar lo que escribí en el post de la tasa de dividendos implícita en opciones Vanilla Europeas y utilizar la paridad PUT-CALL para hayar dicho valor.

La función con el grueso del programa es montecarloBS pero la función para ejecutar el programa es principalBS.m.

Utilizo los forward de la tasa de dividendos y del tipo de interés, dichos forward los voy calculando en cada senda de simulación a partir de las curvas obtenidas anteriormente.

Una vez obtenidos los forward, aplico las funciones de la discretización mostrada anteriormente para obtener los dos términos principales por separado para simplificar su cálculo en MATLAB.

Uno de los problemas que surgen en las simulaciones de Montecarlo es la baja precisión, es decir, la alta varianza, la forma en que se arregla es incrementando el número de simulaciones, pero esto nos lleva a tener tiempos de procesamiento altos. Uno de las formas que se tienen para aumentar la precisión sin tener que aumentar las simulaciones es por técnicas de reducción de varianza y una de esas técnicas es la de las variables antitéticas que consiste en realizar pares de simulaciones en lugar de una sola. Para poder implementar esta técnica en el código he realizado dos simulaciones realmente y lo implemento sumando en una simulación y restando en la otra (sumo y resto porque la base de las potencias que se multiplican es la misma) los términos de Black-Scholes calculados, es decir, en lugar de multiplicar únicamente las dos potencias, en una simulación multiplico las potencias y en la otra las divido. La simulación final es la media de ambas simulaciones (línea verde), pero en la gráfica resultante de la ejecución muestro en rojo y azul las dos simulaciones antitéticas.

La imagen anterior es una simulación de técnicas reunidas.

Para ejecutar dicho programa hay que ejecutar el script principalBS, el cual muestra la gráfica resultante que dije en el párrafo anterior.

montecarloBS

Como siempre, para cualquier duda que os pueda surgir escribidme un correo electrónico a la dirección que encontraréis el el pie de página de mi web personal o dejándome un comentario en el POST, resolveré vuestras dudas encantado.

Espero que le saquéis partido a dicha simulación.

4Ene

Mejora en la Calculadora de SWAP

Escrito por Manuel el octubre 27, 2011

Como he comentado varias veces en twitter, he realizado una mejora en la calculadora de SWAP programada en VBA en EXCEL para que se puedan calcular el valor de SWAP anteriores al día de hoy.

La primera versión de la calculadora estaba pensada para realizar cálculos en los que se valoraba un SWAP a futuro con las curvas de tipos de EURIBOR 3 meses, 6 meses y 12 meses además del EONIA. En esta versión podremos calcular swaps que empiecen a partir del 13/12/2006. Es hasta fecha porque no he podido descargar más datos históricos de los tipos de interés. Como se supone, el factor de descuento para los tipos hasta el día 19/07/2011 es 1 ya que tengo los históricos hasta ese día.

Además he realizado otra modificación en la calculadora de SWAP y es que se pueda ir liquidando el SWAP trimestral, semestral o anualmente independientemente del euribor elegido ya que en la versión antigua, si se elegía por ejemplo hacer las liquidaciones con el euribor a 6 meses, obligatoriamente había que realizar liquidaciones semestrales.

calculadora_derivadosTI

Intentaré realizar estas modificaciones en la calculadora de CAP pero es que estoy bastante liado con MATLAB también, del que como sabéis hay algún POST que otro en el blog de algunos desarrollos y algoritmos que he implementado.

Me gustaría escribir más a menudo en el blog, pero entre las clases de inglés y todo lo que llevo en mente no puedo, también tengo que actualizar un poco mi web personal que la tengo abandonada. Tengo ganas de comentar algo sobre la quita de Grecia y todo lo transcurrido en la economía europea ultimamente pero antes quería subir esta mejora de la calculadora que tengo ya preparada y revisada hace un par de semanas.

Espero que os sea útil esta nueva mejora, y como en el otro post, si alguien desea el código fuente que se ponga en contacto conmigo a través del correo electrónico de mi web personal, twitter o dejando un comentario en el post.

27Oct

CDS, ¿protección o especulación?

Escrito por Manuel el octubre 19, 2011

Se ha estado hablando mucho desde que empezó la crisis de los CDS, el acrónimo de “Credit Default Swap“. Para los que no saben de que va este producto, así en líneas generales, es un derivado de tipo de interés que te cubre ante posibles pérdidas por quiebra de una empresa. En resumen, una especie de seguro para los que poseen bonos corporativos ó estatales de una entidad que se declara en “Default“. Aquí pongo el enlace de Wikipedia donde lo explica más a fondo.

Ayer se publicó que la UE prohibirá la venta en corto al descubierto de estos productos, lo que quiere decir que se va a frenar la especulación con este producto. Esta especulación trata de comprar protección de una entidad sin tener el bono correspondiente, de esta forma sube la cotización del CDS, lo que a su vez lleva a que si es más cara la protección hay más riesgo de quiebra. Está clarísimo que el precio de un CDS que nos proteja contra la quiebra de Grecia es mucho más caro que el que nos protege contra la quiebra de España por ejemplo.

Yo siempre he opinado que es un producto de protección no de especulación, hay otros muchos productos derivados con los que se puede especular. La especulación con CDS es difícil que lleve a quebrar una entidad pero lo que si puede hacer y está haciéndose todos los días es que lleven a subir el tipo de interés de un bono corporativo o estatal. Tiene sentido que si la protección es cara, haya riesgo de quiebra, por lo que el bono debe pagar más interés al poder quebrar. Es una bola de nieve que se puede ir agrandando de forma continua hasta que se estrelle al final de la colina.

A esta especulación tampoco ayudan las agencias de rating que la tienen tomada con Europa y tampoco creo yo que se merezcan el castigo que están recibiendo muchos países y entidades entre las que se encuentra España. A ver si esta medida les ayuda a callarse un poco también.

En el máster de finanzas cuantitativas que realicé, en la asignatura de derivados de tipos de interés y en la de riesgo de crédito tuvimos el debate de si es ético la especulación con CDS y hubo opiniones de todo tipo. Yo opino que no sé si es ético o no, pero al estar en una crisis de deuda soberana como en la que estamos, esta decisión de la UE es perfecta y que solo compre protección el que tenga deuda comprada.

En definitiva, espero que acierten con esta decisión (estoy seguro de que sí lo han hecho) y que reduzca la especulación que se vive a día de hoy con la deuda soberana y los CDS ya que puede ser muy nocivo que no se arregle el panorama que tienen a día de hoy los países que forman el grupo de los PIGS.

Respecto a la pregunta principal de si los CDS son productos de protección o especulación, queda clara mi opinión, deben ser claramente un producto de protección.

19Oct

Fitch da el golpe de nuevo… a Europa

Escrito por Manuel el octubre 7, 2011

Hoy viernes, después del cierre del mercado de Italia y España, llegó la noticia, lo que esperábamos hace un tiempo y que muchos no sabíamos porque no llegaba: Fitch bajó el rating a España y a Italia. Las calificaciones son de AA- y A+ respectivamente, ambas con perspectiva negativa. Estaba claro después de la rebaja de Moody’s a Italia y de Fitch a los seis principales bancos portugueses. De poco ha valido que la prima de riesgo española bajara de los 300 puntos, a las agencias de rating no les importa esos datos.

Una vez más se aviva la polémica que hay en torno a las agencias de calificación de las cuales se dice que la tienen tomada con todo país que no se llame Estados Unidos, el debate está abierto y una vez más se pide que haya una regulación. Los que queremos una agencia de rating europea no es por venganza, lo que queremos es que se hagan las cosas justas y que haya unas normas y parámetros que tengan que cumplir todas las agencias por igual, incluída la china Dagong.

Ahora la incógnita es cómo reaccionarán los mercados a estas bajadas el próximo lunes. La bajada de Moody’s a Italia no afectó en nada. Ahora que se está barajando la posibilidad de que el BCE baje los tipos de interés el mes que viene y ver si el segundo pago del rescate a Grecia se hace de una vez, esta noticia no debería de afectar lo suficiente.

Probablemente la siguiente será S&P y Moody’s no tardará en bajar el rating a España también.

Esperemos que el FMI se deje de chorradas y de una vez regularice lo que se pide a voces desde todo el mundo, una regulación de las dichosas agencias de rating.

7Oct

Tasa de dividendos implícita en opciones vanilla europeas: Paridad PUT-CALL con MATLAB.

Escrito por Manuel el octubre 3, 2011

Uno de los estudios que se realizan con las opciones Plain Vanilla europeas es el hallar la tasa de dividendos implícita en los precios de dichas opciones.

Como introducción a que es la paridad PUT-CALL voy a explicar que es la tasa de dividendos implícita en el precio de las opciones: es el porcentaje de ganancia que aporta la empresa como dividendos que incluyen las opciones. Cuanto mayor es el vencimiento de las opciones mayor es dicha tasa de dividendos, estando ajustado el precio de las opciones CALL y PUT. Si una empresa aumenta el dividendo, teóricamente, se supone que el precio de la opción aumentará ajustándose a dicho dividendo, por lo que si se tenía una opción en cartera, ya se ha ganado un porcentaje sin que el precio del subyacente varíe.

Para hallar dicha tasa de dividendos se utiliza la paridad PUT-CALL, la cual se basa en el supuesto el cual dice que no existe posibilidad de arbitraje en las opciones call y put, que siempre se cumple y si no es así, ya se encargará el mercado de que se cumpla ajustándose los precios rápidamente. Es importante que se calcule con opciones europeas y con opciones que tengan el mismo vencimiento y el mismo precio de Strike.

Lo que yo he desarrollado es una función de MATLAB que devuelve dicha tasa de dividendos implícita basándome en la fórmula que implementa dicha paridad, esta fórmula es la siguiente:

Lo que hago es depejar q que es la tasa de dividendos implícita.

Dejo el enlace de wikipedia en el que se explica más detenidamente que es la paridad PUT-CALL y la derivación de la fórmula: Paridad PUT-CALL Wikipedia.

Aquí pongo el fichero de MATLAB con la función que implementa la fórmula:

paridadPutCall.m

En el fichero explico cuales son los parámetros y datos necesarios para ejecutar dicha función y que valores devuelve, porque además de devolver la tasa ímplicita de dividendos devuelvo el tipo de interés libre de riesgo al tiempo de vencimiento de las opciones. Lo calculo interpolando los datos de dicho tipos de interés.

Como siempre, si alguien tiene dudas de la ejecución de la función o su uso que me escriba un correo electrónico o que deje un comentario en la entrada. Mi correo electrónico viene en mi web personal.

Próximamente escribiré una nueva entrada dando uso a la tasa calculada, por ejemplo, la de hallar la volatilidad implícita en el precio de las opciones Plain Vanilla.

3Oct