zfin/docs/guides/set-up-accounts.md
Emil Lerch 74fc219afd
All checks were successful
Generic zig build / build (push) Successful in 5m48s
Generic zig build / publish-macos (push) Successful in 11s
Generic zig build / deploy (push) Successful in 23s
add docs/guides
2026-06-22 14:53:53 -07:00

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)