"""Build qlib DatasetH for model training workflow.""" from __future__ import annotations from typing import Any from qlib.contrib.data.handler import Alpha158 from qlib.data.dataset import DatasetH def build_qlib_dataset( instruments: str = "csi300", start_time: str = "2010-01-01", end_time: str = "2025-12-31", fit_start: str = "2010-01-01", fit_end: str = "2021-12-31", segments: dict[str, tuple[str, str]] | None = None, ) -> DatasetH: """ Build a standard Alpha158 dataset on top of qlib data handlers. This is the bridge between GP-mined factors and qlib model/backtest workflow. """ if segments is None: segments = { "train": ("2010-01-01", "2021-12-31"), "valid": ("2022-01-01", "2023-12-31"), "test": ("2024-01-01", "2025-12-31"), } handler_kwargs: dict[str, Any] = { "start_time": start_time, "end_time": end_time, "fit_start_time": fit_start, "fit_end_time": fit_end, "instruments": instruments, "infer_processors": [], "learn_processors": [], } handler = Alpha158(**handler_kwargs) dataset = DatasetH(handler=handler, segments=segments) return dataset