1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
//! # Financial
//!
//! `Financial` is a collection of finance calculations mimicking some of Excel Financial Functions interface.
//!
//! ## What makes this crate different
//!
//! It supports both periodic and scheduled computation for [IRR](https://en.wikipedia.org/wiki/Internal_rate_of_return) and [NPV](https://en.wikipedia.org/wiki/Net_present_value).
//!
//! IRR and NPV functions are faster since powers are pre-computed iteratively instead of using power function multiple times. Take this with a grain of salt since no benches tests are offered at the moment.
//!
//! ## Supported Functions
//!
//! - FV(Rate, Nper, Pmt, Pv, Pmt_is_due)
//! - PV(Rate, Nper, Pmt, Fv, Pmt_is_due)
//! - NPV(Rate, values)
//! - XNPV(Rate), values, dates)
//! - IRR(values)
//! - XIRR(values, dates)
//! - MIRR(values, finance_rate, reinvest_rate)
//!
//! ## Future Work
//!
//! - Add More Functions (NPER, PMT, Rate, effect)
//!
//! ## Testing
//!
//! - This crate has over 180 test case, most of them are compared to Excel outputs.
//! - XIRR is not compared against Excel, since Excel XIRR doesn't always converge to the correct answer and often produce the wrong answer of 0.000000002980.
//! Instead XIRR are tested by using the XIRR to produce a zero XNPV value.
//! - Note that the precision used for equality of floating points is 1e-7
//!
//! ## Contribution
//!
//! - Using the crate and providing feedback or pointing out any issues.
//! - Adding more test cases is encouraged.
//! - Any contribution that serves the crate is welcome.
//!
//! [Github](https://github.com/raymon1/financial)
//!
//! <a href="https://www.buymeacoffee.com/raymon1" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>
//!
mod common;
pub mod naive_date;
mod periodic_cashflow;
mod scheduled_cashflow;
pub use crate::periodic_cashflow::fv::fv;
pub use crate::periodic_cashflow::irr::irr;
pub use crate::periodic_cashflow::mirr::mirr;
pub use crate::periodic_cashflow::npv::npv;
pub use crate::periodic_cashflow::pv::pv;
pub use crate::scheduled_cashflow::xirr::xirr;
pub use crate::scheduled_cashflow::xnpv::xnpv;