1 votos

Simulación de una trayectoria de los rendimientos de los bonos mediante Monte Carlo (Python)

Tengo un número de series temporales dadas para los rendimientos de los bonos (dados en un dataframe en el paquete pandas en Python). Necesito hacer la siguiente tarea en Python:

"1. Simular 1000 trayectorias con 30 pasos de antelación para cualquier serie de rendimientos que haya elegido:

a. Traza las trayectorias para cualquier índice que hayas elegido

b. Trazar la densidad para cada índice en el paso 30

A partir de los datos de diferencia de rendimiento, tome una muestra aleatoria de 30 valores diferentes de la serie. Calcule la suma acumulada de los 30 valores. Esto te da una posible trayectoria de rendimientos si empezamos en un valor de cero, pero como el último rendimiento no es cero, tenemos que sumarlo a cada miembro de la trayectoria. Repita esto 1000 veces para cada serie. Esto es un tipo de simulación de Monte Carlo. Si lo desea, puede utilizar un esquema de bootstrapping diferente para su Monte Carlo".

Como novato total en finanzas y programación, estoy luchando por entender lo que realmente debo hacer y cómo hacerlo. ¿La pregunta requiere que: elija al azar 30 valores de una serie de tiempo dada, y luego esencialmente use estos 30 valores para "predecir" cuáles serán los valores futuros? ¿Y luego repetir este procedimiento 1000 veces? ¿O algo más?

Agradecería que alguien me explicara el significado de esta tarea y qué puedo hacer en Python para ello. Gracias.

4voto

user1914692 Puntos 113

No conozco Python pero esto es lo que haría en Excel (estoy asumiendo que estás familiarizado con Excel y que luego puedes traducir los pasos a Python:

  1. Elija una serie temporal de rendimientos de bonos que tenga $n$ rendimientos.
  2. Generar una serie de cambios en el rendimiento de los bonos a partir de esa serie temporal, lo que resulta en $n-1$ cambios de rendimiento en una columna.
  3. Asigne a cada uno de estos cambios de rendimiento un valor entero de $1$ a $n-1$ en una columna a la izquierda de los cambios de rendimiento.
  4. Utilice randbetween( $1,n-1$ ) $30$ veces para generar $30$ números enteros aleatorios entre 1 y $n-1$ . Si $n >> 30$ entonces no debería importar si se toma la muestra con o sin reemplazo.
  5. Utilice vlookup(número aleatorio generado por usted, rango que incluye los números aleatorios y los cambios de rendimiento, 2) . Esto generará una trayectoria simulada de cambios de rendimiento.
  6. Añada el rendimiento t=0 del índice que eligió al primer cambio de rendimiento aleatorio que eligió en el paso 5. Tome el resultado y añádalo al segundo cambio de rendimiento aleatorio que generó en el paso 5. Repita la operación para cada uno de los $30$ cambios de rendimiento aleatorios. Ahora tiene un único $30$ camino de los rendimientos. Nótese que esto supone que cada paso tiene el mismo tenor que las diferencias de cambio de rendimiento.
  7. Repita los pasos 4 - 6 $999$ veces por lo que ahora tiene $1000$ $30$ caminos de paso.
  8. Trazar todo $1000$ caminos.
  9. Trazar un histograma de todos los $1000$ paso terminal $30$ valores.

La simulación de Montecarlo es una técnica para generar una distribución de trayectorias a partir de una distribución supuesta (en este caso, valores históricos). Ahora tiene $1000$ posible $30$ trayectorias de este índice de tipos de interés, que luego puede utilizar para inferir el valor en riesgo, los precios de los derivados, etc.

Espero que esto ayude.

0 votos

Gracias por su respuesta. - Creo que tiene sentido para mí, voy a probar y luego volver a usted si algo no está claro @AlRacoon

0voto

Muhammed Refaat Puntos 97

Para simular una serie temporal con "x" trayectorias aleatorias, primero debe haber un modelo que describa el proceso. El proceso que utilice puede depender de su nivel de comodidad con los procesos estocásticos, de las observaciones empíricas sobre esos datos y/o de las creencias sobre el proceso subyacente.

La entrada de la Wiki sobre modelos de tarifas cortas resume algunos de los principales modelos que se utilizan habitualmente para modelar los tipos de interés. Para simplificar, vamos a elegir el modelo de Kalotay-Williams-Fabozzi, ya que sólo requiere dos parámetros. También es lo mismo que el Movimiento Browniano Geométrico que se utiliza habitualmente para simular los precios de las acciones (¿por qué todo el mundo se empeña en poner sus nombres a los modelos?).

Dado el proceso: $$ {\displaystyle d\ln(r_{t})=\theta _{t}\,dt+\sigma \,dW_{t}}$$

La solución explícita de $r_t$ se puede encontrar a través del Lemma de Ito:

$$\mathbb{E}\left[r_{t+\Delta t } \right]=r_t \, e^{ (\theta _{t} - \frac{ \sigma^2}{2})\Delta t+\sigma \,Z \sqrt{\Delta t} }$$

Donde Z es una variable aleatoria normalmente distribuida con media = 0 y varianza = 1:

$Z \sim{N\left[0,1 \right]} $

Para proceder al Monte Carlo, es necesario calibrar los modelos. El enfoque más sencillo consiste en estimar los parámetros de $\theta$ y $\sigma^2$ basado en datos históricos. En el contexto de este modelo, $\theta$ es el cambio logarítmico esperado en el rendimiento (es decir, $\mathbb{E}\left[ Ln[\frac{r_{t+ \Delta t}}{r_{t}}] \right]$ ) y $\sigma$ es la desviación estándar esperada (es decir, $\sqrt{ \mathbb{E}\left[ Ln[\frac{r_{t+ \Delta t}}{r_{t}}] -\theta\right]^2}$ ).

A partir de ahí, se trata simplemente de simular incrementos independientes para cada una de las 1000 trayectorias.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X