Source code for kaxanuk.attribution_analysis.interfaces.factor_model_interface
import abc
import pandas as pd
[docs]
class FactorModelAttributionInterface(metaclass=abc.ABCMeta):
def __init__(
self,
portfolio_returns: pd.DataFrame,
benchmark_returns: pd.DataFrame,
daily_portfolio_weights: pd.DataFrame,
by_factor_factor_returns: pd.DataFrame,
# factor_returns: pd.DataFrame,
asset_returns: pd.DataFrame,
):
self.portfolio_returns = portfolio_returns
self.benchmark_returns = benchmark_returns
self.daily_portfolio_weights = daily_portfolio_weights
self.by_factor_factor_returns = by_factor_factor_returns
# self.factor_returns = factor_returns
self.asset_returns = asset_returns
[docs]
@abc.abstractmethod
def multifactor_attribution(self, date: str):
"""
Calculate the CAPM attribution model for a given date.
:param date: The date for which to calculate the attribution.
:return: A tuple containing the detailed attribution DataFrame and a totals DataFrame.
"""
...