🔬 Reference Calculator Validation
Comparison against the Highlighter YTML reference calculators used by WLTH. Each verification session covers ≥ 5 scenarios.
Source: Highlighter YTML Purchase Calculator ↗
| Metric | Highlighter (Reference) | Our Calculator | Result |
|---|---|---|---|
| LVR | 70.00% | 70.00% | ✅ Match |
| Effective Rate | 6.94% | 6.94% | ✅ Match |
| Assessment Rate | 8.94% | 8.94% | ✅ Match |
| Total Income | $66,600 | $66,600 | ✅ Match |
| Loan Interest | $41,640 | $41,640 | ✅ Match |
| 15% SMSF Tax | $3,744 | $3,744 | ✅ Match |
| Net Income (after tax) | $62,856 | $62,856 | ✅ Match |
| NDI Ratio | 0.95 | 0.9535 | ✅ Match |
| Outcome | Borderline | Borderline | ✅ Match |
Source: Highlighter YTML Purchase Calculator ↗
| Metric | Highlighter (Reference) | Our Calculator | Result |
|---|---|---|---|
| LVR | 80.00% | 80.00% | ✅ Match |
| Effective Rate | 7.04% | 7.04% | ✅ Match |
| Assessment Rate | 9.04% | 9.04% | ✅ Match |
| Total Income | $86,600 | $86,600 | ✅ Match |
| Loan Interest | $42,240 | $42,240 | ✅ Match |
| 15% SMSF Tax | $6,654 | $6,654 | ✅ Match |
| Net Income (after tax) | $79,946 | $79,946 | ✅ Match |
| NDI Ratio | 1.20 | 1.2033 | ✅ Match |
| Outcome | Pass | Pass | ✅ Match |
Source: Highlighter YTML Purchase Calculator ↗
| Metric | Highlighter (Reference) | Our Calculator | Result |
|---|---|---|---|
| LVR | 60.00% | 60.00% | ✅ Match |
| Effective Rate | 7.34% | 7.34% | ✅ Match |
| Assessment Rate | 9.34% | 9.34% | ✅ Match |
| Total Income | $83,240 | $83,240 | ✅ Match |
| Loan Interest | $44,040 | $44,040 | ✅ Match |
| 15% SMSF Tax | $5,880 | $5,880 | ✅ Match |
| Net Income (after tax) | $77,360 | $77,360 | ✅ Match |
| NDI Ratio | 1.13 | 1.1376 | ✅ Match |
| Outcome | Pass | Pass | ✅ Match |
⚡ Key finding: IO loans are assessed as P&I over the remaining term after IO period (300 months), not IO-only at assessment rate. Repayment = $60,624/yr vs the naive IO-only $54,240/yr.
Source: Highlighter YTML Purchase Calculator ↗
| Metric | Highlighter (Reference) | Our Calculator | Result |
|---|---|---|---|
| LVR | 75.00% | 75.00% | ✅ Match |
| Effective Rate | 7.04% | 7.04% | ✅ Match |
| Assessment Rate | 9.04% | 9.04% | ✅ Match |
| Net Income (after tax) | $62,946 | $62,946 | ✅ Match |
| Annual Repayments | $60,624 | $60,619 | ✅ Match |
| NDI Ratio | 0.91 | 0.9133 | ✅ Match |
| Outcome | Fail | Fail | ✅ Match |
Source: Highlighter YTML Purchase Calculator ↗
| Metric | Highlighter (Reference) | Our Calculator | Result |
|---|---|---|---|
| LVR | 70.00% | 70.00% | ✅ Match |
| Effective Rate | 7.19% | 7.19% | ✅ Match |
| Total Income | $78,600 | $78,600 | ✅ Match |
| Loan Interest | $43,140 | $43,140 | ✅ Match |
| 15% SMSF Tax | $5,319 | $5,319 | ✅ Match |
| Net Income (after tax) | $73,281 | $73,281 | ✅ Match |
| NDI Ratio | 1.09 | 1.0902 | ✅ Match |
| Outcome | Pass | Pass | ✅ Match |
All Standard Scenarios — NDI Summary
All scenarios are validated by automated tests on every run. Live-verified scenarios have been individually confirmed against the Highlighter UI (minimum 5 per verification session). Design-derived scenarios follow the same policy rules and are regression-tested on every commit.
| Scenario | NDI Ratio | Outcome | Verification |
|---|---|---|---|
| S01 | 0.9535 | Borderline | 🔬 Live-verified |
| S02 | 1.2033 | Pass | 🔬 Live-verified |
| S03 | 0.9596 | Borderline | 📊 Design-derived |
| S04 | 1.1376 | Pass | 🔬 Live-verified |
| S05 | 0.9133 | Fail | 🔬 Live-verified |
| S06 | 0.8928 | Fail | 📊 Design-derived |
| S07 | 0.7600 | Fail | 📊 Design-derived |
| S08 | 0.9535 | Borderline | 📊 Design-derived |
| S09 | 0.5383 | Fail | 📊 Design-derived |
| S10 | 0.9069 | Fail | 📊 Design-derived |
| S11 | 0.9013 | Fail | 📊 Design-derived |
| S12 | 0.9444 | Fail | 📊 Design-derived |
| S13 | 1.0902 | Pass | 🔬 Live-verified |
| S14 | 0.6750 | Fail | 📊 Design-derived |
| S15 | 0.9535 | Borderline | 📊 Design-derived |
tests/calculator.test.ts
| Test | Result | Duration |
|---|---|---|
| mpmt: $600k @ 8.94% over 360mo | ✅ pass | 0 ms |
| ioP: $600k @ 8.94% | ✅ pass | 0 ms |
| calcAR: floor at RBA+3% when rate is low | ✅ pass | 0 ms |
| calcAR: rate+2% dominates when rate is high | ✅ pass | 0 ms |
| stressDebt: existing debt stress ≥ 110% of actual repayment | ✅ pass | 0 ms |
| Test | Result | Duration |
|---|---|---|
| Variable: residential 60% LVR P&I = 6.84% | ✅ pass | 0 ms |
| Variable: residential 70% LVR P&I = 6.94% | ✅ pass | 0 ms |
| Variable: residential 80% LVR P&I = 7.04% | ✅ pass | 0 ms |
| Variable: residential IO 75% LVR = 7.04% (70%<LVR≤80% tier, no separate IO loading) | ✅ pass | 0 ms |
| Variable: residential IO 80% LVR = 7.44% (loading applies) | ✅ pass | 0 ms |
| Variable: commercial 60% LVR = 7.34% (+0.50 loading) | ✅ pass | 0 ms |
| Fixed Special: residential PI = 7.09% | ✅ pass | 0 ms |
| Easy Refi Special: residential ≤70% LVR = 6.69% | ✅ pass | 0 ms |
| Test | Result | Duration |
|---|---|---|
| S01: Residential purchase 70% LVR, P&I variable, 1 member $25k contrib, $1,000/wk rent | ✅ pass | 9 ms |
| S02: Residential purchase 80% LVR, P&I variable, 2 members ($25k + $20k), $1,000/wk rent | ✅ pass | 0 ms |
| S03: Residential purchase 60% LVR, P&I variable — lowest rate tier | ✅ pass | 0 ms |
| S04: Commercial purchase 60% LVR, P&I variable — commercial rate loading | ✅ pass | 0 ms |
| S05: Residential IO loan 75% LVR — variable IO rate at 70%<LVR≤80% tier | ✅ pass | 0 ms |
| S06: Residential IO loan 80% LVR — IO loading +0.40% applies | ✅ pass | 0 ms |
| S07: Purchase with one existing SMSF debt — stress tested | ✅ pass | 0 ms |
| S08: Purchase — liquidity fails (insufficient SMSF cash post-settlement) | ✅ pass | 0 ms |
| S09: Purchase — net asset test fails (large existing debts exceed assets) | ✅ pass | 0 ms |
| S10: Fixed Rate Established 1yr, residential 70% LVR, P&I | ✅ pass | 0 ms |
| S11: Fixed Rate Established 4yr (higher rate tier), residential 70% LVR, P&I | ✅ pass | 0 ms |
| S12: Fixed Rate Special (submit by 30 Jun 2026), residential 70% LVR, P&I | ✅ pass | 0 ms |
| S13: Member with proposed contributions — capped at 10% of gross income | ✅ pass | 0 ms |
| S14: Investment portfolio $500k deeming at 4%, plus contributions | ✅ pass | 0 ms |
| S15: Refinance (not purchase) — requiredFunds = costs only | ✅ pass | 0 ms |
| Test | Result | Duration |
|---|---|---|
| ER01: Easy Refi clean pass — lower rate, lower P&I, LVR ≤80%, checkboxes ticked | ✅ pass | 0 ms |
| ER02: Easy Refi fails — new rate is HIGHER than current rate | ✅ pass | 0 ms |
| ER03: Easy Refi fails — repayments not lower (current repayment is very low) | ✅ pass | 0 ms |
| ER04: Easy Refi fails — LVR exceeds 80% after capitalising fees | ✅ pass | 0 ms |
| ER05: Easy Refi fails — lower cost product checkbox not ticked | ✅ pass | 0 ms |
tests/reference-comparison.test.ts
| Test | Result | Duration |
|---|---|---|
| LVR = 70.00% (Highlighter confirmed) | ✅ pass | 0 ms |
| Assessment rate = 8.94% (Highlighter confirmed) | ✅ pass | 0 ms |
| Total income = $66,600 (Highlighter confirmed) | ✅ pass | 0 ms |
| Loan interest deduction = $41,640 (Highlighter confirmed) | ✅ pass | 0 ms |
| 15% SMSF tax = $3,744 (Highlighter confirmed) | ✅ pass | 0 ms |
| Net income after tax = $62,856 (Highlighter confirmed) | ✅ pass | 0 ms |
| NDI = 0.95 — borderline (Highlighter confirmed) | ✅ pass | 0 ms |
| Test | Result | Duration |
|---|---|---|
| LVR = 80.00% (Highlighter confirmed) | ✅ pass | 0 ms |
| Total income = $86,600 (Highlighter confirmed) | ✅ pass | 0 ms |
| 15% SMSF tax = $6,654 (Highlighter confirmed) | ✅ pass | 0 ms |
| Net income after tax = $79,946 (Highlighter confirmed) | ✅ pass | 0 ms |
| NDI ≥ 1.15 — clear pass (Highlighter confirmed) | ✅ pass | 0 ms |
| Test | Result | Duration |
|---|---|---|
| LVR = 60.00% (Highlighter confirmed) | ✅ pass | 0 ms |
| Total income = $83,240 (Highlighter confirmed) | ✅ pass | 0 ms |
| Loan interest deduction = $44,040 (Highlighter confirmed) | ✅ pass | 0 ms |
| 15% SMSF tax = $5,880 (Highlighter confirmed) | ✅ pass | 0 ms |
| Net income after tax = $77,360 (Highlighter confirmed) | ✅ pass | 0 ms |
| NDI ≥ 1.10 — clear pass (Highlighter confirmed) | ✅ pass | 0 ms |
| Test | Result | Duration |
|---|---|---|
| LVR = 75.00% (Highlighter confirmed) | ✅ pass | 0 ms |
| Net income after tax = $62,946 (Highlighter confirmed) | ✅ pass | 0 ms |
| Annual repayments ≈ $60,624 — P&I over 300 months (Highlighter confirmed) | ✅ pass | 0 ms |
| NDI = 0.91 — FAIL (Highlighter confirmed) | ✅ pass | 0 ms |
| Test | Result | Duration |
|---|---|---|
| LVR = 70.00% (Highlighter confirmed) | ✅ pass | 0 ms |
| Total income = $78,600 (Highlighter confirmed) | ✅ pass | 0 ms |
| 15% SMSF tax = $5,319 (Highlighter confirmed) | ✅ pass | 0 ms |
| Net income after tax = $73,281 (Highlighter confirmed) | ✅ pass | 0 ms |
| NDI ≥ 1.05 — clear pass (Highlighter confirmed) | ✅ pass | 0 ms |
| Test | Result | Duration |
|---|---|---|
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| NDI within ±0.005 of expected | ✅ pass | 0 ms |
| Pass/borderline outcome matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Net income within ±$5 | ✅ pass | 0 ms |
| Test | Result | Duration |
|---|---|---|
| LVR within ±0.1% | ✅ pass | 0 ms |
| Rate/repayment/LVR flags match | ✅ pass | 0 ms |
| Overall pass/fail matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Rate/repayment/LVR flags match | ✅ pass | 0 ms |
| Overall pass/fail matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Rate/repayment/LVR flags match | ✅ pass | 0 ms |
| Overall pass/fail matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Rate/repayment/LVR flags match | ✅ pass | 0 ms |
| Overall pass/fail matches | ✅ pass | 0 ms |
| LVR within ±0.1% | ✅ pass | 0 ms |
| Rate/repayment/LVR flags match | ✅ pass | 0 ms |
| Overall pass/fail matches | ✅ pass | 0 ms |