Calculation catalog › Insights

Insight asset location swappable exposure

Dollars of bond or stock exposure the preferred asset-location swap would relocate between account wrappers while holding the household mix constant.

Field: Swappable class exposure Unit: US dollars Basis: nominal dollars Computed by: Engine Status: Complete chain

Appears in: insights (asset-location card impact "Up to $X of class exposure could be relocated")

Calculation records

  • Swappable class exposure of the preferred asset-location candidate Model record, justified by derivation

    Purpose: The dollar amount of class exposure the preferred bounded asset-location swap would relocate while holding the household mix constant.

    Statement: Among bounded asset-location candidates generated for a plan that uses static allocation on multiple accounts, screen() selects the candidate whose id is asset-location-bonds-to-traditional when that id is present and otherwise the first candidate in generator order, then publishes that candidate's metadata.swappedDollars (0 when absent). It never prices ending-estate deltas. Units: nominal dollars. Rounding: the generator stores Math.round(dollars); the worksheet copies that metadata.

    Formula: selected = find(id = asset-location-bonds-to-traditional) ?? first; exposure = swappedDollars(selected) ?? 0

    • id: Generator candidate identifier, in generator order (unit: 1) (domain: string)
    • swappedDollars: Class exposure the selected candidate relocates between wrappers (unit: usd) (domain: >= 0, or absent)

    Timing: screen-time metadata of a bounded swap; the estate delta is ignored here and priced on the full year-by-year projection by evaluate()

    Rounding: the generator rounds swapped dollars to whole dollars; the card publishes whole-dollar strings (formatWholeUsd, Math.round) and the evidence asserts the published figure

    Limits:

    • A screening choice, not a claim that asset location always helps
    • screen() never prices candidates; selection is by preferred id then generator position, independent of exposure size
    • The largest-positive ending-after-tax-estate-delta rule belongs to evaluate(), which runs the full year-by-year projection, not to this published screen quantity

    Provenance: derived by codex, implemented by grok.

    Independent review: cursor

    Gates (6 of 6 pass): fixture registers a test: pass; pins resolve: pass; families exist: pass; worksheet exists: pass; mutation receipt exists: pass; provenance independent: pass

    Worksheet: insight-asset-location-swappable-exposure.md Mutation receipt: insight-asset-location-swappable-exposure.mutation.md

    Evidence tests: assetLocation.evidence.test.ts

    Implemented in: assetLocation.ts

    Is the number of: insight-asset-location-swappable-exposure

Engine source: engine/src/insights/detectors/assetLocation.ts (assetLocation.screen (swapped from assetLocationGenerator metadata))

The evidence links on this page (each record's worksheet, mutation receipt, evidence tests and implementation, and the source links) are pinned to engine commit 2624dbdba9fd, committed 2026-10-11. The live calculation index and output-family census links point at the repository's main branch, so you can check this snapshot against them.