StrategiesMulti-Jurisdiction Direct Indexing

Multi-Jurisdiction Direct Indexing

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

Jurisdictions
US · CA · AU · IN
Lot methods
HIFO · ACB · FIFO
Special rules
AU 50% discount · IN STT
Backtest · 20152024Illustrative
Ann. return (after-tax)
10.1%
Tracking error
12.8%
After-tax boost
+0.5 to +1.3%
US · HIFO + §1091

The dark track is the strategy's after-tax NAV. The grey track is the benchmark NAV. Both start at $1M on the start date, rebalanced daily under the CLARABEL solver.

Numbers are plausible placeholders, not a real backtest. Replace by running taxview-runner over the same window. Daily rebalance, CLARABEL solver. Marginal-rate assumptions: short-term 37%, long-term 20%, NIIT 3.8%.

Illustrative
2024-12-31(end of window)
Strategy (after-tax)$8.51M
Benchmark$7.44M
$2.00M$4.00M$6.00M$8.00M20152017201920212023
Static view. Resize wider for hover details.
Ann. return
10.1%
Benchmark return
8.7%
Alpha (after-tax)
71 bps
Tracking error
1278 bps
Avg turnover
14.8%
Lifetime harvested
38.6% NAV
The idea

The same direct-indexing engine swapped between four tax regimes. The optimizer is identical; what changes is the tax engine — lot identification, wash-sale equivalent, holding-period thresholds, and any jurisdiction-specific exemptions or surcharges.

The objective
Subject to
Σ wᵢ = 1Fully invested
J ∈ {US, CA, AU, IN}Tax engine plug-in selects the local statute
TE(w) ≤ TE_maxTracking error stays inside the budget

Same objective as US tax-aware DI; the tax cost function τ_J is swapped to the local statute — HIFO in the US, ACB averaging in Canada, FIFO + 50% CGT discount in Australia, FIFO + STT in India. The optimizer harvests aggressively where lot-picking helps, conservatively where averaging rules dampen the marginal benefit of any single sale.

We solve this as a portfolio-optimization problem each day, using CVXPY with the CLARABEL conic solver. The solver searches the feasible set defined by the constraints and returns the weight vector that minimises (or maximises) the objective — typically in tens of milliseconds for a 500-name universe.

What goes in, what comes out
Inputs
  • Jurisdiction selector

    The tax engine plug-in: US, Canada, Australia, or India.

  • Local benchmark

    The local large-cap index (S&P 100 / TSX 60 / ASX 200 / NIFTY 50).

  • Holdings + lots

    Account lots in the local accounting convention (HIFO, ACB, FIFO).

Outputs
  • Trade list

    Daily trades sized to the local universe and statute.

  • Tax engine output

    Realized gains/losses under the jurisdiction's lot identification rules.

  • Realized P/L

    Net realized capital effect, broken out by holding period.

Customization · Coming soon

Factor tilt

A factor tilt lets the optimizer hold more of the names that score well on a chosen factor — quality, value, momentum, or low-volatility — and less of the names that score poorly. The portfolio still tracks the benchmark, but with a measurable lean toward the chosen factor.

How the optimizer applies it

B_f is the column of factor loadings for the chosen factor from the risk model. The constraint forces the portfolio's active exposure to that factor to be at least t_f standard deviations above the benchmark. The optimizer redistributes weight within the tracking-error budget to satisfy it — buying high-scoring names, underweighting low-scoring ones.

The trade-off

You consume part of your tracking-error budget on the tilt. Less budget remains for tax-loss harvesting, so factor tilts typically reduce expected harvest activity slightly. The factor's own active return is the offset.

Where you see it

The console's risk panel shows the current active factor exposure next to its target. Trade tickets annotate names whose factor score drove the buy or sell.

 Tax-Aware Direct IndexingLong/Short Tax-AwareMulti-Jurisdiction Direct Indexing
Net exposure100%100%100%
Lot methodHIFOHIFOPer-jurisdiction
Tax enginesUS onlyUS onlyUS · CA · AU · IN
RoleStandalone (US)Standalone (US)Cross-border