Asset Location Strategy: Which Accounts Hold Which Investments

I’ve been reading about asset location—the practice of strategically placing investments in the right account types to minimize taxes—and wanted to share how I’m tracking this in Beancount.

Why Asset Location Matters

According to Vanguard research, proper asset location can add up to 30 basis points annually to your returns—that’s $112,000 extra on a $1M portfolio at retirement.

The core principle from Bogleheads is deceptively simple:

  • Tax-inefficient assets (bonds, REITs) → Tax-advantaged accounts (Traditional IRA, 401k)
  • Tax-efficient assets (index funds, growth stocks) → Taxable brokerage accounts
  • Highest growth potential → Roth IRA (tax-free growth forever)

My Beancount Account Structure

I’ve set up my chart of accounts to track asset location explicitly:

; Tax-advantaged (Traditional - tax-deferred)
Assets:Investments:IRA:Traditional:Bonds
Assets:Investments:IRA:Traditional:TIPS
Assets:Investments:401k:Bonds

; Tax-advantaged (Roth - tax-free)
Assets:Investments:IRA:Roth:TotalStock
Assets:Investments:IRA:Roth:International

; Taxable (regular brokerage)
Assets:Investments:Taxable:VTI
Assets:Investments:Taxable:VXUS
Assets:Investments:Taxable:MuniBonds

Cross-Account Allocation Query

The challenge is tracking overall allocation while respecting location. Here’s my query:

SELECT 
  root(account, 4) AS location,
  currency,
  sum(value(position)) AS value
WHERE account ~ 'Assets:Investments'
GROUP BY location, currency

Questions

  1. How do you handle the 60/40 split when your 401k options are limited?
  2. Anyone tracking “tax cost” of different placements over time?
  3. Do you rebalance within account types only, or allow cross-account trades?

For question #1 about limited 401k options—this is extremely common and often overlooked in the academic literature.

My employer’s 401k only offers target-date funds, an S&P 500 index, a bond fund, and company stock. No international options, no TIPS.

My Workaround

I treat the 401k as one piece of the puzzle and compensate in other accounts:

; 401k (limited options - using for bonds)
Assets:Investments:401k:BondFund      50,000 USD  ; All the bonds I can fit
Assets:Investments:401k:SP500         30,000 USD  ; Remaining space

; IRA (full flexibility - fill gaps)
Assets:Investments:IRA:Traditional:TIPS     20,000 USD
Assets:Investments:IRA:Roth:VXUS            40,000 USD  ; International here

; Taxable (most tax-efficient assets)
Assets:Investments:Taxable:VTI              60,000 USD

The Key Insight

Don’t try to achieve your target allocation within each account. Achieve it across all accounts combined. The 401k might be 100% bonds even though your overall allocation is 70/30 stocks/bonds.

Query for Combined Allocation

SELECT 
  currency,
  sum(value(position)) AS total
WHERE account ~ 'Assets:Investments'
GROUP BY currency
ORDER BY total DESC

This shows your true asset allocation regardless of which account holds what.

Tax professional here. I want to add some nuance to the “bonds in tax-deferred” conventional wisdom.

When Bonds in Taxable Makes Sense

  1. Municipal bonds: Already tax-exempt, so no benefit from tax-deferred accounts. Keep these in taxable.

  2. Very long time horizon: If you won’t touch the tax-deferred account for 30+ years, stocks might be better there due to higher expected growth.

  3. Roth conversion planning: If you’re planning Roth conversions, having bonds in Traditional means lower conversion amounts = lower tax bills.

The REIT Exception

REITs are stocks, but they’re extremely tax-inefficient:

  • Dividends taxed as ordinary income (not qualified)
  • Often 5-8% yields generating taxable income annually

REITs absolutely belong in tax-advantaged accounts despite being equity.

Tracking Tax Efficiency by Asset

I use metadata to flag tax efficiency:

2026-01-01 commodity VTI
  asset-class: "Equity"
  tax-efficiency: "High"  ; Low turnover, qualified dividends

2026-01-01 commodity VNQ
  asset-class: "REIT"
  tax-efficiency: "Low"   ; Non-qualified dividends

2026-01-01 commodity VTIP
  asset-class: "Bonds"
  tax-efficiency: "Low"   ; Interest taxed as ordinary income

This lets me query for misplaced assets:

SELECT account, currency
WHERE account ~ 'Taxable' 
  AND meta("tax-efficiency") = "Low"

For rebalancing (question #3), I’ve settled on cross-account rebalancing but with one rule: never create a taxable event just to rebalance.

My Rebalancing Priority

  1. Use new contributions first - Direct new 401k/IRA contributions to underweight assets
  2. Rebalance within tax-advantaged accounts - No tax consequences
  3. Rebalance in taxable only if: harvesting losses OR holding period is already long-term

Practical Example

Say I’m overweight stocks and underweight bonds:

; DON'T: Sell VTI in taxable (triggers capital gains)
2026-03-15 * "Rebalance - AVOID"
  Assets:Investments:Taxable:VTI  -50 VTI {100 USD}
  Income:CapitalGains             -1,500 USD  ; Tax hit\!
  Assets:Investments:Taxable:BND  50 BND {130 USD}

; DO: Redirect 401k contribution
2026-03-15 * "401k contribution - rebalance via contribution"
  Assets:Investments:401k:BondFund  500 USD
  Expenses:PayrollDeductions        -500 USD

Tracking Drift

I run this query monthly to check if I need to act:

; Compare current allocation to target
SELECT 
  "Stocks" AS class,
  sum(value(position)) AS current
WHERE currency ~ 'VTI|VXUS|ITOT'

If drift exceeds 5%, I start planning rebalancing moves.