microsoft/qlib · error · ValueError
Empty data from dataset, please check your dataset config.
Error message
Empty data from dataset, please check your dataset config.
What it means
LocalTransformerModel.fit requires non-empty train and valid segments. dataset.prepare over ['train','valid','test'] with feature/label columns (DK_L) must return rows for at least train and valid; otherwise the run aborts with this dataset-config ValueError before training.
Source
Thrown at qlib/contrib/model/pytorch_localformer.py:170
score = self.metric_fn(pred, label)
scores.append(score.item())
return np.mean(losses), np.mean(scores)
def fit(
self,
dataset: DatasetH,
evals_result=dict(),
save_path=None,
):
df_train, df_valid, df_test = dataset.prepare(
["train", "valid", "test"],
col_set=["feature", "label"],
data_key=DataHandlerLP.DK_L,
)
if df_train.empty or df_valid.empty:
raise ValueError("Empty data from dataset, please check your dataset config.")
x_train, y_train = df_train["feature"], df_train["label"]
x_valid, y_valid = df_valid["feature"], df_valid["label"]
save_path = get_or_create_path(save_path)
stop_steps = 0
train_loss = 0
best_score = -np.inf
best_epoch = 0
evals_result["train"] = []
evals_result["valid"] = []
# train
self.logger.info("training...")
self.fitted = True
for step in range(self.n_epochs):
self.logger.info("Epoch%d:", step)
View on GitHub (pinned to 79633dd950)
Solutions
- Verify dataset.prepare('train'/'valid') are non-empty and fix segment definitions
- Confirm data exists for the configured instruments and date range
- Check handler processors are not dropping every row (e.g. extreme dropna after normalization)
Example fix
# before
model.fit(dataset)
# after
for seg in ("train", "valid"):
df = dataset.prepare(seg, col_set=["feature", "label"])
assert not df.empty, f"{seg} is empty"
model.fit(dataset) Defensive patterns
Strategy: validation
Validate before calling
for seg in ("train", "valid"):
df = dataset.prepare(seg, col_set=["feature", "label"], data_key=DataHandlerLP.DK_L)
if df.empty:
raise RuntimeError(f"{seg} empty; fix dataset segments or data") Try / catch
try:
model.fit(dataset)
except ValueError as e:
if "Empty data" in str(e):
raise RuntimeError("Dataset config produced empty train/valid") from e
raise Prevention
- Pre-check segment frames before every fit
- Validate that data handler processors do not drop all rows (dropna after NaN-inducing ops)
When it happens
Trigger: fit(dataset) with an empty train or valid frame: bad segment dates, unresolved instruments, or features/labels reduced to nothing by the data handler.
Common situations: Calendar mismatch between segments and dumped data; wrong provider_uri in qlib.init; handler processors (e.g. dropna) removing all rows.
Related errors
- Empty data from dataset, please check your dataset config.
- Empty data from dataset, please check your dataset config.
- Empty data from dataset, please check your dataset config.
- Empty data from dataset, please check your dataset config.
- Empty data from dataset, please check your dataset config.
AI-assisted analysis of microsoft/qlib@79633dd950 (2026-08-15).
Data as JSON: /api/errors/df2d6aaf266b7253.
Report an issue: GitHub.