Expand description
Present value annuity calculations. Given a series of constant cashflows, a number of periods such as years, and a fixed interest rate, what is the current value of the series right now?
Timing uses crate::PaymentTiming (or Excel-style bool via From):
PaymentTiming::EndOfPeriod/false— ordinary annuity (Exceltype=0)PaymentTiming::BeginningOfPeriod/true— annuity due (Exceltype=1)
Prefer the enum in new code; bool remains for spreadsheet parity.
For teaching / debugging, use present_value_annuity_solution.
§Examples
Ordinary annuity with bool:
use finance_solution::present_value_annuity_solution;
let (rate, periods, annuity, due) = (0.034, 10, 500, false);
let pv_ann = present_value_annuity_solution(rate, periods, annuity, due).unwrap();
assert!(pv_ann.present_value().abs() > 4_000.0);Enum timing (preferred) — due has larger magnitude:
use finance_solution::{present_value_annuity, PaymentTiming};
let ordinary = present_value_annuity(0.034, 10, 500, PaymentTiming::EndOfPeriod).unwrap();
let due = present_value_annuity(0.034, 10, 500, PaymentTiming::BeginningOfPeriod).unwrap();
assert!(due.abs() > ordinary.abs());Integer money via Into<f64> still works:
use finance_solution::{present_value_annuity, PaymentTiming};
let pv = present_value_annuity(0.021, 12, 2_000, PaymentTiming::EndOfPeriod).unwrap();
assert!(pv.is_finite());Functions§
- present_
value_ annuity - Returns the present value of an annuity (series of constant cashflows) at a constant rate. Returns f64.
- present_
value_ annuity_ accumulator - present_
value_ annuity_ solution - Returns the present value of a future series of constant cashflows and constant rate. Returns custom solution type with additional information and functionality.