finlib 0.0.10

Quant finance functions implemented in Rust
Documentation
use crate::fixed_income::mortgage::Mortgage;
use crate::price::payoff::Payoff;
use pyo3::prelude::*;

#[pymethods]
impl Mortgage {
    #[new]
    pub fn init(purchase_price: f64, deposit: f64, interest_rate: f64, term_years: i32) -> Self {
        Mortgage::builder()
            .term_years(term_years)
            .interest_rate(interest_rate)
            .deposit(deposit)
            .purchase_price(purchase_price)
            .build()
    }

    #[getter(ltv)]
    pub fn ltv_py(&self) -> f64 {
        self.ltv()
    }

    #[getter(loan_value)]
    pub fn loan_value_py(&self) -> f64 {
        self.loan_value()
    }

    #[getter(monthly_payment)]
    pub fn monthly_payment_py(&self) -> f64 {
        self.monthly_payment()
    }

    #[getter(total_repayment)]
    pub fn total_repayment_py(&self) -> f64 {
        self.total_repayment()
    }

    #[getter(total_interest_repayment)]
    pub fn total_interest_repayment_py(&self) -> f64 {
        self.total_interest_repayment()
    }

    #[getter(present_value)]
    pub fn present_value_py(&self) -> f64 {
        self.present_value()
    }

    #[pyo3(name = "future_value")]
    pub fn future_value_py(&mut self, annual_interest_rate: f64) -> f64 {
        self.future_value(annual_interest_rate)
    }

    #[pyo3(name = "net_future_value_interest")]
    pub fn net_future_value_interest_py(&mut self, annual_interest_rate: f64) -> f64 {
        self.net_future_value_interest(annual_interest_rate)
    }

    #[pyo3(name = "total_interest")]
    pub fn total_interest_py(&mut self, annual_interest_rate: f64) -> f64 {
        self.total_interest(annual_interest_rate)
    }
}