Esempio n. 1
0
def dcf_valuation(*args, **kwargs):
    if not args[0]:
        return [], [], [], dash.no_update
    try:
        df_dict = args[0]
        live_analysis_mode = args[-2]
        snapshot_uuid = args[-1]
        ticker = list(df_dict.keys())[0]
        dcf_store_dict_json = db.get(ticker + '-' + snapshot_uuid)
        dcf_store_dict = json.loads(
            dcf_store_dict_json) if dcf_store_dict_json else None
        safe_get_dcf = dcf_store_dict.get(ticker).get(
            'dcf_df_dict') if dcf_store_dict else None
        if 1 in live_analysis_mode or not safe_get_dcf:
            dcf_df, dcf_output_dict = get_dcf_df(*args)
        else:
            dcf_df = pd.DataFrame.from_dict(safe_get_dcf)
            dcf_output_dict = dcf_store_dict[ticker]['dcf_output_dict']
        # Capture all inputs to dcf-store.data
        ctx = dash.callback_context
        dcf_store_dict = ctx.inputs.pop('fin-store.data')
        for k, v in ctx.inputs.items():
            dcf_store_dict[ticker][k] = v
        dcf_store_dict[ticker]['dcf_df_dict'] = dcf_df.to_dict('records')
        dcf_store_dict[ticker]['dcf_output_dict'] = dcf_output_dict

        dcf_output_df = pd.DataFrame({
            'Price': [dcf_output_dict['last_price']],
            'Value':
            ['{:.2f}'.format(dcf_output_dict['estimated_value_per_share'])],
            'Price as % of Value': [
                '{:.2f}'.format(100 * dcf_output_dict['last_price'] /
                                dcf_output_dict['estimated_value_per_share'])
            ],
            'PV Total': [get_string_from_number(dcf_output_dict['PV_sum'])],
            'PV Terminal Value':
            [get_string_from_number(dcf_output_dict['PV_terminal_value'])],
        })
        return dcf_store_dict, make_table('dcf-df',
                                          dcf_df), dbc.Table.from_dataframe(
                                              dcf_output_df,
                                              striped=True,
                                              bordered=True,
                                              hover=True), dash.no_update
    except TypeError as e:
        logger.exception(e)
        return [], [], replace_str_element_w_dash_component(
            traceback.format_exc()), handler_data_message(
                'See Error Message(s) in DCF outputs:', '')
    except Exception as e:
        logger.exception(e)
        raise PreventUpdate
#get options flow from twitter
get_options_flow()
flow = pd.read_sql("select datetime, text from tweets order by datetime desc", conn)

#get reddit data
global dfr 
dfr = get_reddit()
                

#######################  Creating the layout  #######################


layout1 = html.Div([
                dbc.Row([dbc.Col(make_card("Enter Ticker", "success", ticker_inputs('ticker-input', 'date-picker', 36)))]) #row 1
                ,dbc.Row([dbc.Col([make_card("Twitter Order Flow", 'primary', make_table('table-sorting-filtering2', flow, '17px', 10))])
                        ,dbc.Col([make_card("Fin table ", "secondary", html.Div(id="fin-table"))])
                        ])
                , dbc.Row([make_card("select ticker", "warning", "select ticker")],id = 'cards') #row 2
                , dbc.Row([
                        dbc.Col([                                
                        dbc.Row([make_card("Wallstreet Bets New Posts", 'primary'
                                            ,[html.P(html.Button('Refresh', id='refresh'))
                                            , make_table('table-sorting-filtering', dfr, '17px', 4)])
                                ], justify = 'center')
                                ])
                        ,dbc.Col([dbc.Row([dbc.Alert("__Charts__", color="primary")], justify = 'center')
                            ,dbc.Row(html.Div(id='x-vol-1'), justify = 'center')
                            , dcc.Interval(
                                            id='interval-component',
                                            interval=1*150000, # in milliseconds
Esempio n. 3
0
    def test_make_table(self):

        table = du.make_table(columns=['pclass', 'age'], data=self.df)
        self.assertTrue(len(table.columns) == 2)
Esempio n. 4
0
global dfr
dfr = get_reddit()

layout1 = html.Div([
    # html.Div(id = 'cards')
    dbc.Row([
        dbc.Col(
            make_card("Enter Ticker", "success",
                      ticker_inputs('ticker-input', 'date-picker', 36)))
    ])  #row 1
    ,
    dbc.Row([
        dbc.Col([
            make_card("Twitter Order Flow", 'primary',
                      make_table('table-sorting-filtering2', flow, '17px', 10))
        ]),
        dbc.Col(
            [make_card("Fin table ", "secondary", html.Div(id="fin-table"))])
    ]),
    dbc.Row([make_card("select ticker", "warning", "select ticker")],
            id='cards')  #row 2
    ,
    dbc.Row([
        dbc.Col([
            dbc.Row([
                make_card("Wallstreet Bets New Posts", 'primary', [
                    html.P(html.Button('Refresh', id='refresh')),
                    make_table('table-sorting-filtering', dfr, '17px', 4)
                ])
            ],
Esempio n. 5
0
#instantiate dash app server using flask for easier hosting
server = Flask(__name__)
app = dash.Dash(__name__,server = server ,meta_tags=[{ "content": "width=device-width"}], external_stylesheets=[dbc.themes.BOOTSTRAP])
server.wsgi_app = WhiteNoise(server.wsgi_app, root='static/')
#used for dynamic callbacks
app.config.suppress_callback_exceptions = True
#get options flow from twitter
get_options_flow()
flow = pd.read_sql("select datetime, text from tweets order by datetime desc", conn)
#get reddit data
get_reddit()
top_post = pd.read_sql("select title, score, post from reddit order by score desc", conn)

#creating dash layout
layout1 = html.Div([
dbc.Row([dbc.Col([make_card("Twitter Order Flow", 'primary', make_table('table-sorting-filtering2', flow, '17px', 10))])
         ,dbc.Col([make_card("Wallstreet Bets Top Daily Posts", 'primary', make_table('table-sorting-filtering', top_post, '17px', 4))])
        ],
        no_gutters=True,)#end row
, dbc.Row([dbc.Col(make_card("Enter Ticker", "success", ticker_inputs('ticker-input', 'date-picker', 36)))]) #row 2
, dbc.Row(id = 'cards')
, dbc.Row([
        dbc.Col([make_card("Fin table ", "secondary", html.Div(id="fin-table"))])
        ,dbc.Col([dbc.Row([dbc.Alert("_Charts_", color="primary")], justify = 'center')
        ,dbc.Row(html.Div(id='x-vol-1'), justify = 'center')
        , dcc.Interval(
                id='interval-component',
                interval=1*150000, # in milliseconds
                n_intervals=0)   
        , dcc.Interval(
                id='interval-component2',