{"slug":"pairs-trading-and-cointegration","qid":"spread_z_trace","label":"Weekly z score of the KO/PEP spread, hedge ratio fitted on 2023 only","post_title":"Pairs Trading and Cointegration Explained","post_url":"/blog/pairs-trading-and-cointegration#q-spread_z_trace","columns":["week","z_score"],"rows":[{"week":"2024-01-01","z_score":-1.53},{"week":"2024-01-08","z_score":-2.4},{"week":"2024-01-15","z_score":-2.08},{"week":"2024-01-22","z_score":-0.76},{"week":"2024-01-29","z_score":-0.76},{"week":"2024-02-05","z_score":-0.82},{"week":"2024-02-12","z_score":-1.08},{"week":"2024-02-19","z_score":-1.64},{"week":"2024-02-26","z_score":-1.39},{"week":"2024-03-04","z_score":-1.6},{"week":"2024-03-11","z_score":-1.09},{"week":"2024-03-18","z_score":0.68},{"week":"2024-03-25","z_score":1.07},{"week":"2024-04-01","z_score":0.89},{"week":"2024-04-08","z_score":1.63},{"week":"2024-04-15","z_score":1.43},{"week":"2024-04-22","z_score":0.32},{"week":"2024-04-29","z_score":0.1},{"week":"2024-05-06","z_score":0.27},{"week":"2024-05-13","z_score":1.17},{"week":"2024-05-20","z_score":0.67},{"week":"2024-05-27","z_score":-1.75},{"week":"2024-06-03","z_score":-2.71},{"week":"2024-06-10","z_score":-2.42},{"week":"2024-06-17","z_score":-1.59},{"week":"2024-06-24","z_score":-1.92},{"week":"2024-07-01","z_score":-1.71},{"week":"2024-07-08","z_score":-1.17},{"week":"2024-07-15","z_score":-1.2},{"week":"2024-07-22","z_score":-1.24},{"week":"2024-07-29","z_score":-1.25},{"week":"2024-08-05","z_score":-1.48},{"week":"2024-08-12","z_score":-1.49},{"week":"2024-08-19","z_score":-1.29},{"week":"2024-08-26","z_score":-2.81},{"week":"2024-09-02","z_score":-1.17},{"week":"2024-09-09","z_score":-1.11},{"week":"2024-09-16","z_score":-2.1},{"week":"2024-09-23","z_score":-1.93},{"week":"2024-09-30","z_score":-1.21},{"week":"2024-10-07","z_score":0.3},{"week":"2024-10-14","z_score":0.02},{"week":"2024-10-21","z_score":1.58},{"week":"2024-10-28","z_score":1.52},{"week":"2024-11-04","z_score":1.8},{"week":"2024-11-11","z_score":1.46},{"week":"2024-11-18","z_score":0.87},{"week":"2024-11-25","z_score":0.93},{"week":"2024-12-02","z_score":0.63},{"week":"2024-12-09","z_score":0.29},{"week":"2024-12-16","z_score":-0.38},{"week":"2024-12-23","z_score":-0.49},{"week":"2024-12-30","z_score":-1.04},{"week":"2025-01-06","z_score":-2.39},{"week":"2025-01-13","z_score":-1.79},{"week":"2025-01-20","z_score":-1},{"week":"2025-01-27","z_score":-1.44},{"week":"2025-02-03","z_score":-2.31},{"week":"2025-02-10","z_score":-3.1},{"week":"2025-02-17","z_score":-2.14},{"week":"2025-02-24","z_score":-1.69},{"week":"2025-03-03","z_score":-1.42},{"week":"2025-03-10","z_score":-1.13},{"week":"2025-03-17","z_score":-1.1},{"week":"2025-03-24","z_score":-1.05},{"week":"2025-03-31","z_score":-0.98},{"week":"2025-04-07","z_score":-1.45},{"week":"2025-04-14","z_score":-1.81},{"week":"2025-04-21","z_score":-2.08},{"week":"2025-04-28","z_score":-1.77},{"week":"2025-05-05","z_score":-1.53},{"week":"2025-05-12","z_score":-1.62},{"week":"2025-05-19","z_score":-1.53},{"week":"2025-05-26","z_score":-1.26},{"week":"2025-06-02","z_score":-1.04},{"week":"2025-06-09","z_score":-0.69},{"week":"2025-06-16","z_score":-0.06},{"week":"2025-06-23","z_score":-0.21},{"week":"2025-06-30","z_score":0.12},{"week":"2025-07-07","z_score":1.41},{"week":"2025-07-14","z_score":3.18},{"week":"2025-07-21","z_score":2.42},{"week":"2025-07-28","z_score":1.43},{"week":"2025-08-04","z_score":1.4},{"week":"2025-08-11","z_score":1.88},{"week":"2025-08-18","z_score":1.41},{"week":"2025-08-25","z_score":1.42},{"week":"2025-09-01","z_score":1.33},{"week":"2025-09-08","z_score":1.23},{"week":"2025-09-15","z_score":1.09},{"week":"2025-09-22","z_score":1.12},{"week":"2025-09-29","z_score":0.83},{"week":"2025-10-06","z_score":2.28},{"week":"2025-10-13","z_score":1.84},{"week":"2025-10-20","z_score":0.37},{"week":"2025-10-27","z_score":-0.5},{"week":"2025-11-03","z_score":-2.94},{"week":"2025-11-10","z_score":-1.93},{"week":"2025-11-17","z_score":-2.58},{"week":"2025-11-24","z_score":-1.77},{"week":"2025-12-01","z_score":-0.7},{"week":"2025-12-08","z_score":0.04},{"week":"2025-12-15","z_score":-0.11},{"week":"2025-12-22","z_score":-0.68},{"week":"2025-12-29","z_score":-0.68}],"shape":"series","sql":"WITH\n    daily AS (\n        SELECT\n            date,\n            anyIf(toFloat64(close), ticker = 'PEP') AS pep,\n            anyIf(toFloat64(close), ticker = 'KO')  AS ko\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker IN ('KO', 'PEP')\n          AND date BETWEEN '2023-01-01' AND '2025-12-31'\n        GROUP BY date\n        HAVING pep > 0 AND ko > 0\n    ),\n    fitted AS (\n        SELECT covarSamp(pep, ko) / varSamp(ko) AS beta\n        FROM daily\n        WHERE date < '2024-01-01'\n    ),\n    spread AS (\n        SELECT\n            daily.date                          AS date,\n            daily.pep - fitted.beta * daily.ko  AS spread_usd\n        FROM daily\n        CROSS JOIN fitted\n    ),\n    scored AS (\n        SELECT\n            date,\n            (spread_usd - avg(spread_usd) OVER (\n                 ORDER BY date ROWS BETWEEN 62 PRECEDING AND CURRENT ROW))\n            / stddevSampStable(spread_usd) OVER (\n                 ORDER BY date ROWS BETWEEN 62 PRECEDING AND CURRENT ROW) AS z\n        FROM spread\n    )\nSELECT\n    toString(toMonday(date))   AS week,\n    round(argMax(z, date), 2)  AS z_score\nFROM scored\nWHERE date >= '2024-01-01'\n  AND isFinite(z)\nGROUP BY week\nORDER BY week","computed_at":"2026-08-13T16:30:37.581387+00:00","elapsed":0.001798747}