{"slug":"what-is-the-efficient-market-hypothesis","qid":"autocorrelation","label":"Lag-one autocorrelation of daily returns: twelve household names, July 2021 to June 2026","post_title":"What Is the Efficient Market Hypothesis?","post_url":"/blog/what-is-the-efficient-market-hypothesis#q-autocorrelation","columns":["ticker","trading_days","lag1_autocorrelation","abs_autocorrelation"],"rows":[{"ticker":"WMT","trading_days":1252,"lag1_autocorrelation":0.057,"abs_autocorrelation":0.057},{"ticker":"NVDA","trading_days":1251,"lag1_autocorrelation":-0.036,"abs_autocorrelation":0.036},{"ticker":"PG","trading_days":1253,"lag1_autocorrelation":-0.035,"abs_autocorrelation":0.035},{"ticker":"JPM","trading_days":1253,"lag1_autocorrelation":0.02,"abs_autocorrelation":0.02},{"ticker":"XOM","trading_days":1253,"lag1_autocorrelation":0.018,"abs_autocorrelation":0.018},{"ticker":"AAPL","trading_days":1253,"lag1_autocorrelation":0.017,"abs_autocorrelation":0.017},{"ticker":"TSLA","trading_days":1252,"lag1_autocorrelation":-0.015,"abs_autocorrelation":0.015},{"ticker":"SPY","trading_days":1253,"lag1_autocorrelation":-0.013,"abs_autocorrelation":0.013},{"ticker":"HD","trading_days":1253,"lag1_autocorrelation":-0.011,"abs_autocorrelation":0.011},{"ticker":"JNJ","trading_days":1253,"lag1_autocorrelation":-0.008,"abs_autocorrelation":0.008},{"ticker":"MSFT","trading_days":1253,"lag1_autocorrelation":0.008,"abs_autocorrelation":0.008},{"ticker":"KO","trading_days":1253,"lag1_autocorrelation":-0.005,"abs_autocorrelation":0.005}],"shape":"ranking","sql":"WITH daily AS (\n    SELECT ticker,\n           toDate(toTimeZone(window_start, 'America/New_York')) AS dt,\n           argMax(toFloat64(close), window_start) AS close_px\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('SPY','AAPL','MSFT','KO','JNJ','XOM','JPM','WMT','NVDA','TSLA','PG','HD')\n      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2021-07-01')\n      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959\n    GROUP BY ticker, dt\n),\nreturns AS (\n    SELECT ticker, dt,\n           close_px / lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY dt) - 1 AS ret\n    FROM daily\n),\npaired AS (\n    SELECT ticker, ret,\n           lagInFrame(ret) OVER (PARTITION BY ticker ORDER BY dt) AS prev_ret\n    FROM returns\n    WHERE ret IS NOT NULL AND ret > -0.5 AND ret < 0.5\n)\nSELECT ticker,\n       count() AS trading_days,\n       round(corr(ret, prev_ret), 3) AS lag1_autocorrelation,\n       round(abs(corr(ret, prev_ret)), 3) AS abs_autocorrelation\nFROM paired\nWHERE prev_ret IS NOT NULL\nGROUP BY ticker\nORDER BY abs_autocorrelation DESC","computed_at":"2026-07-31T03:10:47.774642+00:00","elapsed":0.004033746}