Page actions
instrument / verified-with-binding-errata
Ordinary Annuity FV/PV
The current ledger marks this instrument verified with errata that must be applied at binding time.
Inspectable records
Ledger state
The current ledger marks this instrument verified with errata that must be applied at binding time.
- Area
- Finance, Economics & Business
- Tranche
- tranche-2
- Evidence ID
- t2-020
- Ledger rows
- 1
No ledger note is attached.
Review findings
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.
Formula and scope findings
- 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.
Unit assumptions
- 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.
Boundary hardening
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.
Errata and corrections
No applied erratum is attached to this unique-name record.
Inspectable example
4 review vectors are recorded. One source-bound sample is shown below.
{
"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."
}Related workflows
No source-defined multi-instrument workflow membership is recorded.
Sources and evidence
These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.
VERIFIED_LEDGER.json · VERIFIED_WITH_ERRATAevidence-tranche2/tranche2-results.jsonBOUNDARY_HAZARD_CATALOG.json