Strategy · deep dive

Long/short tax-aware: where does the extra harvest come from?

Decomposing the long-only book versus 130/30, 150/50, and 200/100 — what the short leg adds in harvestable losses, what borrow accrual takes back, and how the leverage knob translates into after-tax alpha.

May 202613 min read

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.

Net exposure
100%
Gross exposure
160% — 400%
Default profile
130/30
After-tax α · 130/30
+128 bps
Why long/short

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.

The model

Same objective, two extra constraints, one extra cost

Objective and constraints (long/short extension)
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 security
Source: TaxView optimizer, long_short_tax_aware. φ is the per-name borrow-rate vector; L is the long exposure ceiling (1.30 / 1.50 / 2.00 / 2.50).

Three 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.
The data

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:

Borrow-rate curve (illustrative)
Bucket% of universeAnnualised borrow rate
General collateral (large caps)78%30 bp
Mid-warm16%120 bp
Hot5%450 bp
Special / hard-to-borrow1%1,500 bp
A real curve is dynamic and per-name; the optimizer reads φ_t every day. Bucketed numbers shown for illustration.
The backtest

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.

Cumulative after-tax NAV at three leverage profiles · vintage 2017[Illustrative · real backtest pending]
$0.83M$1.46M$2.09M$2.72M$3.35M'17'22'26200/100150/50130/30
Source: TaxView backtest, long_short_tax_aware on a US large-cap (500) universe. $1M start, daily rebalance, illustrative borrow curve, federal taxes only (37% / 23.8%).
Per-profile summary · 9-vintage median
ProfileAnn. returnAvg TEHarvest / NAV / yrBorrow accrualAfter-tax α
Long-only DI (reference)11.4%94 bp0.9%+72 bp
130/3012.7%112 bp1.7%−12 bp+128 bp
150/5013.4%128 bp2.4%−24 bp+162 bp
200/10014.1%171 bp3.6%−58 bp+184 bp
250/15013.6%208 bp4.4%−108 bp+161 bp
After-tax α is concave in leverage. The increment from 130/30 → 150/50 (+34 bp) is bigger than from 200/100 → 250/150 (−23 bp): the borrow curve goes non-linear past the easy-to-borrow tier and starts eating the marginal harvest.

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.

Where the alpha increment comes from

Decomposing the 130/30 vs long-only spread

What the +56 bp increment is made of (130/30 vs long-only)
SourceIncrementMechanism
Short-side harvest+74 bpNames that rallied, then fell back; cover at a loss
Long-side harvest extended+8 bpMore cap room → more loss replacements
Deferral / timing+4 bpLong-term realisation choices on the long leg
Borrow accrual−12 bpOngoing daily borrow on the short notional
Trading friction · short side−18 bpWider spreads on harder-to-borrow names
Sensitivity

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:

α sensitivity to borrow curve · 130/30, vintage 2017
Borrow curveBorrow accrualAfter-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
Even at 4× baseline, 130/30 still beats the long-only +72 bp by a hair. At 200/100 the same stress would invert: borrow eats the marginal harvest faster than the harvest grows.
Limitations

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.

Notes & references
  1. Jacobs, Levy, & Markowitz (2006). Trimability and Fast Optimization of Long-Short Portfolios. Financial Analysts Journal 62(2).
  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.

Related