Realmente es un simulador financiero sobre derivados, y no existe, o los que existen en mi opinion no son adecuados para lo que yo quiero hacer y testear. El primer paso fue simular la formula de Back & Sholes con el que se calculan los precios en el mercado real, que nada tiene que ver con la que se usa en los simuladores, por eso el precio real no se correlaciona con lo que "debería ser", una vez hecho esto, queda hacer el simulador en si mismo que "mame" de las tablas de valores ceradas por ingeniería inversa. y que pueda hacer un backtest con los datos del subyacente , con esto ya trabajaría en buscar algo que realemente funcione, metiéndole money management y etc.
No entiendo muy bien cuál es el problema que está tratando de resolver pero probablemente una aplicación ejecutada en Basic, que es un lenguaje interpretado, dentro de Excel sea demasiado lento para simulaciones de este tipo.
Los precios en los mercados de derivados, como en cualquier otro mercado, realmente lo dicta el mercado en cada momento. Es la oferta y la demanda que percibe el robot del 'especialista', lo que dicta el precio. El especialista o market maker se limita a vender liquidez. Compra constantemente a precio 99 y revende constantemente a precio 101, por ejemplo.
Los mercados de derivados, sobre todo para strikes remotos, tienen muy poca liquidez pero imaginemos por un momento que hay un flujo de ventas de de compras constante (Un supuesto poco realista porque en ese caso no haría falta el market maker)
El 'robot' tantea con un primer precio, pongamos 100, y establece una horquilla 'ancha', pongamos +- 10. Así que ofrece a la venta ese derivado a precio 110 (100 + 10) y se ofrece a comprar ese mismo derivado a precio 90 (100 - 10). Si ese primer precio ensayado es correcto, el volumen de compras y de ventas será cero, ya que un precio de venta de 110 es muy caro y al mismo tiempo un precio de venta de 90 es demasiado tacaño: ningún inversor compra al robot a 110 ni tampoco ningún inversor le vende a 90.
De modo que, al ser el volumen cero, el robot sabe ya que el precio de mercado, que es el único que importa, está en algún lugar entre 90 y 110
El robot comienza estrechar la horquilla. Primero a 109 - 91 y el volumen es cero, luego a 108 - 92 y el volumen también es cero. El cierto momento, pongamos en 98 - 102, surge un fuerte volumen de compras a 102 con un volumen de ventas cero a 98. Está claro que 102 ha tocado el precio de mercado pero 98 no. Esto significa que el precio del robot, el centro de la horquilla en 100, está subestimando el precio de mercado. Así que el robot mueve el precio de 100 a 101 y la horquilla desde 98 - 102 hasta 99 - 103.
El volumen cae a cero de nuevo porque el mercado piensa que 103 es demasiado caro para comprar y 99 demasiado barato para vender. El robot reduce la horquilla hasta que vuelve a surgir un volumen. Si el volumen de ventas es diferente al de compras, mueve el centro de la horquilla hasta igualar esos dos volúmenes. Si quiere aumentar el volumen estrecha la horquilla, si quiere aumentar el margen por operación amplia la horquilla y si quiere maximizar el beneficio selecciona la anchura de horquilla que hace máximo el producto volumen por margen.
En los mercados de poca liquidez, muchas veces aparecen horquillas muy anchas a precios estimados y volumen cero. Supongo que esto ocurre porque algún contrato les obliga a proporcionar liquidez a ciertos instrumentos y obligación lo hacen pero con una horquilla tan ancha que ningún inversor hace uso de esa liquidez. El precio de esas horquillas puede ser simplemente aproximado porque las horquillas son tan anchas que está garantizado un volumen cero incluso aunque el precio estimado no sea del todo correcto.
La fórmula Back & Sholes es en sí misma un resultado explícito de una simulación muy simplista.
Si nos olvidamos de las complicaciones como el pago de dividendos del subyacente o de los tipos de interés, la fórmula de Back & Sholes predice la evolución del precio del subyacente.
Back & Sholes asume que el precio del subyacente evoluciona al azar por medio de millones de empujoncitos hacia arriba o hacia abajo que se producen al azar. Esos empujoncitos son, en realidad, noticias, declaraciones y otros sucesos que vienen de fuera del mercado pero que estadísticamente se consideran como empujones al azar.
La probabilidad de que el precio de ese subyacente sea uno dato tras recibir millones de empujoncitos al azar es una 'distribución normal' o 'gaussiana'.
La ley gaussiana, la fórmula que dibuja esta distribución es engañosamente abstrusa porque es una aproximación analítica, manejable matemáticamente, a la ley real, que es trivial. Aparece una gaussiana cuando no hay ninguna ley que rija la distribución y el fenómeno ocurre completamente a voleo.
La única medida de una gaussiana es su 'anchura', llamada varianza o en los mercados financieros 'volatilidad'
Back & Sholes asume (si quitamos las complicaciones de los tipos y dividendos) que esa gaussiana está centrada en cero, o sea: que si el subyacente tiene un precio de 234 hoy, tendrá un precio de 234 dentro de un año. La evolución más probable es un cambio de precio cero. Los aumentos de precio y disminuciones de precio de igual magnitud tienen la misma probabilidad (hay la misma probabilidad de un aumento del 3% que de una pérdida del 3%) (La gaussiana es simétrica). Y los cambios pequeños de precio (hacia arriba o hacia abajo) son mucho más probables que los grandes. La medida en que decae un cambio de precio según sea más severo, la medida en que desciende la altura de la gaussiana según nos alejamos del centro, está dictada por esta distribución de Gauss, que es lo mismo que suponer que no hay ninguna ley que rija los cambios de precio y que esos cambios ocurren a voleo, como resultado de miles de pequeños cambios estadísticamente independientes.
La 'ingeniería inversa' de una tabla de precios de derivados calculada con Back & Sholes produce esta gaussiana.
Otros métodos más elaborados o más magufos de calcular estos precios, generan por 'ingeniería inversa' distribuciones de probabilidad parecidas a una gaussiana pero con variaciones. Por ejemplo: pueden ser curvas asimétricas que den mayor probabilidad a un fuerte colapso del precio, por que haya un chrash en el mercado, que a una subida equivalente: los desplomes muy intensos de precios tendrían una probabilidad mayor que la que predice una gaussiana.
También pueden variar la forma en que la altura de la montaña se concentra hacia el centro. Pueden ser distribuciones más gorditas, que se distribuyen por una banda de precios más amplia para cierta volatilidad, o distribuciones más delgadas: más concentradas en un precio central
Si se descubre una 'forma de colina' que funciona, lo que supongo es muy difícil y más una superstición que una ciencia, construir la tabla de precios a partir de una distribución de probabilidad 'dibujada' con una fórmula explícita, puede ser imposible en la práctica.
Sin fórmula explícita, se hace necesario 'rodar' una simulación. Se construye, digamos, un dado que tenga la distribución de probabilidad deseada. Una vez que se tiene ese 'dado' se hace evolucionar al azar, pero con el azar de ese dado, un subyacente 100.000 veces y se computan los resultados de los 100.000 experimentos (el precio del derivado que no produce ni ganancias ni pérdidas en cada caso)
En estos casos en los que hay que reiterar miles de veces un mismo cálculo al azar, es donde Basic puede no darle suficiente velocidad. En casos más abstrusos puede ser necesario rodar una 'simulación de simulaciones' por ejemplo ir ajustando un precio basándose en si a ese precio, en promedio, se producen beneficios o pérdidas. Puede ser necesario probar 256 precios diferentes y la prueba de cada uno de esos precios consistir en '10.000 tiradas con el dado'.