{"record":{"id":"78cf676e520387a6","repo":"nautechsystems/nautilus_trader","slug":"iceberg-display-qty-orders-are-not-supported-on","errorCode":null,"errorMessage":"Iceberg (display_qty) orders are not supported on the Kraken WS path; use REST","messagePattern":"Iceberg \\(display_qty\\) orders are not supported on the Kraken WS path; use REST","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/adapters/kraken/src/common/order_params.rs","lineNumber":69,"sourceCode":") -> anyhow::Result<KrakenWsAddOrderParams> {\n    let order_type = order.order_type();\n    let order_side = order.order_side();\n    let time_in_force = order.time_in_force();\n\n    let side = match order_side {\n        OrderSide::Buy => KrakenOrderSide::Buy,\n        OrderSide::Sell => KrakenOrderSide::Sell,\n    };\n\n    if matches!(\n        order_type,\n        OrderType::TrailingStopMarket | OrderType::TrailingStopLimit\n    ) {\n        anyhow::bail!(\"Trailing stop orders are not yet supported on the Kraken WS path; use REST\",);\n    }\n\n    if order.display_qty().is_some() {\n        anyhow::bail!(\n            \"Iceberg (display_qty) orders are not supported on the Kraken WS path; use REST\"\n        );\n    }\n\n    let kraken_order_type = match order_type {\n        OrderType::Market => KrakenOrderType::Market,\n        OrderType::Limit => KrakenOrderType::Limit,\n        OrderType::StopMarket => KrakenOrderType::StopLoss,\n        OrderType::StopLimit => KrakenOrderType::StopLossLimit,\n        OrderType::MarketIfTouched => KrakenOrderType::TakeProfit,\n        OrderType::LimitIfTouched => KrakenOrderType::TakeProfitLimit,\n        _ => anyhow::bail!(\"Unsupported order type for Kraken WS: {order_type:?}\"),\n    };\n\n    let is_limit_order = matches!(\n        order_type,\n        OrderType::Limit | OrderType::StopLimit | OrderType::LimitIfTouched\n    );","sourceCodeStart":51,"sourceCodeEnd":87,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/kraken/src/common/order_params.rs#L51-L87","documentation":"Kraken WS addOrder params cannot represent iceberg orders: Nautilus orders carrying a display_qty cannot be translated, so build_add_order_params bails and points users to Kraken REST, which supports the display volume parameter.","triggerScenarios":"Submitting any order via the Kraken WebSocket execution client whose order has a display_qty (iceberg) set, e.g. a Limit order with display_qty configured in the order factory or strategy.","commonSituations":"Strategies tuned for venues that support icebergs (large-order slicing) run unchanged against Kraken WS; the display_qty field survives from the backtest/simulation config into live submission.","solutions":["Remove display_qty from orders sent to Kraken, or submit iceberg orders via the Kraken REST client.","Submit the order as a plain Limit/Market order without display quantity if full visibility is acceptable.","Implement client-side slicing: emit multiple full-size child orders emulating the display quantity."],"exampleFix":"// before\norder_factory.limit(instrument_id, side, qty, price, time_in_force, Some(display_qty))\n// after\norder_factory.limit(instrument_id, side, qty, price, time_in_force, None) // no iceberg on Kraken WS","handlingStrategy":"validation","validationCode":"if order.display_qty().is_some() {\n    // submit via REST or strip display_qty before WS submission\n}","typeGuard":null,"tryCatchPattern":"if let Err(e) = ws_client.submit(order).await {\n    if e.to_string().contains(\"Iceberg\") {\n        rest_client.submit(order).await?; // REST supports display volume\n    } else { return Err(e); }\n}","preventionTips":["Pass display_qty=None in order factories when trading Kraken via WS.","Set up per-venue order-parameter profiles in strategy configuration.","Test live configs against the venue's supported feature matrix before going live."],"tags":["rust","kraken","websocket","iceberg-orders","unsupported-feature"],"backgroundTag":"operation-not-supported","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}