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

instrument implementation / implementation-contract

Mortgage vs Rent Comparator implementation

A source-bound implementation contract for Mortgage vs Rent Comparator; deployment and executable qualification remain separate.

Status: VERIFIED_WITH_ERRATALifecycle: implementation-contract

Binding contract

This record describes what an executable surface must bind and validate. It does not claim that a public calculator, package, or production route is deployed.

Record owner
Guth Instruments
Lifecycle
verified-with-binding-errata
Evidence ID
t6-011
Effect
Computation or source lookup only

Input and validation requirements

The literal mortgage-payment formula produces 0/0 when the mortgage rate is exactly zero, so the instrument must reject the input or implement the explicit zero-interest limit P/n. The tests also expose an unresolved monthly-versus-annual rent-term convention and a sign ambiguity for negative appreciation.

Required corrections

[
  {
    "vector": "1-4",
    "field": "total_rent_cost / buy_minus_rent / break_even",
    "wrong": "rent cost includes the renter KEEPING their down payment (e.g. v1: 25545.65 rent + 63000 grown savings = 88545.65)",
    "correct": "total_rent_cost = rent outlays only (v1: 25545.65 under her stated monthly-growth convention); the down payment is the renter's asset, not a cost — at most the foregone RETURN belongs on the buy side",
    "cause": "economically inverted model that makes buying look better by ~the whole down payment; ALSO internally inconsistent: v1/v2/v4 add the grown balance, v3 adds the raw 50000 with no growth"
  }
]

Inspectable interface fixture

The sample below is evidence for interface and validation tests, not a production implementation.

{
  "inputs": {
    "home_price": 300000,
    "down_payment": 60000,
    "mortgage_principal": 240000,
    "annual_mortgage_rate": 0,
    "term_years": 30,
    "horizon_years": 1,
    "annual_property_tax_rate": 0.012,
    "annual_maintenance_rate": 0.01,
    "closing_costs": 6000,
    "annual_appreciation_rate": 0,
    "monthly_rent": 1800,
    "annual_rent_growth_rate": 0.03,
    "annual_investment_return": 0.05,
    "convention": "taxes and maintenance charged annually; rent growth applied to each successive monthly payment; t=0,...,11"
  },
  "expected_outputs": {
    "monthly_mortgage": 666.666667,
    "payments_over_horizon": 8000,
    "equity_built": 8000,
    "total_buy_cost": 14600,
    "total_rent_cost": 88545.6532,
    "buy_minus_rent": -73945.6532,
    "break_even_year_under_stated_rule": 1
  },
  "working": "Zero-rate edge case: monthly_mortgage=P/n=240000/(30×12)=240000/360=666.666667. Mortgage payments=666.666667×12=8000. Property taxes=300000×0.012×1=3600. Maintenance=300000×0.01×1=3000. Equity built=8000; appreciation=300000×0×1=0. Buy cost=8000+3600+3000+6000−8000−0=14600. Rent geometric sum=1800×[(1.03^12−1)/0.03]=1800×[(1.425760887−1)/0.03]=1800×14.19202956=25545.6532. Invested downpayment growth=60000×1.05^1=63000. Rent cost=25545.6532+63000=88545.6532. Difference=14600−88545.6532=−73945.6532."
}

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
  • tranche errata record