{"slug":"how-often-mutual-funds-change-holdings","qid":"drift_since_snapshot","label":"drift_since_snapshot","post_title":"how-often-mutual-funds-change-holdings","post_url":"/blog/how-often-mutual-funds-change-holdings#q-drift_since_snapshot","columns":["ticker","close_at_quarter_end","latest_close","change_pct"],"rows":[{"ticker":"MSFT","close_at_quarter_end":373.02,"latest_close":512.49,"change_pct":37.4},{"ticker":"AAPL","close_at_quarter_end":289.36,"latest_close":339.55,"change_pct":17.3},{"ticker":"NVDA","close_at_quarter_end":200.09,"latest_close":227.53,"change_pct":13.7},{"ticker":"KO","close_at_quarter_end":81.27,"latest_close":87.99,"change_pct":8.3},{"ticker":"JNJ","close_at_quarter_end":253.97,"latest_close":270.74,"change_pct":6.6},{"ticker":"SPY","close_at_quarter_end":746.77,"latest_close":767.64,"change_pct":2.8}],"shape":"ranking","sql":"WITH\n    (\n        SELECT max(date)\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker = 'SPY'\n          AND date < toStartOfQuarter(today())\n    ) AS snapshot_date,\n    (\n        SELECT max(date)\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker = 'SPY'\n    ) AS latest_date\nSELECT\n    ticker,\n    round(toFloat64(anyIf(close, date = snapshot_date)), 2) AS close_at_quarter_end,\n    round(toFloat64(anyIf(close, date = latest_date)), 2)   AS latest_close,\n    round(100 * (toFloat64(anyIf(close, date = latest_date))\n               / toFloat64(anyIf(close, date = snapshot_date)) - 1), 1) AS change_pct\nFROM global_markets.stocks_daily_aggs\nWHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'JNJ', 'SPY')\n  AND date IN (snapshot_date, latest_date)\nGROUP BY ticker\nHAVING countIf(date = snapshot_date) > 0\n   AND countIf(date = latest_date) > 0\nORDER BY abs(change_pct) DESC","computed_at":"2026-09-28T15:55:39.808229+00:00","elapsed":2.701080183}