Sofi1606 commited on
Commit
14ec0bd
1 Parent(s): 999b48a

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +72 -0
app.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #Importamos librerías
2
+
3
+ import streamlit as st
4
+ import numpy as np
5
+ import pandas as pd
6
+ import matplotlib.pyplot as plt
7
+ import random
8
+
9
+ # Le ponemos el titulo de la app
10
+ st.title("Trazando el Rumbo: Estimación de Tendencias desde Dos Listas de Valores Históricos")
11
+
12
+ with st.form("my_form"):
13
+ N = st.number_input(" ¿Cuántos elementos quieres para cada lista?", step=1)
14
+
15
+ # Botón para generar el cálculo
16
+ if st.form_submit_button("Click para generar numeros de manera aleatoria' lists"):
17
+ # Genera dos listas de 100 numeros aleatorios cada uno
18
+ serie_a = [random.randint(0, 100) for _ in range(N)]
19
+ serie_b = [random.randint(0, 100) for _ in range(N)]
20
+
21
+ if "serie_a" in locals() and "serie_b" in locals():
22
+ promedio_a = np.mean(serie_a)
23
+ promedio_b = np.mean(serie_b)
24
+
25
+ st.subheader("Valores esperados")
26
+ st.write(f"Promedio de lista A = {promedio_a:.2f}")
27
+ st.write(f"Promedio de lista B = {promedio_b:.2f}")
28
+
29
+ varianza_a = np.var(serie_a)
30
+ varianza_b = np.var(serie_b)
31
+
32
+ st.subheader("Varianzas")
33
+ st.write(f"Varianza de lista A = {varianza_a:.2f}")
34
+ st.write(f"Varianza de lista B = {varianza_b:.2f}")
35
+
36
+ correlacion_ab = np.corrcoef(serie_a, serie_b)[0, 1]
37
+
38
+ st.subheader("Correlación")
39
+ st.write(f"Correlación entre lista A y B = {correlacion_ab:.2f}")
40
+
41
+ plt.figure(figsize=(6, 4))
42
+ plt.scatter(serie_a, serie_b)
43
+ plt.title("Gráfico de Dispersión A vs B")
44
+ plt.xlabel("Serie A")
45
+ plt.ylabel("Serie B")
46
+ st.pyplot(plt)
47
+
48
+ plt.figure(figsize=(6, 4))
49
+ plt.plot(serie_a, label='Serie A')
50
+ plt.plot(serie_b, label='Serie B')
51
+ plt.title("Evolución de las Series")
52
+ plt.xlabel("Tiempo")
53
+ plt.ylabel("Valores")
54
+ plt.legend()
55
+ st.pyplot(plt)
56
+
57
+ w_a = (promedio_a - promedio_b + varianza_b - correlacion_ab * np.sqrt(varianza_a * varianza_b)) / (
58
+ varianza_a + varianza_b - 2 * correlacion_ab * np.sqrt(varianza_a * varianza_b)
59
+ )
60
+ w_b = 1 - w_a
61
+
62
+ 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)
63
+
64
+ st.subheader("Ponderaciones y rendimiento del portafolio")
65
+ st.write("Suponiendo que A y B son rendimientos de portafolios")
66
+ st.write(f"Ponderación para A = {w_a:.2f}")
67
+ st.write(f"Ponderación para B = {w_b:.2f}")
68
+ st.write(f"Rendimiento esperado del portafolio = {(w_a * promedio_a + w_b * promedio_b):.2f}")
69
+ st.write(f"Varianza del portafolio = {var_portafolio:.2f}")
70
+
71
+ else:
72
+ st.error("Por favor, ingresa el número de elementos para las series.")