2 votos

¿Cómo generar un precio simulado de las acciones a partir de datos históricos utilizando R?

He creado una estrategia específicamente para una acción en particular que he probado con sus datos históricos. Ahora quiero probarla con el precio simulado de la acción generado usando Monte Carlo. He utilizado estos sitios web fórmula para generar el rendimiento simulado.

$$\operatorname{Return} = \mu\Delta t + \sigma r\sqrt{t}$$

Este es mi código

library(quantmod)
set.seed(100)
aapl=getSymbols("AAPL",from="2014-01-01",auto.assign=F)
N=1000 #number of iterations
ret=ROC(Cl(aapl))
plot(ret)
t=1
mu=mean(na.omit(ret))
sigma=sd(na.omit(ret))
new_ret=NULL

for( i in 1:N){
phi=runif(1, min=0, max=1)
new_ret[i]=mu*t+sigma*phi*sqrt(t)
}
plot(new_ret)

El retorno simulado (new_ret) parece algo extraño y no es apropiado. ¿Cómo generar datos simulados utilizando datos históricos de la comilla de una acción?

La rentabilidad se calcula mediante ROC() que a su vez utiliza la función diff(log()) función. ¿Cómo puedo generar el precio a partir de los valores de retorno simulados?

5voto

Simon Puntos 14656

Este enfoque es bastante burdo. Sólo toma la media y la volatilidad de los rendimientos históricos y asume un modelo muy simple. No sé si tienes mucha experiencia con las series temporales, pero tu serie de rendimientos es una serie temporal.

Ahora puede realizar pruebas sobre estos retornos logarítmicos para asegurarse de que puede continuar con los modelos de series temporales. Un modelo muy simple es ARMA. Puede ampliarlo a ARCH-GARCH. R tiene estas funciones incorporadas y también tiene características que simularán valores futuros utilizando el modelo que construye.

Comprueba el arima() o uGARCH. Lo siento si aún no se ha encontrado con esto. Es un modelo bastante simple pero muy bueno en mi experiencia para los rendimientos. Espero que sea mejor que su modelo anterior. Es un enfoque común en la modelización de series temporales financieras.

Espero que esto sea útil.

Para su última pregunta. Tu código parece correcto, aunque ineficiente si estás simulando muchos datos. Para pronosticar los precios, usted tiene algún retorno $r$ . Si se toma el precio de las acciones de hoy $S_0$ entonces el precio de mañana será $S_0(1+r)$ si se utilizan rendimientos normales. Las fórmulas son similares si se utilizan precios logarítmicos, como ya he mencionado. Si utiliza rendimientos estándar, entonces la predicción $n$ días por delante requiere $$S_0(1+r_1)(1+r_2)\cdots(1+r_n).$$ Esto puede aplicarse en un burdo bucle for o en métodos más elegantes en R.

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