{"record":{"id":"d66b71a5ceaae371","repo":"nautechsystems/nautilus_trader","slug":"unsupported-day-step-for-kraken-futures-step","errorCode":null,"errorMessage":"Unsupported day step for Kraken Futures: {step}","messagePattern":"Unsupported day step for Kraken Futures: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/kraken/src/common/parse.rs","lineNumber":1211,"sourceCode":"    let step = bar_type.spec().step.get() as u32;\n    match bar_type.spec().aggregation {\n        BarAggregation::Minute => match step {\n            1 => Ok(\"1m\"),\n            5 => Ok(\"5m\"),\n            15 => Ok(\"15m\"),\n            _ => anyhow::bail!(\"Unsupported minute step for Kraken Futures: {step}\"),\n        },\n        BarAggregation::Hour => match step {\n            1 => Ok(\"1h\"),\n            4 => Ok(\"4h\"),\n            12 => Ok(\"12h\"),\n            _ => anyhow::bail!(\"Unsupported hour step for Kraken Futures: {step}\"),\n        },\n        BarAggregation::Day => {\n            if step == 1 {\n                Ok(\"1d\")\n            } else {\n                anyhow::bail!(\"Unsupported day step for Kraken Futures: {step}\")\n            }\n        }\n        BarAggregation::Week => {\n            if step == 1 {\n                Ok(\"1w\")\n            } else {\n                anyhow::bail!(\"Unsupported week step for Kraken Futures: {step}\")\n            }\n        }\n        other => {\n            anyhow::bail!(\"Unsupported bar aggregation for Kraken Futures: {other:?}\");\n        }\n    }\n}\n\n/// Truncates a `ClientOrderId` for Kraken's `cl_ord_id` field.\n///\n/// Kraken accepts three formats:","sourceCodeStart":1193,"sourceCodeEnd":1229,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/kraken/src/common/parse.rs#L1193-L1229","documentation":"bar_type_to_futures_resolution cannot map the requested Day-aggregation step for Kraken Futures; only a single 1d resolution exists, so any day step other than 1 fails the conversion.","triggerScenarios":"bar_type_to_futures_resolution receives BarAggregation::Day with step != 1 — e.g. weekly-scale 7-day bars or 2-day bars requested from Kraken Futures.","commonSituations":"Strategies using multi-day bars configured venue-generically; users expecting Kraken Futures to support 2d/3d buckets like some other exchanges.","solutions":["Use Day with step 1 (maps to '1d').","Use Week aggregation with step 1 if a longer bucket is needed (maps to '1w').","Fetch daily bars and aggregate multi-day bars locally."],"exampleFix":"// before\nBarSpec::new(BarAggregation::Day, 2)\n// after\nBarSpec::new(BarAggregation::Day, 1)","handlingStrategy":"validation","validationCode":"if bar_type.spec().aggregation == BarAggregation::Day && bar_type.spec().step.get() != 1 {\n    eprintln!(\"Kraken Futures supports only 1d daily bars\");\n}","typeGuard":null,"tryCatchPattern":"match bar_type_to_futures_resolution(&bar_type) {\n    Ok(res) => request(res),\n    Err(e) if e.to_string().contains(\"day step\") => request(\"1d\").map(|b| aggregate_days(b, step))?,\n    Err(e) => return Err(e),\n}","preventionTips":["Use Week step 1 for longer buckets instead of multi-day steps.","Validate bar specs before issuing history requests.","Note Kraken Futures has fixed resolutions; plan aggregation client-side."],"tags":["kraken-futures","bars","resolution","unsupported"],"backgroundTag":"invalid-enum-value","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"}