lot_sizes
Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-09-30, from partial-assignment-of-short-options.
| lot_size | trades | pct_of_trades |
|---|---|---|
| 1 contract | 80875 | 57.4 |
| 2 to 4 | 28395 | 20.1 |
| 5 to 9 | 14795 | 10.5 |
| 10 to 24 | 11881 | 8.4 |
| 25 to 99 | 4232 | 3 |
| 100 or more | 798 | 0.6 |
- Rows × columns
- 6 × 3
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
lot_size |
text | 6 distinct values (1 contract, 10 to 24, 100 or more…) | |
trades |
number | 798 to 80,875 | count |
pct_of_trades |
number | 0.6 to 57.4 | percent |
Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.
Run it yourself
This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.
SELECT
multiIf(size = 1, '1 contract',
size <= 4, '2 to 4',
size <= 9, '5 to 9',
size <= 24, '10 to 24',
size <= 99, '25 to 99',
'100 or more') AS lot_size,
count() AS trades,
round(100 * count() / sum(count()) OVER (), 1) AS pct_of_trades
FROM global_markets.options_trades
WHERE underlying_symbol = 'AAPL'
AND sip_timestamp >= '2026-05-14 00:00:00'
AND sip_timestamp < '2026-05-15 00:00:00'
GROUP BY lot_size
ORDER BY min(size)
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.