Skip to main content

Module present_value_annuity

Module present_value_annuity 

Source
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):

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.