nautechsystems/nautilus_trader · error
No order, orderTrigger, or orderPriorExecution data in event
Error message
No order, orderTrigger, or orderPriorExecution data in event
What it means
submit_order on Kraken Futures handles multiple event payloads (order, orderTrigger, orderPriorExecution). When the send_event contains none of these payload variants there is no data from which to build an order request, so the client bails. This is a guard against malformed or incomplete order submission events reaching the adapter.
Source
Thrown at crates/adapters/kraken/src/http/futures/client.rs:2195
}
} else if let Some(prior_exec) = &send_event.order_prior_execution {
// EXECUTION event - use orderPriorExecution data
FuturesOrderEvent {
order_id: prior_exec.order_id.clone(),
cli_ord_id: prior_exec.cli_ord_id.clone(),
order_type: prior_exec.order_type,
symbol: prior_exec.symbol.clone(),
side: prior_exec.side,
quantity: prior_exec.quantity,
filled: send_event.amount.unwrap_or(prior_exec.quantity), // Use execution amount
limit_price: prior_exec.limit_price,
stop_price: prior_exec.stop_price,
timestamp: prior_exec.timestamp.clone(),
last_update_timestamp: prior_exec.last_update_timestamp.clone(),
reduce_only: prior_exec.reduce_only,
}
} else {
anyhow::bail!("No order, orderTrigger, or orderPriorExecution data in event");
};
return parse_futures_order_event_status_report(
&event,
Some(send_event.event_type),
&instrument,
account_id,
ts_init,
);
}
// Fall back to querying order events
let events_response = self.inner.get_order_events(None, None, None).await?;
let event_wrapper = events_response
.order_events
.iter()
.find(|e| e.order.order_id == venue_order_id)
.ok_or_else(|| {
anyhow::anyhow!("Order not found in open orders or events: {venue_order_id}")View on GitHub (pinned to 18893faf8b)
Solutions
- Inspect the OrderRequest/submit event and ensure it contains a populated order (or orderTrigger/orderPriorExecution) payload before calling submit_order.
- Log the full event at the call site to confirm which payload variant is present; fix construction of the event accordingly.
- Verify adapter/event type routing: only events carrying order data should reach this code path.
- Check for version mismatches between nautilus_core event definitions and the kraken adapter's expected payload shape.
Example fix
// before: event constructed without payload let event = OrderRequest::new(instrument_id, account_id, None); client.submit_order(event).await?; // after: attach the order payload let event = OrderRequest::new(instrument_id, account_id, Some(order_payload)); client.submit_order(event).await?;
Defensive patterns
Strategy: validation
Validate before calling
if order.order_payload().is_none() && order.trigger_payload().is_none() && order.prior_exec_payload().is_none() {
return Err("cannot submit: no order/orderTrigger/orderPriorExecution payload");
}
client.submit_order(order).await?; Type guard
fn has_submittable_payload(event: &OrderEvent) -> bool {
event.order.is_some() || event.order_trigger.is_some() || event.order_prior_execution.is_some()
} Try / catch
match client.submit_order(event).await {
Err(e) if e.to_string().contains("No order, orderTrigger") => log::error!("event lacks order payload: {event:?}"),
Err(e) => return Err(e),
Ok(r) => r,
} Prevention
- Always construct order requests via the official OrderFactory rather than manual structs
- Log the event payload variant at submit sites during development
- Keep nautilus event types and adapter versions in sync
When it happens
Trigger: Calling submit_order with an event whose send_event payload is empty or carries none of the order/orderTrigger/orderPriorExecution variants, e.g. an internally constructed order event missing its request payload, or an event type routed to this branch that never carried order data.
Common situations: Custom strategies submitting manually constructed OrderRequest events without the expected payload fields; version drift where the event schema changed and the payload no longer matches; bugs in upstream code that drops the order data before it reaches the adapter.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- Unsupported `OrderSide` for Binance: {value:?}
- Unsupported time in force: {:?}, AX supports GTC, IOC, and D
- Market-if-touched orders require a trigger price
- Limit-if-touched orders require a trigger price
- Either client_order_id or venue_order_id must be provided
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/67901050f484729f.
Report an issue: GitHub.