{"record":{"id":"1ec87f5aa956a259","repo":"nautechsystems/nautilus_trader","slug":"leverage-not-supported-for-raw-symbol-on-side-l","errorCode":null,"errorMessage":"Leverage not supported for {raw_symbol} on {side_label} side","messagePattern":"Leverage not supported for (.+?) on (.+?) side","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/kraken/src/http/spot/client.rs","lineNumber":3161,"sourceCode":"\n        if let Some(n) = leverage {\n            let tiers = self.leverage_tiers_cache.get_cloned(&raw_symbol);\n            let (buy_tiers, sell_tiers) = tiers.ok_or_else(|| {\n                anyhow::anyhow!(\n                    \"Leverage tiers not loaded for {raw_symbol}; cannot validate leverage {n}:1 (instruments must be initialized before submitting margin orders)\"\n                )\n            })?;\n            let valid_tiers = match order_side {\n                OrderSide::Buy => buy_tiers,\n                _ => sell_tiers,\n            };\n            let side_label = match order_side {\n                OrderSide::Buy => \"buy\",\n                _ => \"sell\",\n            };\n\n            if valid_tiers.is_empty() {\n                anyhow::bail!(\"Leverage not supported for {raw_symbol} on {side_label} side\");\n            }\n\n            if !valid_tiers.contains(&(n as i32)) {\n                anyhow::bail!(\n                    \"Leverage {n}:1 not supported for {raw_symbol} on {side_label} side (valid: {valid_tiers:?})\"\n                );\n            }\n            builder.leverage(format!(\"{n}:1\"));\n        }\n\n        if reduce_only {\n            if account_type != AccountType::Margin {\n                anyhow::bail!(\"reduce_only requires spot_account_type=Margin (current: Cash)\");\n            }\n            builder.reduce_only(true);\n        }\n\n        builder","sourceCodeStart":3143,"sourceCodeEnd":3179,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/kraken/src/http/spot/client.rs#L3143-L3179","documentation":"Kraken publishes per-instrument, per-side leverage tier tables. When the requested leverage level has no valid tier for the order's side on the given symbol (the filtered tier list is empty), the adapter refuses to build the order because Kraken would reject it.","triggerScenarios":"Submitting a Kraken Spot margin order with leverage Some(n) where the leverage tiers cache for raw_symbol contains no buy-side (or sell-side) tiers applicable to the requested OrderSide — e.g. asking for leverage on an instrument/side Kraken does not permit margin trading on.","commonSituations":"Trading a low-liquidity or newly listed pair that has no margin tiers for one side; requesting leverage on a side where Kraken only allows spot value; stale or absent tier data for the symbol.","solutions":["Remove leverage (trade on spot without margin) for that symbol/side.","Check Kraken's published leverage tiers for the symbol and request a level actually offered on that side.","Refresh the leverage tiers cache (reconnect/reload instrument data) if tiers may be stale or missing.","Trade a different symbol that supports margin on the desired side."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"let tiers = client.leverage_tiers_for(symbol).ok_or(\"no leverage tiers cached\")?;\nlet (buy, sell) = tiers;\nlet valid = if side == OrderSide::Buy { buy } else { sell };\nif valid.is_empty() {\n    return Err(format!(\"{symbol} has no {side:?}-side leverage tiers\"));\n}","typeGuard":null,"tryCatchPattern":"match client.submit_order(req) {\n    Err(e) if e.to_string().contains(\"Leverage not supported\") => {\n        // resubmit without leverage or switch instrument\n    }\n    r => r?,\n}","preventionTips":["Load Kraken leverage tiers at startup and gate leveraged orders on them.","Handle symbols/sides with empty tier tables explicitly in strategy sizing logic.","Refresh tier caches periodically so listings and tier changes are picked up."],"tags":["kraken","spot","leverage","margin-tiers"],"backgroundTag":"value-out-of-range","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"}