{"slug":"the-390-rule-in-options-trading","qid":"spy_trade_sizes","label":"spy_trade_sizes","post_title":"the-390-rule-in-options-trading","post_url":"/blog/the-390-rule-in-options-trading#q-spy_trade_sizes","columns":["bucket","trade_count","share_of_trades_pct"],"rows":[{"bucket":"1 contract","trade_count":642437,"share_of_trades_pct":47.8},{"bucket":"2 to 5 contracts","trade_count":410232,"share_of_trades_pct":30.5},{"bucket":"6 to 10 contracts","trade_count":129068,"share_of_trades_pct":9.6},{"bucket":"11 to 50 contracts","trade_count":132413,"share_of_trades_pct":9.9},{"bucket":"51 or more contracts","trade_count":29028,"share_of_trades_pct":2.2}],"shape":"ranking","sql":"SELECT\n    bucket,\n    trade_count,\n    round(100 * trade_count / sum(trade_count) OVER (), 1) AS share_of_trades_pct\nFROM\n(\n    SELECT\n        multiIf(size = 1, 1, size <= 5, 2, size <= 10, 3, size <= 50, 4, 5) AS bucket_rank,\n        multiIf(bucket_rank = 1, '1 contract',\n                bucket_rank = 2, '2 to 5 contracts',\n                bucket_rank = 3, '6 to 10 contracts',\n                bucket_rank = 4, '11 to 50 contracts',\n                                 '51 or more contracts')                     AS bucket,\n        count()                                                              AS trade_count\n    FROM global_markets.options_trades\n    WHERE underlying_symbol = 'SPY'\n      AND sip_timestamp >= toDateTime('2026-09-10 13:30:00', 'UTC')\n      AND sip_timestamp <  toDateTime('2026-09-10 20:30:00', 'UTC')\n    GROUP BY bucket_rank, bucket\n)\nORDER BY bucket_rank","computed_at":"2026-09-17T17:11:47.679644+00:00","elapsed":0.002593841}