101 lines
3.7 KiB
Markdown
101 lines
3.7 KiB
Markdown
# Map your accounts
|
|
|
|
**Goal:** create an `accounts.srf` that tags each account with its tax
|
|
treatment (and, optionally, its institution and maintenance cadence).
|
|
This unlocks the **By Tax Type** breakdown, an umbrella-insurance
|
|
exposure estimate, and broker reconciliation.
|
|
|
|
**You'll need:** a `portfolio.srf` whose lots use `account::` labels
|
|
([build one first](set-up-your-portfolio.md)). Full field list:
|
|
[`accounts.srf` reference](../reference/config/accounts-srf.md).
|
|
|
|
## 1. List your accounts with a tax type
|
|
|
|
One record per account. The `account::` name must match the
|
|
`account::` value on your lots **exactly**. The minimum is a tax type:
|
|
|
|
```srf
|
|
#!srfv1
|
|
account::Pat 401k,tax_type::traditional
|
|
account::Pat Roth,tax_type::roth
|
|
account::Joint taxable,tax_type::taxable
|
|
account::Family HSA,tax_type::hsa
|
|
```
|
|
|
|
The four recognized tax types are `taxable`, `roth`, `traditional`,
|
|
and `hsa`. Run analysis to see the breakdown:
|
|
|
|
```bash
|
|
ZFIN_HOME=~/finance zfin analysis
|
|
```
|
|
|
|
```
|
|
By Tax Type
|
|
Traditional (Pre-Tax) █████████████████▋ 58.9% $815,290.06
|
|
Taxable ██████▍ 21.6% $299,010.60
|
|
Roth (Post-Tax) █████ 16.9% $233,732.95
|
|
HSA (Triple Tax-Free) ▊ 2.5% $35,104.20
|
|
```
|
|
|
|
Accounts you don't list show up as "Unknown."
|
|
|
|
## 2. Add institution and account number (for auditing)
|
|
|
|
If you plan to reconcile against brokerage exports
|
|
([audit guide](audit-against-brokerage.md)), add the institution and a
|
|
(placeholder) account number so zfin can match export files to
|
|
accounts:
|
|
|
|
```srf
|
|
account::Pat 401k,tax_type::traditional,institution::fidelity,account_number::P401
|
|
account::Joint taxable,tax_type::taxable,institution::schwab,account_number::JT01
|
|
```
|
|
|
|
Recognized institution keys include `fidelity`, `schwab`, `vanguard`,
|
|
and `wells_fargo`.
|
|
|
|
## 3. Tune the maintenance cadence
|
|
|
|
[`zfin audit`](../reference/cli/audit.md) (run with no flags) nags you
|
|
about accounts you haven't refreshed recently. The default cadence is
|
|
`weekly`; relax or silence it per account:
|
|
|
|
```srf
|
|
account::Family HSA,tax_type::hsa,update_cadence::quarterly
|
|
account::Old Rollover,tax_type::traditional,update_cadence::none
|
|
```
|
|
|
|
## 4. Advanced flags
|
|
|
|
Two flags change how analysis treats an account. Both are optional --
|
|
see the reference for details:
|
|
|
|
- **`shielded:bool:false`** -- mark a pre-tax account that is *not*
|
|
judgment-protected (deferred comp, a weak-state IRA) so it counts
|
|
toward your [umbrella-insurance exposure](read-your-portfolio.md#umbrella-exposure)
|
|
-- the slice of net worth a personal umbrella liability policy is
|
|
meant to cover.
|
|
- **`cash_is_contribution:bool:true`** -- treat cash increases on this
|
|
account as real external contributions in
|
|
[`zfin contributions`](track-contributions.md), instead of internal
|
|
noise.
|
|
|
|
## Example (from `examples/pre-retirement-both`)
|
|
|
|
```srf
|
|
#!srfv1
|
|
account::Pat 401k,tax_type::traditional,institution::fidelity,account_number::P401
|
|
account::Pat Roth,tax_type::roth,institution::fidelity,account_number::PROTH
|
|
account::Sam 401k,tax_type::traditional,institution::vanguard,account_number::S401
|
|
account::Joint taxable,tax_type::taxable,institution::schwab,account_number::JT01
|
|
account::Family HSA,tax_type::hsa,institution::fidelity,account_number::HSA01
|
|
```
|
|
|
|
## Next steps
|
|
|
|
- [Read your portfolio](read-your-portfolio.md) -- the breakdowns this unlocks.
|
|
- [Audit against your brokerage](audit-against-brokerage.md) -- put `institution`/`account_number` to work.
|
|
|
|
---
|
|
|
|
[Previous: Classify your holdings](classify-holdings.md) | [Next: Read your portfolio](read-your-portfolio.md) | [Documentation home](../README.md)
|