A long-only direct-indexing book can only act when names fall. Adding a short leg gives the optimizer a second cross-section of harvest opportunities — names that rallied into stretched valuations, then came back. The natural follow-up question is whether the extra harvest pays for the borrow accrual, the operational complexity, and the regulatory weight of running a margin book. The answer is: it depends on leverage, and not in the direction the marketing material usually suggests.
Two cross-sections instead of one
Tax-aware direct indexing gets its alpha from the dispersion in the long cross-section. Half the names in any year finish above the index; half finish below. The harvestable surface is the below-index half. A long/short book extends the optimizer's reach: it can short the names whose valuations stretched and reverse the position when they round-trip — a second cross-section of dispersion to mine. The trade-off is borrow accrual on the short leg and the §1091 wash-sale equivalents that lock loss-realisation on names with offsetting positions.
130/30 is not a leverage tilt. It's a way to give the harvest objective access to the half of the universe that direct indexing can't otherwise touch.
Same objective, two extra constraints, one extra cost
min λ_te · (w − w_b)ᵀ Σ (w − w_b) + λ_tax · τ(w) + φᵀ |w|
w
s.t. Σ w = 1 (net exposure budget = 100%)
Σ w⁺ ≤ L (long-side cap)
Σ w⁻ ≤ L − 1 (short-side cap)
TE(w) ≤ TE_max
offsetting-position rule (§1091): no loss realisation on a name
that has an active short of the same securityThree notes:
- Borrow as a holding cost. φ is a per-name daily borrow rate (in basis points / day) the optimizer pays continuously on each short notional. Hard-to-borrow names get penalised in the objective; the solver can take them if the harvest signal is strong enough to clear the financing.
- 130/30 etc. is just L. The four canonical profiles — 130/30, 150/50, 200/100, 250/150 — are choices of L. The optimizer is the same; the leverage knob slides L from 1.30 to 2.50.
- §1091 + offsetting positions. Selling a long lot at a loss while holding a short of the same name is treated as a wash-sale equivalent. The optimizer is aware: it will not realise a long-side loss on a name with an active short, and vice versa.
Universe + a borrow curve
Same universe and risk model as the long-only DI strategy. The new input is the borrow-rate curve: a per-name basis-point cost that the optimizer pays daily on the short notional. Production runs should consume an actual broker-supplied curve; the backtests below use a synthesized curve calibrated to publicly available approximate fees:
| Bucket | % of universe | Annualised borrow rate |
|---|---|---|
| General collateral (large caps) | 78% | 30 bp |
| Mid-warm | 16% | 120 bp |
| Hot | 5% | 450 bp |
| Special / hard-to-borrow | 1% | 1,500 bp |
130/30, 150/50, 200/100 across nine vintages
Same panel as the long-only deep-dive: $1M starting capital, daily rebalance, US large-cap (500) universe. Three leverage profiles, single TE budget (5%). Cumulative after-tax NAV trajectory below; the higher-leverage line opens a wider gap as the harvest stream compounds.
| Profile | Ann. return | Avg TE | Harvest / NAV / yr | Borrow accrual | After-tax α |
|---|---|---|---|---|---|
| Long-only DI (reference) | 11.4% | 94 bp | 0.9% | — | +72 bp |
| 130/30 | 12.7% | 112 bp | 1.7% | −12 bp | +128 bp |
| 150/50 | 13.4% | 128 bp | 2.4% | −24 bp | +162 bp |
| 200/100 | 14.1% | 171 bp | 3.6% | −58 bp | +184 bp |
| 250/150 | 13.6% | 208 bp | 4.4% | −108 bp | +161 bp |
After-tax alpha is concave in leverage. The first 30 cents of short pays for itself many times over; the last 50 cents starts renting from the borrow desk.
Decomposing the 130/30 vs long-only spread
| Source | Increment | Mechanism |
|---|---|---|
| Short-side harvest | +74 bp | Names that rallied, then fell back; cover at a loss |
| Long-side harvest extended | +8 bp | More cap room → more loss replacements |
| Deferral / timing | +4 bp | Long-term realisation choices on the long leg |
| Borrow accrual | −12 bp | Ongoing daily borrow on the short notional |
| Trading friction · short side | −18 bp | Wider spreads on harder-to-borrow names |
Borrow curve and TE budget interact
The hidden parameter in long/short is the borrow curve. We re-ran 130/30 against a 2× borrow curve (every name twice as expensive to short) and a 0.5× borrow curve. The α moves roughly linearly with mean borrow:
| Borrow curve | Borrow accrual | After-tax α |
|---|---|---|
| 0.5× baseline | −6 bp | +138 bp |
| Baseline | −12 bp | +128 bp |
| 2× baseline | −24 bp | +109 bp |
| 4× baseline (severe) | −48 bp | +78 bp |
What the headline number papers over
- Recall risk. A loaned short can be recalled by the lender; the optimizer treats recall as a forced cover at the recall date's price. The backtest doesn't model lender behaviour endogenously.
- Margin maintenance. The backtest assumes the account always meets margin. A real book has to cover potential margin calls in volatile regimes; the optimizer can be told to keep a cash buffer, but the default run does not.
- Constructive ownership rules (§1259) bind on certain offsetting-position structures. The long/short module's wash-sale layer covers §1091 and the obvious offsetting-position cases; structured constructive-sale patterns are not modelled and would be flagged out of the universe.
For more: see the pair-sleeve deep-dive for a fully dollar- and factor-neutral construction, and replacement-security selection for how harvested-name substitutes are picked under the wash-sale lock.
- Jacobs, Levy, & Markowitz (2006). Trimability and Fast Optimization of Long-Short Portfolios. Financial Analysts Journal 62(2).
- IRC §1091 — Loss from wash sales of stock or securities. The offsetting-position treatment is consistent industry practice for L/S managers running in the same name on both legs.
Educational illustration · numbers illustrative.