Quick Start

bagelquant-data is the provider-neutral data layer for BagelQuant. It manages provider adapters, local lake snapshots, metadata, and panel-shaped retrieval.

Install

uv add bagelquant-data

Use the optional Tushare dependency when loading from Tushare:

uv add "bagelquant-data[tushare]"

Register A Provider

from bagelquant_data.datasource import DataSourceRegistry, TushareDataSource

registry = DataSourceRegistry()
registry.register(TushareDataSource(token="your-token"))

Create A Local Lake

from bagelquant_data.lake import DataLakeManager, LocalDataLake

lake = LocalDataLake(".bagelquant-data-lake")
manager = DataLakeManager(lake, registry=registry)

Write Or Refresh Data

For custom data, write a pandas frame directly:

manager.add("custom", "prices", prices)

For provider data, request a dataset and persist the result as a local snapshot:

from bagelquant_data.datasource import DataRequest

manager.update(
    "tushare",
    DataRequest(
        dataset="daily",
        fields=("ts_code", "trade_date", "close"),
        start_date="2024-01-01",
        end_date="2024-01-31",
    ),
)

Retrieve Data

from bagelquant_data.loader import Loader

loaded = Loader(registry=registry, lake=lake).source("tushare").load(
    "daily",
    fields=("open", "close"),
    start_date="2024-01-01",
    end_date="2024-01-31",
)

frame = loaded.data

For research inputs, load a date-by-asset field:

retrieved = Loader(registry=registry, lake=lake).source("tushare").load_panel(
    dataset="daily",
    field="close",
    universe=["000001.SZ", "600000.SH"],
    start_date="2024-01-01",
    end_date="2024-12-31",
)

RetrievedPanel exposes plain pandas data plus calendar and universe objects so downstream packages can decide how to construct their own domain objects.