Market-Neutral Pair Sleeve
Long/short with zero net exposure. No market beta — return comes from cross-sectional positioning.
The pair sleeve is dollar-neutral and factor-neutral by construction, so a benchmark index isn't the right reference. The grey track is cash plus borrow accrual; the dark track is the sleeve's NAV trajectory.
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%.
Equal long and short dollars on similar names; market beta nets to zero. The return comes from picking the right side of each pair — no index exposure, no factor exposure, no direction.
| Σ wᵢ = 0 | Dollar-neutral — longs and shorts net to zero |
| Bᵀ w = 0 | Factor-neutral — zero loading on benchmark factors |
Maximize signal-weighted return α⊤w minus a variance penalty and the tax cost on realized gains. The residual return comes purely from idiosyncratic positioning — what the optimizer learns from the per-name signal once market and factor bets are stripped out.
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.
- Universe + factor model
The eligible name universe and the loadings matrix B used for neutrality.
- Per-name signal
The alpha vector α the optimizer is trying to harvest, refreshed daily.
- Borrow curve
Per-name stock-loan fees for the short side.
- Long leg
Long weights, dollar-equal to the short leg by construction.
- Short leg
Short weights, factor-neutral against the benchmark factors.
- Trade list
Daily trades to maintain the neutral position as drift accumulates.
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.
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.
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.
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 Indexing | Long/Short Tax-Aware | Market-Neutral Pair Sleeve | |
|---|---|---|---|
| Net exposure | 100% | 100% | 0% |
| Factor exposure | Tracked | Tracked | Pinned to zero |
| Source of return | Index + tax alpha | Index + tax + active | Cross-sectional alpha only |
| Role | Standalone book | Standalone book | Companion sleeve |