nautechsystems/nautilus_trader · error

unsupported Lighter candle day step: {step}

Error message

unsupported Lighter candle day step: {step}

What it means

Raised by the LighterCandleInterval try_from conversion when the aggregation is Day and the step is anything other than 1. Lighter only provides a single 1-day candle interval, so multi-day bars cannot be requested from the venue and are rejected locally.

Source

Thrown at crates/adapters/lighter/src/common/enums.rs:278

        let step = spec.step.get();
        match spec.aggregation {
            BarAggregation::Minute => match step {
                1 => Ok(Self::OneMinute),
                5 => Ok(Self::FiveMinute),
                15 => Ok(Self::FifteenMinute),
                30 => Ok(Self::ThirtyMinute),
                _ => anyhow::bail!("unsupported Lighter candle minute step: {step}"),
            },
            BarAggregation::Hour => match step {
                1 => Ok(Self::OneHour),
                4 => Ok(Self::FourHour),
                12 => Ok(Self::TwelveHour),
                _ => anyhow::bail!("unsupported Lighter candle hour step: {step}"),
            },
            BarAggregation::Day => match step {
                1 => Ok(Self::OneDay),
                _ => anyhow::bail!("unsupported Lighter candle day step: {step}"),
            },
            BarAggregation::Week => match step {
                1 => Ok(Self::OneWeek),
                _ => anyhow::bail!("unsupported Lighter candle week step: {step}"),
            },
            other => anyhow::bail!("unsupported Lighter candle aggregation: {other}"),
        }
    }
}

/// Lighter historical funding resolution.
#[derive(
    Copy,
    Clone,
    Debug,
    Default,
    Display,
    PartialEq,

View on GitHub (pinned to 18893faf8b)

Solutions

  1. Use BarAggregation::Day with step 1.
  2. For multi-day periods use the Week aggregation with step 1 where applicable.
  3. Resample locally from 1-day bars to obtain 2d/3d/7d bars.
  4. Validate day step == 1 before constructing the request.

Example fix

// before
BarSpec { aggregation: BarAggregation::Day, step: 7, .. }
// after
BarSpec { aggregation: BarAggregation::Week, step: 1, .. }
Defensive patterns

Strategy: validation

Validate before calling

if bar_spec.aggregation == BarAggregation::Day {
    assert_eq!(bar_spec.step, 1, "Lighter only supports Day/step 1 bars");
}

Prevention

When it happens

Trigger: Calling try_from with aggregation=Day and step != 1 (e.g. Day/step 7 or Day/step 3) through subscribe_bars or request_bars.

Common situations: Requesting weekly bars as Day/step 7 instead of Week/step 1; generic bar configs generated from a timedelta of multiple days; configs ported from exchanges that allow multi-day candles.

Related errors


AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08). Data as JSON: /api/errors/3d1c8acfc215f981. Report an issue: GitHub.