File size: 2,162 Bytes
b2956d3
d699cdf
810bb53
d699cdf
c70f265
 
3635740
c70f265
 
df9b0ed
c70f265
 
 
a904eae
 
c70f265
6be9609
0239f21
6be9609
2219b7f
ebe8698
d699cdf
ebe8698
c70f265
 
358e906
6692e9c
8a2cae0
bc1555d
 
 
 
3d741dc
e0ce4e0
3635740
8d51d7a
810bb53
80b941e
8a2cae0
 
560fccd
87e4852
62447eb
e451088
62447eb
06063fb
e451088
fe8f4f7
e451088
df9b0ed
e451088
 
62447eb
e451088
87e4852
6f266a2
87e4852
6f266a2
a904eae
 
 
358e906
864f824
 
91255a4
 
 
864f824
358e906
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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)
    portfolio.set_index("contractDesc", inplace=True)
    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)