<a id="skfolio-attribution-assetbyfactorcontribution"></a>

# skfolio.attribution.AssetByFactorContribution

<a id="skfolio.attribution.AssetByFactorContribution"></a>

### *class* skfolio.attribution.AssetByFactorContribution(asset_names, factor_names, vol_contrib, mu_contrib)

Asset-by-factor contribution breakdown.

Breaks down factor contributions by asset. Each cell is the contribution of one
asset to one factor’s total contribution.

Summing over assets gives per-factor contributions. Summing over factors gives each
asset’s systematic contribution.

For single-point attribution, arrays have shape `(n_assets, n_factors)`. For rolling
attribution, arrays have shape `(n_windows, n_assets, n_factors)`.

* **Attributes:**
  **asset_names** *ndarray of shape (n_assets,)*
  : Asset names.

  **factor_names** *ndarray of shape (n_factors,)*
  : Factor names.

  **vol_contrib** *ndarray of shape (n_assets, n_factors) or (n_windows, n_assets, n_factors)*
  : Volatility contribution for each asset-factor pair.

  **mu_contrib** *ndarray of shape (n_assets, n_factors) or (n_windows, n_assets, n_factors)*
  : Return contribution for each asset-factor pair.

