{"record":{"id":"15b98475e0284a21","repo":"nautechsystems/nautilus_trader","slug":"unsupported-trigger-type-for-kraken-spot-other","errorCode":null,"errorMessage":"Unsupported trigger type for Kraken Spot: {other:?} (only LastPrice and IndexPrice supported)","messagePattern":"Unsupported trigger type for Kraken Spot: (.+?) \\(only LastPrice and IndexPrice supported\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/kraken/src/http/spot/client.rs","lineNumber":3113,"sourceCode":"            if let Some(trigger) = trigger_price {\n                builder.price(trigger.to_string());\n            }\n\n            if let Some(limit) = price {\n                builder.price2(limit.to_string());\n            }\n        } else if let Some(limit) = price {\n            builder.price(limit.to_string());\n        }\n\n        if is_conditional {\n            match trigger_type {\n                Some(TriggerType::IndexPrice) => {\n                    builder.trigger(\"index\".to_string());\n                }\n                Some(TriggerType::LastPrice | TriggerType::Default) | None => {}\n                Some(other) => {\n                    anyhow::bail!(\n                        \"Unsupported trigger type for Kraken Spot: {other:?} (only LastPrice and IndexPrice supported)\"\n                    );\n                }\n            }\n        }\n\n        if !oflags.is_empty() {\n            builder.oflags(oflags.join(\",\"));\n        }\n\n        if let Some(tif) = timeinforce {\n            builder.timeinforce(tif);\n        }\n\n        if let Some(expire) = expiretm {\n            builder.expiretm(expire);\n        }\n","sourceCodeStart":3095,"sourceCodeEnd":3131,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/kraken/src/http/spot/client.rs#L3095-L3131","documentation":"Kraken Spot only supports trigger references based on the last traded price or the Kraken index price. The adapter maps TriggerType::IndexPrice to Kraken's \"index\" trigger and leaves LastPrice/Default unset; any other TriggerType (e.g. MarkPrice) has no Kraken Spot equivalent, so it is rejected rather than mis-mapped.","triggerScenarios":"Submitting a Kraken Spot order whose trigger_type is Some(TriggerType) other than LastPrice, Default, IndexPrice, or None — most typically TriggerType::MarkPrice.","commonSituations":"Reusing order parameters configured for futures venues (where MarkPrice triggers are standard) against the Kraken Spot adapter; a shared config file carrying mark-price triggers across venues.","solutions":["Change trigger_type to TriggerType::LastPrice or TriggerType::IndexPrice for Kraken Spot orders.","Omit trigger_type (None) to use the venue default, which maps to last-price triggering.","Add venue-conditional logic that substitutes an equivalent trigger type (or drops it) when the venue is Kraken Spot."],"exampleFix":"// before\ntrigger_type: TriggerType::MarkPrice,\n// after\ntrigger_type: TriggerType::LastPrice,","handlingStrategy":"validation","validationCode":"const KRAKEN_SPOT_TRIGGERS: &[TriggerType] = &[TriggerType::LastPrice, TriggerType::Default, TriggerType::IndexPrice];\nif let Some(tt) = trigger_type {\n    if !KRAKEN_SPOT_TRIGGERS.contains(tt) {\n        return Err(format!(\"Kraken Spot does not support {tt:?}\"));\n    }\n}","typeGuard":null,"tryCatchPattern":"match submit_result {\n    Err(e) if e.to_string().contains(\"Unsupported trigger type\") => {\n        // fall back to TriggerType::LastPrice or omit it\n    }\n    r => r?,\n}","preventionTips":["Avoid mark-price triggers in config shared with spot venues.","Normalize trigger types per venue before order construction.","Document that Kraken Spot supports only last-price and index-price triggers."],"tags":["kraken","spot","trigger-type","order-submission"],"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"}