Skip to main content

RPIOrderbookUpdate

Struct RPIOrderbookUpdate 

Source
pub struct RPIOrderbookUpdate {
    pub topic: String,
    pub event_type: String,
    pub timestamp: u64,
    pub data: RPIOrderbook,
    pub cts: u64,
}
Expand description

Structure for WebSocket RPI (Real-time Price Improvement) order book update events.

Contains real-time updates to the RPI order book for a trading pair, including bids, asks, RPI sizes, and sequence numbers. RPI orders can provide price improvement for takers. Bots use this for market depth analysis with RPI information and liquidity monitoring.

Fields§

§topic: String

The WebSocket topic for the event (e.g., “orderbook.rpi.BTCUSDT”).

Specifies the data stream for the RPI order book update, including depth and symbol. Bots use this to verify the correct market and RPI depth level.

§event_type: String

The event type (e.g., “snapshot”, “delta”).

Indicates whether the update is a full snapshot or incremental delta. Bots use this to initialize or update their RPI order book state.

§timestamp: u64

The timestamp of the event in milliseconds.

Indicates when the RPI order book update was generated. Bots use this to ensure data freshness and align with other market data.

§data: RPIOrderbook

The RPI order book data.

Contains the bids, asks with RPI information, and sequence numbers for the order book. Bots use this to update their internal RPI order book representation.

§cts: u64

The creation timestamp in milliseconds.

Indicates when the RPI order book update was created by Bybit’s matching engine. Bots use this to measure latency and ensure data consistency.

Implementations§

Source§

impl RPIOrderbookUpdate

Source

pub fn symbol_from_topic(&self) -> Option<&str>

Returns the symbol from the topic.

Extracts the trading pair symbol from the WebSocket topic. Example: “orderbook.rpi.BTCUSDT” -> “BTCUSDT”

Source

pub fn is_snapshot(&self) -> bool

Returns true if this is a snapshot update.

Snapshot updates contain the full order book state and should replace the local order book.

Source

pub fn is_delta(&self) -> bool

Returns true if this is a delta update.

Delta updates contain incremental changes and should be applied to the local order book.

Source

pub fn processing_latency_ms(&self) -> i64

Returns the processing latency in milliseconds.

Calculates the difference between the matching engine timestamp (cts) and the system generation timestamp (ts).

Source

pub fn timestamp_datetime(&self) -> DateTime<Utc>

Returns the timestamp as a chrono DateTime.

Source

pub fn creation_datetime(&self) -> DateTime<Utc>

Returns the creation timestamp as a chrono DateTime.

Source

pub fn best_ask(&self) -> Option<f64>

Returns the best ask price (lowest ask).

Source

pub fn best_bid(&self) -> Option<f64>

Returns the best bid price (highest bid).

Source

pub fn best_ask_with_rpi(&self) -> Option<&RPIOrderbookLevel>

Returns the best ask with RPI information.

Source

pub fn best_bid_with_rpi(&self) -> Option<&RPIOrderbookLevel>

Returns the best bid with RPI information.

Source

pub fn spread(&self) -> Option<f64>

Returns the bid-ask spread.

Source

pub fn mid_price(&self) -> Option<f64>

Returns the mid price (average of best bid and ask).

Source

pub fn spread_percentage(&self) -> Option<f64>

Returns the spread as a percentage of mid price.

Source

pub fn total_ask_rpi_size(&self) -> f64

Returns the total RPI size on the ask side.

Source

pub fn total_ask_non_rpi_size(&self) -> f64

Returns the total non-RPI size on the ask side.

Source

pub fn total_bid_rpi_size(&self) -> f64

Returns the total RPI size on the bid side.

Source

pub fn total_bid_non_rpi_size(&self) -> f64

Returns the total non-RPI size on the bid side.

Source

pub fn average_ask_rpi_ratio(&self) -> f64

Returns the average RPI ratio on the ask side.

Source

pub fn average_bid_rpi_ratio(&self) -> f64

Returns the average RPI ratio on the bid side.

Source

pub fn rpi_ratio_imbalance(&self) -> f64

Returns the bid-ask RPI ratio difference.

Source

pub fn order_book_imbalance_with_rpi(&self) -> f64

Returns the order book imbalance considering RPI sizes.

Source

pub fn liquidity_score_with_rpi(&self) -> f64

Returns the liquidity score considering RPI availability.

Source

pub fn expected_taker_improvement( &self, is_buy: bool, quantity: f64, ) -> Option<f64>

Returns the expected price improvement for takers.

Source

pub fn ask_price_impact_with_rpi(&self, quantity: f64) -> Option<f64>

Returns the price impact for a given quantity considering RPI.

Source

pub fn bid_price_impact_with_rpi(&self, quantity: f64) -> Option<f64>

Returns the price impact for a given quantity considering RPI.

Source

pub fn weighted_average_ask_price_with_rpi( &self, target_quantity: f64, ) -> Option<f64>

Returns the weighted average ask price considering RPI improvement.

Source

pub fn weighted_average_bid_price_with_rpi( &self, target_quantity: f64, ) -> Option<f64>

Returns the weighted average bid price considering RPI improvement.

Trait Implementations§

Source§

impl Clone for RPIOrderbookUpdate

Source§

fn clone(&self) -> RPIOrderbookUpdate

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RPIOrderbookUpdate

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for RPIOrderbookUpdate

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for RPIOrderbookUpdate

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. 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> 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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, 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,