Skip to main content

DatabentoHistorical

Struct DatabentoHistorical 

Source
pub struct DatabentoHistorical { /* private fields */ }
Expand description

Historical data fetcher for Databento.

Wraps HistoricalClient for fetching historical market data older than 24 hours.

Implementations§

Source§

impl DatabentoHistorical

Source

pub fn from_env() -> Result<Self, DataError>

Create a new historical client using API key from environment.

Reads DATABENTO_API_KEY from environment variables.

§Errors

Returns error if DATABENTO_API_KEY is not set or client construction fails.

Source

pub fn new(api_key: &str) -> Result<Self, DataError>

Create a new historical client with an explicit API key.

§Errors

Returns error if client construction fails.

Source

pub async fn fetch_trades<K: Clone>( &mut self, params: &GetRangeParams, exchange: ExchangeId, instrument: K, ) -> Result<Vec<MarketEvent<K, PublicTrade>>, DataError>

Fetch historical trades for the given parameters.

Collects all records into memory before returning. For large queries (millions of records), consider fetch_trades_stream to process records incrementally.

§Arguments
  • params - Query parameters (dataset, symbols, time range)
  • exchange - ExchangeId to tag events with (should match dataset)
  • instrument - Instrument key to tag events with
§Performance

The instrument key is cloned for each record. For high-frequency data, use Arc<K> to avoid per-record heap allocations:

ⓘ
let instrument = Arc::new("ES".to_string());
let trades = client.fetch_trades(&params, exchange, instrument).await?;
§Returns

Vector of trades converted to PublicTrade events. Each event’s time_received is stamped at decode time on the local machine.

Source

pub async fn fetch_quotes<K: Clone>( &mut self, params: &GetRangeParams, exchange: ExchangeId, instrument: K, ) -> Result<Vec<MarketEvent<K, Quote>>, DataError>

Fetch historical quotes (top-of-book) for the given parameters.

Uses MBP-1 (Market By Price level 1) schema. Collects all records into memory before returning. For large queries, consider fetch_quotes_stream.

§Arguments
  • params - Query parameters (dataset, symbols, time range). Schema should be Mbp1.
  • exchange - ExchangeId to tag events with
  • instrument - Instrument key to tag events with
§Performance

The instrument key is cloned for each record. For high-frequency data, use Arc<K> to avoid per-record heap allocations.

Each event’s time_received is stamped at decode time on the local machine.

Source

pub async fn fetch_candles<K: Clone>( &mut self, params: &DatabentoOhlcvParams, exchange: ExchangeId, instrument: K, ) -> Result<Vec<MarketEvent<K, Candle>>, DataError>

Fetch historical OHLCV candles for the given parameters.

Collects all records into memory before returning. For large queries, consider fetch_candles_stream.

§Schema derivation

The DBN schema is derived internally from DatabentoOhlcvParams::interval via the crate-internal ensure_databento_ohlcv_supports, so the interval and schema cannot diverge — the caller never supplies a Schema. The interval is also load-bearing for each candle’s close_time (see Candle::close_time).

§Time range

DatabentoOhlcvParams::time_range is (start, end) with inclusive start and exclusive end, filtering on the bar’s ts_event — i.e. the bar open instant, Databento’s native OHLCV filter field — not the normalised close_time. (Unlike the Hyperliquid path, no close-time range-widening/trimming is applied; the range is passed through to Databento’s native open-time filter.)

§Arguments
  • params - Typed OHLCV query parameters (dataset, symbols, range, interval)
  • exchange - ExchangeId to tag events with (should match dataset)
  • instrument - Instrument key to tag events with (use Arc<K> for efficiency)
§Errors

Returns DataError::UnsupportedInterval if params.interval is not one of Databento’s native intervals (1s/1m/1h/1d); DataError::Databento if the request fails, a record fails to decode, a price field carries the UNDEF_PRICE sentinel, or a candle’s close_time overflows. A conversion failure is propagated, never silently skipped (native OHLCV bars have no skippable-malformed mode).

Source

pub async fn fetch_candles_stream<K: Clone + Send + 'static>( &mut self, params: &DatabentoOhlcvParams, exchange: ExchangeId, instrument: K, ) -> Result<impl Stream<Item = Result<MarketEvent<K, Candle>, DataError>>, DataError>

Stream historical OHLCV candles without collecting into memory.

Unlike fetch_candles, this returns a stream that yields records as they’re decoded, avoiding memory spikes for large queries.

See fetch_candles for schema-derivation and time-range semantics.

§Errors

Returns DataError::UnsupportedInterval up front if params.interval is unsupported, or DataError::Databento if the initial get_range request fails. Per-item errors are yielded as Err items: a DBN decode failure (the decoder is then in an unspecified state — drop the stream), an rtype/schema contract violation (assert_ohlcv_rtype_matches; the stream keeps polling but every record is likely to fail the same way — drop the stream), or a candle conversion failure (an UNDEF_PRICE sentinel or close_time overflow — surfaced, never skipped).

Source

pub async fn fetch_trades_stream<K: Clone + Send + 'static>( &mut self, params: &GetRangeParams, exchange: ExchangeId, instrument: K, ) -> Result<impl Stream<Item = Result<MarketEvent<K, PublicTrade>, DataError>>, DataError>

Stream historical trades without collecting into memory.

Unlike fetch_trades, this returns a stream that yields records as they’re decoded, avoiding memory spikes for large queries.

§Arguments
  • params - Query parameters (dataset, symbols, time range)
  • exchange - ExchangeId to tag events with
  • instrument - Instrument key to tag events with (use Arc<K> for efficiency)
§Errors

The outer Result returns DataError::Databento if the initial get_range request fails (e.g. authentication, network, or invalid params).

Per-item errors are yielded as Err items on the stream and indicate a DBN decode failure. After a decode error the underlying decoder is in an unspecified state; callers should drop the stream rather than continue polling for more records. Records that successfully decode but fail conversion to PublicTrade are logged at debug and skipped silently.

Source

pub async fn fetch_quotes_stream<K: Clone + Send + 'static>( &mut self, params: &GetRangeParams, exchange: ExchangeId, instrument: K, ) -> Result<impl Stream<Item = Result<MarketEvent<K, Quote>, DataError>>, DataError>

Stream historical quotes without collecting into memory.

Unlike fetch_quotes, this returns a stream that yields records as they’re decoded, avoiding memory spikes for large queries.

§Arguments
  • params - Query parameters (dataset, symbols, time range). Schema should be Mbp1.
  • exchange - ExchangeId to tag events with
  • instrument - Instrument key to tag events with (use Arc<K> for efficiency)
§Errors

The outer Result returns DataError::Databento if the initial get_range request fails (e.g. authentication, network, or invalid params).

Per-item errors are yielded as Err items on the stream and indicate a DBN decode failure. After a decode error the underlying decoder is in an unspecified state; callers should drop the stream rather than continue polling for more records. Records that successfully decode but fail conversion to Quote are logged at debug and skipped silently.

Source

pub fn client(&self) -> &HistoricalClient

Returns the underlying client for advanced use cases.

Source

pub fn client_mut(&mut self) -> &mut HistoricalClient

Returns a mutable reference to the underlying client.

Trait Implementations§

Source§

impl Debug for DatabentoHistorical

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AttachedTransformer<()> for T

Source§

fn attached(&mut self, _: ())

Take what the connection handed the stream on attaching.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> JsonSchemaMaybe for T

Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more