pub struct PositionRef<'a>(/* private fields */);Expand description
Lifetime-scoped read borrow of a cached position.
Returned by crate::cache::Cache::position. The borrow drops with the enclosing scope, which
makes any attempt to hold it across a cache mutation panic at runtime: a loud failure beats the
silent staleness that a stored clone would produce.
Method calls on the inner Position resolve via Deref; comparisons against &Position
or owned Position values are direct (position_ref == &position); Display and Debug
forward to the inner record. Use cloned when an owned snapshot is required
(for example, before crossing a boundary that may dispatch events).
Implementations§
Source§impl<'a> PositionRef<'a>
impl<'a> PositionRef<'a>
Methods from Deref<Target = Position>§
Sourcepub fn clone_without_events(&self) -> Position
pub fn clone_without_events(&self) -> Position
Returns a copy without stored events, adjustments, replay events, fill voids, or trade IDs.
§Warning
Use this copy only as transient read state. Applying events or caching this copy can bypass replay and duplicate-fill checks and discard position history.
Sourcepub fn fill_fragments(
&self,
client_order_id: ClientOrderId,
trade_id: TradeId,
) -> Vec<&OrderFilled>
pub fn fill_fragments( &self, client_order_id: ClientOrderId, trade_id: TradeId, ) -> Vec<&OrderFilled>
Returns durable fill fragments matching an order trade in local application order.
Sourcepub fn try_calculate_pnl(
&self,
avg_px_open: f64,
avg_px_close: f64,
quantity: Quantity,
) -> Result<Money, Error>
pub fn try_calculate_pnl( &self, avg_px_open: f64, avg_px_close: f64, quantity: Quantity, ) -> Result<Money, Error>
Sourcepub fn calculate_pnl(
&self,
avg_px_open: f64,
avg_px_close: f64,
quantity: Quantity,
) -> Money
pub fn calculate_pnl( &self, avg_px_open: f64, avg_px_close: f64, quantity: Quantity, ) -> Money
Calculates profit and loss from the given prices and quantity.
Sourcepub fn total_pnl(&self, last: Price) -> Money
pub fn total_pnl(&self, last: Price) -> Money
Returns total P&L (realized + unrealized) based on the last price.
Sourcepub fn unrealized_pnl(&self, last: Price) -> Money
pub fn unrealized_pnl(&self, last: Price) -> Money
Returns unrealized P&L based on the last price.
Sourcepub fn closing_order_side(&self) -> Option<OrderSide>
pub fn closing_order_side(&self) -> Option<OrderSide>
Returns the order side required to close this position.
Sourcepub fn is_opposite_side(&self, side: OrderSide) -> bool
pub fn is_opposite_side(&self, side: OrderSide) -> bool
Returns whether the given order side is opposite to the position entry side.
Sourcepub fn event_count(&self) -> usize
pub fn event_count(&self) -> usize
Returns the count of order fill events applied to this position.
Sourcepub fn client_order_ids(&self) -> Vec<ClientOrderId>
pub fn client_order_ids(&self) -> Vec<ClientOrderId>
Returns unique client order IDs from all fill events, sorted.
Sourcepub fn venue_order_ids(&self) -> Vec<VenueOrderId>
pub fn venue_order_ids(&self) -> Vec<VenueOrderId>
Returns unique venue order IDs from all fill events, sorted.
Sourcepub fn notional_value(&self, last: Price) -> Money
pub fn notional_value(&self, last: Price) -> Money
Calculates the notional value based on the last price.
§Panics
Panics if Position::try_notional_value returns an error.
Sourcepub fn last_event(&self) -> Option<OrderFilled>
pub fn last_event(&self) -> Option<OrderFilled>
Returns the last OrderFilled event for the position (if any after purging).
Sourcepub fn last_trade_id(&self) -> Option<TradeId>
pub fn last_trade_id(&self) -> Option<TradeId>
Returns the last TradeId for the position (if any after purging).
Sourcepub fn is_open(&self) -> bool
pub fn is_open(&self) -> bool
Returns whether the position is currently open (has quantity and no close timestamp).
Sourcepub fn is_closed(&self) -> bool
pub fn is_closed(&self) -> bool
Returns whether the position is closed (flat with a close timestamp).
Sourcepub fn signed_decimal_qty(&self) -> Decimal
pub fn signed_decimal_qty(&self) -> Decimal
Returns the signed quantity as a Decimal.
Uses the raw signed_qty field to preserve full precision, as the quantity
field may have reduced precision based on the instrument’s size_precision.
Sourcepub fn commissions(&self) -> Vec<Money>
pub fn commissions(&self) -> Vec<Money>
Returns the cumulative commissions for the position as a vector.