Source: https://guthlabs.ai/docs/instruments/pmi-ltv-estimator/

instrument / verified-clean

# PMI / LTV Estimator

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/pmi-ltv-estimator/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/pmi-ltv-estimator/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/pmi-ltv-estimator/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/pmi-ltv-estimator/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Finance, Economics & Business (educational only — never individualized investment, tax, or legal advice)

**Tranche**: tranche-4

**Evidence ID**: t4-032

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The supplied honest label is directionally appropriate but should explicitly state that the 80% result is only a simplified eligibility estimate, not a guaranteed cancellation date or legal entitlement. The specification must define the PMI cost formula, PMI-rate units, and amortization/principal-reduction inputs before implementation can receive PASS.

### Formula and scope findings

- LTV=loan/appraised_value is correct when both values use the same currency and loan means the current loan balance.

- No formula is specified for estimated annual PMI cost. A common rough assumption is current loan balance × PMI rate, but PMI may instead be based on the original loan amount and may be recalculated periodically.

- No formula or required inputs are specified for estimated payments to 80% LTV. This requires at least a principal-reduction amount per payment or a complete amortization schedule; dividing the balance gap by the total payment would be incorrect because total payments include interest.

- The statement 'PMI removal at LTV≤80%' is an oversimplification. Borrower-requested cancellation, automatic termination, lender rules, loan type, payment history, and applicable law can differ; automatic termination is commonly associated with 78% original LTV rather than 80%.

### Unit assumptions

- loan_balance and appraised_value are positive monetary amounts in the same currency.

- For the test vectors, PMI rate is supplied as a percentage number such as 0.5 and converted to a decimal by dividing by 100.

- For test-vector purposes, estimated annual PMI cost is defined as loan_balance × PMI_rate_decimal and represents a pre-removal annualized estimate.

- For test-vector purposes, estimated payments to 80% LTV is ceil(max(0, loan_balance − 0.80 × appraised_value) ÷ principal_reduction_per_payment), where principal_reduction_per_payment is the principal retired each payment, not the total payment.

- LTV output is expressed as a percentage: loan_balance ÷ appraised_value × 100.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The specification has a division-by-zero failure when home_value is zero and cannot compute a payment count for any ordinary case because it provides no payment amount, principal-per-payment value, interest rate, or amortization schedule. The PMI-rate input also has a potentially severe percent-versus-decimal convention ambiguity.

## 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": {
    "loan_balance": 360000,
    "appraised_value": 450000,
    "pmi_rate_percent": 0.5,
    "principal_reduction_per_payment": 1500
  },
  "expected_outputs": {
    "ltv_percent": 80,
    "estimated_pmi_cost_per_year": 1800,
    "estimated_payments_to_80_ltv": 0
  },
  "working": "LTV = 360000 ÷ 450000 × 100 = 0.8 × 100 = 80%. PMI rate = 0.5 ÷ 100 = 0.005. Annual PMI = 360000 × 0.005 = 1800. 80% target balance = 450000 × 0.80 = 360000. Balance gap = 360000 − 360000 = 0. Payments = max(0, 0 ÷ 1500) = 0."
}
````

## Related workflows

[Mortgage SuitePMI drop-off](<https://guthlabs.ai/docs/instrument-workflows/mortgage-suite/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche4/tranche4-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
