{"record":{"id":"48dd4d920e23c720","repo":"nautechsystems/nautilus_trader","slug":"cannot-parse-kraken-futures-instrument-symbol-48dd4d","errorCode":null,"errorMessage":"Cannot parse Kraken Futures instrument '{symbol}': {field} {value} requires precision {precision}, but this build supports at most {FIXED_PRECISION}; enable the 'high-precision' Cargo feature and rebuild","messagePattern":"Cannot parse Kraken Futures instrument '(.+?)': (.+?) (.+?) requires precision (.+?), but this build supports at most (.+?); enable the 'high-precision' Cargo feature and rebuild","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/adapters/kraken/src/common/parse.rs","lineNumber":471,"sourceCode":"\nfn check_futures_precision(\n    symbol: &str,\n    field: &str,\n    value: impl Display,\n    precision: u32,\n) -> anyhow::Result<()> {\n    if precision <= u32::from(FIXED_PRECISION) {\n        return Ok(());\n    }\n\n    #[cfg(feature = \"high-precision\")]\n    anyhow::bail!(\n        \"Cannot parse Kraken Futures instrument '{symbol}': {field} {value} requires precision \\\n         {precision}, but this build supports at most {FIXED_PRECISION}\"\n    );\n\n    #[cfg(not(feature = \"high-precision\"))]\n    anyhow::bail!(\n        \"Cannot parse Kraken Futures instrument '{symbol}': {field} {value} requires precision \\\n         {precision}, but this build supports at most {FIXED_PRECISION}; enable the \\\n         'high-precision' Cargo feature and rebuild\"\n    );\n}\n\nfn parse_price(value: &str, field: &str) -> anyhow::Result<Price> {\n    Price::from_str(value).map_err(|e| anyhow::anyhow!(\"Failed to parse {field}='{value}': {e}\"))\n}\n\nfn parse_quantity(value: &str, field: &str) -> anyhow::Result<Quantity> {\n    Quantity::from_str(value).map_err(|e| anyhow::anyhow!(\"Failed to parse {field}='{value}': {e}\"))\n}\n\n/// Returns a currency from the internal map or creates a new crypto currency.\n///\n/// Uses [`Currency::get_or_create_crypto`] to handle unknown currency codes,\n/// which automatically registers newly listed Kraken assets.","sourceCodeStart":453,"sourceCodeEnd":489,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/kraken/src/common/parse.rs#L453-L489","documentation":"Identical condition to the high-precision variant: a Kraken Futures instrument field requires more decimal precision than FIXED_PRECISION supports. This arm is compiled when the 'high-precision' Cargo feature is NOT enabled and appends the actionable instruction to enable that feature and rebuild. The parse aborts rather than silently truncating the value.","triggerScenarios":"parse_futures_instrument -> check_futures_precision encounters a symbol with a field (tick size, price, size) whose decimal precision exceeds FIXED_PRECISION while the crate is built without feature = \"high-precision\".","commonSituations":"Default/debug builds of the Kraken Futures adapter used against instruments with sub-default tick granularity; teams unaware the adapter gates extra precision behind a cargo feature.","solutions":["Enable the feature and rebuild: cargo build -p nautilus-kraken --features high-precision.","If the feature cannot be enabled, skip/blacklist that instrument so parse_futures_instrument is not called for it.","Confirm the exact precision required from the Kraken Futures instruments API response to decide whether the feature is truly needed."],"exampleFix":"// before\nlet adapter = KrakenFuturesAdapter::new();\n// after (Cargo.toml)\n[dependencies]\nnautilus-kraken = { version = \"...\", features = [\"high-precision\"] }","handlingStrategy":"validation","validationCode":"let decimals = field_value.split('.').nth(1).map(|f| f.len()).unwrap_or(0);\nassert!(decimals <= FIXED_PRECISION, \"{} needs precision {}; rebuild with --features high-precision\", symbol, decimals);","typeGuard":null,"tryCatchPattern":"if let Err(e) = parse_futures_instrument(...) {\n    if e.to_string().contains(\"'high-precision'\") {\n        log::warn!(\"skipping {symbol}: rebuild with high-precision feature\");\n        return Ok(None);\n    }\n    return Err(e);\n}","preventionTips":["Add high-precision to the adapter's default features if you trade fine-tick instruments.","Keep a symbol allowlist matching your build's precision capability.","CI: assert feature flags in the release build config match trading requirements."],"tags":["precision","kraken-futures","instrument-parsing","cargo-feature"],"backgroundTag":"missing-optional-dependency","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"}