{"record":{"id":"e74034a6e3a500bc","repo":"nautechsystems/nautilus_trader","slug":"unsupported-instrument-type-kind","errorCode":null,"errorMessage":"Unsupported instrument type: {} (kind: {:?})","messagePattern":"Unsupported instrument type: (.+?) \\(kind: (.+?)\\)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/deribit/src/http/client.rs","lineNumber":1116,"sourceCode":"        let ts_init = self.generate_ts_init();\n\n        match parse_deribit_instrument_any(&response, ts_init, ts_event)? {\n            Some(mut instrument) => {\n                if Self::is_combo_kind(response.kind) {\n                    let currency = DeribitCurrency::from_str(response.base_currency.as_str())\n                        .unwrap_or(DeribitCurrency::ANY);\n                    let combo_by_id = self\n                        .combo_map_for_instruments(currency, std::slice::from_ref(&response))\n                        .await;\n\n                    if let Some(combo) = combo_by_id.get(&response.instrument_name) {\n                        Self::attach_combo_leg_info(&mut instrument, combo);\n                    }\n                }\n\n                Ok(instrument)\n            }\n            None => anyhow::bail!(\n                \"Unsupported instrument type: {} (kind: {:?})\",\n                response.instrument_name,\n                response.kind\n            ),\n        }\n    }\n\n    async fn combo_map_for_instruments(\n        &self,\n        requested_currency: DeribitCurrency,\n        raw_instruments: &[DeribitInstrument],\n    ) -> AHashMap<Ustr, DeribitCombo> {\n        if !raw_instruments\n            .iter()\n            .any(|instrument| Self::is_combo_kind(instrument.kind))\n        {\n            return AHashMap::new();\n        }","sourceCodeStart":1098,"sourceCodeEnd":1134,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/deribit/src/http/client.rs#L1098-L1134","documentation":"request_instrument converts a Deribit instrument response into a nautilus instrument object by matching on the response's known instrument kind/shape. When the response matches none of the supported variants, the client cannot construct a nautilus instrument and bails with the instrument name and Deribit kind.","triggerScenarios":"lazy_load_instrument fetching an instrument whose Deribit 'kind' (e.g. a newly listed or exotic product type) has no conversion branch in the client's match statement.","commonSituations":"Deribit listing a new product type not yet supported by the adapter; subscribing to an instrument kind (e.g. certain combos) the adapter never handled; typos resolving to unexpected instrument kinds on the venue.","solutions":["Check the logged kind value against the adapter's supported Deribit instrument kinds","Restrict subscriptions/instruments to supported kinds (futures, options, perpetuals)","Upgrade the adapter to a version supporting the new Deribit product type","Open/track an adapter issue to add a conversion branch for the unsupported kind"],"exampleFix":"// before\nlet instrument = client.request_instrument(&instrument_id).await?; // bails on exotic kind\n// after\nlet kind = client.instrument_kind(&instrument_id).await?;\nif !matches!(kind, DeribitKind::Future | DeribitKind::Option | DeribitKind::Perpetual) {\n    log::warn!(\"skipping unsupported instrument kind {kind:?}\");\n    return Ok(None);\n}\nlet instrument = client.request_instrument(&instrument_id).await?;","handlingStrategy":"validation","validationCode":"let supported_kinds = [\"future\", \"option\", \"perpetual\", \"future_combo\", \"option_combo\"];\nlet kind = fetch_instrument_kind(instrument_name).await?;\nif !supported_kinds.contains(&kind.as_str()) {\n    log::warn!(\"skipping unsupported Deribit kind: {kind}\");\n}","typeGuard":"fn is_supported_kind(kind: &DeribitKind) -> bool {\n    matches!(kind, DeribitKind::Future | DeribitKind::Option | DeribitKind::Perpetual | DeribitKind::FutureCombo | DeribitKind::OptionCombo)\n}","tryCatchPattern":null,"preventionTips":["Check the adapter's supported instrument kinds against Deribit's current listings before subscribing","Filter instrument universes to supported kinds at config time","Keep the adapter updated when Deribit lists new product types"],"tags":["instrument","deribit","http","unsupported"],"backgroundTag":"unsupported-enum-value","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"}