File size: 1,852 Bytes
976166f
cd1bf03
976166f
 
a77544c
576c56b
976166f
576c56b
976166f
 
588011f
976166f
 
 
a77544c
 
29f1ee3
 
 
976166f
 
29f1ee3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cd1bf03
 
 
 
 
29f1ee3
 
 
 
cd1bf03
29f1ee3
 
 
976166f
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
import panel as pn
from sidebar import SideNavBar
from sqlalchemy import create_engine
import appComponents
import db_operation as db

pn.extension('mathjax')

pn.extension('plotly')
pn.extension('tabulator')
db_url = 'sqlite:///instance/local.db'
engine = create_engine(db_url)


analytic_p = db.get_portfolio_analytic_df()
analytic_b = db.get_benchmark_analytic_df()
if len(analytic_p) == 0:
    app = [
        pn.pane.Str('No portfolio data found, please update portfolio first')]


else:

    stock_overview = appComponents.BestAndWorstStocks(
        analytic_df=analytic_p)
    composation_card = appComponents.PortfolioComposationCard(
        analytic_p)
    monthly_return_card = appComponents.HistReturnCard(
        calculated_p_stock=analytic_p, calculated_b_stock=analytic_b)
    total_return_card = appComponents.TotalReturnCard(name='Range',
                                                      b_stock_df=analytic_b,
                                                      p_stock_df=analytic_p,
                                                      value=(0, 20))
    drawdown_card = appComponents.DrawDownCard(
        calculated_p_stock=analytic_p)

    top_header = appComponents.TopHeader(
        eval_df=analytic_p,
    )
    app = [pn.Row(top_header),
           pn.Row(
        pn.Column(monthly_return_card, stock_overview,
                  width=500, margin=(10, 10, 10, 10)),
        pn.Column(total_return_card, drawdown_card, margin=(10, 10, 10, 10)),
        pn.Column(composation_card, margin=(10, 10, 10, 10)),
    )]

template = pn.template.FastListTemplate(
    title="Portfolio一览",
    # sidebar=[freq, phase],
)
template.sidebar.append(SideNavBar())
# template.main.extend([drawdown_card, stock_overview, composation_card, monthly_return_card, total_return_card])
template.main.extend(app)
template.servable()