Tax-aware direct indexing · paper trading

After-tax alpha, lot by lot, every trading day.

A CVXPY-backed direct-indexing solver harvests losses at the tax-lot level, enforces 30-day wash-sale windows across substantially-identical securities, and reports tracking-error and turnover honestly — on real backtest data, over real horizons, in four jurisdictions.

+71bps

After-tax alpha · annualized

1260bps

Avg tracking error

14.8%

Annual turnover

Cumulative value · $1M initial · 10 yrs[Illustrative · real backtest pending]
$1.0M$1.5M$2.0M$2.5M$3.0M20152017201920212023Peak harvest volume (COVID drawdown)After-tax $10.11MBenchmark $10.46M
Source: TaxView backtest, tax_aware_di_us_standard, US large-cap index benchmark, 2015-01-02—2024-12-31. Federal taxes only: 37% short-term, 23.8% long-term (incl. NIIT). State tax treatment varies by jurisdiction. Daily rebalance, CLARABEL solver.
1260bps

Rolling 252-day tracking error

Mean over period. Soft cap at 150 bps.

14.8%

Annualized turnover

One-way; counts buys and sells once.

38.6%

Lifetime harvested loss / NAV

Cumulative; wash-sale-compliant lots only.

Multi-vintage · 9 start years · 5-yr windows

Same strategy, nine start years. Read the regimes, not the average.

A single 10-year track is a cherry-pick to a quant skimmer. The cells below run the same strategy starting Jan 2 of nine consecutive years, with shared y-axis so regimes are directly comparable. End-of-window relative return (in bps vs. benchmark) is printed in each cell.

2014-5147 bps
2015-5405 bps
2016+1233 bps
2017-7863 bps
2018-774 bps
2019-4356 bps
2020-1088 bps
2021-5028 bps
2022-3552 bps
Source: TaxView solver, 5-year rolling windows starting Jan 2 of each year shown. Same strategy and benchmark as the hero. Shared y-axis across all nine cells; zero line dashed.
What the solver actually does

Four invariants the optimizer enforces every rebalance.

  1. 01

    Tracking-error budget is hard.

    A per-account constraint (default 100 bps annualized, tunable) caps active risk versus the benchmark. The optimizer trades off tracking error against tax cost in the objective; it does not silently breach the cap when tax opportunities are abundant.

  2. 02

    HIFO at the lot, not the position.

    Every position is a stack of dated lots with cost basis. Sells identify specific lots — highest cost first — and the realized gain/loss reflects the lot, not the average. Short-term and long-term offsets are bucketed separately.

  3. 03

    Wash-sale windows lock substantially-identical names.

    A 30-day window opens at every loss-harvest sale. Within it, the solver will not repurchase the ticker — or any substantially-identical security — and rotates into a correlation-matched substitute to preserve factor exposure. Jurisdictional equivalents (Canadian superficial-loss, Australian wash-sale, Indian Section 94(7)) use their own statute logic.

  4. 04

    Every trade carries its reason.

    The run record stores the strategy snapshot, the covariance matrix, the constraint set, and the lot-level decision behind every line item. Replays are deterministic; audits don't require re-deriving anything.

Strategies

Six strategies in the catalog today.

  • Tax-Aware Direct Indexing

    tax_aware_di_us_standard

    Track a benchmark. Harvest losses lot by lot. Respect wash sales.

  • Long/Short Tax-Aware

    long_short_tax_aware

    Active extension. Long more than the book, short the difference. 130/30 through 250/150.

  • Market-Neutral Pair Sleeve

    market_neutral_pair_sleeve

    Long/short with zero net exposure. No market beta — return comes from cross-sectional positioning.

  • Multi-Jurisdiction Direct Indexing

    multi_jurisdiction_di

    Direct indexing across the US, Canada, Australia, and India — each with its own tax rules.

  • Options Overlay

    options_overlay

    Concentrated-position management with covered calls, protective puts, and collars.

  • Variable Prepaid Forward

    variable_prepaid_forward

    Concentrated-position monetization through a structured forward sale.