Visualizers#
Plotly chart-creation functions consumed by the dashboard: a pandas-based version and a PyArrow-only version with no pandas dependency.
Attribution visualization module — Plotly versions of the matplotlib charts.
Provides chart-creation functions that return Plotly Figure objects for use in the Dash dashboard.
- create_brinson_fachler_chart(brinson_fachler_indexes: DataFrame) Figure[source]#
Create the 3-panel Brinson-Fachler attribution chart.
Replicates BrinstonFachlerAttribution.attribution_plots() in Plotly.
- Panels:
Strategy vs Benchmark Returns
Cumulative Alpha
Allocation, Selection, Interaction Effects
- create_decomposition_bar_chart(total_pct: Series) Figure[source]#
Create a horizontal bar chart of end-of-period factor contributions.
Replicates FactorModelAttribution.last_day_decomposition() in Plotly.
- create_factor_attribution_chart(simulated_rets: DataFrame) Figure[source]#
Create the main 3-panel factor attribution line chart.
Replicates FactorModelAttribution.attribution_plots() in Plotly.
- Panels:
Total / Factor / Idiosyncratic cumulative returns
Style Factors
Industry Returns (non-zero columns only)
- create_factor_attribution_summary_chart(simulated_rets: DataFrame) Figure[source]#
Create a compact attribution chart showing just the 3 main series.
Used in the main charts row (large chart).
- create_returns_distribution(portfolio_returns: Series) Figure[source]#
Create returns distribution analysis (histogram + time series).
- create_stacked_decomposition_chart(pct_df_returns: DataFrame, days_of_smoothing: int = 45) Figure[source]#
Create a normalized stacked area chart of factor return decomposition.
Replicates FactorModelAttribution.plot_stacked_weights_normalized() in Plotly. Each factor’s share = abs(factor) / sum(abs(all factors)), always sums to 100%.
Attribution visualization module — Plotly charts using PyArrow tables.
Provides chart-creation functions that return Plotly Figure objects for use in the Dash dashboard, without any pandas dependency. All data extraction uses pa.Table / pyarrow.compute and plain Python lists.
- create_brinson_fachler_chart(brinson_fachler_indexes: Table, date_column: str = 'date') Figure[source]#
Create the 3-panel Brinson-Fachler attribution chart.
- Panels:
Strategy vs Benchmark Returns
Cumulative Alpha
Allocation, Selection, Interaction Effects
- create_decomposition_bar_chart(total_pct: dict) Figure[source]#
Create a horizontal bar chart of end-of-period factor contributions.
- Parameters:
total_pct (dict) – {factor_name: contribution_fraction} — e.g. from FactorModelArrowAttribution.cummulative_pct_decomp().
- create_drawdown_chart(portfolio_returns: Table, date_column: str = 'date', value_column: str = 'portfolio_returns') Figure[source]#
Create drawdown analysis chart.
Computes cumulative returns, running max, and drawdown entirely with Python lists (no pandas).
- create_factor_attribution_chart(simulated_rets: Table, date_column: str = 'date') Figure[source]#
Create the main 3-panel factor attribution line chart.
Replicates FactorModelAttribution.attribution_plots() in Plotly.
- Panels:
Total / Factor / Idiosyncratic cumulative returns
Style Factors
Industry Returns (non-zero columns only)
- create_factor_attribution_summary_chart(simulated_rets: Table, date_column: str = 'date') Figure[source]#
Create a compact attribution chart showing just the 3 main series.
Used in the main charts row (large chart).
- create_returns_distribution(portfolio_returns: Table, date_column: str = 'date', value_column: str = 'portfolio_returns') Figure[source]#
Create returns distribution analysis (histogram + time series).
- create_stacked_decomposition_chart(pct_df_returns: Table, date_column: str = 'date', days_of_smoothing: int = 45) Figure[source]#
Create a normalized stacked area chart of factor return decomposition.
Each factor’s share = abs(factor) / sum(abs(all factors)), always sums to 100%. Implemented with pure pyarrow + Python lists (no pandas).