Case study · Backtest
🗓 Backtest period: 2020-01-01..2024-07-01
Spec ID: spec-numerical-rank-stable-portfolio-optimization-us-stocks-1791241762 · Generated: 2026-10-05 23:34 UTC
Cluster: Minimum Variance · Sub Cluster: Numerical-Rank-Stable Target Comparison
Each month, the strategy trades a capped, long-only minimum-variance portfolio targeting the cross-sectional mean estimated return. It also solves a higher-target benchmark on the same data for diagnostics, but does not trade that benchmark.
Estimated return constraints can be numerically sensitive. Targeting β, the average estimated asset return, is intended to place the portfolio within a numerically rank-stable region rather than push it toward an extreme return target. That may produce less sensitive weights and lower turnover, but neither lower turnover nor better net performance is guaranteed. The benchmark targets the midpoint between the capped global-minimum-variance portfolio’s estimated return and the highest estimated asset return.
[code omitted from public view]
| Param | Value | Notes |
|---|---|---|
| Universe | Top 60 by capitalization | Year-specific aiquant_screening_table rows; type STOCK, non-ADR; common membership across arms. |
| Estimation | 240 daily observations | Complete trailing returns; arithmetic sample means and sample covariance, in daily units. |
| Targets | Stable: μₚ = β = 1ᵀμ/n; benchmark: (μ_GMV + max(μ))/2 | μ_GMV comes from the capped, long-only GMV solution. Benchmark is diagnostic, not traded. |
| Optimization | Minimum xᵀVx | Exact target-return and budget equalities; long-only; 10% per-asset cap. |
| Rank threshold | δ = 1.005 ‖μ − β1‖₂ / √(β² + 1) | Check actual singular-value ranks and exact-interval conditions; use the approximation only in its small-δ regime. |
| Rebalance and execution | Monthly; first trading session's close | Inputs end at the preceding completed session; observed close prices for fills and marks. |
| Leverage ceiling | 4.0 | Check before trades; record departures from target weights. |
| Backtest window | 2020-01-01..2024-07-01 | Daily bars; annualized metrics measured from 2020-01-02. |
| Commissions | $0.0040 per share, minimum $1.00 per order, capped at 1.00% of trade value | Charged per fill by the results module; all metrics are net of them |
| Slippage | 0 bps — not applied | Not an omission — MOC (market-on-close) fills at the auction print the backtest uses |
| Costs not modelled | short borrow fees / rebate, margin financing on leverage, market impact, exchange/regulatory/clearing pass-through fees, taxes | Excluded deliberately, not unknown |
| # | Concern | Status |
|---|---|---|
| 1 | Estimation observations precede monthly execution close; no pre-execution return is credited. | ✓ Specified; verify against dated run records. |
| 2 | Year-specific capitalization screens were published before their first use. | ⚠ Publication timestamps are not supplied; year labels alone do not establish point-in-time availability. |
| 3 | Return estimation uses the specified adjusted-price history while executions use observed closes; missing observations and fills are flagged. | ⚠ Confirm from data and run logs; the supplied code excerpt is truncated. |
| 4 | Both targets satisfy exact equality, cap, and solver checks; infeasible dates are excluded from paired comparisons. | ⚠ Date-level feasibility and paired counts are not supplied. |
| 5 | Actual singular values support claimed numerical-rank stability, rather than the approximation alone. | ⚠ Rank and interval diagnostics are not supplied. |
| 6 | Per-fill transaction charges are reflected in reported metrics. | ✓ $0.0040 per share, minimum $1.00 per order, capped at 1.00% of trade value; platform recalculation applied. |
The traded stable arm returned 48.98% over the reported backtest, with a 0.66 Sharpe ratio and a −31.06% maximum drawdown. These figures are net of the platform’s charged commissions. The supplied results contain no traded benchmark return series or paired-date diagnostics, so they do not establish whether the stable target reduced turnover or improved net performance relative to the benchmark.
Recomputed here from the run's stored daily returns, because every annualized figure in the table above is derived from the LENGTH of that array from its first active row (years = n / 252, counted from the first trade). Only total return and max drawdown do not depend on the row count, so when the recomputed and stored values differ by a common factor, those two are the numbers to trust.
| Check | From the run's own returns | Note |
|---|---|---|
| Daily-return rows | 1,131 | 1.00x the 1,134 trading days in 2020-01-01..2024-07-01 |
| Distinct dates | 1,131 | one row per date |
| Date span | 2020-01-02 .. 2024-07-01 | |
| Sum of daily returns | 48.98% | matches the reported total return |
| Sharpe from these rows | 0.66 | stored 0.66 |
| Volatility from these rows | 16.55% | stored 16.55% |
| Max drawdown from these rows | -31.06% | stored -31.06% |
| Lowest the book stood | -26.24% | low-water mark, in units of starting capital |
| CAGR from these rows | 9.29% | stored 9.29% |
| Metric | Value |
|---|---|
| Total Return | 48.98% |
| Sharpe | 0.66 |
| Sortino | 0.80 |
| Calmar | 0.30 |
| Max Drawdown | -31.06% |
| Volatility | 16.55% |
| Beta vs SPY | 0.68 |
| Annualized from | 2020-01-02 |
| Win Rate | 63.43% |
| Profit Factor | 2.25 |
| Total Trades | 1268 |
| Symbols | 60 (AAPL, ABBV, ABT, ACN, ADBE, AMD, AMGN, AMZN, AVGO, BA, +50 more) |