{"slug":"best-stocks-for-day-trading-options","qid":"concentration","label":"concentration","post_title":"best-stocks-for-day-trading-options","post_url":"/blog/best-stocks-for-day-trading-options#q-concentration","columns":["bucket","underlying_count","share_of_all_contract_volume_pct"],"rows":[{"bucket":"top 5","underlying_count":5,"share_of_all_contract_volume_pct":25.2},{"bucket":"ranks 6 to 20","underlying_count":15,"share_of_all_contract_volume_pct":20.5},{"bucket":"ranks 21 to 100","underlying_count":80,"share_of_all_contract_volume_pct":27.6},{"bucket":"rank 101 and below","underlying_count":5453,"share_of_all_contract_volume_pct":26.8}],"shape":"ranking","sql":"WITH ranked AS\n(\n    SELECT\n        underlying_symbol                                 AS symbol,\n        sum(volume)                                       AS contracts,\n        row_number() OVER (ORDER BY sum(volume) DESC)     AS vol_rank\n    FROM global_markets.options_greeks\n    WHERE date IN\n        (\n            SELECT date\n            FROM global_markets.options_greeks\n            WHERE date >= today() - 40\n            GROUP BY date\n            ORDER BY date DESC\n            LIMIT 20\n        )\n      AND volume > 0\n    GROUP BY underlying_symbol\n)\nSELECT\n    multiIf(vol_rank <= 5,   'top 5',\n            vol_rank <= 20,  'ranks 6 to 20',\n            vol_rank <= 100, 'ranks 21 to 100',\n                             'rank 101 and below')       AS bucket,\n    count()                                               AS underlying_count,\n    round(sum(contracts) / (SELECT sum(contracts) FROM ranked) * 100, 1) AS share_of_all_contract_volume_pct\nFROM ranked\nGROUP BY bucket\nORDER BY min(vol_rank)","computed_at":"2026-09-20T15:08:59.454723+00:00","elapsed":3.06100479}