Page actions
instrument mechanism / verified-with-binding-errata
Ordinary Annuity FV/PV mechanism
The inspectable method record for Ordinary Annuity FV/PV, kept separate from implementation and qualification.
Model scope
The ordinary-annuity formulas are standard under the stated unit and timing assumptions, but the instrument specification is ambiguous because it advertises an annuity-due toggle without supplying or explicitly requiring the due formulas. It also lacks a defined zero-rate branch. Resolve those behaviors before claiming the instrument is fully formula-verified.
- The FV and PV formulas are correct for an ordinary annuity with equal payments made at the end of each period, provided r is nonzero.
- The specification includes an annuity-due timing toggle, but neither formula includes the required due adjustment: FV_due=FV_ordinary*(1+r) and PV_due=PV_ordinary*(1+r).
- The formulas divide by r and therefore do not directly handle a zero rate; the correct zero-rate limit is FV=PMT*n and PV=PMT*n.
- The formulas do not state constraints such as n being a nonnegative integer and r being greater than -1 for standard real-valued discounting.
Units and conventions
- r is a decimal rate per payment period, not an annual rate unless payments are annual; for a nominal annual rate with m payments per year, use r=annual_rate/m.
- n is the total number of payment periods and must be a nonnegative integer.
- PMT is the equal payment amount per period; signs must be defined consistently for cash-flow convention.
- Ordinary annuity payments occur at the end of each period.
- The test-vector growth value is defined as FV minus total contributions, where total contributions=PMT*n.
Inspectable vector
One of 4 source-bound review vectors:
{
"inputs": {
"PMT": 1000,
"rate_per_period": 0.05,
"n": 3,
"timing": "ordinary"
},
"expected_outputs": {
"FV": 3152.5,
"PV": 2723.248029,
"total_contributions": 3000,
"FV_growth": 152.5
},
"working": "FV=1000*((1.05)^3-1)/0.05=1000*(1.157625-1)/0.05=1000*0.157625/0.05=3152.50. PV=1000*(1-(1.05)^(-3))/0.05=1000*(1-0.8638375985)/0.05=1000*0.1361624015/0.05=2723.248029. Total contributions=1000*3=3000. FV growth=3152.50-3000=152.50."
}Failure boundary
BREAK_CLAIMED · SELF_FLAGGED
The formulas require domain and convention handling that is not explicit: zero-rate handling needs a limiting implementation, r=-1 makes PV undefined, and an unlabelled rate value such as 5 produces radically different results depending on whether it means 5% or decimal 5.
Other records
Sources and evidence
These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.
VERIFIED_LEDGER.jsonevidence-tranche2/tranche2-results.jsonBOUNDARY_HAZARD_CATALOG.json