Portfolio

Struct Portfolio 

Source
pub struct Portfolio { /* private fields */ }

Implementations§

Source§

impl Portfolio

Source

pub fn new( cache: Rc<RefCell<Cache>>, clock: Rc<RefCell<dyn Clock>>, config: Option<PortfolioConfig>, ) -> Self

Source

pub fn clone_shallow(&self) -> Self

Creates a shallow clone of the Portfolio that shares the same internal state.

This is useful when multiple components need to reference the same Portfolio without creating duplicate msgbus handler registrations.

Source

pub fn reset(&mut self)

Source

pub fn is_initialized(&self) -> bool

Returns true if the portfolio has been initialized.

Source

pub fn balances_locked(&self, venue: &Venue) -> AHashMap<Currency, Money>

Returns the locked balances for the given venue.

Locked balances represent funds reserved for open orders.

Source

pub fn margins_init(&self, venue: &Venue) -> AHashMap<InstrumentId, Money>

Returns the initial margin requirements for the given venue.

Only applicable for margin accounts. Returns empty map for cash accounts.

Source

pub fn margins_maint(&self, venue: &Venue) -> AHashMap<InstrumentId, Money>

Returns the maintenance margin requirements for the given venue.

Only applicable for margin accounts. Returns empty map for cash accounts.

Source

pub fn unrealized_pnls(&mut self, venue: &Venue) -> AHashMap<Currency, Money>

Returns the unrealized PnLs for all positions at the given venue.

Calculates mark-to-market PnL based on current market prices.

Source

pub fn realized_pnls(&mut self, venue: &Venue) -> AHashMap<Currency, Money>

Returns the realized PnLs for all positions at the given venue.

Calculates total realized profit and loss from closed positions.

Source

pub fn net_exposures(&self, venue: &Venue) -> Option<AHashMap<Currency, Money>>

Source

pub fn unrealized_pnl(&mut self, instrument_id: &InstrumentId) -> Option<Money>

Source

pub fn realized_pnl(&mut self, instrument_id: &InstrumentId) -> Option<Money>

Source

pub fn total_pnl(&mut self, instrument_id: &InstrumentId) -> Option<Money>

Returns the total PnL for the given instrument ID.

Total PnL = Realized PnL + Unrealized PnL

Source

pub fn total_pnls(&mut self, venue: &Venue) -> AHashMap<Currency, Money>

Returns the total PnLs for the given venue.

Total PnL = Realized PnL + Unrealized PnL for each currency

Source

pub fn net_exposure(&self, instrument_id: &InstrumentId) -> Option<Money>

Source

pub fn net_position(&self, instrument_id: &InstrumentId) -> Decimal

Source

pub fn is_net_long(&self, instrument_id: &InstrumentId) -> bool

Source

pub fn is_net_short(&self, instrument_id: &InstrumentId) -> bool

Source

pub fn is_flat(&self, instrument_id: &InstrumentId) -> bool

Source

pub fn is_completely_flat(&self) -> bool

Source

pub fn initialize_orders(&mut self)

Initializes account margin based on existing open orders.

§Panics

Panics if updating the cache with a mutated account fails.

Source

pub fn initialize_positions(&mut self)

Initializes account margin based on existing open positions.

§Panics

Panics if calculation of PnL or updating the cache with a mutated account fails.

Source

pub fn update_quote_tick(&mut self, quote: &QuoteTick)

Updates portfolio calculations based on a new quote tick.

Recalculates unrealized PnL for positions affected by the quote update.

Source

pub fn update_bar(&mut self, bar: &Bar)

Updates portfolio calculations based on a new bar.

Updates cached bar close prices and recalculates unrealized PnL.

Source

pub fn update_account(&mut self, event: &AccountState)

Updates portfolio with a new account state event.

Source

pub fn update_order(&mut self, event: &OrderEventAny)

Updates portfolio calculations based on an order event.

Handles balance updates for order fills and margin calculations for order changes.

Source

pub fn update_position(&mut self, event: &PositionEvent)

Updates portfolio calculations based on a position event.

Recalculates net positions, unrealized PnL, and margin requirements.

Trait Implementations§

Source§

impl Debug for Portfolio

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> 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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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> Same for T

Source§

type Output = T

Should always be Self
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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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