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".
0 votos
Oh, en realidad no sé el horizonte temporal sobre el cual se calcula la desviación estándar. ¿Supongo que importa? Entonces, si el valor se calculó durante 60 días, necesito convertirlo a anual multiplicando por \sqrt{60/252}, ¿luego usar un dt de 1/252?
0 votos
Todavía no responde por qué la gente elige 1/252 como un dt.
0 votos
Conveniente y fácil de entender.
0 votos
Eso no me ayuda en absoluto!
2 votos
Si asumes que los rendimientos diarios son i.i.d con una varianza constante $\sigma^2_d$, la varianza de un rendimiento de $N$ días, que es la suma de $N$ rendimientos gaussianos diarios independientes, es $\sigma^2 = N \sigma^2_d$ (aditividad de la varianza). Por lo tanto, cuando estás utilizando cantidades anualizadas, y asumiendo que hay $N=252$ días de trading en un año que es una mera convención (aproximadamente 5 días de trading por semana durante 52 semanas), entonces debes elegir $\Delta t = 1/N$ para simular los rendimientos diarios para que la varianza se mantenga consistente
1 votos
Esto se debe a que recíprocamente $\sigma^2_d = 1/N \sigma^2$, si $\sigma^2$ denota la varianza de los log-retornos de $N$ días. Recuerda que todo esto funciona porque se asume que los retornos son distribuidos de forma independiente e idéntica.