Page actions
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.
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.jsonevidence-tranche6/tranche6-results.jsontranche errata record