{"record":{"id":"be4ed4df4e40cf74","repo":"microsoft/qlib","slug":"empty-data-from-dataset-please-check-your-dataset-be4ed4","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_transformer.py","lineNumber":169,"sourceCode":"\r\n                score = self.metric_fn(pred, label)\r\n                scores.append(score.item())\r\n\r\n        return np.mean(losses), np.mean(scores)\r\n\r\n    def fit(\r\n        self,\r\n        dataset: DatasetH,\r\n        evals_result=dict(),\r\n        save_path=None,\r\n    ):\r\n        df_train, df_valid, df_test = dataset.prepare(\r\n            [\"train\", \"valid\", \"test\"],\r\n            col_set=[\"feature\", \"label\"],\r\n            data_key=DataHandlerLP.DK_L,\r\n        )\r\n        if df_train.empty or df_valid.empty:\r\n            raise ValueError(\"Empty data from dataset, please check your dataset config.\")\r\n\r\n        x_train, y_train = df_train[\"feature\"], df_train[\"label\"]\r\n        x_valid, y_valid = df_valid[\"feature\"], df_valid[\"label\"]\r\n\r\n        save_path = get_or_create_path(save_path)\r\n        stop_steps = 0\r\n        train_loss = 0\r\n        best_score = -np.inf\r\n        best_epoch = 0\r\n        evals_result[\"train\"] = []\r\n        evals_result[\"valid\"] = []\r\n\r\n        # train\r\n        self.logger.info(\"training...\")\r\n        self.fitted = True\r\n\r\n        for step in range(self.n_epochs):\r\n            self.logger.info(\"Epoch%d:\", step)\r","sourceCodeStart":151,"sourceCodeEnd":187,"githubUrl":"https://github.com/microsoft/qlib/blob/79633dd9506ea689e5400dea0197717b5b3d74b7/qlib/contrib/model/pytorch_transformer.py#L151-L187","documentation":"Raised at the start of TransformerModel.fit after preparing train/valid/test DataFrames with data_key=DK_L. If the train or valid frame has zero rows, fitting cannot proceed, so the model refuses with this ValueError before building the network/optimizer.","triggerScenarios":"fit(dataset) where dataset.prepare('train') or dataset.prepare('valid') (col_set=['feature','label']) returns an empty DataFrame — segment dates outside the data calendar, wrong segment names, or processors eliminating all rows.","commonSituations":"Requesting a train window before the stock data begins (common when switching markets, e.g. CSI300 vs a custom universe with later coverage); DropnaLabel removing all rows because the label horizon extends past available data; mistyped segment keys in the DatasetH segments dict.","solutions":["Print dataset.prepare('train', col_set=['feature','label']).shape and the same for 'valid' — both must be non-empty.","Move segment start/end dates inside the range actually covered by the handler's data (check df_calendar or the underlying handler's first/last timestamps).","Adjust label processors (e.g. shorter Ref horizon) or widen the segment so rows survive dropna.","Confirm the data handler was initialized with data that exists locally / via the provider before fit."],"exampleFix":"# before\nsegments = {\"train\": (\"2000-01-01\", \"2004-12-31\"), \"valid\": (\"2005-01-01\", \"2006-12-31\")}  # before data starts\n\n# after\nsegments = {\"train\": (\"2008-01-01\", \"2014-12-31\"), \"valid\": (\"2015-01-01\", \"2016-12-31\")}\nassert len(dataset.prepare(\"train\", col_set=[\"feature\", \"label\"])) > 0","handlingStrategy":"validation","validationCode":"for seg in (\"train\", \"valid\"):\n    df = dataset.prepare(seg, col_set=[\"feature\", \"label\"], data_key=\"learn\")\n    assert not df.empty, f\"{seg} segment empty — check segment dates vs data calendar and dropna processors\"","typeGuard":null,"tryCatchPattern":"try:\n    model.fit(dataset, evals_result)\nexcept ValueError as e:\n    if \"Empty data\" in str(e):\n        raise RuntimeError(\"Fix DatasetH segment config / data coverage before fitting\") from e\n    raise","preventionTips":["Smoke-test dataset.prepare(...) shapes for all segments right after building DatasetH.","When switching markets/universes, verify calendar coverage covers every segment window."],"tags":["qlib","dataset","data-quality","configuration"],"backgroundTag":null,"analyzedSha":"79633dd9506ea689e5400dea0197717b5b3d74b7","analyzedAt":"2026-08-15T07:01:27.511Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}