A Yearly Position Audit
A Yearly Position Audit
The annual position audit is the anchor of portfolio management. A single spreadsheet, completed once per year, consolidates all holdings, calculates allocations, identifies rebalancing needs, and flags pruning decisions. The discipline of the audit prevents drift and catches problems early.
Key takeaways
- A yearly audit spreadsheet lists every holding, calculates allocations, and compares to targets. This single process replaces dozens of fragmented tracking decisions.
- The audit includes four key sections: holdings and values, allocation analysis, rebalancing calculation, and pruning flags.
- Once the audit is complete, rebalancing decisions are mechanical: buy underweight positions, sell overweight positions, in order of size.
- Tax-loss harvesting decisions emerge naturally from the audit: positions at losses are flagged, and loss harvesting is timed to offset other gains.
- The audit takes 1–2 hours to complete and should be done the same time each year (typically January or late December).
The audit structure
A good audit spreadsheet has four sections:
Section 1: Holdings and Current Values
List every position: ticker, fund name, number of shares/units, price per unit, total value, and cost basis.
Example:
| Ticker | Fund Name | Shares | Price | Value | Cost Basis | Total Basis | Gain/Loss |
|---|---|---|---|---|---|---|---|
| VTI | Vanguard Total Market | 500 | $285.00 | $142,500 | $0.00 | $142,500 | $0 |
| VXUS | Vanguard FTSE Int'l | 600 | $80.00 | $48,000 | $0.00 | $48,000 | $0 |
| BND | Vanguard Total Bond | 1000 | $72.00 | $72,000 | $0.00 | $72,000 | $0 |
| SCHD | Schwab US Dividend | 100 | $65.00 | $6,500 | $7,000 | $7,000 | -$500 |
| DGRO | iShares Core Dividend | 50 | $52.00 | $2,600 | $3,200 | $3,200 | -$600 |
Section 2: Allocation Analysis
Calculate the percentage of the portfolio each position represents, and compare to target allocation. Identify underweight and overweight positions.
| Ticker | Value | % of Portfolio | Target % | Variance | +/- $ to Target |
|---|---|---|---|---|---|
| VTI | $142,500 | 50.8% | 50% | +0.8% | -$2,800 |
| VXUS | $48,000 | 17.1% | 25% | -7.9% | +$22,100 |
| BND | $72,000 | 25.7% | 25% | +0.7% | -$2,500 |
| SCHD | $6,500 | 2.3% | 0% | +2.3% | -$6,500 |
| DGRO | $2,600 | 0.9% | 0% | +0.9% | -$2,600 |
| TOTAL | $280,100 | 100% | 100% | — | — |
The "Variance" column shows how far each position is from its target. VXUS is -7.9% underweight (a significant drift), while VTI is +0.8% overweight (minor).
Section 3: Rebalancing Calculation
Based on the variance, determine the dollar amount to buy or sell in each position to reach target allocation.
| Ticker | Current Value | Target % | Target Value | Current Value | Action | $ Amount |
|---|---|---|---|---|---|---|
| VTI | $142,500 | 50% | $140,050 | $142,500 | Sell | -$2,450 |
| VXUS | $48,000 | 25% | $70,025 | $48,000 | Buy | +$22,025 |
| BND | $72,000 | 25% | $70,025 | $72,000 | Sell | -$1,975 |
| SCHD | $6,500 | 0% | $0 | $6,500 | Sell | -$6,500 |
| DGRO | $2,600 | 0% | $0 | $2,600 | Sell | -$2,600 |
Note: The rebalancing actions assume the portfolio is at its full size (in this case, $280,100). If you're adding new contributions, rebalancing logic changes slightly (you direct new contributions to underweight positions first, before selling overweight ones).
Section 4: Tax and Pruning Flags
For each position, flag whether it's a candidate for tax-loss harvesting, pruning, or replacement.
| Ticker | Gain/Loss | Harvestable | % of Portfolio | Pruning Candidate | Action |
|---|---|---|---|---|---|
| VTI | $0 | No | 50.8% | No | Rebalance |
| VXUS | $0 | No | 17.1% | No | Rebalance |
| BND | $0 | No | 25.7% | No | Rebalance |
| SCHD | -$500 | Yes | 2.3% | Yes | Harvest + consolidate |
| DGRO | -$600 | Yes | 0.9% | Yes | Harvest + consolidate |
In this audit, SCHD and DGRO are both below 3% of portfolio, both at losses, and both serving the same purpose (dividend allocation). Both are candidates for tax-loss harvesting and consolidation into VTI.
Audit workflow: step by step
Step 1: Gather data (15 minutes)
Pull current values from your brokerage statements, 401(k), IRA, and HSA accounts. If you hold funds across multiple custodians, you may need to log into each one. Create a master list of all positions.
Step 2: Calculate cost basis (15 minutes)
For each position, determine your original cost basis. For inherited positions, you may have a stepped-up basis. For employee contributions, track employer match separately if needed. Most brokers provide this information in a cost-basis report; request one if needed.
Step 3: Calculate allocations (15 minutes)
Using the data above, populate Sections 1 and 2. Calculate the total portfolio value, then the percentage each position represents.
Step 4: Identify rebalancing needs (10 minutes)
Based on Section 2, determine how much to buy or sell in each position to reach target allocation. Use Section 3.
Step 5: Flag tax and pruning decisions (10 minutes)
Review each position for:
- Is it at a loss and eligible for tax-loss harvesting?
- Is it under 3% of portfolio and a candidate for pruning?
- Is it a position you no longer believe in (mandate drift, performance failure)?
Step 6: Execute (1–2 weeks)
Prioritize tax-loss harvesting first (especially near year-end). Then execute rebalancing over the following weeks. Finally, consolidate pruned positions.
Timing and cadence
The best time for the annual audit is late December or early January:
- Late December (December 15–31): Conduct the audit, identify tax-loss harvesting candidates, and execute harvests before the calendar year ends. This is critical for capturing losses in the current year.
- January (January 1–31): Complete rebalancing and pruning decisions that don't have tax implications. Time new contributions to underweight positions.
By mid-February, the audit is complete, and the portfolio is rebalanced and pruned. For the rest of the year, you execute new contributions to core positions and make no changes.
Audit for different account types
The audit may span multiple accounts (taxable brokerage, 401k, IRA, Roth IRA, HSA, TFSA, RRSP, ISA, JISA, LISA). Each account type has different rebalancing and tax implications:
Taxable accounts: Full rebalancing, tax-loss harvesting, and pruning logic applies.
Tax-deferred accounts (401k, Traditional IRA, RRSP): Rebalancing and pruning apply, but no tax implications. You can rebalance freely within the account without recognizing gains or losses.
Tax-free accounts (Roth IRA, TFSA, ISA, LISA): Rebalancing and pruning apply, but no tax implications. Gains and losses are never recognized at withdrawal.
For a multi-account household, you might:
- Rebalance within each account first (401k rebalanced internally, Roth rebalanced internally).
- Then consider the household allocation: if one account is overweight stocks and another is overweight bonds, you might not rebalance each individually, but instead rebalance across accounts (e.g., shift a purchase from one account to another).
This cross-account rebalancing is more complex but can be more tax-efficient in household situations.
Audit template: a practical example
Here's a complete audit for a $250,000 portfolio with contributions to a 401k, a taxable brokerage, and a Roth IRA:
401(k) holdings (employer-plan required):
- Target-date 2050 fund: $80,000 (32%)
Taxable brokerage:
- VTI (US Total Market): $60,000
- VXUS (Int'l): $40,000
- BND (Bonds): $30,000
Roth IRA:
- VTI: $20,000
- BND: $20,000
Total portfolio: $250,000
Target allocation: 50% stocks (US), 20% stocks (Int'l), 30% bonds
Audit allocation:
- US stocks (VTI + target-date): $80,000 (TDF) + $80,000 (VTI) = $160,000 (64% of portfolio). Target: 50%. Overweight by 14%.
- Int'l stocks (VXUS): $40,000 (16%). Target: 20%. Underweight by 4%.
- Bonds (BND + TDF bond sleeve): $30,000 (taxable) + ~$20,000 (TDF bond content) = ~$50,000 (20%). Target: 30%. Underweight by 10%.
Rebalancing action:
- Reduce US stock contributions. Direct the next 401k match entirely to bonds if the plan allows, or take a lower risk target-date fund.
- Add $10,000 to VXUS in the taxable account.
- Add $25,000 to BND in the taxable account (or $12,500 to Roth if possible).
This multi-account rebalancing is more nuanced than single-account management but follows the same principle: calculate total holdings and allocations across all accounts, then rebalance to reach household targets.
Simplified audit template
If a full audit seems like too much, a simplified version might include:
- Holdings list: Ticker, current value, cost basis.
- Allocation summary: % of portfolio, variance from target.
- Action list: What to buy, what to sell, tax-loss harvest candidates.
This can be completed in a simple spreadsheet in 30–45 minutes.
Audit Process Flowchart
Related concepts
Next
The yearly audit marks the conclusion of Chapter 13. You now have the tools to decide when to add, when to replace, and how to keep your portfolio simple and aligned with your targets. The next chapter shifts focus from managing existing positions to evaluating the performance of your choices.