Page actions
instrument mechanism / verified-clean
Bond Price / YTM Calculator mechanism
The inspectable method record for Bond Price / YTM Calculator, kept separate from implementation and qualification.
Model scope
The core present-value formula is correct under ordinary fixed-rate, annual-coupon assumptions. Verdict is NEEDS_REVIEW because coupon frequency/payment timing, current-yield definition, and deterministic YTM solver details are omitted. The educational-only and flat-yield-curve labeling is appropriate but should also disclose no accrued-interest, credit-spread, liquidity, tax, transaction-cost, callability, or reinvestment assumptions.
- The price formula is standard only when t and n are payment periods, y is the yield per payment period, and C is the coupon payment per period; the spec supplies years and coupon rate but does not define coupon frequency or payment timing.
- The YTM root-finding method, initial guess, stopping criterion, and maximum iteration count are unspecified. These are required for deterministic on-device results.
- Current yield is not explicitly defined. The usual definition is annual coupon payment divided by current price, but this must be stated, especially for nonannual coupons and bonds with amortization or special cash flows.
- The formula assumes a single flat yield per period and ordinary fixed coupons; it does not cover accrued interest, clean versus dirty price, odd first or last periods, callable bonds, floating-rate bonds, or zero/negative-yield domain policy.
Units and conventions
- All test vectors explicitly assume annual coupon payments, one payment per year, annual coupon rate, annual yield, and n equal to years to maturity.
- Coupon payment C is face value multiplied by the annual coupon rate.
- Price is the theoretical dirty/fair price immediately after a coupon payment, so there is no accrued interest.
- Current yield is annual coupon payment divided by price: (face value × annual coupon rate) / price.
- For Newton YTM examples, the deterministic solver uses f(y) = price(y) - target price, Newton's method, initial guesses shown in the inputs, absolute yield-change tolerance 1e-10, and a maximum of 100 iterations.
Inspectable vector
One of 4 source-bound review vectors:
{
"inputs": {
"mode": "price",
"face_value": 1000,
"coupon_rate": 0.05,
"years_to_maturity": 5,
"annual_coupon_frequency": 1,
"market_yield": 0.04
},
"expected_outputs": {
"price": 1044.518223,
"current_yield": 0.047868959
},
"working": "C = 1000 × 0.05 = 50. Price = 50/(1.04)^1 + 50/(1.04)^2 + 50/(1.04)^3 + 50/(1.04)^4 + 50/(1.04)^5 + 1000/(1.04)^5. (1.04)^5 = 1.2166529024, so 1/(1.04)^5 = 0.8219271068. Coupon annuity factor = (1 - 0.8219271068)/0.04 = 4.451822330. Coupon PV = 50 × 4.451822330 = 222.5911165. Principal PV = 1000 × 0.8219271068 = 821.9271068. Price = 222.5911165 + 821.9271068 = 1044.5182233. Current yield = 50/1044.5182233 = 0.047868959, or 4.7868959%."
}Failure boundary
BREAK_CLAIMED · SELF_FLAGGED
The instrument has a mathematically undefined input at market_yield = -1 and should reject it. Separately, the unspecified coupon and yield frequency creates materially different valid prices under annual versus semiannual conventions.
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-tranche6/tranche6-results.jsonBOUNDARY_HAZARD_CATALOG.json