nautechsystems/nautilus_trader · error
commission-only position correction requires authoritative r
Error message
commission-only position correction requires authoritative reconciliation for fill {} What it means
Guard in position-correction handling: a correction that only adjusts commission (no quantity) is ambiguous unless applied against an authoritative reconciliation fill; without that authoritative source the correction is rejected to prevent fabricated state.
Source
Thrown at crates/execution/src/engine/mod.rs:3975
.1
.map_or(removed, |commission| commission + removed),
);
})
.or_insert((Quantity::zero(event.voided_qty.precision), Some(removed)));
remaining_commission = remaining_commission - removed;
}
anyhow::ensure!(
remaining_commission.is_zero(),
"position fragments do not cover voided commission for fill {}",
event.trade_id
);
}
let mut corrected_positions = Vec::new();
for (position_id, (voided_qty, commission_voided)) in allocations {
if voided_qty.is_zero() {
anyhow::bail!(
"commission-only position correction requires authoritative reconciliation for fill {}",
event.trade_id
);
}
let mut position = self
.cache
.borrow()
.position_owned(&position_id)
.ok_or_else(|| anyhow::anyhow!("position {position_id} is not cached"))?;
let previous = position
.fill_voids
.iter()
.rev()
.find(|record| {
record.event.client_order_id == event.client_order_id
&& record.event.trade_id == event.trade_id
})
.map(|record| (record.voided_qty, record.commission_voided));View on GitHub (pinned to 18893faf8b)
Solutions
- Supply the correction via reconciliation data for the referenced fill
- Include a quantity component so the correction is not commission-only
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/execution/src/engine/mod.rs:3975 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/dcd408a3ffa1565a.
Report an issue: GitHub.