En la carga de los recursos... Cargando...

Simulación Ornstein-Uhlenbeck con Python

El autor:FMZ~Lydia, Creado: 2024-10-22 10:14:59, Actualizado: 2024-10-22 10:16:04

En este artículo, vamos a describir el proceso Ornstein-Uhlenbeck, describir su fórmula matemática, implementarlo y simularlo con Python, y discutir algunas aplicaciones prácticas en la financiación cuantitativa y las transacciones sistémicas. Usaremos un modelo de proceso aleatorio más avanzado, llamado proceso Ornstein-Uhlenbeck (OU), que se puede usar para modelar secuencias de tiempo que muestran regresión de valores.

¿Qué es el proceso Ornstein-Uhlenbeck?

El proceso de Ornstein-Uhlenbeck es un proceso aleatorio en tiempo continuo que se utiliza para modelar el comportamiento de la regresión de los valores. Esto significa que, a diferencia de la deriva aleatoria estándar o el movimiento de Browne, que pueden ser infinitamente desviados, el proceso de OU a menudo se recupera a medias de largo plazo con el tiempo. Matemáticamente, el proceso de OU es la solución de una ecuación de diferenciación aleatoria específica (SDE) que controla este comportamiento de regresión de los valores.

img

Donde Xt representa un proceso aleatorio en el tiempo t, donde μ es el promedio a largo plazo, θ es el promedio de regresión, δ es la volatilidad, y dWt es el proceso de Wiener o el movimiento estándar de Brownian.

Antecedentes históricos y aplicaciones

El proceso Ornstein-Uhlenbeck fue propuesto originalmente por Leonard Ornstein y George Eugene Uhlenbeck en 1930 para simular la velocidad de las partículas que realizan el movimiento de Brownian en condiciones de fricción. Con el tiempo, su utilidad se ha extendido mucho más allá de la física, con aplicaciones en diferentes campos como la biología, la química, la economía y la finanza.

En las finanzas cuantitativas, el proceso de OU es especialmente útil para modelar fenómenos que muestran un comportamiento de regresión de la media. Algunos ejemplos notables incluyen la volatilidad de las tasas de interés, los tipos de cambio y los mercados financieros. Por ejemplo, el popular modelo de tasas de interés Vasicek se deriva directamente del proceso de OU.

La importancia de la financiación cuantitativa

El proceso Ornstein-Uhlenbeck es fundamental en la financiación cuantitativa, por las siguientes razones. Su naturaleza de retorno de la media hace que sea una opción natural para modelar las variables financieras, que no muestran un comportamiento aleatorio, sino que se mueven en torno a una media de largo plazo estable. Esta característica es importante para el modelado de los tipos de interés, donde la retorno de la media refleja la influencia de los bancos centrales en la tasa de interés estable a largo plazo.

Además, el proceso de OU también se utiliza en modelos de precios de activos (incluyendo la valoración de derivados) y estrategias de gestión de riesgos. También puede servir como pieza de construcción para modelos más complejos, como el modelo Cox-Ingersoll-Ross (CIR), que amplía el proceso de OU para modelar tasas de interés no negativas.

Principales características e intuiciones

Las principales características del proceso Ornstein-Uhlenbeck pueden resumirse como sigue:

  • El valor medio de la regresión:El proceso OU tiende a regresar a la media a largo plazo μ. Esto contrasta con procesos como el movimiento de Brown, que no muestra esta tendencia.
  • La volatilidad:El parámetro δ controla el nivel de aleatoriedad o volatilidad en el proceso. Cuanto mayor es la volatilidad, mayor es la desviación de la media antes de la regresión del proceso.
  • Velocidad de retorno:El parámetro θ determina la velocidad a la que el proceso regresa a la media.
  • La estabilidad:El proceso de OU es uniforme, lo que significa que sus características estadísticas no cambian con el tiempo. Esto es fundamental para modelar sistemas estables en el sector financiero.

Intuitivamente, se puede pensar en el proceso Ornstein-Uhlenbeck como un modelado del comportamiento de los músculos del tendón que se extienden alrededor de la media. Aunque el proceso puede desviarse de la media debido a las fluctuaciones aleatorias, la tensión de tracción del tendón (similar a la regresión de la media) asegura que finalmente vuelva a la media.

Comparación con otros procesos aleatorios

Debido a que el proceso OU está estrechamente relacionado con el modelado de una variedad de fenómenos financieros, su comparación con otros procesos aleatorios (como el movimiento de Brown y el movimiento de Brown geométrico (GBM)) es frecuente. A diferencia del movimiento de Brown (que no tiene una tendencia a la regresión de valores uniformes), el proceso OU tiene un comportamiento de regresión de valores uniformes notable. Esto lo hace más adecuado para el modelado de escenarios en los que las variables oscilan alrededor de un equilibrio estable.

Comparado con el GBM, que se utiliza comúnmente para modelar el precio de las acciones y que contiene elementos de deriva y volatilidad, el proceso OU no muestra un crecimiento exponencial, sino que gira en torno a sus oscilaciones de media. El GBM es más adecuado para modelar cantidades que crecen con el tiempo, mientras que el proceso OU es muy adecuado para modelar variables que muestran características de regresión de media.

Ejemplos de finanzas cuantificadas

El proceso Ornstein-Uhlenbec tiene una amplia aplicación en el campo financiero, especialmente en escenarios de modelado donde la regresión de valores es una característica clave. A continuación, discutiremos algunos de los casos de uso más comunes.

Modelado de las tasas de interés

Una de las aplicaciones más destacadas del proceso de OU es el modelado de las tasas de interés, especialmente dentro del marco del modelo de Vasicek. El modelo de Vasicek asume que las tasas de interés siguen el proceso de OU, es decir, que las tasas de interés a menudo regresan a su media a largo plazo con el tiempo. Esta característica es crucial para un comportamiento de tasas de interés simuladas con precisión, ya que las tasas de interés a menudo no fluctúan indefinidamente, sino que fluctúan cerca de los niveles promedio afectados por las condiciones económicas.

Precio de los activos

En la fijación de precios de los activos, especialmente de los títulos de renta fija, el proceso OU se utiliza a menudo para simular la evolución de los rendimientos de los bonos. La naturaleza de la regresión de la media del proceso OU asegura que los rendimientos no se desvíen demasiado de su media histórica, lo que está en consonancia con el comportamiento del mercado observado. Esto hace que el proceso OU sea una herramienta valiosa para fijar precios de bonos y otros instrumentos sensibles a los tipos de interés.

Estrategias de negociación de pareja

La operación de emparejamiento es una estrategia neutra en el mercado que implica establecer posiciones de compensación en dos activos relacionados. En este caso, el proceso OU es especialmente útil porque puede modelar la diferencia de precios entre los dos activos, donde la diferencia es generalmente de retorno al valor medio. Al usar el proceso OU para modelar la diferencia de precios, los operadores pueden identificar puntos de entrada y salida de ganancias cuando los precios se desvían de su promedio, predecir el valor medio de retorno y generar así señales de negociación.

Por ejemplo, si el diferencial entre dos futuros se expande más allá de un umbral, los operadores pueden pasar por alto futuros de excelente desempeño y realizar futuros de bajo desempeño, esperando que el diferencial vuelva a su promedio histórico, obteniendo ganancias cuando ocurra un cambio.

La respuesta de Ornstein-Uhlenbeck SDE

La fórmula de las ecuaciones diferenciales del proceso Ornstein-Uhlenbeck es la base de su solución. Para resolver este SDE, usamos el factor integral. Reescribiremos el SDE:

img

首先,我们将两边都乘以积分因子/upload/asset/28dfe9abfb54772651590.png:

img

请注意,如果我们在两边都加上/upload/asset/28dd9f7b41b5a6d244b0e.png,那么左边可以表示为乘积的差分:

img

Si tomamos los dos lados y los integramos desde 0 hasta t, tenemos:

img

Esta es una solución general para Ornstein-Uhlenbeck SDE.

Las soluciones obvias derivadas de lo anterior tienen varios significados importantes.imgIndica que el valor inicial disminuye con el tiempo, lo que indica cómo el proceso se vuelve cada vez más lento y se olvida de su punto de partida.imgEl tercer elemento introduce la aleatoriedad, en la que los integrantes de los procesos de Wiener explican las fluctuaciones aleatorias.

Esta solución pone de relieve el equilibrio entre el comportamiento de regresión de la igualdad de certeza y los fracciones aleatorias impulsadas por el movimiento de Brownian. Comprender esta solución es fundamental para la simulación efectiva de procesos OU, como se describe a continuación.

Conexiones con otros procesos aleatorios

El proceso Ornstein-Uhlenbeck tiene varias conexiones importantes con otros procesos aleatorios conocidos (incluidos los movimientos de Brown y el modelo de Vasicek).

Relaciones con el movimiento Brown

El proceso de Ornstein-Uhlenbeck puede considerarse una versión de la regresión de la media del movimiento de Browne. El movimiento de Browne describe un proceso con una tendencia de incremento independiente y sin una media de regresión, mientras que el proceso de OU introduce una regresión de la media mediante la modificación del movimiento de Browne mediante el uso de elementos de derivación, lo que remueve el proceso hacia el centro. Matemáticamente, el proceso de OU se simplifica a un movimiento de Browne estándar con fluctuaciones si lo establecemos comoθ = 0:

img

Por lo tanto, el movimiento de Brown es un caso excepcional del proceso OU, que corresponde a la ausencia de regresión de la media.

Relación con el modelo Vasicek

El modelo de Vasicek es ampliamente utilizado en el modelado de las tasas de interés y es esencialmente una aplicación del proceso Ornstein-Uhlenbeck en la evolución de las tasas de interés. El modelo de Vasicek supone que las tasas de interés siguen el proceso OU, en el que el SDE se define como:

img

Entre ellos, rt representa el tipo de interés a corto plazo, y la interpretación de los parámetros θ, μ y δ es similar a la interpretación en el proceso de OU. El modelo de Vasicek puede generar un camino de retorno de tasas de interés de valor medio, que es una de sus principales ventajas en el modelado financiero.

Comprender estas relaciones permite comprender más ampliamente cómo se utilizan los procesos de OU en diferentes contextos, especialmente en el ámbito financiero. Exploraremos el significado práctico de estas relaciones cuando discutimos ejemplos de aplicaciones a continuación.

Simulación del proceso Ornstein-Uhlenbeck con Python

En esta sección, vamos a explorar cómo utilizar Python para simular el proceso Ornstein-Uhlenbeck (OU). Esto implica el uso de la descentralización de Euler-Maruyama para descentralizar las ecuaciones diferenciales aleatorias (SDE) que definen el proceso OU.

Descentralización de la SDE

Vamos a repasar las fórmulas matemáticas de SDE arriba y a resumir cada uno de los términos:

img

En el caso de

  • Xt es el valor del proceso en el tiempo t.
  • θ es la velocidad de regreso de la media.
  • μ es el promedio a largo plazo del proceso.
  • δ es el parámetro de fluctuación.
  • dWt representa el incremento del proceso de Wiener (movimiento estándar de Brown).

Para simular este proceso en el ordenador, necesitamos desacoplar el SDE en tiempo continuo. Un método común es el desacoplamiento de Euler-Maruyama, que se hace a medida que se considera un pequeño paso de tiempo desacoplado.imgEl proceso Ornstein-Uhlenbeck tiene una forma discreta dada por:

img

En el caso deimgEs una variable aleatoria extraída de la distribución normal estándar (es decir,imgEsta descentralización nos permite calcular el valor de Xt de forma iterativa con el tiempo, simulando así el comportamiento del proceso OU.

Implementación de Python

Ahora vamos a implementar el proceso Ornstein-Uhlenbeck descentralizado en Python. En el texto siguiente, solo usamos NumPy y la biblioteca Python Matplotlib.

Primero, importamos NumPy y Matplotlib de manera estándar. Luego, asignamos todos los parámetros al modelo OU. Luego, asignamos previamente un conjunto NumPy de longitud N para añadirlo después de calcular el camino OU. Luego, repetimos el paso N-1 (el paso 1 es la condición inicial X0 para la determinación), simulando el incremento aleatorio DW, y luego calculando la siguiente generación del camino OU según la fórmula matemática anterior.

import numpy as np
import matplotlib.pyplot as plt

# Parameters for the OU process
theta = 0.7      # Speed of mean reversion
mu = 0.0         # Long-term mean
sigma = 0.3      # Volatility
X0 = 1.0         # Initial value
T = 10.0         # Total time
dt = 0.01        # Time step
N = int(T / dt)  # Number of time steps

# Pre-allocate array for efficiency
X = np.zeros(N)
X[0] = X0

# Generate the OU process
for t in range(1, N):
    dW = np.sqrt(dt) * np.random.normal(0, 1)
    X[t] = X[t-1] + theta * (mu - X[t-1]) * dt + sigma * dW

# Plot the result
plt.plot(np.linspace(0, T, N), X)
plt.title("Ornstein-Uhlenbeck Process Simulation")
plt.xlabel("Time")
plt.ylabel("X(t)")
plt.show()

Los resultados del dibujo se muestran a continuación:

img

Simulación del proceso Ornstein-Uhlenbeck con Python

Observe cómo el proceso extrae rápidamente el aluminio de las condiciones iniciales de X0=1 a una media de μ=0, y luego muestra una tendencia a regresar a esa media cuando se desvía de esa media.

Resumen y pasos a seguir

En este artículo, hemos resumido los procesos de Ornstein-Uhlenbeck, descrito sus fórmulas matemáticas y proporcionado una implementación básica de Python para simular versiones descentralizadas de SDE de tiempo continuo. En los artículos posteriores, vamos a estudiar los SDE más complejos construidos sobre la base de procesos OU y cómo se pueden utilizar para aplicaciones de negociación sistémica y precios de derivados.

Código completo

# OU process simulation

import numpy as np
import matplotlib.pyplot as plt

# Parameters for the OU process
theta = 0.7      # Speed of mean reversion
mu = 0.0         # Long-term mean
sigma = 0.3      # Volatility
X0 = 1.0         # Initial value
T = 30.0         # Total time
dt = 0.01        # Time step
N = int(T / dt)  # Number of time steps

# Pre-allocate array for efficiency
X = np.zeros(N)
X[0] = X0

# Generate the OU process
for t in range(1, N):
    dW = np.sqrt(dt) * np.random.normal(0, 1)
    X[t] = X[t-1] + theta * (mu - X[t-1]) * dt + sigma * dW

# Plot the result
plt.plot(np.linspace(0, T, N), X)
plt.title("Ornstein-Uhlenbeck Process Simulation")
plt.xlabel("Time")
plt.ylabel("X(t)")
plt.show()

Enlace al texto original:https://www.quantstart.com/articles/ornstein-uhlenbeck-simulation-with-python/


Más.