docs/adr/0028-managed-strategy-sharpe-gate-tax-aware.md

ADR-0028: Managed-strategy mode — Sharpe-mandate acceptance gate, tax-aware management, contained execution

  • Status: Accepted (operator approval given in-session, 2026-07-15)
  • Date: 2026-07-15
  • Loop stage: Reason (objective selection, gating) + Verify (mandate measurement, tax accounting)
  • Related: ADR-0020 (trading guards), ADR-0022 (per-user IBKR), ADR-0027 (one-click broker OAuth2), PR #2514 (Advisor tab)

Context

The operator has set a standing mandate for managed strategies: target Sharpe ≥and manage taxes.

What the evidence says about that mandate (2026-07-15 research pass, F:\arxiv-corpus\pdfs\REVIEW-2026-07-15.md):

  • Our own 26-year walk-forward record ($20/mo, 2000→2026, no look-ahead) never sustained Sharpe 2.0 on

any book: max-Sharpe tangency 0.64, max-return long-only 0.60, 2× margin + shorts 0.64 (leverage scaled return 13.4%/yr, not risk-adjusted quality — two-fund separation held exactly).

  • The protocol-clean published ceiling for daily systematic strategies is ≈ 2.4 (VSN+LSTM on ~50 futures

markets, arXiv 2603.01820) — it requires multi-asset breadth and ML sequence models, and still had a −3.68-Sharpe worst quarter. Single-asset claims above ~2.5 (e.g. 2511.08571) are unreplicated.

  • On short windows even SPY's Sharpe CI includes(measured 5y: 0.82 [−0.06, 1.70]). A Sharpe-2 promise

is not honest; a Sharpe-2 acceptance gate with CI evidence is.

Meanwhile Robinhood now offers first-party agent access (Agentic Trading MCP, 2026-05-27): a dedicated agentic account funded separately, push notifications per trade, real-time activity feed, one-tap disconnect. That is the right containment shape for agent-managed capital — better than sharing the operator's primary brokerage account.

Decision

  1. The mandate is a gate, not a promise. Every strategy/proposal reports measured Sharpe with a Lo-CI

against the mandate (KEYSTONE_SHARPE_MANDATE) in three honest states: meets_ci (CI lower bound ≥ mandate) · meets_point (point estimate ≥ mandate, CI does not clear) · below. Only meets_ci strategies are eligible for live capital. Everything else runs paper/dry-run. No strategy is promoted on backtest alone: promotion additionally requires the IS–WFA–OOS protocol (purged walk-forward, majority-pass, parameter lock — arXiv 2603.09219).

Default target = 0.79, the "Buffett bar" (recalibrated from 2.0 by operator direction, 2026-07-15: "lower the gate to maximize an optimal return but our bar is to do better than Buffett"). 0.79 is Berkshire Hathaway's verified lifetime Sharpe — the best long-horizon track record on record (Frazzini, Kabiller & Pedersen, "Buffett's Alpha", Financial Analysts Journal 2018). Rationale: 2.0 was above every long-horizon portfolio in history and belongs to capacity-constrained high-frequency machines; a gate nothing can ever pass selects nothing. Beating the best investor who ever lived, with CI evidence, is the meaningful bar. Within the eligible set, proposals then maximize expected return (the max_return objective) — the gate bounds risk-adjusted quality; the objective chases return.

  1. Objectives are explicit. The one analytics engine (lib/portfolio-analytics.js) supports

objective: "sharpe" (default, shrunk tangency) and objective: "max_return" (maximize expected return subject to a volatility ceiling, long-only, per-position cap) — the true efficient-frontier point, not concentration heuristics. Surfaced on the Advisor tab, the REST routes, and the chat tools.

  1. Taxes are a first-class constraint.
    • Buy-only flows (contribution planner, DCA) realize nothing — they remain the default posture.
    • Any proposal with SELL rows carries an estimated realized gain and tax cost (worst-case

short-term rate by default, tax_rate overridable), so after-tax merit is visible before acting.

  • Turnover is treated as a cost everywhere; tax-advantaged wrappers (IRA) are recommended in UI copy.
  • Future work: tax-lot tracking (dates per lot) for LT/ST split and loss-harvesting suggestions.
  1. Leverage/shorting stays out of the product's recommendation surface for now. The measured record

shows levered tangency is the only evidenced route toward the mandate's return ambitions, but a 2× book's true drawdown is understated by monthly data (intra-month margin calls) and its turnover is tax-hostile. Phase(env-gated, dry-run only): levered max-return proposals for margin-approved, tax-advantaged or dedicated agentic accounts only, once per-lot tax tracking and intra-day risk monitoring exist.

Buffett-bar measurement (2026-07-15, experiments/leverage_buffett_bar_opt.py): with the gate at 0.79 and return-maximizing selection (max train final among configs beating SPY's train Sharpe), the winner is the aggressive overlay (vol-target 35%, 6-mo trend, 30% brake): full-period $55,852 (+$17,249 vs SPY), maxDD −36%, Sharpe 0.61 [0.22, 0.99] → still below on the full sample; validation 2013+ Sharpe 0.90 [0.37, 1.44] → meets_point (beats Buffett's 0.79 point-wise; CI does not clear). The risk-preferred 20%-vol config also meets_point on validation (0.97) with +$10,856 and far better stress (P(<$10k) 1.6% vs 9.2%). NOTHING yet achieves meets_ci — CI half-widths are ≈±0.4 even onyears, so live-capital promotion requires either a longer live track record or genuinely higher Sharpe machinery. Note the regime caveat: SPY itself scores 0.91 on the 2013+ validation window — point-beats of the bar in bull-heavy windows are cheap; full-cycle windows are where the bar bites. Brake-to-cash evolution (operator-directed 2026-07-16, experiments/leverage_brake_to_cash.py + _stress.py): the overlay's gross now clamps to [0, 2×] — vol-targeting uncapped below 1×, 6-month trend-down sends the book fully to cash (earning the T-bill rate), and the drawdown brake tapers toward cash rather than merely unlevered. Cash floorexperiments/leverage_buffett_bar_opt.pybeat 0.5 in every train config (2000–2012 selection; validated 2013+: Sharpe 0.85 [0.31, 1.38]). Full period: $51,421 (13.3%/yr) vs $54,440 for the milder brake and $38,531 SPY; Sharpe 0.70 [0.32, 1.08]; maxDD −24% (vs −36% milder / −51% unbraked); ~25% of days below 1× exposure. Crisis gauntlet: 0/1,000 margin calls, P(<$10k) 0.0%, median $19,879, worst path $13,441 — dominates both prior configs on every risk metric for ~$3k of final value. This supersedes the milder spec below as the Phase-2 default; turnover/tax hostility of daily adjustment still confines it to dry-run/IRA/dedicated accounts. Phase-2 overlay spec (validated 2026-07-15, experiments/leverage_overlay_opt2.py): leverage is never static — it is reset daily as gross = min(2.0, 0.20/vol20d) × trendGate(6mo) × brake(dd>15% → 1×), where vol20d is annualized 20-day realized vol of the tangency direction. Tuned on 2000–2012 ONLY, validated untouched on 2013–2026 (Sharpe 0.97; the 15%-vol variant reaches 1.00 but surrenders the SPY beat — a real frontier trade-off, both recorded). Evidence, $20/mo walk-forward 2000–2026: final $49,460 vs SPY DCA $38,604 (+$10,856), worst drawdown −28% (vs −51% static 2× and SPY), min Reg-T maintenance cushion +22.9% (never near a call). Stress: 1,000 two-year block-bootstrap paths built only from the four worst downturns (dot-com, GFC, COVID, 2022), starting $25k: 0/1,000 margin calls, P(ending < $10k) 1.6% vs 70.2% for static 2×, median $15.6k vs $7.6k, worst path $6.4k vs $337. Conclusion encoded here: margin calls are not the binding risk at 2× with frequent rebalancing — wipeout-grade drawdowns are, and the daily overlay is what removes them, so Phasemeets_pointships with the overlay or not at all. Day-level corrections only (4:1 intraday PDT leverage is not simulatable from daily bars and is out of scope); taxes still unmodeled → dry-run/IRA/dedicated accounts remain the boundary;configs were searched, so deflated-Sharpe skepticism applies at the margin (2603.09219).

  1. Execution containment. Agent-managed live capital, when a strategy earns it, goes through a

dedicated account the agent can reach and nothing else — Robinhood Agentic Trading MCP (equities beta) or an isolated IBKR sub-account — with operator-set deposit limits, per-trade notifications, and one-tap disconnect. All existing ADR-0020 guards remain; the Advisor and tools continue to place nothing.

Consequences

  • The mandate becomes measurable and enforceable instead of aspirational; users see exactly how far a

strategy is from earning live capital, with CIs.

  • Until a strategy clears the gate, the system's live posture stays what it is today: buy-only,

long-only, diversified — the measured-best risk-adjusted retail configuration.

  • Honest expectation set in UI copy: clearing Sharpewith CI evidence likely requires multi-asset

breadth (futures/systematic machinery we have not built) or long accumulation of live track record; the gate is expected to hold strategies in paper mode for a long time. That is the point.

  • Robinhood MCP integration is future work gated on: operator opening an agentic account, a protected-path

review (money), and the same dry-run-first discipline.