Skip to main content

FactorModel

Struct FactorModel 

Source
pub struct FactorModel;
Expand description

Fama-French style multi-factor OLS regression engine.

§Algorithm

Given T observations and K factors, form the T × (K+1) design matrix X (first column all-ones for the intercept) and solve the normal equations:

β̂ = (X'X)⁻¹ X'y

Matrix inversion is done analytically for 2×2 and 3×3 systems and via Gaussian elimination with partial pivoting for larger systems.

Implementations§

Source§

impl FactorModel

Source

pub fn fit( asset: &str, asset_returns: &[f64], factors: &[Factor], ) -> FactorExposure

Fit a factor model to asset_returns using the provided factors.

§Panics

Does not panic; returns a zero-exposure result if the system is singular or if the return series have mismatched lengths.

Source

pub fn decompose( exposure: &FactorExposure, factor_cov: &CovarianceMatrix, factor_names: &[String], ) -> VarianceDecomposition

Decompose total variance into systematic and idiosyncratic components.

factor_contributions[i] = β_i² σ_i² + 2 Σ_{j>i} β_i β_j cov(i,j)

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.