{"slug":"what-is-stock-beta","qid":"beta_by_year","label":"beta_by_year","post_title":"what-is-stock-beta","post_url":"/blog/lang/tl/what-is-stock-beta#q-beta_by_year","columns":["year","beta_vs_spy","r_squared"],"rows":[{"year":2019,"beta_vs_spy":1.55,"r_squared":0.55},{"year":2020,"beta_vs_spy":1.16,"r_squared":0.69},{"year":2021,"beta_vs_spy":1.31,"r_squared":0.47},{"year":2022,"beta_vs_spy":1.3,"r_squared":0.78},{"year":2023,"beta_vs_spy":1.1,"r_squared":0.51},{"year":2024,"beta_vs_spy":0.97,"r_squared":0.29},{"year":2025,"beta_vs_spy":1.25,"r_squared":0.56}],"shape":"ranking","sql":"WITH\n    daily AS\n    (\n        SELECT\n            ticker,\n            date,\n            toFloat64(close) AS px,\n            lagInFrame(toFloat64(close)) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker IN ('SPY', 'AAPL')\n          AND date >= '2018-12-01'\n          AND date <= '2025-12-31'\n    ),\n    rets AS\n    (\n        SELECT ticker, date, px / prev_px - 1 AS ret\n        FROM daily\n        WHERE prev_px > 0\n          AND date >= '2019-01-01'\n    )\nSELECT\n    toYear(s.date)                                    AS year,\n    round(covarPop(s.ret, m.ret) / varPop(m.ret), 2)  AS beta_vs_spy,\n    round(pow(corr(s.ret, m.ret), 2), 2)              AS r_squared\nFROM rets AS s\nINNER JOIN (SELECT date, ret FROM rets WHERE ticker = 'SPY') AS m ON s.date = m.date\nWHERE s.ticker = 'AAPL'\nGROUP BY year\nHAVING count() > 150\nORDER BY year","computed_at":"2026-10-16T15:32:32.056189+00:00","elapsed":0.005170055}