nautechsystems/nautilus_trader · error
No result in ticker response
Error message
No result in ticker response
What it means
request_ticker requires a `result` payload from Deribit's public/ticker. The HTTP request succeeded but the JSON-RPC response contained no `result`, so no TickerData can be returned. Deribit typically omits `result` when it returns an error object instead.
Source
Thrown at crates/adapters/deribit/src/http/client.rs:1890
/// Requests ticker data for a single instrument.
///
/// Returns the `DeribitTicker` including its option-chain reference price.
///
/// # Errors
///
/// Returns an error if the request fails.
pub async fn request_ticker(&self, instrument_name: &str) -> anyhow::Result<DeribitTicker> {
let params = GetTickerParams {
instrument_name: instrument_name.to_string(),
};
let response = self
.inner
.get_ticker(params)
.await
.map_err(|e| anyhow::anyhow!(e))?;
response
.result
.ok_or_else(|| anyhow::anyhow!("No result in ticker response"))
}
/// Requests book summaries for a currency via `public/get_book_summary_by_currency`.
///
/// Defaults to product kind `option`.
/// Entries include mark/IV, bid-ask, volumes, and `underlying_price` (forward) when present.
///
/// # Errors
///
/// Returns an error if the request fails.
pub async fn request_book_summaries(
&self,
currency: &str,
) -> anyhow::Result<Vec<DeribitBookSummaryRaw>> {
self.request_book_summaries_kind(currency, Some("option"))
.await
}
View on GitHub (pinned to 18893faf8b)
Solutions
- Validate the instrument_name against the current instrument list for the connected environment.
- Check the response `error` field/logs for the JSON-RPC error code and message.
- Regenerate/refresh the instrument universe periodically so delisted instruments are not requested.
Example fix
// before
response
.result
.ok_or_else(|| anyhow::anyhow!("No result in ticker response"))
// after
response.result.ok_or_else(|| {
anyhow::anyhow!(
"No result in ticker response for {instrument_name} (error: {:?})",
response.error
)
}) Defensive patterns
Strategy: validation
Validate before calling
// Verify instrument exists before requesting its ticker let instruments = client.request_instruments(currency, kind).await?; assert!(instruments.iter().any(|i| i.name == instrument_name));
Try / catch
match client.request_ticker(instrument).await {
Ok(t) => handle(t),
Err(e) if e.to_string().contains("No result in ticker response") => mark_instrument_unavailable(instrument),
Err(e) => return Err(e),
} Prevention
- Refresh the instrument universe periodically to drop expired instruments
- Match environment: testnet instruments differ from mainnet
- Log the response `error` field when result is missing
When it happens
Trigger: Calling request_ticker with an instrument_name the endpoint cannot resolve (typo, expired/delisted instrument, wrong kind), producing an error response with null/absent result.
Common situations: Querying an expired futures/options instrument, a typo'd instrument name, or using the test environment for an instrument that only exists in production.
Understand the failure class
Background: "empty response", "returned no data", "empty embeddings": what HTTP 200-with-empty-body errors mean across libraries — this error's family across 36 libraries.
Related errors
- No result in book summary response
- No result in expirations response
- failed to request AX whoami: {e}
- {e}
- No option expirations for {currency}
AI-assisted analysis of nautechsystems/nautilus_trader@18893faf8b (2026-09-08).
Data as JSON: /api/errors/eb15cadbd0767ea9.
Report an issue: GitHub.