calculate_annuity_present_value
Calculate the present value of an ordinary annuity: a series of equal payments received (or paid) at the END of each period, discounted at a given rate. Formula: Annuity PV = PMT x (1 - (1 + r)^-n) / r. WHEN TO USE: Use to value a fixed stream of level payments (e.g. lease income, lottery-style payouts, bond coupons held to maturity, or a stream of loan repayments received). WHEN NOT TO USE: Do NOT use for payments at the START of each period (annuity due — adjust by multiplying by (1 + r)), for growing payments (growing annuity), or for perpetual streams (use calculate_perpetuity_value). BEHAVIOUR: pure deterministic calculation — no side effects, no network or storage access; idempotent and non-destructive; identical inputs always produce identical outputs. Division by zero, non-finite inputs, or mathematically undefined combinations return an explicit error instead of a number. RETURNS: JSON object { annuity_present_value: number (currency), inputs }. PARAMETERS: payment (required): Payment amount per period, e.g. 50000. Must be > 0 for a normal inflow annuity. rate (required): Periodic discount rate as a decimal, e.g. 0.06 = 6% (never pass percentage points). Use rate = 0 for an undiscounted sum. periods (required): Number of payments/periods, e.g. 10. Must be >= 1.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| rate | Yes | Periodic discount rate as a decimal, e.g. 0.06 = 6% (never pass percentage points). Use rate = 0 for an undiscounted sum. | |
| payment | Yes | Payment amount per period, e.g. 50000. Must be > 0 for a normal inflow annuity. | |
| periods | Yes | Number of payments/periods, e.g. 10. Must be >= 1. |