{"record":{"id":"71dd76102252278e","repo":"microsoft/qlib","slug":"empty-data-from-dataset-please-check-your-dataset-71dd76","errorCode":null,"errorMessage":"Empty data from dataset, please check your dataset config.","messagePattern":"Empty data from dataset, please check your dataset config\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"qlib/contrib/model/pytorch_gru_ts.py","lineNumber":210,"sourceCode":"                loss = self.loss_fn(pred, label, weight.to(self.device))\n                losses.append(loss.item())\n\n                score = self.metric_fn(pred, label)\n                scores.append(score.item())\n\n        return np.mean(losses), np.mean(scores)\n\n    def fit(\n        self,\n        dataset,\n        evals_result=dict(),\n        save_path=None,\n        reweighter=None,\n    ):\n        dl_train = dataset.prepare(\"train\", col_set=[\"feature\", \"label\"], data_key=DataHandlerLP.DK_L)\n        dl_valid = dataset.prepare(\"valid\", col_set=[\"feature\", \"label\"], data_key=DataHandlerLP.DK_L)\n        if dl_train.empty or dl_valid.empty:\n            raise ValueError(\"Empty data from dataset, please check your dataset config.\")\n\n        dl_train.config(fillna_type=\"ffill+bfill\")  # process nan brought by dataloader\n        dl_valid.config(fillna_type=\"ffill+bfill\")  # process nan brought by dataloader\n\n        if reweighter is None:\n            wl_train = np.ones(len(dl_train))\n            wl_valid = np.ones(len(dl_valid))\n        elif isinstance(reweighter, Reweighter):\n            wl_train = reweighter.reweight(dl_train)\n            wl_valid = reweighter.reweight(dl_valid)\n        else:\n            raise ValueError(\"Unsupported reweighter type.\")\n\n        train_loader = DataLoader(\n            ConcatDataset(dl_train, wl_train),\n            batch_size=self.batch_size,\n            shuffle=True,\n            num_workers=self.n_jobs,","sourceCodeStart":192,"sourceCodeEnd":228,"githubUrl":"https://github.com/microsoft/qlib/blob/79633dd9506ea689e5400dea0197717b5b3d74b7/qlib/contrib/model/pytorch_gru_ts.py#L192-L228","documentation":"Raised at the start of GRUModelTS.fit when either the train or valid segment prepared from a TSDatasetH is empty. The TS pipeline needs both segments to build DataLoaders immediately (both are configured with fillna_type and wrapped in DataLoader right after), so a missing/empty valid segment is fatal, unlike the tabular GRU.","triggerScenarios":"fit(dataset) where dataset.prepare(\"train\" or \"valid\", ...) returns an empty DataFrame: segment dates outside the data calendar, step/hold-off settings leaving no valid samples, or wrong segment naming.","commonSituations":"TSDatasetH step windows consuming the tail of the calendar so the valid segment has no complete windows; date ranges beyond dumped data; missing \"valid\" key in segments.","solutions":["Log len(dataset.prepare('train', ...)) and len(dataset.prepare('valid', ...)) before fit and fix whichever is 0.","Ensure the valid segment has enough history for the rolling step windows of TSDatasetH (step length must fit inside the segment).","Align segment dates with the bin-data calendar."],"exampleFix":"# before\n\"segments\": {\n    \"train\": (\"2008-01-01\", \"2014-12-31\"),\n    \"valid\": (\"2015-01-01\", \"2015-12-31\"),\n}  # data starts 2010 -> valid windows empty after step\n\n# after\n\"segments\": {\n    \"train\": (\"2010-01-01\", \"2016-12-31\"),\n    \"valid\": (\"2017-01-01\", \"2019-12-31\"),\n}","handlingStrategy":"validation","validationCode":"for seg in (\"train\", \"valid\"):\n    df = dataset.prepare(seg, col_set=[\"feature\", \"label\"], data_key=DataHandlerLP.DK_L)\n    assert not df.empty, f\"TS segment '{seg}' is empty; check dates and step-window length\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Ensure both train and valid segments are long enough for TSDatasetH rolling windows.","Keep segment ranges inside the data calendar; verify lengths before fit."],"tags":["qlib","time-series","dataset","configuration"],"backgroundTag":null,"analyzedSha":"79633dd9506ea689e5400dea0197717b5b3d74b7","analyzedAt":"2026-08-15T07:01:27.511Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}