Teniendo el código disponible, podéis ejecutarlo cuantas veces queráis, y en cada ejecución mostrará una gráfica aleatoria diferente. Veréis que es muy común, casi la norma, que se observen movimientos aleatorios importantes, por lo que los que seáis partidarios del análisis técnico, tenéis que tener claro que no necesariamente tiene que haber un motivo detrás de estos sucesos.
En un primer momento, configuré el generador de datos para que, en cada sesión, multiplicara el valor previo (la supuesta "cotización") por 1 +/- una pequeña variabilidad aleatoria que seguiría una distribución normal. Sin embargo, esto hacía que los datos tuvieran cierta tendencia a descender. Sin entrar en detalle, el motivo por el que ocurría esto era porque, en una sucesión de estas características, tienen más peso los descensos que los ascensos (por ejemplo, con ese método, una subida del 5% en una sesión y descenso del 5% en la siguiente sería equivalente a multiplicar 1.05 * 0.95, que no daría 1, sino 0.9975; con oscilaciones más grandes, el efecto aumenta; ej 1.2 * 0.8 = 0.96, etc. Al final, por ese motivo he usado una transformación logaritmica en la que el efecto sería neutro.
Pero lo más interesante, he destacado una serie de parámetros configurables. Para modificarlos, basta con cambiar el valor inicial que aparece en el recuadro de parámetros.
- sigma (línea 9): permite ajusta la volatilidad. Indicaría, en tantos por cien, el margen de oscilación que se esperaría en aproximadamente el 67% de las sesiones (1 desv estandard). Con 1 (valor por defecto), el 67% de las sesiones cambiarían en un rango entre -1% y +1%.
- rentab_anual (línea 11): indica el % del valor final esperable (sin contar la variación aleatoria) respecto al inicial. Vendría a representar algo así como el alfa de la acción. El valor por defecto es el 100%, con lo que, si se elimina la variabilidad (sigma=0), obtendremos una línea plana. Si se usan valores altos de rentab (ej: 300), obtendremos una curva exponencial (si se ajusta a 365 sesiones, y sin ruido - alfa=0 -, el valor final quedaría exactamente en 300).
- seed: lo que comentaba de las semillas. Por defecto, sin semilla (seed=None), por lo que cada ejecución será diferente. Manteniendo el resto de parámetros como vienen inicialmente, si usamos los valores de semilla 1, 2 y 3 obtendremos, necesariamente, las figuras 1, 2 y 3 (quizás esto pueda cambiar si se usan versiones diferentes de Python o de sus módulos, pero con Google colab a fecha de hoy obtendreis esta figura). (para cambiar los valores: seed = 1, seed = 2, etc).
- sesiones: como os imagináis y se describe, indica cuantas sesiones aparecerán en el gráfico.
Se que puede parecer un poco engorroso y no apetecer hacer la prueba, pero seguro que si seguís las instrucciones delante del pc, en menos de 5 minutos ya estaréis habiendo vuestras pruebas.
Si os animáis a trastear con el, me gustaría que comentarais vuestras conclusiones.