Sofi1606 commited on
Commit
41878c7
1 Parent(s): 8c32509

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -12
app.py CHANGED
@@ -3,24 +3,43 @@ import pandas as pd
3
  import numpy as np
4
  import optuna
5
  import plotly.express as px
 
 
6
 
7
  st.title("Portfolio weights calculator")
8
 
9
  help_string = "NOTA: Para su información los datos utilizados se extrajeron de GOOGLEFINANCE."
10
 
11
- "STOCKS - Hoja 1.csv"
 
12
 
13
- check_box = st.checkbox("¿Quieres usar el archivo que tenemos para ti?")
14
 
15
- if check_box:
16
- uploaded_file = "STOCKS - Hoja 1.csv"
17
- file_name = uploaded_file
18
- else:
 
 
 
 
 
 
 
19
  uploaded_file = st.file_uploader("Sube aquí tu archivo de excel", type=[".xls", ".xlsx", ".csv"], help=help_string)
20
- file_name = uploaded_file.name if uploaded_file is not None else None
 
 
 
 
 
 
 
 
 
 
21
 
22
  if uploaded_file is not None:
23
- # Can be used wherever a "file-like" object is accepted:
24
  if file_name[-3:] == "csv":
25
  df = pd.read_csv(uploaded_file)
26
  else:
@@ -29,7 +48,6 @@ if uploaded_file is not None:
29
  df = df.drop(0, axis=0)
30
  df = df.drop("Unnamed: 2", axis=1).drop("Unnamed: 4", axis=1).rename({"Unnamed: 0": "Date"}, axis=1)
31
 
32
-
33
  df['Date'] = pd.to_datetime(df['Date'], format="%d/%m/%Y %H:%M:%S")
34
 
35
  stocks = list(df.columns)[-3:]
@@ -42,11 +60,9 @@ if uploaded_file is not None:
42
 
43
  st.write(df[["Date"] + stocks_rets])
44
 
45
- # Plotting with Plotly
46
  fig = px.line(df, x=df.Date, y=stocks, labels={'value': 'Value', 'variable': 'Series'}, title='Time Series Plot')
47
  fig.update_layout(xaxis_title='Date', yaxis_title='Value')
48
 
49
- # Use Streamlit to render the plot
50
  st.plotly_chart(fig)
51
 
52
  ret_list = df[stocks_rets].mean().to_numpy().reshape(-1, 1)
@@ -104,4 +120,5 @@ if uploaded_file is not None:
104
 
105
  st.write(f"Los pesos son: :green[{stocks[0]} -> {w1:,.4f}], :green[{stocks[1]} -> {w2:,.4f}], :green[{stocks[2]} -> {w3:,.4f}]")
106
  st.write(f"El retorno anualizado del portafolio es: :green[{yearly_returns:,.4f}]")
107
- st.write(f"La varianza anualizado del portafolio es: :green[{yearly_variance:,.4f}]")
 
 
3
  import numpy as np
4
  import optuna
5
  import plotly.express as px
6
+ import requests
7
+ import io
8
 
9
  st.title("Portfolio weights calculator")
10
 
11
  help_string = "NOTA: Para su información los datos utilizados se extrajeron de GOOGLEFINANCE."
12
 
13
+ api_url = "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&apikey=QVQGE7YPO68S403J&datatype=csv"
14
+ symbols = ['AMZN', 'MELI', 'ETSY']
15
 
16
+ option = st.selectbox("Selecciona la fuente de datos:", ("API Alpha Vantage", "Subir archivo propio", "Usar archivo predeterminado"))
17
 
18
+ if option == "API Alpha Vantage":
19
+ for symbol in symbols:
20
+ st.subheader(symbol)
21
+ response = requests.get(f"{api_url}&symbol={symbol}")
22
+ if response.status_code == 200:
23
+ data = pd.read_csv(io.BytesIO(response.content))
24
+ st.write(f"Datos de la acción {symbol}:")
25
+ st.write(data.head())
26
+ else:
27
+ st.write(f"Error al obtener los datos de la acción {symbol}. Código de estado:", response.status_code)
28
+ elif option == "Subir archivo propio":
29
  uploaded_file = st.file_uploader("Sube aquí tu archivo de excel", type=[".xls", ".xlsx", ".csv"], help=help_string)
30
+ if uploaded_file is not None:
31
+ # Cargar y procesar el archivo subido
32
+ if file_name[-3:] == "csv":
33
+ df = pd.read_csv(uploaded_file)
34
+ else:
35
+ df = pd.read_excel(uploaded_file)
36
+ # Resto del procesamiento del archivo ...
37
+ elif option == "Usar archivo predeterminado":
38
+ uploaded_file = "STOCKS - Hoja 1.csv" # Opcional: proporciona la ruta al archivo predeterminado
39
+ # Cargar y procesar el archivo predeterminado
40
+ # Resto del procesamiento del archivo ...
41
 
42
  if uploaded_file is not None:
 
43
  if file_name[-3:] == "csv":
44
  df = pd.read_csv(uploaded_file)
45
  else:
 
48
  df = df.drop(0, axis=0)
49
  df = df.drop("Unnamed: 2", axis=1).drop("Unnamed: 4", axis=1).rename({"Unnamed: 0": "Date"}, axis=1)
50
 
 
51
  df['Date'] = pd.to_datetime(df['Date'], format="%d/%m/%Y %H:%M:%S")
52
 
53
  stocks = list(df.columns)[-3:]
 
60
 
61
  st.write(df[["Date"] + stocks_rets])
62
 
 
63
  fig = px.line(df, x=df.Date, y=stocks, labels={'value': 'Value', 'variable': 'Series'}, title='Time Series Plot')
64
  fig.update_layout(xaxis_title='Date', yaxis_title='Value')
65
 
 
66
  st.plotly_chart(fig)
67
 
68
  ret_list = df[stocks_rets].mean().to_numpy().reshape(-1, 1)
 
120
 
121
  st.write(f"Los pesos son: :green[{stocks[0]} -> {w1:,.4f}], :green[{stocks[1]} -> {w2:,.4f}], :green[{stocks[2]} -> {w3:,.4f}]")
122
  st.write(f"El retorno anualizado del portafolio es: :green[{yearly_returns:,.4f}]")
123
+ st.write(f"La varianza anualizado del portafolio es: :green[{yearly_variance:,.4f}]")
124
+