Page actions
instrument / verified-with-binding-errata
Mortgage vs Rent Comparator
The current ledger marks this instrument verified with errata that must be applied at binding time.
Status: VERIFIED_WITH_ERRATALifecycle: verified-with-binding-errata
Ledger state
The current ledger marks this instrument verified with errata that must be applied at binding time.
- Area
- Everyday & Life
- Tranche
- tranche-6
- Evidence ID
- t6-011
- Ledger rows
- 1
No ledger note is attached.
Review findings
The mortgage formula is conditionally standard, but the overall comparator is not financially well-defined enough to pass. The rent opportunity-cost term and treatment of the down payment are materially incorrect or at least dangerously ambiguous. The instrument should specify cash-flow timing, periodic units, equity and appreciation definitions, sale assumptions, discounting or ending-wealth methodology, and a deterministic break-even algorithm. The existing illustrative-only and not-financial-advice label is appropriate but should remain prominent, with sensitivity analysis for appreciation, rent growth, and investment returns.
Formula and scope findings
- The mortgage-payment formula is standard only when r is the periodic interest rate and n is the total number of payment periods; with an annual quoted rate and monthly payments, the formula must use r=annual_rate/12 and n=12×term_years.
- At r=0 the stated mortgage formula divides by zero; the required limiting case is monthly_mortgage=P/n.
- The rent formula is ambiguous about whether t runs from 0 through horizon_months−1 or from 1 through horizon_months, and whether rent_growth_rate is monthly or annual.
- Adding invested_downpayment_growth as DP×(1+i)^T treats the entire future value as a cost and also omits the initial down payment from total_buy_cost. For a cost comparison, the opportunity cost is normally DP×[(1+i)^T−1], or the model must explicitly compare ending wealth instead of costs.
- The bases and timing for property taxes and maintenance are unspecified: they could use original price, current appreciated value, or remaining balance, and could be paid monthly or annually.
- Equity_built must be defined as principal repaid, not total payments or total home equity. Appreciation should be based on an explicit home-price appreciation model and should account for selling costs if the horizon assumes liquidation.
Unit assumptions
- Home price, down payment, mortgage principal, taxes, maintenance, closing costs, rent, and outputs are in currency units.
- Mortgage rates in these vectors are nominal annual rates compounded monthly; monthly mortgage rate equals annual_rate/12.
- Mortgage n is the total number of monthly payments: 12×term_years.
- Property tax and maintenance percentages are annual percentages of the original home price and are charged once per year.
- Rent is paid monthly; rent_growth_rate is annual, so monthly rent in month t is rent×(1+annual_growth)^t/12 only if annual growth is converted consistently. For the vectors below, the stated convention is simpler: the supplied rent-growth rate is applied once per year while the monthly rent remains constant within each year.
- Investment return is annual and the stated formula uses DP×(1+return)^horizon_years as invested_downpayment_growth, exactly as written, even though that is not a conventional net-cost opportunity-cost treatment.
Boundary hardening
BREAK_CLAIMED · SELF_FLAGGED
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.
Errata and corrections
Tranche errata
total_rent_cost / buy_minus_rent / break_even · vector 1-4
rent cost includes the renter KEEPING their down payment (e.g. v1: 25545.65 rent + 63000 grown savings = 88545.65)
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
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 example
4 review vectors are recorded. One source-bound sample is shown below.
{
"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."
}
Related workflows
No source-defined multi-instrument workflow membership is recorded.
Sources and evidence
These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.
VERIFIED_LEDGER.json · VERIFIED_WITH_ERRATAevidence-tranche6/tranche6-results.jsonBOUNDARY_HAZARD_CATALOG.json