Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import numpy as np | |
| import pandas as pd | |
| import matplotlib.pyplot as plt | |
| import random | |
| # Configuraci贸n de la aplicaci贸n en Streamlit | |
| st.title("Estimaci贸n de estad铆sticas de dos series de datos hist贸ricos") | |
| with st.form("form_datos"): | |
| num_elementos = st.number_input("驴Cu谩ntos elementos deseas en cada serie?", min_value=1, step=1) | |
| # Bot贸n para generar las series de datos | |
| if st.form_submit_button("Generar listas de n煤meros aleatorios"): | |
| serie_a = [random.randint(0, 20) for _ in range(num_elementos)] | |
| serie_b = [random.randint(0, 20) for _ in range(num_elementos)] | |
| 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 A = {promedio_a:.2f}") | |
| st.write(f"Promedio de B = {promedio_b:.2f}") | |
| varianza_a = np.var(serie_a) | |
| varianza_b = np.var(serie_b) | |
| st.subheader("Varianzas") | |
| st.write(f"Varianza de A = {varianza_a:.2f}") | |
| st.write(f"Varianza de B = {varianza_b:.2f}") | |
| correlacion_ab = np.corrcoef(serie_a, serie_b)[0, 1] | |
| st.subheader("Correlaci贸n") | |
| st.write(f"Correlaci贸n entre A y B = {correlacion_ab:.2f}") | |
| plt.figure(figsize=(6, 4)) | |
| plt.scatter(serie_a, serie_b) | |
| plt.title("Gr谩fico de Dispersi贸n A vs B") | |
| plt.xlabel("Serie A") | |
| plt.ylabel("Serie B") | |
| st.pyplot(plt) | |
| plt.figure(figsize=(6, 4)) | |
| plt.plot(serie_a, label='Serie A') | |
| plt.plot(serie_b, label='Serie B') | |
| plt.title("Evoluci贸n de las Series") | |
| 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 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.") | |