{"slug":"implied-volatility-vs-beta","qid":"beta_by_frequency","label":"Beta and R-squared against SPY: daily returns versus weekly, twelve months to Aug 21 2026","post_title":"Implied Volatility vs Beta: What Each Tells You","post_url":"/blog/implied-volatility-vs-beta#q-beta_by_frequency","columns":["symbol","beta_daily","beta_weekly","r_squared","return_count"],"rows":[{"symbol":"COIN","beta_daily":2.83,"beta_weekly":2.5,"r_squared":0.28,"return_count":250},{"symbol":"TSLA","beta_daily":2.23,"beta_weekly":1.92,"r_squared":0.38,"return_count":250},{"symbol":"NVDA","beta_daily":1.88,"beta_weekly":1.66,"r_squared":0.43,"return_count":250},{"symbol":"MSFT","beta_daily":0.94,"beta_weekly":1.58,"r_squared":0.14,"return_count":250},{"symbol":"AAPL","beta_daily":0.71,"beta_weekly":0.83,"r_squared":0.13,"return_count":250},{"symbol":"GLD","beta_daily":0.7,"beta_weekly":0.76,"r_squared":0.1,"return_count":250},{"symbol":"TLT","beta_daily":0.17,"beta_weekly":0.12,"r_squared":0.05,"return_count":250},{"symbol":"JNJ","beta_daily":-0.2,"beta_weekly":-0.52,"r_squared":0.02,"return_count":250},{"symbol":"KO","beta_daily":-0.27,"beta_weekly":-0.04,"r_squared":0.03,"return_count":250},{"symbol":"XOM","beta_daily":-0.51,"beta_weekly":-0.93,"r_squared":0.07,"return_count":250}],"shape":"table","sql":"WITH\n    px AS\n    (\n        SELECT\n            ticker,\n            date,\n            toFloat64(close) AS close_px\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker IN ('SPY','AAPL','MSFT','NVDA','TSLA','COIN','KO','JNJ','XOM','GLD','TLT')\n          AND date >= '2025-08-22'\n          AND date <= '2026-08-21'\n    ),\n    daily_ret AS\n    (\n        SELECT\n            ticker,\n            date,\n            close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret\n        FROM px\n    ),\n    weekly_px AS\n    (\n        SELECT\n            ticker,\n            toMonday(date)         AS week_start,\n            argMax(close_px, date) AS week_close\n        FROM px\n        GROUP BY ticker, week_start\n    ),\n    weekly_ret AS\n    (\n        SELECT\n            ticker,\n            week_start,\n            week_close / lagInFrame(week_close) OVER (PARTITION BY ticker ORDER BY week_start ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret\n        FROM weekly_px\n    ),\n    daily_beta AS\n    (\n        SELECT\n            s.ticker                                           AS symbol,\n            round(covarSamp(s.ret, i.ret) / varSamp(i.ret), 2) AS beta_daily,\n            round(pow(corr(s.ret, i.ret), 2), 2)               AS r_squared,\n            count()                                            AS return_count\n        FROM daily_ret AS s\n        INNER JOIN\n        (\n            SELECT date, ret FROM daily_ret WHERE ticker = 'SPY' AND isFinite(ret)\n        ) AS i ON i.date = s.date\n        WHERE s.ticker != 'SPY' AND isFinite(s.ret)\n        GROUP BY symbol\n    ),\n    weekly_beta AS\n    (\n        SELECT\n            s.ticker                                           AS symbol,\n            round(covarSamp(s.ret, i.ret) / varSamp(i.ret), 2) AS beta_weekly\n        FROM weekly_ret AS s\n        INNER JOIN\n        (\n            SELECT week_start, ret FROM weekly_ret WHERE ticker = 'SPY' AND isFinite(ret)\n        ) AS i ON i.week_start = s.week_start\n        WHERE s.ticker != 'SPY' AND isFinite(s.ret)\n        GROUP BY symbol\n    )\nSELECT\n    d.symbol       AS symbol,\n    d.beta_daily   AS beta_daily,\n    w.beta_weekly  AS beta_weekly,\n    d.r_squared    AS r_squared,\n    d.return_count AS return_count\nFROM daily_beta AS d\nINNER JOIN weekly_beta AS w ON w.symbol = d.symbol\nORDER BY beta_daily DESC","computed_at":"2026-08-28T23:14:46.359718+00:00","elapsed":0.005710655}