{"slug":"twap-vs-vwap-vs-pov-orders","qid":"open_vs_lunch","label":"open_vs_lunch","post_title":"twap-vs-vwap-vs-pov-orders","post_url":"/blog/twap-vs-vwap-vs-pov-orders#q-open_vs_lunch","columns":["ticker","opening_share_pct","lunch_share_pct","closing_share_pct","open_to_lunch_ratio","pov_lunch_fill_k_shares"],"rows":[{"ticker":"MSFT","opening_share_pct":18,"lunch_share_pct":5.4,"closing_share_pct":14.5,"open_to_lunch_ratio":3.4,"pov_lunch_fill_k_shares":145},{"ticker":"KO","opening_share_pct":15.6,"lunch_share_pct":4.8,"closing_share_pct":19.7,"open_to_lunch_ratio":3.3,"pov_lunch_fill_k_shares":56},{"ticker":"NVDA","opening_share_pct":17.5,"lunch_share_pct":5.5,"closing_share_pct":12.4,"open_to_lunch_ratio":3.2,"pov_lunch_fill_k_shares":586},{"ticker":"AAPL","opening_share_pct":16.3,"lunch_share_pct":5.5,"closing_share_pct":15.7,"open_to_lunch_ratio":3,"pov_lunch_fill_k_shares":210},{"ticker":"SPY","opening_share_pct":11.4,"lunch_share_pct":4.9,"closing_share_pct":22,"open_to_lunch_ratio":2.3,"pov_lunch_fill_k_shares":197}],"shape":"table","sql":"WITH bars AS\n(\n    SELECT\n        ticker,\n        toTimeZone(window_start, 'America/New_York')  AS et,\n        toHour(et) * 60 + toMinute(et)                AS minute_of_day,\n        toDate(et)                                    AS et_date,\n        toFloat64(volume)                             AS shares\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO')\n      AND window_start >= toDateTime('2026-06-01 00:00:00', 'UTC')\n      AND window_start <  toDateTime('2026-09-01 00:00:00', 'UTC')\n)\nSELECT\n    ticker,\n    round(100 * sumIf(shares, minute_of_day < 600) / sum(shares), 1)                            AS opening_share_pct,\n    round(100 * sumIf(shares, minute_of_day >= 750 AND minute_of_day < 780) / sum(shares), 1)   AS lunch_share_pct,\n    round(100 * sumIf(shares, minute_of_day >= 930) / sum(shares), 1)                           AS closing_share_pct,\n    round(sumIf(shares, minute_of_day < 600)\n          / sumIf(shares, minute_of_day >= 750 AND minute_of_day < 780), 1)                     AS open_to_lunch_ratio,\n    toUInt32(round(0.10 * sumIf(shares, minute_of_day >= 750 AND minute_of_day < 780)\n                   / countDistinct(et_date) / 1e3))                                             AS pov_lunch_fill_k_shares\nFROM bars\nWHERE minute_of_day >= 570\n  AND minute_of_day <  960\nGROUP BY ticker\nHAVING sumIf(shares, minute_of_day >= 750 AND minute_of_day < 780) > 0\nORDER BY open_to_lunch_ratio DESC","computed_at":"2026-09-17T15:50:27.399245+00:00","elapsed":0.035636212}