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 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) -> OrderSide
pub fn closing_order_side(&self) -> 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 self.base_currency is None, or if last is not a positive price for
inverse instruments.
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.