This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| app = JupyterDash(__name__, external_stylesheets=[dbc.themes.LUX]) | |
| # app = JupyterDash(__name__, external_stylesheets=[dbc.themes.CYBORG]) ## switch to a dark theme! | |
| app.layout = html.Div(id='page-content', children=firstpage, className='p-3') | |
| @app.callback( | |
| [ | |
| Output("revenuechart", "figure"), Output("netprofitmargchart", "figure"), Output("shareschart", "figure"), | |
| Output("ebitdachart", "figure"), Output("debtchart", "figure"), Output("freecashchart", "figure"), | |
| Output("pricechart", "figure"), Output("sec", "children"), Output("ind", "children"), |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| firstpage = [ | |
| dbc.Row([ | |
| dbc.Col([ | |
| html.H3('FINANCIAL ASSISTANT DASHBOARD', className='text-center mb-3 p-3'), | |
| html.Hr(), | |
| ], | |
| width={'size': 12, 'offset': 0, 'order': 0}), | |
| ]), | |
| dbc.Row([ | |
| dbc.Col([ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #### READ THE DATA | |
| stocks = ['AMZN','NFLX', 'SBUX', 'DIS', 'MSFT', 'TSLA'] | |
| dict_income = {} | |
| dict_balsheet = {} | |
| dict_financials = {} | |
| dict_q_income = {} | |
| dict_q_balsheet = {} | |
| dict_q_financials = {} | |
| dict_price = {} | |
| dict_overview = {} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| fig_pricehist = px.line(dict_price['O'], | |
| y='Close', | |
| title='2Y Price History') | |
| fig_pricehist.update_layout(template=THEME, margin = dict(t=50, b=30, l=25, r=25)) | |
| fig_pricehist.update_traces(line_color='royalblue', line_width=3, hovertemplate='Close @ %{x}: $%{y}') | |
| fig_pricehist.show() | |
| ################## | |
| fig_rev = px.bar(dict_income['AMZN']['Revenue'], |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| firstpage_ = [ | |
| dbc.Row([ | |
| dbc.Col([ | |
| ], | |
| width={'size': 12, 'offset': 0, 'order': 0}), | |
| ]), | |
| dbc.Row([ | |
| dbc.Col([ | |
| ], | |
| width={'size': 4, 'offset': 0, 'order': 0}), |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| app = JupyterDash(__name__, external_stylesheets=[dbc.themes.FLATLY]) | |
| app.layout = dbc.Container( | |
| [ | |
| dbc.Row(dbc.Col(html.H2('PORTFOLIO OVERVIEW', className='text-center text-primary, mb-3'))), # header row | |
| dbc.Row([ # start of second row | |
| dbc.Col([ # first column on second row | |
| html.H5('Total Portfolio Value ($USD)', className='text-center'), | |
| dcc.Graph(id='chrt-portfolio-main', |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # getting the accumulated positions for our tickers | |
| last_positions = final_filtered.groupby(['ticker']).agg({'cml_units': 'last', 'cml_cost': 'last', | |
| 'gain_loss': 'sum', 'cashflow': 'sum'}).reset_index() | |
| curr_prices = [] | |
| # not the most elegant way of getting prices but will do for now | |
| for tick in last_positions['ticker']: | |
| stonk = yf.Ticker(tick) | |
| price = stonk.info['regularMarketPrice'] | |
| curr_prices.append(price) | |
| print(f'Done for {tick}') |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| indicators_ptf = go.Figure() | |
| indicators_ptf.layout.template = CHART_THEME | |
| indicators_ptf.add_trace(go.Indicator( | |
| mode = "number+delta", | |
| value = kpi_portfolio7d_pct, | |
| number = {'suffix': " %"}, | |
| title = {"text": "<br><span style='font-size:0.7em;color:gray'>7 Days</span>"}, | |
| delta = {'position': "bottom", 'reference': kpi_sp500_7d_pct, 'relative': False}, | |
| domain = {'row': 0, 'column': 0})) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| df = plotlydf_portfval[['date', 'ptf_growth', 'sp500_growth']].copy().round(3) | |
| df['month'] = df.date.dt.month_name() # date column should be formatted as datetime | |
| df['weekday'] = df.date.dt.day_name() # could be interesting to analyze weekday returns later | |
| df['year'] = df.date.dt.year | |
| df['weeknumber'] = df.date.dt.week # could be interesting to try instead of timeperiod | |
| df['timeperiod'] = df.year.astype(str) + ' - ' + df.date.dt.month.astype(str).str.zfill(2) | |
| # getting the percentage change for each period. the first period will be NaN | |
| sp = df.reset_index().groupby('timeperiod').last()['sp500_growth'].pct_change()*100 | |
| ptf = df.reset_index().groupby('timeperiod').last()['ptf_growth'].pct_change()*100 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import dash | |
| import dash_core_components as dcc | |
| import dash_html_components as html | |
| from dash.dependencies import Output, Input | |
| import plotly.express as px | |
| import dash_bootstrap_components as dbc | |
| import plotly.graph_objects as go | |
| import dash_table | |
| from jupyter_dash import JupyterDash |
NewerOlder