nautechsystems/nautilus_trader · error · anyhow::Error
No instruments found in catalog for requested IDs: [{}]
Error message
No instruments found in catalog for requested IDs: [{}] What it means
Guard in the backtest node's build_engine: the data catalog query returned no instruments for the instrument IDs requested by the run config, so the backtest would have no tradable data and engine construction is aborted.
Source
Thrown at crates/backtest/src/node.rs:296
.liquidation_cancel_open_orders(venue_config.liquidation_cancel_open_orders())
.build()?;
engine.add_venue(sim_config)?;
}
for data_config in config.data() {
let catalog = create_catalog(data_config)?;
let instr_ids: Vec<InstrumentId> = data_config.get_instrument_ids()?;
let filter: Option<Vec<String>> = if instr_ids.is_empty() {
None
} else {
Some(instr_ids.iter().map(ToString::to_string).collect())
};
let instruments = catalog.query_instruments(filter.as_deref())?;
if !instr_ids.is_empty() && instruments.is_empty() {
let ids: Vec<String> = instr_ids.iter().map(ToString::to_string).collect();
anyhow::bail!(
"No instruments found in catalog for requested IDs: [{}]",
ids.join(", ")
);
}
for instrument in instruments {
engine.add_instrument(&instrument)?;
}
}
Ok(engine)
}
fn validate_configs(configs: &[BacktestRunConfig]) -> anyhow::Result<()> {
// Kernel initialization sets a thread-local MessageBus that can only be
// initialized once per thread, so multiple engines cannot coexist
anyhow::ensure!(
configs.len() <= 1,View on GitHub (pinned to 18893faf8b)
Solutions
- Check the instrument IDs match the catalog's instruments (correct venue/symbol)
- Verify the data catalog path and that instrument data was written to it
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/backtest/src/node.rs:296 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/b6486683e1ca9077.
Report an issue: GitHub.