File size: 1,244 Bytes
590a501
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
"""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