Brinson-Fachler#
Decomposes a portfolio’s active return against a benchmark into allocation, selection and interaction effects, computed per asset and per date, then aggregated across time.
Formulas#
For each asset on each date, with asset return \(r\), portfolio weight \(w_p\) and benchmark weight \(w_b\):
Per-date totals are the sums across assets, and by construction
which is also equal to \(\text{portfolio\_return} - \text{benchmark\_return}\).
Implementation#
The PyArrow-based implementation lives in
BrinstonFachlerArrowAttribution, implementing
BrinstonFachlerArrowInterface. A pandas-based
reference implementation is also available as
BrinstonFachlerAttribution. See
Brinson-Fachler for the full API reference.
Enable this methodology by setting brinson_fachler_method = yes in
attribution_analysis_parameters.xlsx (see Configuration Reference).