correlacion / app.py
Sofi1606's picture
Update app.py
c590f73 verified
raw
history blame contribute delete
No virus
2.59 kB
#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.")