Spaces:
Runtime error
Runtime error
import datetime | |
import json | |
from datetime import tzinfo | |
import pandas as pd | |
import streamlit as st | |
from tzlocal import get_localzone | |
from api import TradeAssistantAPI | |
from style import portfolio_table_styler, recommendation_table_styler | |
st.title("π Trading Assistant") | |
if st.sidebar.button("Refresh"): | |
st.experimental_rerun() | |
st.sidebar.title("Settings") | |
param_token = st.experimental_get_query_params().get("token", [""])[0] | |
token = st.sidebar.text_input("Token", type="password", value=param_token) | |
if not token: | |
st.error("Access denied") | |
st.stop() | |
api = TradeAssistantAPI(token) | |
st.write("## Recommendations") | |
recommendation_res = None | |
try: | |
recommendation_res = api.get_recommendations() | |
updated = recommendation_res["updated"] | |
recommendations = json.loads(recommendation_res["recommendations"]) | |
recommendations = pd.DataFrame(recommendations) | |
st.dataframe(recommendations.style.pipe(recommendation_table_styler)) | |
tz = str(get_localzone()) | |
updated_time_ago = pd.Timestamp.now().tz_localize(tz) - pd.Timestamp( | |
updated, tz="UTC" | |
) | |
st.write(f"Updated: {updated_time_ago} ago") | |
except Exception as e: | |
st.error(e) | |
st.expander("Details").write(recommendation_res) | |
portfolio = None | |
try: | |
portfolio = api.get_portfolio() | |
portfolio = portfolio[list(portfolio.keys())[0]] | |
portfolio = pd.DataFrame(portfolio) | |
st.write("## Portfolio") | |
st.dataframe(portfolio.style.pipe(portfolio_table_styler)) | |
except Exception as e: | |
st.error(e) | |
st.expander("Details").write(portfolio) | |
st.sidebar.write("## Actions") | |
schedule_training_res = None | |
if st.sidebar.button("Train model"): | |
schedule_training_res = api.train_model() | |
st.sidebar.success( | |
f"Training job scheduled. Job ID: {schedule_training_res['job_id']}" | |
) | |
st.write("## Training jobs") | |
try: | |
training_jobs_res = api.list_training_jobs() | |
# training_jobs = pd.DataFrame(training_jobs_res) | |
# st.dataframe(training_jobs) | |
st.write(training_jobs_res) | |
except Exception as e: | |
st.error(e) | |
st.expander("Details").write(training_jobs_res) | |