{"record":{"id":"580806a44dedeade","repo":"nautechsystems/nautilus_trader","slug":"unsupported-product-type-for-binance-execution-cli","errorCode":null,"errorMessage":"Unsupported product type for Binance execution client: {product_type:?}","messagePattern":"Unsupported product type for Binance execution client: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/binance/src/factories.rs","lineNumber":203,"sourceCode":"                let account_type = AccountType::Margin;\n                let oms_type = binance_config.oms_type.unwrap_or(OmsType::Netting);\n\n                let core = ExecutionClientCore::new(\n                    binance_config.trader_id,\n                    ClientId::from(name),\n                    *BINANCE_VENUE,\n                    oms_type,\n                    binance_config.account_id,\n                    account_type,\n                    None, // base_currency\n                    cache,\n                );\n\n                let client = BinanceFuturesExecutionClient::new(core, binance_config)?;\n                Ok(Box::new(client))\n            }\n            _ => {\n                anyhow::bail!(\n                    \"Unsupported product type for Binance execution client: {product_type:?}\"\n                )\n            }\n        }\n    }\n\n    fn name(&self) -> &'static str {\n        BINANCE\n    }\n\n    fn config_type(&self) -> &'static str {\n        stringify!(BinanceExecClientConfig)\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use std::{cell::RefCell, rc::Rc};","sourceCodeStart":185,"sourceCodeEnd":221,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/a4b06ed870971b5671d12754ea138a3ab99b1dec/crates/adapters/binance/src/factories.rs#L185-L221","documentation":"BinanceExecutionClientFactory builds order-routing clients for Spot (cash account, hedging OMS) and futures (BinanceFuturesExecutionClient). BinanceProductType::Margin and ::Options have no execution client in the v2 adapter, so the factory rejects them with this error at creation time.","triggerScenarios":"BinanceExecClientConfig(product_type='MARGIN' or 'OPTIONS') registered with BinanceExecutionClientFactory — e.g. attempting to trade European options or configuring margin explicitly as the exec product type.","commonSituations":"Assuming Margin needs its own exec client (margin uses the spot exec paths with margin endpoints); strategy port from the legacy adapter configured with MARGIN; speculative Options trading setups.","solutions":["Use product_type='SPOT', 'USDM_FUTURES' or 'COINM_FUTURES' for execution.","For spot-margin trading keep product_type='SPOT' and enable margin features at the order/account level rather than selecting the Margin product type.","Confirm supported product types against the factory match arms before registering clients."],"exampleFix":"# before\nBinanceExecClientConfig(product_type=BinanceProductType.MARGIN)\n\n# after\nBinanceExecClientConfig(product_type=BinanceProductType.SPOT)","handlingStrategy":"validation","validationCode":"SUPPORTED_EXEC = ('SPOT', 'USDM_FUTURES', 'COINM_FUTURES')\nassert exec_config.product_type in SUPPORTED_EXEC","typeGuard":"def binance_exec_product_supported(pt) -> bool:\n    return pt in ('SPOT', 'USDM_FUTURES', 'COINM_FUTURES')","tryCatchPattern":null,"preventionTips":["Margin trading runs over the Spot exec client; do not select MARGIN as product type.","Validate product_type against the supported set before registering exec clients.","Watch release notes for newly implemented product types."],"tags":["binance","factory","product-type","unsupported","execution-client"],"backgroundTag":"unsupported-product-type","analyzedSha":"a4b06ed870971b5671d12754ea138a3ab99b1dec","analyzedAt":"2026-08-16T22:54:50.089Z","schemaVersion":2},"datasetVersion":"2026-08-16T23:17:17.608Z"}