nautechsystems/nautilus_trader · error
Unsupported hour step for Kraken Futures: {step}
Error message
Unsupported hour step for Kraken Futures: {step} What it means
bar_type_to_futures_resolution cannot map the requested Hour-aggregation step for Kraken Futures; the futures resolution strings only cover 1h, 4h, and 12h, so any other hour step has no API resolution and the conversion fails.
Source
Thrown at crates/adapters/kraken/src/common/parse.rs:1205
/// # Errors
///
/// Returns an error if:
/// - Bar aggregation type is not supported.
/// - Bar step is not supported for the aggregation type.
pub fn bar_type_to_futures_resolution(bar_type: BarType) -> anyhow::Result<&'static str> {
let step = bar_type.spec().step.get() as u32;
match bar_type.spec().aggregation {
BarAggregation::Minute => match step {
1 => Ok("1m"),
5 => Ok("5m"),
15 => Ok("15m"),
_ => anyhow::bail!("Unsupported minute step for Kraken Futures: {step}"),
},
BarAggregation::Hour => match step {
1 => Ok("1h"),
4 => Ok("4h"),
12 => Ok("12h"),
_ => anyhow::bail!("Unsupported hour step for Kraken Futures: {step}"),
},
BarAggregation::Day => {
if step == 1 {
Ok("1d")
} else {
anyhow::bail!("Unsupported day step for Kraken Futures: {step}")
}
}
BarAggregation::Week => {
if step == 1 {
Ok("1w")
} else {
anyhow::bail!("Unsupported week step for Kraken Futures: {step}")
}
}
other => {
anyhow::bail!("Unsupported bar aggregation for Kraken Futures: {other:?}");
}View on GitHub (pinned to 18893faf8b)
Solutions
- Change the hour step to 1, 4, or 12.
- Request 1h bars and aggregate locally into 2h/6h/etc. bars.
- Use Day aggregation (step 1) instead of 24h bars.
Example fix
// before BarSpec::new(BarAggregation::Hour, 2) // after BarSpec::new(BarAggregation::Hour, 1) // aggregate to 2h locally
Defensive patterns
Strategy: validation
Validate before calling
const FUTURES_HOUR_STEPS: [u32; 3] = [1, 4, 12];
if bar_type.spec().aggregation == BarAggregation::Hour
&& !FUTURES_HOUR_STEPS.contains(&bar_type.spec().step.get() as u32) {
eprintln!("Kraken Futures hour steps: 1, 4, 12");
} Try / catch
match bar_type_to_futures_resolution(&bar_type) {
Ok("1h") => {},
Err(e) if e.to_string().contains("hour step") => switch_to_1h_and_aggregate(&bar_type)?,
res => res?,
} Prevention
- Do not copy hour steps from other exchanges (2h/6h/8h) into Kraken Futures configs.
- Centralize a per-venue bar-spec whitelist.
- Aggregate 1h bars locally for unsupported intervals.
When it happens
Trigger: bar_type_to_futures_resolution receives BarAggregation::Hour with step not in {1, 4, 12} — e.g. 2h, 6h, or 24h bars.
Common situations: Bar specs copied from venues supporting arbitrary hour steps (e.g. Binance 2h/8h); multi-venue strategies not per-venue specializing bar specs.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- Unsupported minute step for Kraken Futures: {step}
- Unsupported day step for Kraken Futures: {step}
- Unsupported week step for Kraken Futures: {step}
- Binance Futures does not support second-level kline interval
- Binance Futures does not support {a:?} aggregation
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/59c83de8c18eebbb.
Report an issue: GitHub.