Opinionated CLI for finding unusual options activity in S&P 500 tickers.
optionctl scans all S&P 500 tickers by default.
It ranks contracts using an unusual-flow score weighted toward:
Vol/OI(new opening activity signal)- raw contract volume
- distance to the underlying (proximity)
- IV (small weight)
The default scan is tuned for unusual flow, not penny-option lottery tickets:
max_price:0.01min_volume:250min_vol_oi:1.0DTE:0-15
uv run optionctl scanThis runs the default unusual-flow scan across the full S&P 500 universe.
# Tighten unusual threshold
uv run optionctl scan --min-vol-oi 2.0 --min-volume 500
# JSON / CSV output
uv run optionctl scan --output json
uv run optionctl scan --output csv| Flag | Default | Purpose |
|---|---|---|
--min-dte |
0 |
Minimum days to expiration |
--max-dte |
15 |
Maximum days to expiration |
--max-price |
0.05 |
Max contract ask/last |
--min-volume |
250 |
Minimum contract volume |
--min-vol-oi |
1.0 |
Minimum volume/open-interest ratio |
--output |
table |
table, json, csv |
--limit |
20 |
Max rows to display |
--all |
false |
Show all rows |
--refresh |
false |
Bypass chain cache |
# Warm S&P 500 universe
uv run optionctl cache warm
# Warm all expirations
uv run optionctl cache warm --all
# Inspect / clear cache
uv run optionctl cache status
uv run optionctl cache clear
# Prune volume-history files
uv run optionctl cache prune-history --max-age 30make format
make lint
make test