Spaces:
Sleeping
Sleeping
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()
|