#Importamos librerías import streamlit as st import numpy as np import pandas as pd import matplotlib.pyplot as plt import random # Le ponemos el titulo de la app st.title("Trazando el Rumbo: Estimación de Tendencias desde Dos Listas de Valores Históricos") with st.form("my_form"): N = st.number_input(" ¿Cuántos elementos quieres para cada lista?", step=1) # Botón para generar el cálculo if st.form_submit_button("Click para generar numeros de manera aleatoria "): # Genera dos listas de 100 numeros aleatorios cada uno serie_a = [random.randint(0, 100) for _ in range(N)] serie_b = [random.randint(0, 100) for _ in range(N)] if "serie_a" in locals() and "serie_b" in locals(): promedio_a = np.mean(serie_a) promedio_b = np.mean(serie_b) st.subheader("Valores esperados") st.write(f"Promedio de lista A = {promedio_a:.2f}") st.write(f"Promedio de lista B = {promedio_b:.2f}") varianza_a = np.var(serie_a) varianza_b = np.var(serie_b) st.subheader("Varianzas") st.write(f"Varianza de lista A = {varianza_a:.2f}") st.write(f"Varianza de lista B = {varianza_b:.2f}") correlacion_ab = np.corrcoef(serie_a, serie_b)[0, 1] st.subheader("Correlación") st.write(f"Correlación entre lista A y B = {correlacion_ab:.2f}") plt.figure(figsize=(6, 4)) plt.scatter(serie_a, serie_b) plt.title("Gráfico de Dispersión de lista A vs B") plt.xlabel("Lista A") plt.ylabel("Lista B") st.pyplot(plt) plt.figure(figsize=(6, 4)) plt.plot(serie_a, label='Lista A') plt.plot(serie_b, label='Lista B') plt.title("Evolución de las lista") plt.xlabel("Tiempo") plt.ylabel("Valores") plt.legend() st.pyplot(plt) w_a = (promedio_a - promedio_b + varianza_b - correlacion_ab * np.sqrt(varianza_a * varianza_b)) / ( varianza_a + varianza_b - 2 * correlacion_ab * np.sqrt(varianza_a * varianza_b) ) w_b = 1 - w_a var_portafolio = (w_a*2) * varianza_a + (w_b*2) * varianza_b + 2 * w_a * w_b * correlacion_ab * np.sqrt(varianza_a * varianza_b) st.subheader("Ponderaciones y rendimiento del portafolio") st.write("Suponiendo que las listas A y B son rendimientos de portafolios") st.write(f"Ponderación para A = {w_a:.2f}") st.write(f"Ponderación para B = {w_b:.2f}") st.write(f"Rendimiento esperado del portafolio = {(w_a * promedio_a + w_b * promedio_b):.2f}") st.write(f"Varianza del portafolio = {var_portafolio:.2f}") else: st.error("Por favor, ingresa el número de elementos para las series.")