Guth
NewsDocs
Page actions
View as Markdown ↗
Explore MCP tools ↗

instrument mechanism / verified-clean

Bond Price / YTM Calculator mechanism

The inspectable method record for Bond Price / YTM Calculator, kept separate from implementation and qualification.

Status: VERIFIED_CLEANLifecycle: verified-clean

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.json
  • evidence-tranche6/tranche6-results.json
  • BOUNDARY_HAZARD_CATALOG.json