3 votos

Elección del incremento de tiempo en la predicción de precios de acciones de Monte Carlo/Geometric Brownian Motion (GBM)

Estoy experimentando con escribir un algoritmo de predicción diaria de precios de acciones en Python utilizando una metodología de Monte Carlo/GBM. Sé que hay muchas otras preguntas sobre este tema aquí (aquí y aquí), pero estoy muy confundido sobre los inputs y la elección del intervalo de tiempo (dt) para obtener resultados coherentes. Parece que a menos que tengas un intervalo de tiempo (dt) lo suficientemente pequeño, los resultados son basura y varían salvajemente con la elección de dt. Obviamente puedo ver que dt está involucrado en el componente exponencial, por lo que cualquier cambio en él tendrá un gran efecto. ¿Cómo elige uno un dt?

Básicamente estoy utilizando el excelente ejemplo aquí, que utiliza numpy (disculpas a las personas que no usan Python).

Quiero modelar movimientos de precios diarios y ver los resultados después de cierto número de pasos (n). Veo que muchos ejemplos usan un dt de 1/252 (número de días de negociación en un año), luego miran el índice n-ésimo de cada matriz sims para ver los valores.

¿Por qué necesitamos tener dt como 1/252 para modelar movimientos diarios? ¿Podemos usar 1/50 por ejemplo? ¿El dt tiene que ser 'suficientemente pequeño'?

Como ejemplo, usemos FB. Está negociando en 118.72. Quiero saber la probabilidad de que esté por encima de 125 después de 60 días de negociación. Ejecutaré 10,000 caminos. La desviación estándar de FB es 0.12.

Usando un dt de 1/252 y mirando el valor 60 de cada resultado, me da 1912 caminos con un valor por encima de 125, entonces un 19% de probabilidad.

Usando un dt de 1/50 me da 3294 caminos, un 33% de probabilidad.

Muy confundido.

Disculpas si esta es una pregunta estúpida para todos los cuantos aquí - principalmente soy un programador.

0 votos

¿Cuál es la desviación estándar del precio 60 días después en las dos simulaciones (En 60*dt en el primer caso y 12*dt en el segundo)? ¿Son comparables? Deben ser aproximadamente $0.12*\sqrt{60/252}$ ya que tienes una desviación estándar anual de 0.12.

0 votos

Tu problema es que estás mezclando unidades... cuando dices que la variación estándar de FB es 0.12 debes tener cuidado. ¿Es la variación estándar de los precios de las acciones de Facebook o los (log-)retornos de Facebook? Del mismo modo, ¿en qué horizonte de tiempo se mide, diariamente, mensualmente, retornos anuales...? Cuando la gente usa $\delta t=1/252$ es porque también usan tasas/volatilidades anualizadas y la volatilidad en BS es la DEVP de los log-retornos.

1 votos

También ten en cuenta que bajo tal modelo, realmente no necesitas simulaciones de MC para predecir los precios futuros, ya que se asume que siguen una distribución lognormal, puedes obtener las probabilidades de forma "analítica".

4voto

oliversm Puntos 515

Normalmente, al ejecutar una simulación de Monte Carlo, podríamos simular una EDS similar a $$ \dfrac{dS}{S} = \mu\:dt + \sigma \: dW(t) $$ por algún método apropiado (por ejemplo, Euler-Maruyama, Milstein, etc). Observamos mediante el análisis dimensional que si $t$ está en unidades de $\textrm{años}$ entonces $\mu \sim \textrm{años}^{-1}$ y $\sigma \sim \textrm{años}^{-1/2}$.

Normalmente elegimos $dt = 1/252$ porque hay alrededor de 252 días de negociación en un año, y cuando los analistas analizan los valores diarios, "pretenden" que hay 252 días en un año por conveniencia. Por lo tanto, si deseamos simular en una escala de tiempo "diaria" (252 días en un año) entonces tendríamos la escala $\mu \to \dfrac{\mu}{252}$ y $\sigma \to \dfrac{\sigma}{\sqrt{252\:}}$.

Dado que estamos utilizando un método de Monte Carlo, podemos usar la escala de tiempo que deseemos si solo estamos interesados en el valor final. (Compare esto con los esquemas de diferencias finitas donde nuestra elección de incrementos siempre tiene efectos sobre la convergencia).

Advertencia:

Estamos utilizando el enfoque de Monte Carlo para simular cuál sería el valor final, y a veces esto depende del camino seguido (supongamos $\sigma \to \sigma(S)$, lo cual se denomina modelo de volatilidad local). Entonces, la distribución de valores finales que calculamos es solo una aproximación a la distribución real de soluciones de la EDS. Por lo tanto, si usamos un $\Delta t$ más pequeño, nuestra distribución aproximada converge a la verdadera distribución (cf. convergencia fuerte y débil), y generalmente para el esquema de Euler-Maruyama la convergencia es $O(\Delta t)$, lo que significa que escalas de tiempo más pequeñas dan mejores resultados.

Si este es el caso, entonces existen métodos para elegir un $\Delta t$ apropiado, pero esto depende del esquema de Monte Carlo que utilicemos, MC clásico, MC cuasi, MC multinivel, etc.

Espero que esto ayude.

0 votos

Sí, muy útil. Mucho en qué pensar. Entonces, si mi ejemplo de desviación estándar de FB (0.12) se calculó durante 50 días, ¿tendría que escalarlo a 0.12 * sqrt(50/252)?

0 votos

Simplemente divide por sqrt (50) para obtener la volatilidad diaria y efectivamente multiplica de nuevo por sqrt (252) si deseas la volatilidad anual.

1 votos

Entonces realmente depende de si quieres usar $\Delta t =1$ (día) + volatilidad diaria o $\Delta t =1/252$ (año) + volatilidad anual para simular tus rendimientos diarios. Pero es exactamente lo mismo

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