{"record":{"id":"2e1004b0899540a3","repo":"nautechsystems/nautilus_trader","slug":"unsupported-bar-aggregation-type","errorCode":null,"errorMessage":"Unsupported bar aggregation type: {}","messagePattern":"Unsupported bar aggregation type: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/tardis/src/common/parse.rs","lineNumber":405,"sourceCode":"        }\n        BarAggregation::Day => {\n            let minutes = bar_spec\n                .step\n                .get()\n                .checked_mul(1440)\n                .context(\"bar specification step overflow\")?;\n            return Ok(format!(\"trade_bar_{minutes}m\"));\n        }\n        _ => {}\n    }\n\n    let suffix = match bar_spec.aggregation {\n        BarAggregation::Millisecond => \"ms\",\n        BarAggregation::Second => \"s\",\n        BarAggregation::Minute => \"m\",\n        BarAggregation::Tick => \"ticks\",\n        BarAggregation::Volume => \"vol\",\n        _ => anyhow::bail!(\"Unsupported bar aggregation type: {}\", bar_spec.aggregation),\n    };\n    Ok(format!(\"trade_bar_{}{}\", bar_spec.step, suffix))\n}\n\n#[cfg(test)]\nmod tests {\n    use std::str::FromStr;\n\n    use rstest::rstest;\n\n    use super::*;\n\n    #[rstest]\n    #[case(TardisExchange::Binance, \"ETHUSDT\", \"ETHUSDT.BINANCE\")]\n    #[case(TardisExchange::Bitmex, \"XBTUSD\", \"XBTUSD.BITMEX\")]\n    #[case(TardisExchange::Bybit, \"BTCUSDT\", \"BTCUSDT.BYBIT\")]\n    #[case(TardisExchange::OkexFutures, \"BTC-USD-200313\", \"BTC-USD-200313.OKEX\")]\n    #[case(TardisExchange::HuobiDmLinearSwap, \"FOO-BAR\", \"FOO-BAR.HUOBI\")]","sourceCodeStart":387,"sourceCodeEnd":423,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/tardis/src/common/parse.rs#L387-L423","documentation":"bar_spec_to_tardis_trade_bar_string maps a NautilusTrader BarAggregation back to Tardis's trade bar naming (e.g. 'trade_bar_1m'). Only Millisecond, Second, Minute, Tick, and Volume aggregations are supported; any other aggregation (e.g. Day, Price) bails with this message.","triggerScenarios":"Calling bar_spec_to_tardis_trade_bar_string (exposed via py_bar_spec_to_tardis_trade_bar_string) with a BarSpec whose aggregation is not one of Millisecond/Second/Minute/Tick/Volume — e.g. Day, Hour, or Price aggregation.","commonSituations":"Building Tardis requests from user-configured bar specs in Python where DAY/HOUR aggregations were selected; aggregations added to the enum after this mapping was written; requesting value/price bars from Tardis trade bars.","solutions":["Use one of the supported aggregations: Millisecond, Second, Minute, Tick, or Volume","Convert unsupported aggregations (e.g. 1 day) to an equivalent supported unit (1440 minutes) before calling","Do not use the Tardis trade-bar request path for Price/Value aggregated bars; fetch raw trades and aggregate locally","Check the BarSpec construction in your config and correct the aggregation field"],"exampleFix":"// before\nlet spec = BarSpec::new(..., BarAggregation::Day, ...);\nlet s = bar_spec_to_tardis_trade_bar_string(&spec)?; // bails\n// after\nlet spec = BarSpec::new(..., BarAggregation::Minute, ...); // step 1440\nlet s = bar_spec_to_tardis_trade_bar_string(&spec)?; // \"trade_bar_1440m\"","handlingStrategy":"validation","validationCode":"let supported = matches!(\n    bar_spec.aggregation,\n    BarAggregation::Millisecond\n        | BarAggregation::Second\n        | BarAggregation::Minute\n        | BarAggregation::Tick\n        | BarAggregation::Volume\n);\nif !supported { /* convert to a supported unit or skip */ }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Restrict user-configured bar aggregations to ms/s/m/ticks/vol when using Tardis","Convert Day/Hour aggregations to equivalent minutes before requesting Tardis trade bars","Do not route Price/Value bars through the Tardis trade-bar string builder"],"tags":["tardis","bars","unsupported","conversion"],"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-14T05:17:10.506Z"}