El trabajo consiste en obtener el valor de una opción call de tipo Lookback dados los valores para los parámetros S0, u, d, tasa de interés y cantidad de periódos a través de dos metodos:
- Montecarlo
- Árbol binomial
Además se comparará la eficiencia de ambos según distintos criterios.
Consiste en generar trayectorias aleatorias para aproximar la prima de la opción en base a S0. Esto mediante variables aleatorias binomiales, que en caso de ser 1 hacen que el precio suba y 0 que baje, para luego aproximar la esperanza del valor del subyacente en base a los valores obtenidos y calcular la prima de la opción en t=0, dada por 1/(1+i)^n * E(Vt). Se modificó además el algoritmo para calcular la media y varianza recursivamente, deteniéndose éste cuando el error de las simulaciones sea menor a 0.001
Para este método se diseñó una estructura para implementar al árbol binomial y a sus nodos. Consiste en crear un árbol de n niveles, con n nodos por nivel, esto da un total de n(n+1)/2 nodos. Luego llenaremos los valores para cada nodo en cada nivel con el valor del subyacente correspondiente. Luego recorreremos con BFS el arbol, llenando para cada nodo una lista con los valores mínimos del subyacente y su probabilidad de ocurrir obtenidos de sus padres en el árbol. Finalmente obtenemos la esperanza para el valor de Vt y obtenemos V0 aplicando la misma fórmula que en el método de Montecarlo.
Para este método la complejidad estará dada por los siguientes procedimientos:
- Realizar m simulaciones
- En cada simulación computar una trayectoria del precio de la acción en n períodos. En cada período sólo se genera una variable aleatoria binomial para decidir el camino y se almacena el valor mínimo del subyacente en la trayectoria, estas tareas son 0(1)
Lo cual nos da una complejidad de m*n
Complejidad dada por:
- Crear y llenar un árbol con n(n+1)/2 ≈ n² nodos
- Recorrer trayectorias de longitud igual a la cantidad de períodos = n
- Realizar comparaciones para los mínimos, con complejidad O(1)
Por lo que, despreciando las constantes inferiores, nos queda una complejidad de n²
Para comparar el funcionamiento de ambos métodos, realizaremos una prueba para n=30 períodos con los parámetros S0 = 1, u = 1.1, d = 0.9, tasa de interés efectiva = 0.025 . Y para el primer método buscaremos un margen de error menor a 0.001, dado que en este método no obtenemos un valor exacto, sino que lo aproximamos. Tendremos en cuenta el resultado obtenido en cada caso, el tiempo de ejecución usando el comando time de Linux .
Método | Resultado | Tiempo de ejecución | N° de simulaciones |
---|---|---|---|
Montecarlo | 0.5917354729923145 | 14.025s | 1185723 |
Árbol binomial | 0.5848972562822754 | 0.273s | X |
Dados los resultados obtenidos, podemos concluir que:
- El primer método es conveniente en cuanto a facilidad de programación. Sin embargo, cuando se busca obtener resultados con un margen de error muy pequeño, se requiere un número muy elevado de simulaciones. En este ejemplo, para obtener un margen de error menor a 0.001 debieron realizarse 1285723 simulaciones, tardando así aproximadamente 52 veces lo que tarda el método del árbol binomial para obtener un valor aproximado. Sin embargo, considerando el tiempo que se tardó en implementar ambos métodos, si el margen de error utilizado se ajusta bien a nuestro problema, el primer método es más conveniente.
- El segundo método, si bien requirió mucho más tiempo en cuanto a implementación de las estructuras y sus algoritmos, prueba ser mucho más eficiente y escalable en una cantidad más elevada de períodos, con un tiempo de ejecución mucho menor. Obteniendo además el valor exacto, por lo que se debe optar por este método si es un problema crítico que requiere de alta precisión.