# 2027 collateral-loan calculator

Updated October 19, 2026. Factor rule set: `life-2027-collateral-v1.2`. Optional insurer bridge: `life-2027-collateral-bridge-v1.0`.

Phase 1 added the calculation module, `naic-collateral-engine.js`. Phase 2 connects it to the Investment interface with four loan inputs, automatic LTV/OC and a 2026 versus 2027 comparison. Basic drafts and exports retain the loan inputs. Phase 3 adds dedicated NAV stress, minimum paydown calculations, valuation support and calculation disclosures. Phase 5 adds an optional existing-loan tax and component bridge to Insurer Impact while retaining its historical aggregation estimate.

## Regulatory source register

| Source | Implementation use |
|---|---|
| [Adopted 2025-16-L MOD](https://content.naic.org/sites/default/files/inline-files/2025-16-l.pdf), PDF pages 1–4 | Adoption, effective year, verification prerequisite, factors, LR008 rows and C1cs classification metadata |
| [Schedule BA reporting amendment](https://content.naic.org/sites/default/files/inline-files/2024-19BWG_Modified_0.pdf), PDF pages 3–5 | Collateral classification and fair-value/BACV reporting basis |
| [NAIC adopted-modifications register](https://content.naic.org/capital_adequacy_task_force.htm) | June 30, 2026 adoption; year-end 2027 effective date |

The implemented factor register is:

| Printed LR008 OC band | LP / LLC / JV | Residual | LP row | Residual row |
|---|---:|---:|---|---|
| Below 111%, or no independent verification | 30% | 45% | 43.2 | 45.2 |
| At least 111%, below 143% | 24% | 36% | 43.3 | 45.3 |
| At least 143%, below 200% | 18% | 27% | 43.4 | 45.4 |
| At least 200% | 15% | 22.5% | 43.5 | 45.5 |

## Boundary convention

The engine follows the numerical OC thresholds printed in LR008. OC is collateral fair value divided by loan BACV. LTV is the reciprocal. The summary's LTV labels are not substituted for the OC thresholds.

This is an explicit implementation convention, not an NAIC clarification of the summary/table discrepancy. For example, a $70 loan against $100 of collateral has exactly 70% LTV but OC of 142.857142…%, below 143%. This module therefore assigns 24% for partnership collateral and includes `SUMMARY_LTV_BOUNDARY_DIFFERENCE` in its warnings. A future clarification or consolidated instruction change requires a new version of this rule set.

Band selection uses cross-products of exact integer cents. No displayed percentage or rounded ratio is used to select a factor. A warning identifies any result that differs from literal 90% / 70% / 50% summary LTV cutoffs.

## Input contract

```js
const result = NAICCollateralEngine.calculate({
  collateral_type: 'partnership',
  carrying_value: '100000000.00',
  collateral_fair_value: '125000000.00',
  independent_verification: 'yes'
}, 2027);
// factor: 0.24; ltv: 0.8; oc: 1.25; baseCharge: 24000000
```

The browser global is `NAICCollateralEngine`; CommonJS consumers can require the same file. The module needs no DOM, network, storage or external dependencies. The page loads it before the investment interface.

- `collateral_type`: `partnership` or `residual`. `other` returns `review_required` without a factor or charge. Unrecognized classifications are blocked. Product names and ratings do not establish a classification.
- `carrying_value` and `collateral_fair_value`: nonnegative USD strings or numbers with at most two decimal places. Commas and surrounding whitespace are accepted. Sub-cent, missing, negative and out-of-range inputs are blocked rather than rounded. The maximum is $90,071,992,547,409.91 per monetary input; large inputs should be supplied as strings.
- `independent_verification`: `yes`, `no` or `unknown`. `no`, `unknown`, blank and missing verification receive the maximum factor, with a warning. Invalid categorical values are blocked. `yes` is a caller-supplied assertion; the software does not authenticate valuation evidence.
- The year defaults to numerical `2027`; all other years are blocked. The existing bond engine continues to support its own 2026 scope.

## Output contract and limits

`factor`, `baseCharge`, `ltv`, `oc`, `lr008Line`, `component`, sources, errors, warnings and boundary policy travel together. Ratios use decimal form, so `0.8` means 80%. The charge is applied to entered loan BACV. `baseChargeExact` preserves the calculation as an exact decimal string, including sub-cent capital charges; `baseCharge` is the numerical convenience value. No filing rounding is imposed.

Zero BACV returns `no_exposure`, a zero charge, undefined OC (`null`) and no factor band. Zero collateral value with positive BACV produces zero OC, undefined LTV (`null`), the maximum factor and an admissibility warning. Undersecured inputs flag the collateral-value shortfall without deciding the admitted balance or changing BACV automatically.

`component: C1cs` is classification metadata only. The engine does not populate post-tax components or calculate tax effects, concentration, AVR, reinsurance, insurer ACL, attributed equity or pricing. `filingEquivalent` remains false. Full 2027 filing reconciliation and independent insurer reference output remain open.

## Phase 2: Investment interface and comparison

Select **Collateral loan** as the asset classification. The row shows collateral type, loan carrying value, collateral fair value and independent verification. Bond designation and tranche fields are hidden for that row. Choosing a collateral type is a user-supplied classification assertion; it is not an automated eligibility determination. For mixed collateral, choose the primary collateral source.

The comparison layer in `naic-inputs.js` applies a 6.8% 2026 baseline to the same entered BACV and compares it with the 2027 result. Source: [adopted 2026-09-L MOD](https://content.naic.org/sites/default/files/inline-files/2026-09-l.pdf), LR008 line 51, PDF page 6. This assumes the BACV qualifies for Schedule BA collateral-loan treatment. Capital charges and their difference retain exact decimal strings; the screen rounds dollars to cents.

Bond totals include only rows routed to the existing 2026 engine. Collateral-loan totals show their own 2026 baseline and 2027 charge. There is no combined total across years. An incomplete or unsupported collateral loan withholds all collateral totals; resolved bond totals remain available. Loan-only portfolios hide the unused bond summary. The bond sensitivity selector contains only bond and CLO rows.

Phase 2 used draft version 2. Phase 3 uses version 3 and migrates both original version 1 and Phase 2 drafts on the first edit. Original and current CSV templates both import. Phase 2 templates appended `collateral_type`, `collateral_fair_value` and `independent_verification`; current templates also include the Phase 3 stress and valuation fields below. Use classification `collateral_loan` for a loan row. Calculation JSON exports include inputs, both rule years, exact charges, original row order and source references.

## Verification

`tests/naic-collateral.test.cjs` contains 15 test groups covering both factor schedules, each printed threshold and one-cent neighbors, verification, the 50% floor, the $100MM examples, NAV decline and BACV reduction, zero/unsupported inputs, exact decimal charges, scale invariance and browser-module initialization. The existing four NAIC regression files are run with the new suite.

Phase 2 adds 11 interface/model test groups for both years, mixed portfolios, four-field rendering, live recalculation, clearing stale results, unknown verification, shortfall notices, draft/CSV migration, removal/undo and export contents. The existing bond, scenario, insurer and filing regression files are included in verification.

Live visual browser verification of Phase 2 remains open. The managed preview service failed before serving the page because its container could not mount `/proc`. Interface checks use a simulated DOM; they do not establish mobile, zoom, native file-dialog or screen-reader behavior.

## Phase 3: NAV stress and minimum paydown

Each loan has three initially collapsed sections: **Stress collateral value**, **Valuation and eligibility**, and **Calculation details**. The main form still has the four loan inputs. Stress and supporting inputs are saved with the loan and included in CSV and calculation JSON exports.

`NAICCollateralEngine.stress(record, decline)` accepts a decline from 0% to 100%, with at most two decimal places. A blank decline leaves the scenario unselected. An invalid decline clears the scenario result without changing the base comparison. The baseline BACV and verification selection stay fixed.

Stressed fair value is `floor(original collateral cents × (10,000 − decline basis points) / 10,000)`, in cents. The original factor calculation is then run on the stressed value. The screen shows stressed collateral value, LTV, factor, charge and the change from the base 2027 charge. Base portfolio totals do not include the stress scenario.

When the stress moves a verified loan into a higher-factor band, the target is the original OC band. Maximum remaining BACV in cents is `floor(stressed collateral cents × 100 / target OC percent)`. The minimum paydown is original BACV less that remaining balance. This rounds paydown up to cents. The after-paydown calculation is rerun through the factor engine and exported with the result.

The paydown assumes repayment is funded outside the pledged collateral and reduces BACV dollar for dollar while stressed collateral value stays fixed. It is a regulatory-factor sensitivity, not a credit-agreement paydown requirement. A repayment drawn from the pledged collateral needs a different model.

For the $100MM loan against $125MM of LP interests, a 12% decline leaves $110MM of collateral. The factor rises from 24% to 30%, increasing the pre-tax charge by $6MM. Under the printed 111% OC threshold, minimum paydown is **$900,900.91**, leaving BACV of **$99,099,099.09** and restoring the 24% factor. A paydown one cent smaller fails the threshold. The earlier illustrative $1MM paydown also restores the band, but is not the minimum under this convention.

If the factor does not change, no restoring paydown is needed. Missing or unknown verification leaves maximum factors in place and gives no paydown-based verification benefit. If no positive cent balance can meet the original band, the result calls for full repayment and does not claim a positive balance has regained the band. Zero BACV gives a zero charge.

## Phase 3: valuation support and saved fields

| Field | Accepted values / use |
|---|---|
| `nav_decline_pct` | Blank, or 0–100 with at most two decimal places |
| `verification_method` | Blank, `certification`, `valuation`, `reasonableness`, or `combination` |
| `valuation_reference` | Optional document name, link text or page reference, up to 2,000 characters |
| `audited_financials` | `yes`, `no`, or `unknown`; shown for partnership collateral |
| `collateral_qualification` | `yes`, `no`, or `unknown` |

The permitted verification approaches come from adopted 2025-16-L MOD, LR008 instructions, PDF page 3. A reference or selected method does not authenticate supporting evidence or replace the main verification selection. Marking a required audit as absent or collateral as nonqualifying produces an admissibility review message and labels charges as illustrative. These fields do not establish an admitted amount or change the underlying factor table.

The accounting support for pledged equity audits and qualifying collateral is [NAIC SAPWG materials, March 24, 2025](https://content.naic.org/sites/default/files/national_meeting/3-24-25%20Hearing%20SAPWG.pdf), PDF pages 59–60, SSAP No. 21 paragraph 4 and footnote 2. Applicable audits of equity/unit collateral in LPs, LLCs, JVs and SCAs are annual under SSAP Nos. 48/97. Keep the supporting valuation and audit evidence for the relevant reporting periods.

The calculation disclosure shows the BACV/fair-value ratios, selected band, both charge formulas, reporting lines, source links and the printed OC boundary convention. Stress rounding and repayment funding assumptions are displayed alongside the stress result.

Draft version 3 adds the new fields while preserving version 1 and version 2 records. All three CSV header versions import. The current template exports all fields. Scenario errors remain scoped to the scenario, and unreadable saved drafts are preserved.

Nine stress-engine test groups cover charge jumps, cent-accurate minimum repayment, multi-band migration, both collateral types, conservative rounding, zero values, invalid stress inputs, verification and large inputs. Five additional interface groups cover live stresses, clearing stale scenarios, valuation flags, draft/CSV migration, scenario exports and calculation disclosures. Live visual verification remains open for the same preview limitation described above.

## Phase 4: release verification

The final automated suite passes 50 checks. Saved drafts now share the categorical validation used by imports; unsupported saved values are preserved for review instead of loading into a dropdown with a different visible choice. Near an OC threshold, an added rounding notice explains when the displayed two-decimal percentage rounds to the threshold but the exact value remains below it. The printed OC policy and factors are unchanged.

Final checks include the file-import handler, valid appends, export/re-import, invalid files with no draft mutation, 2 MB/500-position limits, keyboard mode navigation and static labels/references. See the [release validation record](naic-validation.md). Live desktop/mobile/zoom, native file-dialog and screen-reader verification remain open because the managed preview service is unavailable. Automatic insurer capital integration and complete 2027 filing reconciliation are outside this release.


## Phase 5: optional existing-loan insurer bridge

The optional bridge is a rule-change sensitivity for a loan already included in a 2026 insurer baseline. It is available through **Review insurer impact** in Investment or the collapsed **2027 loan rule-change bridge** section in Insurer Impact. The four main loan inputs are unchanged.

The user selects one loan and either its current collateral value or the existing NAV stress. Positive BACV, completed baseline components, supplied baseline tax treatment, net concentration / other adjustments, TAC support and explicit assumptions are required. Known collateral qualification, audit or collateral-shortfall issues block the bridge. Unknown eligibility fields require the user's explicit confirmation that the entire entered BACV is admitted; this confirmation is an assumption and not an independent admissibility determination. No purchases, disposals, paydowns or funding changes are modeled.

| Bridge item | Calculation / required input |
|---|---|
| Remove old loan base charge | Supplied 2026 post-tax amount already included in C1o; not the gross 6.8% charge |
| Add 2027 loan base charge | Adopted LR008 charge × (1 − 21%), added to C1cs |
| Tax effect | LR030 line 127 for LP / LLC / JV collateral; line 128 for residual collateral |
| Concentration and other portfolio effects | Separate signed, post-tax net adjustments to C1o and C1cs; explicit zeros if unchanged |
| TAC and AVR effects | Separate signed TAC adjustment; explicit zero if unchanged |
| Other components | Copied unchanged from baseline, as explicitly confirmed |
| Funding | Unchanged existing holding; sources and uses set to zero |

Primary source: [adopted 2025-16-L MOD](https://content.naic.org/sites/default/files/inline-files/2025-16-l.pdf), LR030 PDF page 7, lines 127–128 and 134; LR031 PDF page 8, lines 14–21. These pages establish the 21% prescribed tax factors and the C1cs pre-tax-to-post-tax mapping. LR010 concentration changes also appear in the adopted modification, but this module requires externally supported net concentration adjustments because issuer grouping, ranking, existing exposures and adjustment allocation require insurer-wide information.

For the $100MM loan against $125MM of verified partnership collateral, the 2027 pre-tax base charge is $24MM, prescribed tax effect is $5.04MM and post-tax base charge added to C1cs is $18.96MM. The old post-tax loan base charge removed from C1o is supplied separately. At a 12% NAV decline, the 2027 amounts become $30MM pre-tax and $23.7MM post-tax. The bridge never treats either gross charge or its difference as required equity.

`naic-collateral-bridge.js` is a standalone module with `build(input)`. Decimal arithmetic retains eight-place dollar strings for the prescribed tax bridge. The existing insurer aggregation remains a floating-point estimate. The baseline measurement year remains 2026, the collateral scenario uses the adopted 2027 rules and insurer aggregation remains the verified 2025 baseline. Results and saved comparisons explicitly retain these three dates and `filingEquivalent: false`. No full 2027 aggregation, filing forecast or investment-capacity result is asserted.

Review computes the bridge and estimated capital impact without changing insurer fields. Apply recomputes against the current inputs, checks that neither insurer nor Investment inputs changed after review, and replaces the scenario components, TAC, funding and adjustment support. Reapplication uses baseline values and does not compound the charge. Undo restores the original scenario, including after reapplication or draft reload. Manual insurer edits detach active bridge provenance. Applied loan inputs are fixed snapshots; later Investment edits do not update them automatically.

The existing insurer draft format retains optional bridge metadata. Restore recomputes the bridge and checks its applied fields before accepting it. Invalid provenance is preserved without loading the affected draft or overwriting its stored copy. Insurer calculation exports and saved scenario exports retain the complete input snapshot, tax mapping, source, assumptions and year distinctions. Unapplied bridge form entries are not saved.
