{"slug":"portfolio-delta-and-beta-weighting","qid":"beta_stability","label":"The same two betas, measured over six different lookback windows","post_title":"Portfolio Delta and Beta Weighting Explained","post_url":"/blog/portfolio-delta-and-beta-weighting#q-beta_stability","columns":["lookback_sessions","aapl_beta","ko_beta"],"rows":[{"lookback_sessions":30,"aapl_beta":0.54,"ko_beta":-1.04},{"lookback_sessions":60,"aapl_beta":0.7,"ko_beta":-0.58},{"lookback_sessions":90,"aapl_beta":0.78,"ko_beta":-0.25},{"lookback_sessions":180,"aapl_beta":0.82,"ko_beta":-0.26},{"lookback_sessions":252,"aapl_beta":0.89,"ko_beta":-0.27},{"lookback_sessions":504,"aapl_beta":1.14,"ko_beta":-0.03}],"shape":"ranking","sql":"WITH\n    sessions AS\n    (\n        SELECT\n            ticker                                               AS ticker,\n            toDate(toTimeZone(window_start, 'America/New_York')) AS d,\n            toFloat64(argMax(close, window_start))               AS px\n        FROM global_markets.delayed_stocks_minute_aggs\n        WHERE ticker IN ('SPY', 'AAPL', 'KO')\n          AND window_start >= toDateTime('2024-04-01 04:00:00')\n          AND window_start <  toDateTime('2026-07-01 04:00:00')\n          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n             + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570\n          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n             + toMinute(toTimeZone(window_start, 'America/New_York'))) <  960\n        GROUP BY ticker, d\n    ),\n    steps AS\n    (\n        SELECT\n            ticker,\n            d,\n            px,\n            any(px) OVER (PARTITION BY ticker ORDER BY d ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px\n        FROM sessions\n    ),\n    daily_ret AS\n    (\n        SELECT ticker, d, (px / prev_px) - 1 AS r\n        FROM steps\n        WHERE prev_px > 0\n    ),\n    bench AS\n    (\n        SELECT d, r AS spy_r\n        FROM daily_ret\n        WHERE ticker = 'SPY'\n    ),\n    paired AS\n    (\n        SELECT\n            s.ticker                                                 AS ticker,\n            s.r                                                      AS r,\n            b.spy_r                                                  AS spy_r,\n            row_number() OVER (PARTITION BY s.ticker ORDER BY s.d DESC) AS rn\n        FROM daily_ret AS s\n        INNER JOIN bench AS b ON b.d = s.d\n        WHERE s.ticker IN ('AAPL', 'KO')\n    ),\n    windows AS\n    (\n        SELECT arrayJoin([30, 60, 90, 180, 252, 504]) AS lookback\n    )\nSELECT\n    w.lookback                                                                                       AS lookback_sessions,\n    round(covarPopIf(p.r, p.spy_r, p.ticker = 'AAPL') / varPopIf(p.spy_r, p.ticker = 'AAPL'), 2)     AS aapl_beta,\n    round(covarPopIf(p.r, p.spy_r, p.ticker = 'KO')   / varPopIf(p.spy_r, p.ticker = 'KO'), 2)       AS ko_beta\nFROM paired AS p\nCROSS JOIN windows AS w\nWHERE p.rn <= w.lookback\nGROUP BY w.lookback\nHAVING countIf(p.ticker = 'AAPL') > 0 AND countIf(p.ticker = 'KO') > 0\nORDER BY lookback_sessions","computed_at":"2026-08-06T05:02:16.209833+00:00","elapsed":5.828166745}