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

  1. Supply the correction via reconciliation data for the referenced fill
  2. 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.