#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 24 09:38:58 2021
@author: benjaminull
"""
import investpy
import datetime as dt
from datetime import date
import streamlit as st
from plotly import graph_objs as go
import pandas as pd
import pybase64 as base64
import io
from plotly.subplots import make_subplots
from logs_portal import log
def formatnum(numero):
return '{:,.2f}'.format(numero).replace(",", "@").replace(".", ",").replace("@", ".")
def button_style():
style_button = """
"""
st.markdown(style_button, unsafe_allow_html=True)
def get_table_excel_link(df, selected_stocks):
towrite = io.BytesIO()
downloaded_file = df.to_excel(towrite, encoding='utf-8', index=False,
header=True)
towrite.seek(0) # reset pointer
file_name = 'Data ' + selected_stocks+'.xlsx'
style = 'style="color:black;text-decoration: none; font-size:18px;"'
name_mark = "Descargar " + selected_stocks + ".xlsx"
b64 = base64.b64encode(towrite.read()).decode() # some strings
linko= f'
'
return linko
def style_table():
# tr:hover {background-color: #E8E8E8;
# color:#BB1114;}
style_table = """
"""
st.markdown(style_table, unsafe_allow_html=True)
def grafico_avanzado_com(col_filter, col_button, col_chart, lista, TODAY):
titulo = "Commodities"
options = lista
fecha_0 = col_filter.selectbox("Periodo ", ["1 year", "1 week",
"1 month", "3 month",
"6 month", "5 year",
"10 year", "15 year"])
info = pd.DataFrame()
orden = ["Date"]
fecha1 = seleccionar_fecha(fecha_0)
fig2 = go.Figure()
for price in options:
data = investpy.commodities.get_commodity_historical_data(
price,
from_date=fecha1,
to_date=TODAY)
info[price] = data['Close']
close_ = go.Scatter(x=data.index,
y=data['Close']/data.iloc[0]["Close"],
name=price)
fig2.add_trace(close_)
orden.append(price)
info["Date"] = info.index
info["Date"] = info["Date"].dt.date
info = info[orden]
col_button.markdown(get_table_excel_link(info, "Commodities"),
unsafe_allow_html=True)
fig2.layout.update(title_text=titulo,
xaxis_rangeslider_visible=True,
height=500,
margin_b=20,
margin_r=20,
margin_l=20,
legend=dict(orientation="h",
yanchor="bottom",
y=1.02,
xanchor="right",
x=1))
col_chart.plotly_chart(fig2, use_container_width=True)
def grafico_avanzado_div(col_chart, col_filter, col_button, monedabase, lista, TODAY):
button_style()
titulo = "Divisas"
base = "USD"
options = lista
fecha_0 = col_filter.selectbox("Periodo", ["1 year",
"1 week",
"1 month",
"3 month",
"6 month",
"5 year",
"10 year",
"15 year"])
info = pd.DataFrame()
orden = ["Date"]
fig = make_subplots(specs=[[{"secondary_y": True}]])
fecha1 = seleccionar_fecha(fecha_0)
i = 0
for price in options:
titulo = titulo
selected_cc = base + "/" + price
data = investpy.currency_crosses.get_currency_cross_historical_data(selected_cc, from_date=fecha1, to_date=TODAY)
info[price] = data['Close']
close_ = go.Scatter(x=data.index,
y=data['Close']/data.iloc[0]['Close'],
name=price)
fig.add_trace(close_)
orden.append(price)
i = i+1
info["Date"] = info.index
info["Date"] = info["Date"].dt.date
info = info[orden]
col_button.markdown(get_table_excel_link(info, "Divisas"),
unsafe_allow_html=True)
fig.layout.update(title_text=titulo,
xaxis_rangeslider_visible=True,
height=500,
margin_b=20,
margin_r=20,
margin_l=20,
legend=dict(orientation="h",
yanchor="bottom",
y=1.02,
xanchor="right",
x=1))
col_chart.plotly_chart(fig, use_container_width=True)
import plotly.express as px
def grafico_avanzado_ind(col_chart,
col_filter,
col_button,
lista,
countries,
today, fechas):
button_style()
dict_indices = dict(zip(lista, countries))
fecha_0 = col_filter.selectbox("Periodo ", fechas)
fecha1 = seleccionar_fecha(fecha_0)
titulo = "Indices"
options = lista
info = pd.DataFrame()
orden = ["Date"]
fig2 = go.Figure()
i = 0
for price in options:
data = investpy.get_index_historical_data(
index=price,
country=dict_indices[price],
from_date=fecha1,
to_date=today)
info[price] = data['Close']
close_ = go.Scatter(x=data.index,
y=data['Close']/data.iloc[0]["Close"],
name=price,
line=dict(
color=px.colors.qualitative.Pastel[i]))
fig2.add_trace(close_)
orden.append(price)
i=i+1
info["Date"] = info.index
info["Date"] = info["Date"].dt.date
info = info[orden]
col_button.markdown(get_table_excel_link(info, "Indices"),
unsafe_allow_html=True)
fig2.layout.update(title_text=titulo,
xaxis_rangeslider_visible=True,
height=500,
margin_b=20,
margin_r=20,
margin_l=20,
legend=dict(orientation="h",
yanchor="bottom",
y=1.02,
xanchor="right",
x=1))
col_chart.plotly_chart(fig2, use_container_width=True)
def grafico_avanzado_tasas(col_filter, col_button, col_chart, bonds, TODAY):
titulo = "Tasas"
fecha_0 = col_filter.selectbox("Periodo ", ["1 year", "1 week",
"1 month", "3 month",
"6 month", "5 year",
"10 year", "15 year"])
fecha1 = seleccionar_fecha(fecha_0)
options = bonds
info = pd.DataFrame()
orden = ["Date"]
fig2 = go.Figure()
i = 0
for price in options:
i = i + 1
data = investpy.get_bond_historical_data(bond=price,
from_date=fecha1,
to_date=TODAY)
info[price] = data['Close']
close_ = go.Scatter(x=data.index,
y=data['Close']/data.iloc[0]["Close"],
name=price,
line=dict(
color=px.colors.qualitative.Pastel[i]))
fig2.add_trace(close_)
orden.append(price)
info["Date"] = info.index
info["Date"] = info["Date"].dt.date
info = info[orden]
col_button.markdown(get_table_excel_link(info, "Tasas"),
unsafe_allow_html=True)
# place0.header(titulo)
fig2.layout.update(title_text=titulo,
xaxis_rangeslider_visible=True,
height=500,
margin_b=20,
margin_r=20,
margin_l=20,
legend=dict(orientation="h",
yanchor="bottom",
y=1.02,
xanchor="right",
x=1))
col_chart.plotly_chart(fig2, use_container_width=True)
def view_macro():
col_filter1, col_button1, col_filter2, col_button2 = st.columns(4)
col_chart1, col_chart2 = st.columns(2)
index = ["S&P CLX IPSA",
"S&P Merval",
"Bovespa",
"S&P Lima General",
"COLCAP",
"S&P/BMV IPC",
"S&P 500",]
# "FTSE 100",
# "China A50",
# "Nikkei 225"]
countries = ["chile",
"argentina",
"brazil",
"peru",
"colombia",
"mexico",
"united states",]
# "united kingdom",
# "china",
# "japan"]
place2_index_st = st.empty()
today = date.today().strftime("%d/%m/%Y")
fechas = ["1 year",
"1 week",
"1 month",
"3 month",
"6 month",
"5 year",
"10 year",
"15 year"]
cc2_i = ["USD", "EUR", 'MXN', "GBP"]
cc2_f = ["CLP", "EUR", "GBP", "MXN", "JPY", "BRL", "PEN"]
try:
grafico_avanzado_ind(col_chart1,
col_filter1,
col_button1,
index,
countries,
today,
fechas)
except Exception as exc:
st.write(exc)
grafico_avanzado_div(col_chart2,
col_filter2,
col_button2,
cc2_i,
cc2_f,
today)
commodity = sorted(["Copper",
"Silver",
"Gold",
"Platinum",
'Brent Oil',
'Crude Oil WTI',
"Natural Gas"])
col_filter1, col_button1, col_filter2, col_button2 = st.columns(4)
col_chart1, col_chart2 = st.columns(2)
grafico_avanzado_com(col_filter1, col_button1, col_chart1, commodity, today)
bonds = ["Chile 10Y", "Peru 10Y", "China 10Y", "U.S. 10Y", "U.K. 10Y",
"Germany 10y", "Japan 10Y", "Brazil 10Y"]
try:
grafico_avanzado_tasas(col_filter2, col_button2, col_chart2, bonds, today)
except Exception as exc:
st.write(exc)
@st.cache
def tabla_bonos(stocks, TODAY):
tabla = pd.DataFrame()
year_ago = date.today() - dt.timedelta(days=365)
year_ago = year_ago.strftime("%d/%m/%Y")
for stock in stocks:
precios = investpy.get_bond_historical_data(bond=stock,
from_date=year_ago,
to_date=TODAY)
precios = precios["Close"]
last_price = precios.iloc[-1]
oned = precios.iloc[-2]
onew = precios.iloc[-5]
onem = precios.iloc[-20]
oney = precios.iloc[0]
return1m = str(round((last_price - onem), 2))+"%"
return1d = str(round((last_price - oned), 2))+"%"
return1w = str(round((last_price - onew), 2))+"%"
return1y = str(round((last_price - oney), 2))+"%"
last_price = str(round(last_price, 2))+"%"
tabla = tabla.append([[last_price, return1d, return1w, return1m,
return1y]])
tabla.columns = ["Tasa", "1d", "1w", "1m", "1y"]
tabla.index = stocks
return tabla
@st.cache
def tabla_pendiente(stocks, TODAY):
tabla = pd.DataFrame()
year_ago = date.today() - dt.timedelta(days=365)
year_ago = year_ago.strftime("%d/%m/%Y")
for stock in stocks:
precios1 = investpy.get_bond_historical_data(bond=stock + " 2Y",
from_date=year_ago,
to_date=TODAY)
precios2 = investpy.get_bond_historical_data(bond=stock + " 10Y",
from_date=year_ago,
to_date=TODAY)
precios = precios2 - precios1
precios = precios["Close"]
last_price = precios.iloc[-1]
oned = precios.iloc[-2]
onew = precios.iloc[-5]
onem = precios.iloc[-20]
oney = precios.iloc[0]
return1m = str(round((last_price - onem), 2))+"%"
return1d = str(round((last_price - oned), 2))+"%"
return1w = str(round((last_price - onew), 2))+"%"
return1y = str(round((last_price - oney), 2))+"%"
last_price = str(round((last_price), 2))+"%"
tabla = tabla.append([[last_price, return1d, return1w, return1m,
return1y]])
tabla.columns = ["Pendiente", "1d", "1w", "1m", "1y"]
tabla.index = stocks
return tabla
@st.cache
def tabla_divisas(stocks, TODAY):
tabla = pd.DataFrame()
year_ago = date.today() - dt.timedelta(days=365)
year_ago = year_ago.strftime("%d/%m/%Y")
for stock in stocks:
precios = investpy.currency_crosses.get_currency_cross_historical_data(
stock,
from_date=year_ago,
to_date=TODAY)
precios = precios["Close"]
last_price = precios.iloc[-1]
oned = precios.iloc[-2]
onew = precios.iloc[-5]
onem = precios.iloc[-20]
oney = precios.iloc[0]
return1m = str(round((last_price/onem-1)*100, 2))+"%"
return1d = str(round((last_price/oned-1)*100, 2))+"%"
return1w = str(round((last_price/onew-1)*100, 2))+"%"
return1y = str(round((last_price/oney-1)*100, 2))+"%"
last_price = "$" + str(round(last_price, 2))
tabla = tabla.append([[last_price, return1d, return1w, return1m,
return1y]])
tabla.columns = ["Precio","1d", "1w", "1m", "1y"]
tabla.index = stocks
return tabla
@st.cache
def tabla_commodity(stocks, TODAY):
tabla = pd.DataFrame()
year_ago = date.today() - dt.timedelta(days=365)
year_ago = year_ago.strftime("%d/%m/%Y")
for stock in stocks:
precios = investpy.commodities.get_commodity_historical_data(
commodity=stock,
from_date=year_ago,
to_date=TODAY)
precios = precios["Close"]
last_price = precios.iloc[-1]
oned = precios.iloc[-2]
onew = precios.iloc[-5]
onem = precios.iloc[-20]
oney = precios.iloc[0]
return1m = str(round((last_price/onem-1)*100, 2))+"%"
return1d = str(round((last_price/oned-1)*100, 2))+"%"
return1w = str(round((last_price/onew-1)*100, 2))+"%"
return1y = str(round((last_price/oney-1)*100, 2))+"%"
last_price = "$" + str(round(last_price, 2))
tabla = tabla.append([[last_price, return1d, return1w, return1m, return1y]])
tabla.columns = ["Precio","1d", "1w", "1m", "1y"]
tabla.index = stocks
return tabla
@st.cache
def tabla_indices(index, countries, TODAY):
tabla = pd.DataFrame()
year_ago = date.today() - dt.timedelta(days=365)
year_ago = year_ago.strftime("%d/%m/%Y")
for i in range(len(index)):
precios = investpy.get_index_historical_data(index=index[i],
country=countries[i],
from_date=year_ago,
to_date=TODAY)
precios = precios["Close"]
last_price = precios.iloc[-1]
oned = precios.iloc[-2]
onew = precios.iloc[-5]
onem = precios.iloc[-20]
oney = precios.iloc[0]
return1m = str(round((last_price/onem-1)*100, 2))+"%"
return1d = str(round((last_price/oned-1)*100, 2))+"%"
return1w = str(round((last_price/onew-1)*100, 2))+"%"
return1y = str(round((last_price/oney-1)*100, 2))+"%"
last_price = "$" + str(round(last_price, 2))
tabla = tabla.append([[last_price, return1d, return1w, return1m, return1y]])
tabla.columns = ["Precio","1d", "1w", "1m", "1y"]
tabla.index = index
return tabla
def to_number(valor):
if valor == "1w":
value = 0.25
if valor == "1m":
value = 1
elif valor == "3m":
value = 3
elif valor == "6m":
value = 6
return value
def seleccionar_fecha(fecha_select):
if fecha_select == "1 week" or fecha_select == "1w":
fec_in = date.today() - dt.timedelta(days=7)
elif fecha_select == "1 month":
fec_in = date.today() - dt.timedelta(days=30)
elif fecha_select == "3 month":
fec_in = date.today() - dt.timedelta(days=90)
elif fecha_select == "6 month":
fec_in = date.today() - dt.timedelta(days=180)
elif fecha_select == "1 year":
fec_in = date.today() - dt.timedelta(days=365)
elif fecha_select == "5 year":
fec_in = date.today() - dt.timedelta(days=365*5)
elif fecha_select == "10 year":
fec_in = date.today() - dt.timedelta(days=365*10)
elif fecha_select == "15 year":
fec_in = date.today() - dt.timedelta(days=365*15)
fec_in = fec_in.strftime("%d/%m/%Y")
return fec_in
@log
def curva_yield():
today = date.today()
col1, col2 = st.columns(2)
pais = col1.selectbox("Pais", ["Chile", "Brazil", "Mexico", "Colombia",
"Peru", "Japan", "U.S."])
meses = col2.selectbox("periodo", ["1w", "1m", "3m", "6m", "1y"])
if meses == "1w":
one_months_ago = seleccionar_fecha(meses)
elif meses == "1y":
one_months_ago = today.replace(year=today.year - 1).strftime("%d/%m/%Y")
else:
mes = to_number(meses)
one_months_ago = today.replace(month=today.month - mes).strftime("%d/%m/%Y")
today = today.strftime("%d/%m/%Y")
if pais == "Chile":
bonos = ['Chile 1Y', 'Chile 2Y', 'Chile 3Y', 'Chile 4Y', 'Chile 5Y',
'Chile 8Y', 'Chile 10Y']
proporcion = [1, 2, 3, 4, 5, 8, 10]
elif pais == "Brazil":
bonos = ['Brazil 3m', 'Brazil 6m', 'Brazil 1Y', 'Brazil 2Y',
'Brazil 3Y', 'Brazil 5Y', 'Brazil 8Y', 'Brazil 10Y']
proporcion = [0.25, 0.5, 1, 2, 3, 5, 8, 10]
elif pais == "Mexico":
bonos = ['Mexico 3m', 'Mexico 6m', 'Mexico 1Y', "Mexico 3Y",
'Mexico 5Y', 'Mexico 7Y', 'Mexico 10Y']
proporcion = [0.25, 0.5, 1, 3, 5, 7, 10]
elif pais == "Colombia":
bonos = ['Colombia 1Y', 'Colombia 4Y', 'Colombia 5Y', 'Colombia 10Y']
proporcion = [1, 4, 5, 10]
elif pais == "Peru":
bonos = ['Peru 2Y', 'Peru 5Y', 'Peru 10Y']
proporcion = [2, 5, 10]
elif pais == "Japan":
bonos = ['Japan 3m', 'Japan 6m', 'Japan 1Y', "Japan 2Y",
'Japan 3Y', 'Japan 5Y', 'Japan 8Y', 'Japan 10Y']
proporcion = [0.25, 0.5, 1, 3, 5, 7, 10]
elif pais == "U.S.":
bonos = ['U.S. 3m', 'U.S. 6m', 'U.S. 1Y', "U.S. 2Y",
'U.S. 3Y', 'U.S. 5Y', 'U.S. 8Y', 'U.S. 10Y']
proporcion = [0.25, 0.5, 1, 3, 5, 7, 10]
data_today = []
data_one_month = []
delta = []
for bono in bonos:
data_bono = investpy.bonds.get_bond_historical_data(bono,
one_months_ago,
today)
data_today.append(data_bono.iloc[-1]["Close"])
data_one_month.append(data_bono.iloc[0]["Close"])
delta.append(data_bono.iloc[-1]["Close"] - data_bono.iloc[0]["Close"])
def plot_tasas():
fig = go.Figure()
today = go.Scatter(x=proporcion, y=data_today, name="Yield today",
line=dict(color="darkred"))
onemonth = go.Scatter(x=proporcion, y=data_one_month, name="Yield" +
meses + " ago", line=dict(color="dimgrey"))
fig.add_trace(today)
fig.add_trace(onemonth)
fig.layout.update(title_text="",
width=900, height=300, margin_b=0, margin_t=0,
margin_r=0, margin_l=0, legend=dict(orientation="h",
yanchor="bottom",
y=1.0,
xanchor="right",
x=1),
xaxis={'visible': False,
'showticklabels': False})
st.plotly_chart(fig)
fig2 = go.Figure()
fig2.add_trace(go.Bar(
x=proporcion,
y=delta,
name='Delta',
marker_color='dimgrey'
))
if pais == "Brazil" or pais == "Mexico":
fig2.layout.update(title_text="",
width=900, height=200, margin_b=0, margin_t=0,
margin_r=0, margin_l=15,
xaxis=go.layout.XAxis(tickangle=70))
fig2.update_xaxes(range=[-0.3, proporcion[-1]+0.5], ticktext=bonos,
tickvals=proporcion)
else:
fig2.layout.update(title_text="",
width=900, height=200, margin_b=0, margin_t=0,
margin_r=0, margin_l=0,
xaxis=go.layout.XAxis(tickangle=70))
fig2.update_xaxes(ticktext=bonos, tickvals=proporcion,
range=[0.5, proporcion[-1]+0.5])
fig2.update_layout(barmode='group')
st.plotly_chart(fig2)
plot_tasas()
def plot_raw_data(col, data, color, prefijo, ancho, largo):
fig = go.Figure()
close_ = go.Scatter(x=data.index, y=data['Close'], name="stock_close",
line=dict(color=color), fill='tonexty')
fig.add_trace(close_)
fig.layout.update(title_text="", xaxis_rangeslider_visible=True,
width=ancho, height=largo, margin_b=0, margin_t=0,
margin_r=0, margin_l=0)
fig.update_yaxes(range=[min(data['Close'])/1.05,
max(data['Close'])*1.05], tickprefix=prefijo)
col.plotly_chart(fig, use_container_width=True)
# Brasil, Mexico, Chile, Colombia, Peru, USA, Alemania, UK, China, Japon
@log
def tasa10y_2y():
button_style()
TODAY = date.today().strftime("%d/%m/%Y")
bond_10y = ["Chile 10Y", "Peru 10Y", "China 10Y", "U.S. 10Y", "U.K. 10Y",
"Germany 10y", "Japan 10Y", "Brazil 10Y"]
bond_2y = ["Chile 2Y",
"Peru 2Y", "China 2Y", "U.S. 2Y", "U.K. 2Y", "Germany 2y",
"Japan 2Y", "Brazil 2Y"]
paises = ["Chile", "Peru", "China", "U.S.", "U.K.", "Alemania",
"Japon", "Brasil"]
col1, col2 = st.columns((1.681, 1))
selected = col1.selectbox("Seleccionar pais", paises)
fecha_select = col2.selectbox(" ", ["1 year", "1 week", "1 month",
"3 month", "6 month", "5 year",
"10 year", "15 year"])
fec_in = seleccionar_fecha(fecha_select)
data_bonds10y = investpy.get_bond_historical_data(
bond=bond_10y[paises.index(selected)],
from_date=fec_in,
to_date=TODAY)
data_bonds2y = investpy.get_bond_historical_data(
bond=bond_2y[paises.index(selected)],
from_date=fec_in,
to_date=TODAY)
data_final = data_bonds10y["Close"]-data_bonds2y["Close"]
fig = go.Figure()
close_ = go.Scatter(x=data_bonds10y.index, y=data_final, name="Delta",
line=dict(color="midnightblue"), fill='tonexty')
fig.add_trace(close_)
fig.layout.update(title_text="", xaxis_rangeslider_visible=True,
width=900, height=400, margin_b=0, margin_t=0,
margin_r=0, margin_l=0)
fig.update_yaxes(range=[min(data_final)/1.05,
max(data_final)*1.05])
cols = st.columns((1.681*2.681, 1.681, 1))
col1, col2 = st.columns((1.681, 1))
col1.plotly_chart(fig, use_container_width=True)
data_final2 = pd.DataFrame()
data_final2["Date"] = list(data_final.index)
cierre = list(data_bonds10y["Close"]-data_bonds2y["Close"])
data_final2["Delta"] = list(data_bonds10y["Close"]-data_bonds2y["Close"])
last_price = cierre[-1]
first_price = cierre[0]
returns = round(((last_price - first_price)), 2)
cols[1].markdown(''+"Tasa 10Y - 2Y"+"
", unsafe_allow_html=True)
cols[1].markdown(''+formatnum(last_price)+"%
", unsafe_allow_html=True)
if returns > 0:
cols[2].markdown('▲ '+formatnum(returns)+" %
", unsafe_allow_html=True)
else:
cols[2].markdown('▼ '+formatnum(returns)+" %
", unsafe_allow_html=True)
st.markdown(get_table_excel_link(data_final2, selected),
unsafe_allow_html=True)
paises = ["Brazil", "Chile",
"Peru", "China", "U.S.", "U.K.", "Germany",
"Japan"]
style_table()
col2.dataframe(tabla_pendiente(paises, TODAY))
@log
def bonos():
st.sidebar.subheader("Opciones")
largo = 350
ancho = 450
button_style()
placeholder = st.empty()
placeholder1 = st.empty()
TODAY = date.today().strftime("%d/%m/%Y")
cols = st.columns((1.681*2.5, 1.681, 1))
col1, col2 = st.columns((1.6, 1))
paises = ["Brazil", "Mexico", "Chile", "Colombia",
"Peru", "China", "U.S.", "U.K.", "Germany",
"Japan"]
time = ["2Y", "10Y"]
# #################
selected_pais = cols[0].selectbox(" ", paises)
selected_time = cols[1].selectbox(" ", time)
fecha_select = cols[2].selectbox(" ", ["1 year", "1 week", "1 month",
"3 month", "6 month", "5 year",
"10 year", "15 year"])
fec_in = seleccionar_fecha(fecha_select)
selected = selected_pais + " " + selected_time
data_bonds = investpy.get_bond_historical_data(bond=selected,
from_date=fec_in,
to_date=TODAY)
plot_raw_data(col1, data_bonds, 'dimgrey', "", ancho, largo)
last_price = data_bonds.iloc[-1]["Close"]
first_price = data_bonds.iloc[0]["Close"]
returns = round((last_price - first_price), 2)
cols[0].title("Tasa " + selected)
cols[1].markdown(''+"Tasa"+"
", unsafe_allow_html=True)
cols[1].markdown(''+formatnum(last_price)+"%
", unsafe_allow_html=True)
if returns > 0:
cols[2].markdown('▲ +'+ formatnum(returns)+" %
", unsafe_allow_html=True)
else:
cols[2].markdown('▼ '+formatnum(returns)+" %
", unsafe_allow_html=True)
# #################
style_table()
bonds10y = ["Brazil 10Y",
"Mexico 10Y",
"Chile 10Y",
"Colombia 10Y",
"Peru 10Y","China 10Y", "U.S. 10Y", "U.K. 10Y", "Germany 10y",
"Japan 10Y", ]
col2.dataframe(tabla_bonos(bonds10y, TODAY))
data_bonds["Date"] = data_bonds.index
data_bonds["Date"] = data_bonds["Date"].dt.date
data_toexcel = data_bonds[["Date", "Close"]]
st.markdown(get_table_excel_link(data_toexcel, selected),
unsafe_allow_html=True)
# graph_advance = st.sidebar.checkbox("Graficos avanzados")
# if graph_advance:
@log
def Commodities():
st.sidebar.subheader("Opciones")
largo = 350
ancho = 450
placeholder = st.empty()
placeholder1 = st.empty()
button_style()
TODAY = date.today().strftime("%d/%m/%Y")
col1, col2 = st.columns((1.681, 1))
cols = st.columns((1.681*2.681, 1.681, 1))
commodity = sorted(["Copper", "Silver", "Gold", "Platinum", 'Brent Oil',
'Crude Oil WTI', "Natural Gas"])
# #################
selected_com = col1.selectbox(" ", commodity)
fecha_select = col2.selectbox(" ", ["1 year", "1 week", "1 month",
"3 month", "6 month", "5 year",
"10 year", "15 year"])
fec_in = seleccionar_fecha(fecha_select)
data_com = investpy.commodities.get_commodity_historical_data(
commodity=selected_com,
from_date=fec_in,
to_date=TODAY)
col1, col2 = st.columns((1.681, 1))
plot_raw_data(col1, data_com, 'dimgrey', "", ancho, largo)
last_price = data_com.iloc[-1]["Close"]
first_price = data_com.iloc[0]["Close"]
returns = round(((last_price/first_price-1)*100), 2)
cols[0].title("Precio " + selected_com)
cols[1].markdown(''+"Precio"+"
", unsafe_allow_html=True)
cols[1].markdown('$'+formatnum(last_price)+"
", unsafe_allow_html=True)
if returns > 0:
cols[2].markdown('▲ +'+formatnum(returns)+" %
", unsafe_allow_html=True)
else:
cols[2].markdown('▼ '+formatnum(returns)+" %
", unsafe_allow_html=True)
##################
style_table()
col2.dataframe(tabla_commodity(commodity, TODAY))
data_com["Date"] = data_com.index
data_com["Date"] = data_com["Date"].dt.date
data_com_toexcel = data_com[["Date", "Close"]]
st.markdown(get_table_excel_link(data_com_toexcel, selected_com),
unsafe_allow_html=True)
@log
def Indices():
st.sidebar.subheader("Opciones")
largo = 350
ancho = 450
placeholder = st.empty()
placeholder1 = st.empty()
button_style()
TODAY = date.today().strftime("%d/%m/%Y")
col1, col2 = st.columns((1.681, 1))
cols = st.columns((1.681*2.681, 1.681, 1.2))
index = ["S&P CLX IPSA", "S&P Merval", "Bovespa", "S&P Lima General",
"COLCAP", "S&P/BMV IPC", "S&P 500", "FTSE 100", "China A50",
"Nikkei 225"]
countries = ["chile", "argentina", "brazil", "peru", "colombia", "mexico",
"united states", "united kingdom", "china", "japan"]
##################
selected_index = col1.selectbox(" ", index)
fecha_select = col2.selectbox(" ", ["1 year", "1 week", "1 month",
"3 month", "6 month", "5 year",
"10 year", "15 year"])
fec_in = seleccionar_fecha(fecha_select)
data_index = investpy.get_index_historical_data(
index=selected_index,
country=countries[index.index(selected_index)],
from_date=fec_in,
to_date=TODAY)
col1, col2 = st.columns((1.681, 1))
plot_raw_data(col1, data_index, 'dimgrey', "", ancho, largo)
last_price = data_index.iloc[-1]["Close"]
first_price = data_index.iloc[0]["Close"]
returns = round(((last_price/first_price-1)*100), 2)
cols[0].title("Precio " + selected_index)
cols[1].markdown(''+"Precio"+"
", unsafe_allow_html=True)
cols[1].markdown('$'+formatnum(last_price)+"
", unsafe_allow_html=True)
if returns > 0:
cols[2].markdown('▲ +'+formatnum(returns)+" %
", unsafe_allow_html=True)
else:
cols[2].markdown('▼ '+formatnum(returns)+" %
", unsafe_allow_html=True)
##################
style_table()
col2.dataframe(tabla_indices(index, countries, TODAY))
data_index["Date"] = data_index.index
data_index["Date"] = data_index["Date"].dt.date
data_index_toexcel = data_index[["Date", "Close"]]
st.markdown(get_table_excel_link(data_index_toexcel, selected_index),
unsafe_allow_html=True)
@log
def Divisas():
st.sidebar.subheader("Opciones")
largo = 350
ancho = 450
placeholder = st.empty()
placeholder1 = st.empty()
button_style()
TODAY = date.today().strftime("%d/%m/%Y")
cols = st.columns(3)
cc1 = ["USD/CLP", "EUR/CLP", "GBP/CLP", "BRL/CLP", "JPY/CLP", "MXN/CLP",
"PEN/CLP"]
##################
cc2_i = ["USD", "EUR", 'MXN', "GBP"]
cc2_f = ["CLP", "USD", "EUR", "GBP", "MXN", "JPY", "BRL", "PEN"]
##################
selected_cc2_i = cols[0].selectbox(" ", cc2_i)
selected_cc2_f = cols[1].selectbox(" ", cc2_f)
selected_cc2 = selected_cc2_i + "/" + selected_cc2_f
fecha_select2 = cols[2].selectbox(" ", ["1 year", "1 week", "1 month",
"3 month", "6 month",
"5 year", "10 year",
"15 year"])
fec_in2 = seleccionar_fecha(fecha_select2)
data_cc2 = investpy.currency_crosses.get_currency_cross_historical_data(
selected_cc2, from_date=fec_in2, to_date=TODAY)
cols = st.columns((1.681*2.681, 1.681, 1))
col1, col2 = st.columns((1.681, 1))
plot_raw_data(col1, data_cc2, 'midnightblue', "", ancho, largo)
last_price = data_cc2.iloc[-1]["Close"]
first_price = data_cc2.iloc[0]["Close"]
returns = round(((last_price/first_price-1)*100), 2)
cols[0].title(selected_cc2)
cols[1].markdown(''+"Precio"+"
", unsafe_allow_html=True)
cols[1].markdown('' + formatnum(last_price)+ " "+selected_cc2_f +"
", unsafe_allow_html=True)
if returns > 0:
cols[2].markdown('▲ '+formatnum(returns)+" %
", unsafe_allow_html=True)
else:
cols[2].markdown('▼ '+formatnum(returns)+" %
", unsafe_allow_html=True)
style_table()
# col1.dataframe(tabla_indices(index, countries, TODAY))
# col2.dataframe(tabla_indices(index2, countries, TODAY))
data_cc2["Date"] = data_cc2.index
data_cc2["Date"] = data_cc2["Date"].dt.date
data_cc2_toexcel = data_cc2[["Date", "Close"]]
st.markdown(get_table_excel_link(data_cc2_toexcel, selected_cc2),
unsafe_allow_html=True)
col2.dataframe(tabla_divisas(cc1, TODAY))