Hi I am trying to return an HTML object (created from another Python library - “statsmodels”) to Dash. However, the elements are not rendered and it returns the raw HTML object.
Output Div:
html.Div(id='regression-result')
Callback:
@app.callback(
Output('regression-result', 'children'),
[Input('my-date-picker-range', 'start_date'),
Input('my-date-picker-range', 'end_date'),
Input('portfolio-checkboxes', 'value'),
Input('dropdown-input', 'value'),
Input('dropdown-output', 'value')]
)
def create_regression_table(start_date, end_date, selection, choice_X, choice_Y):
global df_r
lag = 6
df_r_filter = RC.create_timeseries(df_r, start_date, end_date, selection)
if choice_X == 'rp' or choice_Y == 'rp':
df_weights = RC.create_portfolio_weights(df_r_filter, lag)
df_rp = RC.create_portfolio_riskparity(df_weights, df_r_filter)
return_rp = df_rp.values
if choice_X == 'rp':
X = return_rp
else:
y = return_rp
if choice_X == 'eq' or choice_Y == 'eq':
df_bm = RC.create_benchmark_portfolio(df_r_filter)
return_bm = df_bm.values
if choice_X == 'eq':
X = return_bm
else:
y = return_bm
if choice_X == 'mkt' or choice_Y == 'mkt':
df_mkt = RC.create_rebased_index(df_r_filter, True)
return_mkt = df_mkt.Return.values
if choice_X == 'mkt':
X = return_mkt
else:
y = return_mkt
regression_result = RC.perform_regression(X, y)
return regression_result
External module:
def perform_regression(X_returns, y_returns):
X = X_returns
y = y_returns
X2 = sm.add_constant(X)
est = sm.OLS(y, X2)
est2 = est.fit()
return est2.summary().as_html()
Displayed Output
Thanks for your help!