{"slug":"stock-correlation-matrix-from-the-free-sql-api","qid":"quarterly_estimates","label":"AAPL and MSFT return correlation measured quarter by quarter","post_title":"Stock Correlation Matrix in One SQL Query","post_url":"/blog/stock-correlation-matrix-from-the-free-sql-api#q-quarterly_estimates","columns":["window_start","quarter_label","return_corr"],"rows":[{"window_start":"2025-01-01","quarter_label":"Jan 2025","return_corr":0.415},{"window_start":"2025-04-01","quarter_label":"Apr 2025","return_corr":0.729},{"window_start":"2025-07-01","quarter_label":"Jul 2025","return_corr":0.032},{"window_start":"2025-10-01","quarter_label":"Oct 2025","return_corr":0.203},{"window_start":"2026-01-01","quarter_label":"Jan 2026","return_corr":0.108},{"window_start":"2026-04-01","quarter_label":"Apr 2026","return_corr":0.265},{"window_start":"2026-07-01","quarter_label":"Jul 2026","return_corr":0}],"shape":"ranking","sql":"WITH\n    daily AS\n    (\n        SELECT\n            ticker,\n            date,\n            toFloat64(close) AS px,\n            lagInFrame(toFloat64(close), 1) OVER (\n                PARTITION BY ticker ORDER BY date\n                ROWS BETWEEN 1 PRECEDING AND CURRENT ROW\n            ) AS prev_px\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker IN ('AAPL', 'MSFT')\n          AND date >= '2025-01-01'\n          AND date <  '2026-10-01'\n    ),\n    rets AS\n    (\n        SELECT ticker, date, px / prev_px - 1 AS ret\n        FROM daily\n        WHERE prev_px > 0\n    ),\n    paired AS\n    (\n        SELECT\n            a.date AS d,\n            a.ret  AS ret_aapl,\n            b.ret  AS ret_msft\n        FROM rets AS a\n        INNER JOIN rets AS b ON a.date = b.date\n        WHERE a.ticker = 'AAPL' AND b.ticker = 'MSFT'\n    )\nSELECT\n    toString(toStartOfQuarter(d))                AS window_start,\n    formatDateTime(toStartOfQuarter(d), '%b %Y') AS quarter_label,\n    round(corr(ret_aapl, ret_msft), 3)           AS return_corr\nFROM paired\nGROUP BY window_start, quarter_label\nORDER BY window_start","computed_at":"2026-10-06T16:07:27.186961+00:00","elapsed":0.002947268}