Feature engineering, labeling, alternative bars, and leakage-safe datasets for financial ML.
ml4t-engineer provides 120 registry features across 11 categories, path-dependent
and fixed-horizon labeling, activity-based bar sampling, and train-only preprocessing.
The core interface uses Polars DataFrames.
Development source supports Python 3.12, 3.13, 3.14, and 3.15 on Linux, macOS, and Windows.
Python 3.15 support and the calendar API used below are intended for the 0.2 release.
Release 0.1.6 supports Python 3.12-3.14; use its
version-matched quick start
instead of passing the new calendar argument to that release.
pip install ml4t-engineerUntil 0.2 is available from PyPI, run the examples below from a
source checkout with uv sync --no-dev, using that environment's Python.
The quick start uses only core dependencies. Optional extras provide TA-Lib validation, DuckDB and PyArrow storage, market calendars, visualization, statistics, and ML tools:
pip install "ml4t-engineer[ta]"
pip install "ml4t-engineer[store]"
pip install "ml4t-engineer[calendars]"
pip install "ml4t-engineer[viz]"
pip install "ml4t-engineer[stats]"
pip install "ml4t-engineer[ml]"The development ta extra uses TA-Lib 0.8.2 or later in the 0.8 series; its wheels
include the native library. For source builds, follow the
upstream installation guide.
The core package does not require an external service, credentials, or special hardware.
from datetime import date, timedelta
import polars as pl
from ml4t.engineer import compute_features
close = [100.0 + i * 0.1 + (i % 7) * 0.2 for i in range(100)]
ohlcv = pl.DataFrame(
{
"timestamp": [date(2024, 1, 1) + timedelta(days=i) for i in range(100)],
"open": close,
"high": [price + 1.0 for price in close],
"low": [price - 1.0 for price in close],
"close": close,
"volume": [100_000 + i * 100 for i in range(100)],
}
)
features = compute_features(ohlcv, ["rsi", "macd", "atr"], calendar=None)
assert {"rsi", "macd", "atr"} <= set(features.columns)
assert features.height == ohlcv.heightcompute_features() returns the input columns with the requested feature columns
appended. This example explicitly uses observation-row mode with calendar=None;
periods count rows, not scheduled sessions or elapsed days. Use the feature registry
to inspect categories and parameters before building larger pipelines.
- Technical, volatility, risk, microstructure, statistical, and ML-oriented features
- Triple-barrier, ATR-barrier, percentile, fixed-horizon, trend-scanning, and meta-labels
- Tick, volume, dollar, imbalance, and run bars
- Train/test splitting with train-only scaling
- Feature metadata search and discovery
See the documentation for tutorials, task-oriented guides, explanations, and the API reference. Report defects and request changes through GitHub Issues.
ml4t-specsdefines the shared market-data and artifact contracts used by this package.ml4t-datasupplies validated market data for feature computation.ml4t-diagnosticevaluates features, labels, and model signals produced from engineered datasets.
Read CONTRIBUTING.md before opening an issue or pull request.
git clone https://github.com/ml4t/engineer.git
cd engineer
uv sync --dev --extra docs --extra ta --extra store --extra viz
uv run ruff check src/ tests/ examples/ scripts/
uv run ruff format --check src/ tests/ examples/ scripts/
uv run ty check
uv run pytest tests/ -q
uv build
uv run python -c "import ml4t.engineer"
uv run mkdocs build --strictPull requests must also pass the supported Python and operating-system matrix, dependency and vulnerability review, clean-wheel installation, documented workflow tests, and ecosystem qualification.