pub struct FactorAttribution;Expand description
Multi-factor return attribution.
Given factor exposures (betas) and factor returns, decomposes portfolio return into factor contributions and an idiosyncratic residual (alpha).
§Example
use fin_primitives::attribution::{FactorAttribution, FactorReturns};
let betas = FactorReturns { market: 1.1, size: 0.2, value: -0.1, momentum: 0.3, quality: 0.05 };
let factor_returns = FactorReturns { market: 0.01, size: 0.002, value: -0.001, momentum: 0.003, quality: 0.001 };
let portfolio_return = 0.015;
let result = FactorAttribution::compute(&betas, &factor_returns, portfolio_return).unwrap();
assert!(result.total_factor_return.is_finite());Implementations§
Source§impl FactorAttribution
impl FactorAttribution
Sourcepub fn compute(
betas: &FactorReturns,
factor_returns: &FactorReturns,
portfolio_return: f64,
) -> Result<FactorAttributionResult, FinError>
pub fn compute( betas: &FactorReturns, factor_returns: &FactorReturns, portfolio_return: f64, ) -> Result<FactorAttributionResult, FinError>
Decompose portfolio_return into factor contributions and alpha.
Each factor contribution is beta_i * factor_return_i.
§Errors
Returns FinError::InvalidInput if any beta or factor return is non-finite.
Auto Trait Implementations§
impl Freeze for FactorAttribution
impl RefUnwindSafe for FactorAttribution
impl Send for FactorAttribution
impl Sync for FactorAttribution
impl Unpin for FactorAttribution
impl UnsafeUnpin for FactorAttribution
impl UnwindSafe for FactorAttribution
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more