Options Overlay
Concentrated-position management with covered calls, protective puts, and collars.
The strategy holds the same concentrated stock as the benchmark line, plus a rolling covered-call program that collects premium. Soft cap on the largest single-day rallies; otherwise the two tracks differ by accumulated premium income.
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%.
A concentrated single stock pays for itself: sell calls for premium, buy puts for a floor, or do both as a collar. Cash flows in or out without realising the embedded gain in the position.
| P_T ≥ P_floor | Terminal payoff floor not breached |
| K ≥ K_QCC | Strike inside the §1092 qualified-covered-call safe harbour |
Maximize expected premium income net of payoff variance. The variance term keeps the structure from chasing income with payoffs that are too volatile to justify the premium collected.
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.
- Concentrated stock
The single-stock position the overlay sits on top of.
- Option chain
Live strikes, expiries, and implied volatilities for that ticker.
- Risk floor + income target
Maximum downside the holder will tolerate and the premium yield wanted.
- Covered calls
Calls written for income, qualified-covered-call rules respected.
- Protective puts
Puts bought for downside protection.
- Collars
Combined call + put structures, often near-zero-cost.
Exclusion list
Your own list of tickers the optimizer is forbidden to buy. Used for restricted lists (insider stock, employer stock, blackout names), personal preferences, or any name you want the strategy to leave alone.
The exclusion list is a per-account vector E_user that the constraint builder injects before each solve. Same hard zero-weight constraint as the curated screens, but populated by the client rather than by a screen definition. Edits propagate to the next rebalance — the optimizer will sell out of any newly-listed name on its next solve.
A short exclusion list is essentially free. A long or sector-clustered list narrows the optimizer's feasible set, raises tracking error, and can leave the portfolio leaning on a smaller pool of harvest candidates. The console flags when a list crosses the TE budget threshold.
The console's settings panel lets you add/remove names. Each excluded ticker shows the date it was added and the resulting drift in TE.
| Variable Prepaid Forward | Options Overlay | |
|---|---|---|
| Cash mechanic | Lump sum at trade | Periodic premium |
| Tax event on stock | Deferred to settlement | None |
| Tenor | 1 – 10 years | 30 – 90 days, rolling |
| Upside | Capped by collar | Capped by call strike |