Struct loan_ec::EconomicCapitalAttributes
source · pub struct EconomicCapitalAttributes { /* private fields */ }
Implementations§
source§impl EconomicCapitalAttributes
impl EconomicCapitalAttributes
Implements economic capital structure
sourcepub fn new(num_u: usize, num_w: usize) -> EconomicCapitalAttributes
pub fn new(num_u: usize, num_w: usize) -> EconomicCapitalAttributes
Creates a new (base) economic capital struct
sourcepub fn process_loan<U>(
&mut self,
loan: &Loan,
u_domain: &[Complex<f64>],
log_lpm_cf: U
)where
U: Fn(&Complex<f64>, &Loan) -> Complex<f64> + Sync + Send,
pub fn process_loan<U>(
&mut self,
loan: &Loan,
u_domain: &[Complex<f64>],
log_lpm_cf: U
)where
U: Fn(&Complex<f64>, &Loan) -> Complex<f64> + Sync + Send,
Adds a new loan to the portfolio
sourcepub fn experiment_loan<U>(
&self,
loan: &Loan,
u_domain: &[Complex<f64>],
log_lpm_cf: U
) -> EconomicCapitalAttributeswhere
U: Fn(&Complex<f64>, &Loan) -> Complex<f64> + Sync + Send,
pub fn experiment_loan<U>(
&self,
loan: &Loan,
u_domain: &[Complex<f64>],
log_lpm_cf: U
) -> EconomicCapitalAttributeswhere
U: Fn(&Complex<f64>, &Loan) -> Complex<f64> + Sync + Send,
Performs marginal analytics for a potential loan to the portfolio. The typical use case is for pricing a new loan that could potentially be added to the portfolio. For a loan already in the portfolio, the “process_loan” function should be used.
sourcepub fn experiment_risk_contribution<U, V, T>(
&self,
loan: &Loan,
u_domain: &[Complex<f64>],
log_lpm_cf: U,
lambda0: f64,
q: f64,
mgf_systemic: V,
el_sys: &[f64],
var_sys: &[f64],
risk_measure_fn: T
) -> f64where
U: Fn(&Complex<f64>, &Loan) -> Complex<f64> + Sync + Send,
V: Fn(&[Complex<f64>]) -> Complex<f64> + Sync + Send,
T: Fn(&[Complex<f64>]) -> f64 + Sync + Send,
pub fn experiment_risk_contribution<U, V, T>(
&self,
loan: &Loan,
u_domain: &[Complex<f64>],
log_lpm_cf: U,
lambda0: f64,
q: f64,
mgf_systemic: V,
el_sys: &[f64],
var_sys: &[f64],
risk_measure_fn: T
) -> f64where
U: Fn(&Complex<f64>, &Loan) -> Complex<f64> + Sync + Send,
V: Fn(&[Complex<f64>]) -> Complex<f64> + Sync + Send,
T: Fn(&[Complex<f64>]) -> f64 + Sync + Send,
Finds the risk contribution of a new loan. This can be called instead of experiment loan to provide a simpler API than obtaining the analytics from “experiment_loan” and running them through the “risk_contribution” function.
sourcepub fn get_portfolio_expectation(&self, expectation_systemic: &[f64]) -> f64
pub fn get_portfolio_expectation(&self, expectation_systemic: &[f64]) -> f64
Gets the expected value of the portfolio. This should be called after processing all the loans in the portfolio.
sourcepub fn get_portfolio_variance(
&self,
expectation_systemic: &[f64],
variance_systemic: &[f64]
) -> f64
pub fn get_portfolio_variance(
&self,
expectation_systemic: &[f64],
variance_systemic: &[f64]
) -> f64
Gets the variance of the portfolio. This should be called after processing all the loans in the portfolio.