ToolsTransition Planner

Transition Planner

A phased realization schedule for moving a portfolio toward a benchmark under a tax budget.

Input
Current portfolio + target benchmark
Output
Quarterly realisation schedule
Constraint
Annual realised-gain budget
Headline resultIllustrative
73 bp

Quarter 8 — TE end of Q

The idea

Tells you the cheapest tax-by-tax path from where your portfolio is today to where you want it.

The objective
Minimize cumulative tracking error to the target benchmark across the horizon, subject to: per-period realized-gain ≤ gain_budget, lot identification per the chosen method, and the wash-sale lockout on recently sold-loss tickers.

The tool solves this on demand against a portfolio snapshot — typically in a single CVXPY call, or a short loop for multi-period tools. Unlike a strategy, there is no daily-rebalance schedule; you re-run when the inputs change.

What goes in, what comes out
Inputs
  • Current holdings with lot-level basis
  • Target benchmark and final tracking-error tolerance
  • Annual or quarterly gain budget
  • Horizon (quarters)
Outputs
  • Per-period sell list with lot identification
  • Projected tracking-error trajectory
  • After-tax NAV trajectory vs. immediate-rebalance baseline
Worked example

Account opens with $5M in 12 concentrated tech names; target is a US large-cap index with a 75 bp annual TE budget; gain budget is $200k / year; horizon is 8 quarters.

Quarter 1 — gains realised
$48k
Quarter 1 — losses realised
$11k
Quarter 1 — TE end of Q
190 bp
Quarter 4 — TE end of Q
120 bp
Quarter 8 — TE end of Q
73 bp
Cumulative gains realised
$1.31M
Cumulative losses realised
$280k
After-tax NAV vs. one-shot baseline
+ $112k

Smoothing the realisation across 8 quarters keeps the account inside the gain budget every year and arrives at the target TE of 75 bp by quarter 8. Numbers are illustrative.

Input

Target benchmark

Default · Large-Cap US 100

The benchmark sets the destination — the index your portfolio will track once the transition completes. Every per-period solve is measured against this reference.

How the optimizer applies it

The benchmark weight vector w_b enters the tracking-error term at every period. Changing it changes which embedded gains the planner must realise to converge and which losses come along for free along the way.

The trade-off

A narrower index (Large-Cap 100) converges faster — fewer names to acquire, tighter universe overlap with most legacy portfolios. A broader index (All-Cap) gives a wider harvest pool but a longer convergence path.

Other tools

Educational calculator. Output is illustrative and is not investment or tax advice.