{"slug":"when-equal-weight-beats-optimization","qid":"estimate_stability","label":"Ten years of yearly estimates: the mean moves far more than the volatility","post_title":"When Equal Weight Beats Optimization","post_url":"/blog/when-equal-weight-beats-optimization#q-estimate_stability","columns":["ticker","mean_estimate_range_pct","vol_estimate_range_pct"],"rows":[{"ticker":"NVDA","mean_estimate_range_pct":184.7,"vol_estimate_range_pct":28.6},{"ticker":"AAPL","mean_estimate_range_pct":94.9,"vol_estimate_range_pct":28.9},{"ticker":"MSFT","mean_estimate_range_pct":76.2,"vol_estimate_range_pct":29},{"ticker":"SPY","mean_estimate_range_pct":44.9,"vol_estimate_range_pct":26.7},{"ticker":"JNJ","mean_estimate_range_pct":30.7,"vol_estimate_range_pct":19},{"ticker":"KO","mean_estimate_range_pct":23.9,"vol_estimate_range_pct":25.4}],"shape":"ranking","sql":"WITH prices AS\n(\n    SELECT\n        ticker,\n        date,\n        toFloat64(max(close)) AS c\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')\n      AND date >= '2015-01-01'\n      AND date <  '2025-01-01'\n    GROUP BY ticker, date\n),\nrets AS\n(\n    SELECT\n        ticker,\n        date,\n        c / lagInFrame(c, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret\n    FROM prices\n),\nyearly AS\n(\n    SELECT\n        ticker,\n        toYear(date)                     AS yr,\n        avg(ret) * 252 * 100             AS mean_pct,\n        stddevPop(ret) * sqrt(252) * 100 AS vol_pct\n    FROM rets\n    WHERE isFinite(ret)\n    GROUP BY ticker, yr\n    HAVING count() >= 200\n)\nSELECT\n    ticker,\n    round(max(mean_pct) - min(mean_pct), 1) AS mean_estimate_range_pct,\n    round(max(vol_pct) - min(vol_pct), 1)   AS vol_estimate_range_pct\nFROM yearly\nGROUP BY ticker\nORDER BY mean_estimate_range_pct DESC","computed_at":"2026-08-16T14:56:17.598947+00:00","elapsed":0.003793732}