nautechsystems/nautilus_trader · error
RPC position {} has invalid tick range [{}, {}) for spacing
Error message
RPC position {} has invalid tick range [{}, {}) for spacing {tick_spacing} What it means
Sanity check on each position in the RPC snapshot: tick_lower must be strictly below tick_upper, within MIN_TICK..MAX_TICK, and aligned to the pool's tick spacing; violations mean the position data is corrupt or belongs to a different pool configuration.
Source
Thrown at crates/adapters/blockchain/src/data/core.rs:2173
expected_tick.liquidity_net,
actual_tick.liquidity_gross,
actual_tick.liquidity_net,
actual_tick.initialized
);
}
}
let mut derived_ticks: AHashMap<i32, (u128, i128)> = AHashMap::new();
let mut active_liquidity = 0_u128;
for position in &snapshot.positions {
if position.tick_lower >= position.tick_upper
|| position.tick_lower < PoolTick::MIN_TICK
|| position.tick_upper > PoolTick::MAX_TICK
|| position.tick_lower % tick_spacing != 0
|| position.tick_upper % tick_spacing != 0
{
anyhow::bail!(
"RPC position {} has invalid tick range [{}, {}) for spacing {tick_spacing}",
position.owner,
position.tick_lower,
position.tick_upper
);
}
if position.liquidity == 0 {
continue;
}
let liquidity_net = i128::try_from(position.liquidity).with_context(|| {
format!(
"RPC position {} liquidity exceeds i128::MAX",
position.owner
)
})?;
let lower = derived_ticks.entry(position.tick_lower).or_default();View on GitHub (pinned to 18893faf8b)
Solutions
- Re-fetch position data from the RPC node
- Confirm the pool's tick spacing parameter matches the snapshot source
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/adapters/blockchain/src/data/core.rs:2173 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/fabcb0a1f7394533.
Report an issue: GitHub.