Composable point-in-time feature engineering and dataset building for systematic research.
Full documentation: https://alphaforge.readthedocs.io/en/latest/
Install from PyPI:
pip install alphaforgeFor development:
git clone https://github.com/steveya/alphaforge
cd alphaforge
pip install -e ".[dev]"
pre-commit installRun the local end-to-end MVP demo:
python examples/run_mvp_demo.pyimport pandas as pd
from alphaforge.pit import PITAccessor, PITTransformSpec
from alphaforge.store.duckdb_parquet import DuckDBParquetStore
store = DuckDBParquetStore(root="./store")
pit = PITAccessor(store.conn())
pit.upsert_pit_observations(
pd.DataFrame(
{
"series_key": ["GDP", "GDP"],
"obs_date": [pd.Timestamp("2024-12-31"), pd.Timestamp("2024-12-31")],
"asof_utc": [
pd.Timestamp("2025-01-10", tz="UTC"),
pd.Timestamp("2025-02-10", tz="UTC"),
],
"value": [1.0, 1.1],
}
)
)
result = pit.apply_transform(
PITTransformSpec(
input_series_key="GDP",
output_series_key="GDP_diff",
axis="obs_path",
op="diff",
params={"periods": 1},
),
overwrite=True,
)
print(result.transform_id, result.rows_written)DataContext: runtime wiring for sources, calendars, and storeFeatureTemplateandTargetTemplate: fit/transform abstractionsDatasetSpec: declarative dataset specificationbuild_dataset: materialize, align, join, and return a dataset artifactPITAccessor: snapshot and revision-timeline access to revised series
- Tests:
pytest - Lint:
ruff check . - Type check:
mypy alphaforge - Docs:
mkdocs build --strict - Build:
python -m build
MIT