{"record":{"id":"b6486683e1ca9077","repo":"nautechsystems/nautilus_trader","slug":"no-instruments-found-in-catalog-for-requested-ids","errorCode":null,"errorMessage":"No instruments found in catalog for requested IDs: [{}]","messagePattern":"No instruments found in catalog for requested IDs: \\[(.+?)\\]","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/backtest/src/node.rs","lineNumber":296,"sourceCode":"            .liquidation_cancel_open_orders(venue_config.liquidation_cancel_open_orders())\n            .build()?;\n        engine.add_venue(sim_config)?;\n    }\n\n    for data_config in config.data() {\n        let catalog = create_catalog(data_config)?;\n        let instr_ids: Vec<InstrumentId> = data_config.get_instrument_ids()?;\n        let filter: Option<Vec<String>> = if instr_ids.is_empty() {\n            None\n        } else {\n            Some(instr_ids.iter().map(ToString::to_string).collect())\n        };\n\n        let instruments = catalog.query_instruments(filter.as_deref())?;\n\n        if !instr_ids.is_empty() && instruments.is_empty() {\n            let ids: Vec<String> = instr_ids.iter().map(ToString::to_string).collect();\n            anyhow::bail!(\n                \"No instruments found in catalog for requested IDs: [{}]\",\n                ids.join(\", \")\n            );\n        }\n\n        for instrument in instruments {\n            engine.add_instrument(&instrument)?;\n        }\n    }\n\n    Ok(engine)\n}\n\nfn validate_configs(configs: &[BacktestRunConfig]) -> anyhow::Result<()> {\n    // Kernel initialization sets a thread-local MessageBus that can only be\n    // initialized once per thread, so multiple engines cannot coexist\n    anyhow::ensure!(\n        configs.len() <= 1,","sourceCodeStart":278,"sourceCodeEnd":314,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/backtest/src/node.rs#L278-L314","documentation":"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.","triggerScenarios":"Thrown at crates/backtest/src/node.rs:296 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}