Acceder

Participaciones del usuario bacterio77 - Bolsa

bacterio77 24/07/23 20:08
Ha respondido al tema Análisis técnico: ¿alguien reconoce algún patrón característico?
Con esta variante del código, puedes ver al mismo tiempo varias curvas, superpuestas.Las líneas largas en diagonal representan rachas en las que siempre aparece el mismo resultado, ya sea cara o cruz (ej: subir podria ser cara, bajar cruz, o al revés, vendría a ser lo mismo). Las salvas de varias veces con cara o varias veces con cruz son más comunes de lo que creemos. 5 series de 100 lanzamientos de moneda, seed=1  #######import numpy as npimport matplotlib.pyplot as pltsesiones = 100seed = Nonecurvas=5np.random.seed(seed)plt.clf()for i in range(curvas):  datos = np.random.choice([-1,1], sesiones)  datos[0]=0  plt.plot( datos.cumsum() ) plt.show()#####En algún lugar leí (¿creo que en alguno de los libros de Taleb?), refiriéndose a este fenómeno, que los programadores de videojuegos habían observado que la aparición de este tipo de rachas provocaban enfado en los jugadores, que solían pensar que el videojuego estaba mal programado. Para evitar este malestar, muchas veces cambiaban generadores aleatorios por otra serie de generadores, ya no aleatorios, en los que se intentaba evitar que aparecieran este tipo de rachas.
Ir a respuesta
bacterio77 24/07/23 19:56
Ha respondido al tema Análisis técnico: ¿alguien reconoce algún patrón característico?
Sí, de hecho es más fácil de simular. La diferencia es que, a la hora de representarlo, en lugar de que en cada sesión suba o baje una cantidad variable, en cada tirada sube o baja siempre una unidad.En principio, con el siguiente código, partiendo de 0, la gráfica se desplazaría en una unidad hacia arriba o hacia abajo según el resultado fuera cara o cruz.Adjunto codigo y resultado con seed=1 cara o cruz, seed=1  ########import numpy as npimport matplotlib.pyplot as pltsesiones = 100seed = Nonenp.random.seed(seed)datos = np.random.choice([-1,1], sesiones)datos[0]=0plt.clf()plt.plot( datos.cumsum() )plt.show() 
Ir a respuesta
bacterio77 24/07/23 17:57
Ha respondido al tema Análisis técnico: ¿alguien reconoce algún patrón característico?
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.
Ir a respuesta
bacterio77 24/07/23 17:29
Ha respondido al tema Análisis técnico: ¿alguien reconoce algún patrón característico?
 import numpy as npimport matplotlib.pyplot as plt#############################################  PARAMETROS AJUSTABLES## sigma: desviacion estandard del cambio diario (%)sigma = 1# rentab_anual:  rentabilidad anual (descontando efecto del ruido) (% respecto valor inicial;# 100% implicaría mantener el valor, 50% reducir a la mitad, 200% duplicar)rentab_anual = 100# seed (semilla del generador aleatorio) (opcional): fuerza a que siempre que# se introduzcan los mismos parámetros, se obtenga el mismo resultadoseed = None# numero de sesiones a mostrar en la graficasesiones = 1000#################################################factor_sigma = np.log(1+sigma/100)alpha = np.log(rentab_anual/100) / 365#creacion de datosnp.random.seed(seed)datos = np.random.randn(sesiones)*factor_sigma + alphadatos = np.exp(datos)datos = datos.cumprod()# reinicio y creacion del graficoplt.clf()plt.plot(datos) 
Ir a respuesta
bacterio77 24/07/23 17:29
Ha respondido al tema Análisis técnico: ¿alguien reconoce algún patrón característico?
Aquí va el código (Python). La forma más sencilla de usarlo, para los que no estéis familiarizados, es abrir un cuaderno de Google Colab, pegar y ejecutar ahí mismo.Google colab se puede usar gratuitamente, simplemente basta con tener cuenta de Google / gmail.Una vez dentro, hay que abrir nuevo cuaderno, pegar el texto del código en la primera celda del cuaderno y, una vez  hecho esto, pulsar MAYUSCULAS+Retorno para ejecutar el código.
Ir a respuesta
bacterio77 24/07/23 17:26
Ha respondido al tema Búsqueda de información.
Yo estoy suscrito a la version de pago de Tikr terminal y, aunque un poco cara para un inversor particular, merece la pena el precio. Prueba de momento con la versión de prueba, porque vienen todos los datos fundamentales históricos muy detallados...
Ir a respuesta
bacterio77 24/07/23 07:39
Ha respondido al tema Análisis técnico: ¿alguien reconoce algún patrón característico?
Muy buena pregunta, Franchico. Esta tarde subire el codigo (esta mañana toca trabajo), pero la seleccion de figuras no está nada sesgada; se trata de las primeras ejecuciones usando las semillas aleatorias 1, 2 y 3. Lo de las semillas, luego lo explicare un poco mas, es una forma de garantizar que en distintas ejecuciones el generador aleatorio se va a comportar siempre igual y mostrara, siempre que se ejecute el mismo codigo, el mismo resultado. Precisamente se suele usar para demostrar la reproductibilidad.
Ir a respuesta
bacterio77 23/07/23 22:28
Ha respondido al tema Análisis técnico: ¿alguien reconoce algún patrón característico?
 No pretendo engañar a nadie, por eso no lo camuflo, ni le pongo ticker falso, ni pongo gráfico de velas, y además, ya había avisado de que “hay alguna trampa”. Enhorabuena por tu agudeza, de todas formas.No me cabe ninguna duda de que los grandes expertos lo veáis a la legua. A la gente normal como yo, nos puede parecer curioso como, por caprichos del azar y sin ningún motivo especial ,puedan aparecer trazados que se asemejen a canales alcistas, o que aparezcan de pronto grandes subidas o grandes bajadas que, intuitivamente, parecerían improbables en un patrón aleatorio pero que, en realidad, son más frecuentes de lo que esperaríamos.Luego subiré el código por si alguien quiere experimentar con él y contaré alguna cosa que me ha llamado la atención trasteando…
Ir a respuesta
bacterio77 23/07/23 12:08
Ha respondido al tema ¿PER como doble check ante una oportunidad de inversión?
008trader, creo que tu planteamiento es un poco confuso, o no te he entiendido bien.Por lo que veo, propones:- estimar el valor real (también lo llamas neto) de la empresa y compararlo con la capitalización bursátil (o lo que vendría ser lo mismo, comparar el valor real que correspondería a cada acción y compararlo con la cotización).- y como comprobación adicional, calcular el PER que corresponde a su cotización, y ver su relación con un PER ajustado que tendría si su 1) Soy bastante escéptico con respecto a que se pueda calcular el valor real de la empresa (ya uses descuento de flujos de caja o cualquier otro método, al final el error está en la gran cantidad de suposiciones que tienes que hacer, como saber si los ingresos se mantendran o no, etc).2) Pero al margen de eso, propones hacer un doble check comparando por un lado valor por acción considerando el valor real que consideres con el precio de la acción, y por otro lado calculando el PER actual con el PER que tendría que cotizara con su valor real. En realidad, este segundo análisis no te aporta nada, porque estarías al fin y al cabo dividiendo los mismos valores de tu primer check por un mismo valor (el beneficio por acción).Dicho de otra forma:-cotizacion actual/ valor real por accion-PER actual / PER usando valor real por accion =   (cotizacion actual / BPA) / (valor real por accion / BPA) = (simplificando)   cotizacion actual / valor real por accion(vuelve a ser lo mismo)
Ir a respuesta