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 responsabilidad : Esto no constituye asesoramiento financiero. Soy doctor en Ingeniería Aeroespacial con especialización en aprendizaje automático; no soy asesor financiero. Este artículo tiene como único propósito demostrar el potencial 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 era justa.
Nunca cometí un error en un ejercicio porque la velocidad de la luz cambiara de la noche a la mañana, o porque e x pudiera ser repentinamente negativo. Cada vez que leía un artículo de física y pensaba: "Esto no parece tener sentido", resultaba que era yo quien no entendía.
Por lo tanto, la física siempre es justa y, por esta razón, siempre es perfecta . La física demuestra 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:

Es muy sencillo: partimos de aquí, x₀ = 0, en el instante t=0, y luego nos movemos a una velocidad constante de 5 m/s. Esto significa que, después de un segundo, estamos a 5 metros (o millas, si lo prefieres) del punto de partida; después de dos segundos, estamos a 10 metros del punto de partida; después de 43128 segundos… Creo que lo entiendes.
Como decíamos, es algo indiscutible: perfecto, perfecto e irrefutable. Sin embargo, imagínalo en la vida real. Imagina que estás dando un paseo o conduciendo. Aunque te esfuerces por mantener una velocidad constante, nunca podrás hacerlo. Tu mente se acelerará en ciertos momentos; podrías distraerte, detenerte en los semáforos en rojo, y probablemente una combinación de ambas cosas. Por lo tanto, la sencilla ecuación diferencial que mencionamos antes podría no ser suficiente. Lo que podemos hacer es intentar predecir tu posición en la ecuación diferencial, pero con la ayuda de la inteligencia artificial . Este concepto es crucial para modelar sistemas complejos.
Esta idea se aplica en las redes neuronales basadas en la física (PINN). Las describiremos con más detalle más adelante, pero el concepto básico consiste en intentar que los datos coincidan con lo que sabemos de la ecuación diferencial que describe el fenómeno. Esto significa que forzamos nuestra solución a que, en general, satisfaga lo que esperamos de la física. Sé que suena a magia negra, pero les prometo que quedará mucho más claro 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?
Pues bien, resulta que las ecuaciones diferenciales no solo son útiles para quienes se interesan por las leyes del universo natural; también pueden ser útiles en modelos financieros . Por ejemplo, el modelo Black-Scholes utiliza una ecuación diferencial para determinar el precio de una opción de compra, con ciertas suposiciones estrictas, para obtener una cartera libre de riesgo.
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 te interesa leer el artículo original del modelo Black-Scholes, puedes encontrarlo aquí . ¡Sin duda merece la pena leerlo! 🙂
Bien, ahora necesitamos comprender el mundo de las finanzas en el que nos encontramos, cuáles son las variables y cuáles son las reglas que lo rigen. Comprender los fundamentos de las finanzas y su relación con el modelo Black-Scholes es crucial.
En primer lugar, en el ámbito financiero, existe un instrumento poderoso llamado 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 específico en el futuro (digamos dentro de un año), que se denomina precio de ejercicio.
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.
Así pues, si lo pensamos bien, la idea de comprar una acción y vender una opción parece perfectamente equilibrada . Lo que quiero decir es que la aleatoriedad del precio de una acción (el hecho de que suba y baje) puede mitigarse manteniendo el número adecuado de opciones. Esto se conoce como cobertura delta y es una estrategia fundamental de gestión de riesgos.
Partiendo de una serie de supuestos, podemos derivar un precio justo para las opciones que permita obtener una cartera libre de riesgo . Este concepto es fundamental para el modelo 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 del precio de la acción (x) frente a la opción de compra (y) , según el modelo 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 te interesan las redes neuronales basadas en la física (PINN, por sus siglas en inglés), puedes consultar el artículo original aquí . De nuevo, merece la pena leerlo. 🙂
La ecuación anterior es analítica , pero, de nuevo, representa un precio justo en un escenario ideal. ¿Qué ocurre si ignoramos esto por un momento e intentamos adivinar el precio de la opción basándonos en el precio de la acción y el tiempo? Por ejemplo, podríamos usar una red neuronal de propagación directa y entrenarla mediante retropropagación. Este enfoque constituye la base del uso de redes neuronales en la valoración 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
Aquí encontrará el código completo, junto con un excelente archivo README.md, un libro de ejercicios muy útil y un código de referencia muy claro . Este código está diseñado específicamente para resolver la ecuación de Black-Scholes utilizando redes neuronales PINN, una técnica avanzada en el campo de la modelización financiera.
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 utilizando 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.py , para entrenar su red PINN usando Torch, y black_scholes.py.
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 constructor de datos (considere el archivo de configuración) se encuentra dentro del archivo data.py :
La función de pérdida integrada que incluye el valor de asimetría es `loss.py`. Esta función es esencial 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 asimilar todo esto de golpe no es fácil. En algunos aspectos, fui necesariamente breve, quizás más de lo necesario. Sin embargo, si deseas una comprensión más clara, consulta la carpeta de GitHub. Incluso si no te interesa el software, encontrarás un archivo README.md claro y un ejemplo sencillo, BlackScholesModel.ipynb , que explica el proyecto paso a paso.
Los comentarios están cerrados.