DuckDB-based reader for an options-chain data lake stored in Azure Data Lake Storage
Project description
radaroptions
DuckDB-based reader for an options-chain data lake stored in Azure Data Lake
Storage Gen2. No JVM, no Spark cluster required - reads partitioned parquet
directly via DuckDB's azure extension.
Auth is picked automatically based on which environment variable is set:
- A read-only SAS URL (
RADAR_LAKE_SAS_URL) - the normal way to get access. One single value someone gives you (bundles account + container + token) - no Azure account needed at all. credential_chain- an Azure CLI session (az login) or a service principal (AZURE_TENANT_ID/AZURE_CLIENT_ID/AZURE_CLIENT_SECRET), for anyone with their own Azure AD identity that has read access to the storage account (setRADAR_LAKE_ACCOUNT/RADAR_LAKE_CONTAINERtoo in this case, since there's no URL to derive them from).
Install
pip install radaroptions
Configure
Installing the package doesn't grant you access. No access yet? Email dsantamaria@radaroptions.net.
RADAR_LAKE_SAS_URL=<the URL they give you>
That's the only variable most people need. Running a read without it set fails with a clear message pointing back to this contact.
Usage
Python
from radaroptions import read_day, read_range
df = read_day("2026-06-11")
df = read_range(
"2026-01-01", "2026-06-30",
columns=["strike", "option_type", "open_interest", "gamma", "current_price", "time"],
)
CLI
radaroptions read-day 2026-06-11 --out day.parquet
radaroptions read-range 2026-01-01 2026-06-30 -c strike,option_type,open_interest
radaroptions query "SELECT count(*) FROM read_parquet('abfss://<container>@<account>.dfs.core.windows.net/2026/06/*/*.parquet')"
read_range globs one file pattern per (year, month) covering the requested
dates and filters on the data's own time column, using union_by_name=true
so columns added or renamed over the years don't break the read.
Troubleshooting
- TLS / proxy errors on Windows: set
RADAR_LAKE_AZURE_TRANSPORT=curlto switch DuckDB's azure extension from WinHTTP to curl. - Schema errors reading a date range: a genuine type change in the
underlying data (e.g. a column that used to be
decimaland is nowdouble) can still error even withunion_by_name=true- passcolumns=[...]to select only the fields you need.
License
Proprietary - see LICENSE. Installable for authorized use only; no rights
are granted to copy, modify, or redistribute this software.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file radaroptions-0.1.0.tar.gz.
File metadata
- Download URL: radaroptions-0.1.0.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24e67a71eadd0932ccc021d9bac352a5492248495967549466197ad09af33f5a
|
|
| MD5 |
da09e7541db8b8a44552b20018c73c70
|
|
| BLAKE2b-256 |
0c74f68091a9bfc1d9b74a22b997dc0f3a08fe9de54288b6aa7a833b51ec59f2
|
File details
Details for the file radaroptions-0.1.0-py3-none-any.whl.
File metadata
- Download URL: radaroptions-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
385214fe629d954a3a6171f9c35681d5dfcf9acb34293d555a20b72c95d8d173
|
|
| MD5 |
be3b3495daf319de4a5607afe985e79c
|
|
| BLAKE2b-256 |
b60c81cecd8fdcf4e41e618e3e913ff2a030ad48b635af27a2faa3da6186f84d
|