Skip to content

Visualization

Widgets

widgets

Section 6.2.1 -- Jupyter widget helpers (Plotly-based).

All public functions return plotly.graph_objects.Figure when plotly is installed, or plain dict representations otherwise. No ipywidgets dependency -- the helpers are pure-data so they work in any notebook runtime.

ChartConfig dataclass

Shared visual configuration for all chart helpers.

asset_selector(available, selected=None)

Return a dict with available tickers and the selected subset.

This is a pure-data helper so downstream widgets / UI code can consume the selection without coupling to ipywidgets.

Parameters

available: Full universe of ticker strings. selected: Pre-selected tickers. Defaults to all available.

Returns

dict with keys available, selected.

efficient_frontier(returns, volatilities, *, sharpe_ratios=None, labels=None, optimal_idx=None, config=None)

Plot the mean-variance efficient frontier.

Parameters

returns: 1-D array of portfolio expected returns (one per frontier point). volatilities: Matching 1-D array of portfolio standard deviations. sharpe_ratios: Optional Sharpe ratios used for colour-mapping. labels: Optional hover labels for each point. optimal_idx: Index of the optimal portfolio to highlight. config: Visual configuration.

Returns

Plotly Figure or dict.

quantum_vs_classical(metric_names, classical_values, quantum_values, *, title='Quantum vs Classical', config=None)

Side-by-side grouped bar chart comparing quantum and classical metrics.

Parameters

metric_names: Labels for the x-axis categories. classical_values, quantum_values: Numeric values for each metric. title: Chart title. config: Visual configuration.

Returns

Plotly Figure or dict.

parameter_sensitivity(param_name, param_values, objective_values, *, series_name='Objective', extra_series=None, title=None, config=None)

Line chart showing how an objective changes with a parameter.

Useful for sweeping risk-aversion, cardinality, mixer type index, etc.

Parameters

param_name: Name of the parameter being swept (x-axis label). param_values: Numeric parameter values. objective_values: Corresponding objective / metric values. series_name: Legend name for the primary series. extra_series: Optional mapping {legend_name: values} for overlay lines. title: Chart title (defaults to "Sensitivity: {param_name}"). config: Visual configuration.

Returns

Plotly Figure or dict.

Dashboard

dashboard

Section 6.2.2 -- Portfolio dashboard charts and optional Dash app.

Every public function returns a plotly.graph_objects.Figure (or plain dict when plotly is not installed). The create_dash_app factory builds a full Dash application but is gated behind an optional dash import.

DashboardConfig dataclass

Layout configuration shared across dashboard charts.

portfolio_value_chart(dates, values, *, benchmark_values=None, title='Portfolio Value Over Time', config=None)

Line chart of portfolio NAV with optional benchmark overlay.

Parameters

dates: Sequence of date-like x-axis values. values: Portfolio values corresponding to each date. benchmark_values: Optional benchmark series for comparison. title: Chart title. config: Visual configuration.

drawdown_chart(dates, values, *, title='Drawdown', config=None)

Area chart of portfolio drawdown.

Parameters

dates: Date-like x-axis values. values: Portfolio values (not returns). title: Chart title. config: Visual configuration.

risk_decomposition_chart(categories, contributions, *, level='asset', title=None, config=None)

Horizontal bar chart of risk contributions by factor / sector / asset.

Parameters

categories: Labels (factor names, sector names, or asset tickers). contributions: Risk contribution values (e.g. variance contribution, VaR decomposition). level: One of "factor", "sector", "asset" -- used only for the default title. title: Chart title override. config: Visual configuration.

rebalancing_schedule_chart(dates, turnover, *, title='Rebalancing Schedule', config=None)

Bar chart of portfolio turnover at each rebalancing date.

Parameters

dates: Rebalancing dates. turnover: Turnover fraction at each rebalancing (0-1 or 0-100 scale). title: Chart title. config: Visual configuration.

transaction_cost_chart(dates, costs, *, cumulative=True, title='Transaction Costs', config=None)

Line/bar chart of transaction costs over time.

Parameters

dates: Trade / rebalancing dates. costs: Per-period transaction costs. cumulative: If True, also overlay the cumulative cost line. title: Chart title. config: Visual configuration.

create_dash_app(portfolio_dates, portfolio_values, *, benchmark_values=None, risk_categories=None, risk_contributions=None, rebalance_dates=None, rebalance_turnover=None, transaction_dates=None, transaction_costs=None, config=None, title='qufin Portfolio Dashboard')

Build a Dash app that renders the full dashboard.

Returns a dash.Dash application instance. If dash is not installed, raises ImportError with a helpful message.