{"record":{"id":"78f74db21f9722b2","repo":"nautechsystems/nautilus_trader","slug":"bybit-only-supports-1-day-interval-bars","errorCode":null,"errorMessage":"Bybit only supports 1 DAY interval bars","messagePattern":"Bybit only supports 1 DAY interval bars","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/bybit/src/common/parse.rs","lineNumber":311,"sourceCode":"            15 => Ok(BybitKlineInterval::Minute15),\n            30 => Ok(BybitKlineInterval::Minute30),\n            _ => anyhow::bail!(\n                \"Bybit only supports minute intervals 1, 3, 5, 15, 30 (use HOUR for >= 60)\"\n            ),\n        },\n        BarAggregation::Hour => match step {\n            1 => Ok(BybitKlineInterval::Hour1),\n            2 => Ok(BybitKlineInterval::Hour2),\n            4 => Ok(BybitKlineInterval::Hour4),\n            6 => Ok(BybitKlineInterval::Hour6),\n            12 => Ok(BybitKlineInterval::Hour12),\n            _ => anyhow::bail!(\n                \"Bybit only supports the following hour intervals: {BYBIT_HOUR_INTERVALS:?}\"\n            ),\n        },\n        BarAggregation::Day => {\n            if step != 1 {\n                anyhow::bail!(\"Bybit only supports 1 DAY interval bars\");\n            }\n            Ok(BybitKlineInterval::Day1)\n        }\n        BarAggregation::Week => {\n            if step != 1 {\n                anyhow::bail!(\"Bybit only supports 1 WEEK interval bars\");\n            }\n            Ok(BybitKlineInterval::Week1)\n        }\n        BarAggregation::Month => {\n            if step != 1 {\n                anyhow::bail!(\"Bybit only supports 1 MONTH interval bars\");\n            }\n            Ok(BybitKlineInterval::Month1)\n        }\n        _ => {\n            anyhow::bail!(\"Bybit does not support {aggregation:?} bars\");\n        }","sourceCodeStart":293,"sourceCodeEnd":329,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/bybit/src/common/parse.rs#L293-L329","documentation":"Raised by bar_spec_to_bybit_interval when a BarSpec with Day aggregation has a step other than 1; Bybit's kline interval enum has no multi-day values, so only a single-day step can be mapped.","triggerScenarios":"Requesting bars with `BarAggregation::Day` and a step other than 1 — e.g. 2-day or 7-day bars.","commonSituations":"Weekly-ish configs encoded as 7 DAY bars (should be 1 WEEK); multi-day rolling bars from venues that support them; generated specs from a duration in days.","solutions":["Change the step to 1 DAY.","For 7-day bars use `BarAggregation::Week` step 1 (Bybit supports weekly).","Aggregate multi-day bars locally from daily klines.","Verify the bar spec against `bar_spec_to_bybit_interval` in a unit test before running live."],"exampleFix":"// before\nBarSpecification::new(7, BarAggregation::Day, PriceType::Last)\n// after\nBarSpecification::new(1, BarAggregation::Week, PriceType::Last)","handlingStrategy":"validation","validationCode":"fn day_bar_supported(step: u64) -> bool { step == 1 }\nanyhow::ensure!(day_bar_supported(bar_spec.step), \"Bybit daily bars only support step=1\");","typeGuard":null,"tryCatchPattern":"match bar_spec_to_bybit_interval(&bar_spec) {\n    Ok(interval) => request_klines(interval),\n    Err(e) if e.to_string().contains(\"1 DAY interval\") => {\n        request_klines(BybitKlineInterval::Day1) // aggregate multi-day bars locally\n    }\n    Err(e) => return Err(e),\n}","preventionTips":["Use step=1 for DAY aggregation on Bybit","Use 1 WEEK bars instead of 7 DAY bars","Aggregate multi-day periods locally from daily klines","Test all configured bar specs against the interval mapper before deployment"],"tags":["bybit","bar-interval","configuration"],"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-14T00:17:10.932Z"}