Public API
The stable public API is exported from bagelquant_core,
bagelquant_core.transformer, and bagelquant_core.composer.
Top-Level Objects
Domain: trading sessions plus static or dynamic asset membership.Panel: immutable numeric time-by-asset data aligned to aDomain.CategoryPanel: immutable time-by-asset label data aligned to aDomain.Graph: lazy derived logic produced by transformers and composers.
from bagelquant_core import CategoryPanel, Domain, Graph, Panel
Transformers
Transformers accept one Panel or Graph and return a Graph.
from bagelquant_core.transformer import rank, winsorize, zscore
factor = rank(zscore(winsorize(raw_panel)), name="factor")
The generated transformer reference is in
docs/reference/transformers/index.md.
Composers
Composers accept one or more Panel or Graph inputs and return a Graph.
from bagelquant_core.composer import div, weighted_sum
ratio = div(book, price, name="book_to_price")
prediction = weighted_sum(ratio, quality, weights=[0.6, 0.4])
The generated composer reference is in
docs/reference/composers/index.md.
Custom Operations
Use decorators when project-specific logic should behave like built-in operations.
import pandas as pd
from bagelquant_core.composer import composer
from bagelquant_core.transformer import transformer
@transformer
def demean(frame: pd.DataFrame) -> pd.DataFrame:
return frame.sub(frame.mean(axis=1), axis=0)
@composer
def average(*frames: pd.DataFrame) -> pd.DataFrame:
return sum(frames) / len(frames)
Compatibility Boundary
Public APIs are DataFrame and Panel oriented. bagelquant-core does not own
data retrieval, provider credentials, persistence, portfolio simulation, or
application UI.