Cuando la física se encuentra con las finanzas: uso de la IA para resolver la ecuación de Black-Scholes
A continuación se explica cómo utilizar redes neuronales basadas en la física para resolver modelos financieros utilizando Python.
Descargo de responsabilidadEsto no es asesoramiento financiero. Tengo un doctorado en Ingeniería Aeroespacial con un fuerte enfoque en aprendizaje automático: no soy Asesor financiero. Este artículo tiene como único objetivo demostrar el poder de las redes neuronales basadas en la física (PINN) en un contexto financiero.
Cuando tenía 16 años, me enamoré de la física. La razón era simple pero poderosa: creía que la física justo.
Nunca he cometido un error en un ejercicio porque la velocidad de la luz cambiara de la noche a la mañana, o porque de repente pudiera ser...x Negativo Cada vez que leo un artículo de física y pienso, “Esto no tiene sentido” Resulta que Yo era el que no entendía.
Entonces, la física siempre es justa, y por eso siempre es... Perfecto. La física muestra esta perfección y justicia a través de su conjunto de reglas, conocidas como ecuaciones diferenciales.

La ecuación diferencial más simple que conozco es esta:

Muy sencillo: empezamos aquí, x0=0, en el tiempo t=0, entonces nos movemos a una velocidad constante de 5 m/s. Esto significa que después de 5 segundo, estamos a 10 metros (o millas, si lo prefieres) del origen; Después de 43128 segundos, estamos a XNUMX metros del origen; Después de XNUMX segundos...Creo que lo entiendes.
Como decimos, está escrito en piedra: perfecto, perfecto y fuera de toda discusión. Pero imaginemos esto en la vida real. Imagínate que estás caminando o conduciendo. Incluso aunque intentes lo mejor que puedas para alcanzar una velocidad objetivo, nunca podrás mantenerla constante. Tu mente se acelerará en ciertas partes; Podría distraerse, podría detenerse en los semáforos en rojo y, muy probablemente, podría ocurrir una combinación de las situaciones anteriores. Así que quizá la simple ecuación diferencial que mencionamos antes no sea suficiente. Lo que podemos hacer es intentar predecir su posición a partir de la ecuación diferencial, Pero Con ayuda Inteligencia artificial. Este concepto es muy importante en el modelado de sistemas complejos.
Esta idea se aplica en Redes neuronales basadas en la física (PINN). Lo describiremos en detalle más adelante, pero la idea es que estamos tratando de hacer coincidir Quien Los datos y lo que sabemos de la ecuación diferencial que describe el fenómeno. Esto significa que forzamos nuestra solución a satisfacer en general lo que esperamos de la física. Sé que esto suena a magia negra, prometo que se aclarará más a lo largo de este artículo.
Ahora, la gran pregunta:
¿Qué tienen que ver las finanzas con la física y las redes neuronales basadas en la física?
Bueno, resulta que las ecuaciones diferenciales no sólo son útiles para aquellos interesados en las leyes del universo natural, sino que también pueden ser útiles en النماذج المالية. Por ejemplo, el modelo utiliza Scholes negro Una ecuación diferencial para determinar el precio de una opción de compra, con ciertos supuestos estrictos, para obtener Cartera libre de riesgos.
El propósito de esta introducción tan compleja era doble:
- Te confundo un poquito para que puedas seguir leyendo :)
- Tenga suficiente curiosidad para ver a dónde nos lleva todo esto.
Espero haberlo logrado 😁. Si es así, el resto del artículo seguirá estos pasos:
- Vamos a discutir Modelo de Black-Scholes, sus supuestos y su ecuación diferencial
- Hablaremos de Redes neuronales basadas en la física (PINN), de dónde viene y por qué es útil
- Desarrollaremos nuestro propio algoritmo que entrena PINN en Black-Scholes usando PythonyTorchyprogramación orientada a objetos.
- Mostraremos los resultados de nuestro algoritmo.
¡Estoy emocionado! ¡Al laboratorio! 🧪
1. Modelo Black-Scholes: Una mirada en profundidad
Si está interesado en leer el artículo de investigación original sobre el modelo Black-Scholes, puede encontrarlo aquí. aquí. Definitivamente vale la pena leerlo :)
Bien, ahora tenemos que entender el mundo. التمويل Dónde estamos, cuáles son las variables y cuáles son las leyes que lo rigen. Comprender los conceptos básicos de las finanzas y su relación con Black-Scholes es crucial.
En primer lugar, en finanzas, existe una herramienta poderosa llamada Opcion Opción de compra. Una opción de compra le otorga el derecho (pero no la obligación) de comprar una acción a un precio determinado en un futuro específico (digamos dentro de un año), lo que se denomina precio de ejercicio. Precio).
Ahora, pensemos en eso por un momento, ¿de acuerdo? Supongamos que el precio de las acciones hoy es $100. Supongamos también que poseemos una opción de compra con un precio de ejercicio de $100. Ahora, supongamos que dentro de un año, el precio de las acciones sube a $150. ¡Esto es increíble! ¡Podemos usar esta opción de compra para comprar acciones y luego venderlas inmediatamente! Acabamos de obtener una ganancia de $150 - $100 = $50. Por otro lado, si el precio de las acciones cae a $80 dentro de un año, no podemos hacerlo. De hecho, es mejor para nosotros no ejercer nuestro derecho a comprar, para no perder dinero.
Entonces, ahora que lo pensamos, la idea es comprar una acciónyventa de opciones Mira Totalmente integrado. Lo que quiero decir es que la aleatoriedad del precio de una acción (el hecho de que sube y baja) en realidad puede... facilitarlo Manteniendo el número correcto de opciones. Esto es lo que se llama Cobertura delta. Es una estrategia fundamental en la gestión de riesgos.
A partir de un conjunto de suposiciones, podemos derivar precio de opción justo Para conseguir una billetera خالية من المخاطر. Este concepto es fundamental para el modelo de Black-Scholes.
No quiero aburrirte con todos los detalles de la derivación (francamente, no es difícil de seguir en el artículo original), pero la ecuación diferencial para la cartera libre de riesgo es esta:

Nombre:
Ces el precio de la opción en el momento tsigmaEs la volatilidad de las acciones.rEs la tasa libre de riesgo.tes tiempo (con t=0 ahora y T en la fecha final)S¿Es el precio actual de las acciones?
A partir de esta ecuación, podemos derivar el precio justo de una opción de compra para una cartera libre de riesgos. La ecuación es cerrada y analítica y se ve así:

con:

donde N(x) es la función de distribución acumulativa (CDF) de la distribución normal estándar, K es el precio de ejercicio y T es la fecha de vencimiento.
Por ejemplo, este es un gráfico. Precio de las acciones (x) Versus Opción de compra (y), según el modelo de Black-Scholes.

Ahora bien, esto suena genial, pero ¿qué tiene que ver con la física y PINN? La ecuación parece analítica, entonces ¿por qué PINN? ¿Por qué inteligencia artificial? ¿Por qué estoy leyendo esto? La respuesta está abajo 👇:
2. Redes neuronales basadas en la física
Si está interesado en las redes neuronales informadas por la física (PINN), puede consultar el artículo original. aquí. De nuevo, vale la pena leerlo. :)
Ahora, la ecuación anterior AnalíticoPero de nuevo, esta es la ecuación para un precio justo en un escenario ideal. ¿Qué sucede si ignoramos esto por un momento y tratamos de adivinar el precio de la opción en función del precio de la acción y el tiempo? Por ejemplo, podemos utilizar una red neuronal de propagación hacia adelante y entrenarla mediante retropropagación. Este enfoque constituye la base del uso de redes neuronales en la fijación de precios de opciones.
En este mecanismo de entrenamiento, minimizamos el error:
L = |Estimated C - Real C|:

Esto es bueno y es el enfoque de red neuronal más simple que puedes realizar. El problema aquí es que ignoramos por completo la ecuación de Black-Scholes. Entonces ¿hay otra manera? ¿Podemos fusionarlos?
Por supuesto que podemos, si establecemos el error como:
L = |Estimated C - Real C|+ PDE(C,S,t)
donde PDE(C,S,t) es:

Debería estar lo más cerca de 0 posible:

Pero la pregunta aún sigue en pie. ¿Por qué es esto “mejor” que la simple ecuación de Black-Scholes? ¿Por qué no utilizamos simplemente la ecuación diferencial? Bueno, porque a veces, en la vida, resolver una ecuación diferencial no te garantiza la solución "verdadera". La física suele aproximar las cosas y lo hace de un modo que puede crear una diferencia entre lo que esperamos y lo que vemos. Es por esto que las redes neuronales basadas en la física (PINN) son una herramienta tan sorprendente y maravillosa: intentas igualar la física, pero eres estricto en cuanto al hecho de que los resultados deben coincidir con lo que "ves" en tu conjunto de datos. Esta integración del modelo físico y los datos experimentales es lo que distingue este enfoque.
En nuestro caso, puede ser que para obtener una cartera libre de riesgos nos encontremos con que el modelo teórico de Black-Scholes no se ajusta perfectamente a los datos de mercado ruidosos, sesgados o incompletos que observamos. Quizás la volatilidad no sea constante. Quizás el mercado no sea eficiente. Quizás las suposiciones detrás de la ecuación no se sostienen. Aquí es donde un enfoque como PINN puede resultar útil. No sólo encontramos una solución que satisface la ecuación de Black-Scholes, sino que también “confiamos” en lo que vemos en los datos. Esto permite un modelo más flexible y adaptable a las condiciones reales del mercado.
Bueno, ya basta de teoría. Vamos a codificar. 👨💻
3. Aplicación práctica usando Python
Puede encontrar el código completo, junto con un excelente archivo README.md, un excelente cuaderno y un código repetitivo súper claro. aquí. Este código está diseñado específicamente para resolver la ecuación de Black-Scholes utilizando redes neuronales PINN, un método avanzado en el campo del modelado financiero.
Nota: Esta parte será un poco intensiva (mucho código) y si no estás interesado en el software, no dudes en saltar al siguiente capítulo. Os mostraré los resultados de una forma más sencilla :)
Muchas gracias por llegar hasta aquí ❤️
Veamos cómo podemos implementar esto. Repasemos ahora cómo aplicar esta técnica para resolver ecuaciones de Black-Scholes, centrándonos en los aspectos prácticos y detallados.
3.1 Archivo Config.json
Todo el código se puede ejecutar usando un archivo de configuración muy simple, al que he llamado config.json.
Podrás colocarlo donde quieras como veremos más adelante.
Este archivo es esencial, ya que define todos los parámetros que rigen nuestra simulación, generación de datos y entrenamiento del modelo. Permítame explicar rápidamente qué representa cada valor:
K: Precio de ejecución – El precio al que la opción le da derecho a comprar la acción en el futuro.T: Tiempo hasta la fecha de vencimiento, en años. permisoT = 1.0Significa que la opción vence dentro de una unidad (por ejemplo, un año).r: tasa de interés libre de riesgo Se utiliza para descontar valores futuros. Ésta es la tasa de interés que especificamos en nuestra simulación.sigma: La volatilidad La acción, que determina lo difícil que es predecir el precio de la acción o lo "arriesgado" que es. Nuevamente, este es un parámetro de simulación.N_data: número puntos de datos sintéticos que queremos crear para la formación. Esto también determinará el tamaño del patrón.min_Symax_S: Rango de precios de las acciones Que queremos muestrear al crear datos sintéticos. Nuestro precio mínimo y máximo de acciones.bias: Se agregó compensación opcional a los precios de las opciones, para simular un cambio sistemático en los datos. Esto se hace para crear un contraste entre el mundo real y los datos de Black-Scholes.noise_variance: nivel de ruido Se agrega a los precios de las opciones para simular la medición o el ruido del mercado. Este parámetro se agrega por la misma razón que antes.epochs: número repeticiones en el que se entrenará el modelo.lr: tasa de aprendizaje Para el benefactor. Esto controla la rapidez con la que se actualiza el modelo durante el entrenamiento.log_interval:El número de veces (en términos de edades) que queremos Registros de impresión Para monitorear el progreso del entrenamiento.
Cada uno de estos parámetros desempeña un papel específico: algunos dan forma al mundo financiero que simulamos, mientras que otros controlan cómo nuestra red neuronal interactúa con ese mundo. Pequeñas modificaciones aquí pueden generar un comportamiento completamente diferente, haciendo que este archivo sea poderoso y sensible. Cambiar los valores de este archivo JSON cambiará radicalmente la salida de su código.
3.2 main.py (archivo main.py)
Ahora, veamos cómo el resto del código utiliza esta configuración en la práctica.
La parte principal de nuestro código proviene de main.pyPara entrenar su red PINN usando Torch, black_scholespy.
Este es el archivo main.py:
Entonces lo que puedes hacer es:
- Crea tu propio archivo config.json
- ejecutar comando
python main.py --config config.json
El archivo main.py es utilizado por muchos otros archivos.
3.3 black_scholes.py y sus complementos
La aplicación del modelo Black-Scholes se encuentra dentro del archivo. black_scholes.py:
Este archivo se puede utilizar para construir, entrenar, exportar y predecir el modelo.
La función también utiliza algunos archivos auxiliares, como data.py, loss.py y model.py.
Hay una plantilla de Antorcha dentro del archivo. modelo.py:
El generador de datos (en términos del archivo de configuración) se encuentra dentro del archivo. datos.py:
La función de pérdida integrada que incluye el valor de sesgo es pérdida.py. Esta función es necesaria para mejorar la precisión del modelo.
4. Resultados
Bueno, cuando ejecutamos main.py, nuestra red neuronal de avance (FFNN) se entrena y obtenemos lo siguiente:

Como puede ver, el error del modelo no es exactamente 0, pero la ecuación PDE del modelo es mucho más pequeña que los datos. Esto significa que el modelo (naturalmente) fuerza fuertemente nuestras predicciones para satisfacer las ecuaciones diferenciales. Esto es exactamente lo que dijimos antes: mejoramos el rendimiento en términos de los datos que tenemos y en términos del modelo de Black-Scholes.
Podemos observar, cualitativamente, una alta coincidencia entre el conjunto de datos del mundo real ruidoso + sesgado (bastante realista) y la red PINN.

Estos son los resultados cuando t = 0 y el precio de la acción cambia con la opción de compra en un valor fijo de t. Es genial, ¿no? ¡Pero aún no ha terminado! Puede explorar los resultados utilizando el código anterior de dos maneras:
- Jugando con muchos parámetros Ubicado en config.json
- Ver predicciones en t> 0
¡Escucho! :)
5. Conclusiones
Muchas gracias por venir aquí. Realmente fue un largo viaje 😅
Esto es lo que cubrimos en este artículo:
- Empezamos con la física., y cómo sus leyes, escritas como ecuaciones diferenciales, son justas, hermosas y (generalmente) predecibles.
- Nos mudamos a finanzasY conocimos el modelo Black-Scholes, una ecuación diferencial que busca fijar el precio de las opciones de manera libre de riesgos.
- Exploramos redes neuronales basadas en la física (PINN)., un tipo de red neuronal que no solo ajusta los datos sino que respeta la ecuación diferencial subyacente. Los PINN son una herramienta poderosa para modelar sistemas complejos.
- Todo lo hicimos en Python.Usando PyTorch y una base de datos de referencia limpia que le permite ajustar parámetros, generar datos sintéticos y entrenar sus propios PINN para resolver la ecuación de Black-Scholes.
- Fotografiamos los resultados. Vimos cómo la red aprendió a adaptarse no sólo a los datos ruidosos sino también al comportamiento esperado de la ecuación de Black-Scholes.
Sé que no es fácil asimilar todo esto a la vez. En algunas áreas fui necesariamente breve, quizá más breve de lo que debía. Sin embargo, si quieres ver las cosas con más claridad, de nuevo, echa un vistazo a: Carpeta de GitHub. Incluso si no estás interesado en el software, hay un archivo README.md claro y una plantilla sencilla. ejemplo/BlackScholesModel.ipynb El proyecto se explica paso a paso.
Los comentarios están cerrados.