Skip to main content
Version: latest

Portfolio

The portfolio subpackage provides portfolio management functionality.

class Portfolio

Bases: PortfolioFacade

Portfolio(MessageBus msgbus, CacheFacade cache, Clock clock)

Provides a trading portfolio.

Currently there is a limitation of one account per ExecutionClient instance.

  • Parameters:
    • msgbus (MessageBus) – The message bus for the engine.
    • cache (CacheFacade) – The read-only cache for the portfolio.
    • clock (Clock) – The clock for the portfolio.

account(self, Venue venue) → Account

Return the account for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the account.
  • Return type: Account or None

balances_locked(self, Venue venue) → dict

Return the balances locked for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the margin.
  • Return type: dict[Currency, Money] or None

dispose(self) → None

Dispose of the portfolio.

All stateful fields are reset to their initial value.

initialize_orders(self) → void

Initialize the portfolios orders.

Performs all account calculations for the current orders state.

initialize_positions(self) → void

Initialize the portfolios positions.

Performs all account calculations for the current position state.

is_completely_flat(self) → bool

Return a value indicating whether the portfolio is completely flat.

  • Returns: True if net flat across all instruments, else False.
  • Return type: bool

is_flat(self, InstrumentId instrument_id) → bool

Return a value indicating whether the portfolio is flat for the given instrument ID.

  • Parameters: instrument_id (InstrumentId) – The instrument query filter.
  • Returns: True if net flat, else False.
  • Return type: bool

is_net_long(self, InstrumentId instrument_id) → bool

Return a value indicating whether the portfolio is net long the given instrument ID.

  • Parameters: instrument_id (InstrumentId) – The instrument for the query.
  • Returns: True if net long, else False.
  • Return type: bool

is_net_short(self, InstrumentId instrument_id) → bool

Return a value indicating whether the portfolio is net short the given instrument ID.

  • Parameters: instrument_id (InstrumentId) – The instrument for the query.
  • Returns: True if net short, else False.
  • Return type: bool

margins_init(self, Venue venue) → dict

Return the initial (order) margins for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the margin.
  • Return type: dict[Currency, Money] or None

margins_maint(self, Venue venue) → dict

Return the maintenance (position) margins for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the margin.
  • Return type: dict[Currency, Money] or None

net_exposure(self, InstrumentId instrument_id) → Money

Return the net exposure for the given instrument (if found).

  • Parameters: instrument_id (InstrumentId) – The instrument for the calculation.
  • Return type: Money or None

net_exposures(self, Venue venue) → dict

Return the net exposures for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the market value.
  • Return type: dict[Currency, Money] or None

net_position(self, InstrumentId instrument_id)

Return the total net position for the given instrument ID. If no positions for instrument_id then will return Decimal(‘0’).

  • Parameters: instrument_id (InstrumentId) – The instrument for the query.
  • Return type: Decimal

realized_pnl(self, InstrumentId instrument_id) → Money

Return the realized PnL for the given instrument ID (if found).

  • Parameters: instrument_id (InstrumentId) – The instrument for the realized PnL.
  • Return type: Money or None

realized_pnls(self, Venue venue) → dict

Return the realized PnLs for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the realized PnL.
  • Return type: dict[Currency, Money] or None

reset(self) → None

Reset the portfolio.

All stateful fields are reset to their initial value.

set_specific_venue(self, Venue venue) → void

Set a specific venue for the portfolio.

  • Parameters: venue (Venue) – The specific venue to set.

unrealized_pnl(self, InstrumentId instrument_id) → Money

Return the unrealized PnL for the given instrument ID (if found).

  • Parameters: instrument_id (InstrumentId) – The instrument for the unrealized PnL.
  • Return type: Money or None

unrealized_pnls(self, Venue venue) → dict

Return the unrealized PnLs for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the unrealized PnL.
  • Return type: dict[Currency, Money] or None

update_account(self, AccountState event) → void

Apply the given account state.

  • Parameters: event (AccountState) – The account state to apply.

update_order(self, OrderEvent event) → void

Update the portfolio with the given order.

  • Parameters: event (OrderEvent) – The event to update with.

update_position(self, PositionEvent event) → void

Update the portfolio with the given position event.

  • Parameters: event (PositionEvent) – The event to update with.

update_quote_tick(self, QuoteTick tick) → void

Update the portfolio with the given tick.

Clears the unrealized PnL for the quoting instrument, and performs any initialization calculations which may have been pending a market quote update.

  • Parameters: tick (QuoteTick) – The tick to update with.

class PortfolioFacade

Bases: object

Provides a read-only facade for a Portfolio.

account(self, Venue venue) → Account

Abstract method (implement in subclass).

analyzer

The portfolios analyzer.

  • Returns: PortfolioAnalyzer

balances_locked(self, Venue venue) → dict

Abstract method (implement in subclass).

initialized

If the portfolio is initialized.

  • Returns: bool

is_completely_flat(self) → bool

Abstract method (implement in subclass).

is_flat(self, InstrumentId instrument_id) → bool

Abstract method (implement in subclass).

is_net_long(self, InstrumentId instrument_id) → bool

Abstract method (implement in subclass).

is_net_short(self, InstrumentId instrument_id) → bool

Abstract method (implement in subclass).

margins_init(self, Venue venue) → dict

Abstract method (implement in subclass).

margins_maint(self, Venue venue) → dict

Abstract method (implement in subclass).

net_exposure(self, InstrumentId instrument_id) → Money

Abstract method (implement in subclass).

net_exposures(self, Venue venue) → dict

Abstract method (implement in subclass).

net_position(self, InstrumentId instrument_id)

Abstract method (implement in subclass).

realized_pnl(self, InstrumentId instrument_id) → Money

Abstract method (implement in subclass).

realized_pnls(self, Venue venue) → dict

Abstract method (implement in subclass).

unrealized_pnl(self, InstrumentId instrument_id) → Money

Abstract method (implement in subclass).

unrealized_pnls(self, Venue venue) → dict

Abstract method (implement in subclass).

The Portfolio facilitates the management of trading operations.

The intended use case is for a single Portfolio instance per running system, a fleet of trading strategies will organize around a portfolio with the help of the Trader` class.

The portfolio can satisfy queries for account information, margin balances, total risk exposures and total net positions.

class Portfolio

Bases: PortfolioFacade

Portfolio(MessageBus msgbus, CacheFacade cache, Clock clock)

Provides a trading portfolio.

Currently there is a limitation of one account per ExecutionClient instance.

  • Parameters:
    • msgbus (MessageBus) – The message bus for the engine.
    • cache (CacheFacade) – The read-only cache for the portfolio.
    • clock (Clock) – The clock for the portfolio.

account(self, Venue venue) → Account

Return the account for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the account.
  • Return type: Account or None

analyzer

The portfolios analyzer.

  • Returns: PortfolioAnalyzer

balances_locked(self, Venue venue) → dict

Return the balances locked for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the margin.
  • Return type: dict[Currency, Money] or None

dispose(self) → None

Dispose of the portfolio.

All stateful fields are reset to their initial value.

initialize_orders(self) → void

Initialize the portfolios orders.

Performs all account calculations for the current orders state.

initialize_positions(self) → void

Initialize the portfolios positions.

Performs all account calculations for the current position state.

initialized

If the portfolio is initialized.

  • Returns: bool

is_completely_flat(self) → bool

Return a value indicating whether the portfolio is completely flat.

  • Returns: True if net flat across all instruments, else False.
  • Return type: bool

is_flat(self, InstrumentId instrument_id) → bool

Return a value indicating whether the portfolio is flat for the given instrument ID.

  • Parameters: instrument_id (InstrumentId) – The instrument query filter.
  • Returns: True if net flat, else False.
  • Return type: bool

is_net_long(self, InstrumentId instrument_id) → bool

Return a value indicating whether the portfolio is net long the given instrument ID.

  • Parameters: instrument_id (InstrumentId) – The instrument for the query.
  • Returns: True if net long, else False.
  • Return type: bool

is_net_short(self, InstrumentId instrument_id) → bool

Return a value indicating whether the portfolio is net short the given instrument ID.

  • Parameters: instrument_id (InstrumentId) – The instrument for the query.
  • Returns: True if net short, else False.
  • Return type: bool

margins_init(self, Venue venue) → dict

Return the initial (order) margins for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the margin.
  • Return type: dict[Currency, Money] or None

margins_maint(self, Venue venue) → dict

Return the maintenance (position) margins for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the margin.
  • Return type: dict[Currency, Money] or None

net_exposure(self, InstrumentId instrument_id) → Money

Return the net exposure for the given instrument (if found).

  • Parameters: instrument_id (InstrumentId) – The instrument for the calculation.
  • Return type: Money or None

net_exposures(self, Venue venue) → dict

Return the net exposures for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the market value.
  • Return type: dict[Currency, Money] or None

net_position(self, InstrumentId instrument_id)

Return the total net position for the given instrument ID. If no positions for instrument_id then will return Decimal(‘0’).

  • Parameters: instrument_id (InstrumentId) – The instrument for the query.
  • Return type: Decimal

realized_pnl(self, InstrumentId instrument_id) → Money

Return the realized PnL for the given instrument ID (if found).

  • Parameters: instrument_id (InstrumentId) – The instrument for the realized PnL.
  • Return type: Money or None

realized_pnls(self, Venue venue) → dict

Return the realized PnLs for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the realized PnL.
  • Return type: dict[Currency, Money] or None

reset(self) → None

Reset the portfolio.

All stateful fields are reset to their initial value.

set_specific_venue(self, Venue venue) → void

Set a specific venue for the portfolio.

  • Parameters: venue (Venue) – The specific venue to set.

unrealized_pnl(self, InstrumentId instrument_id) → Money

Return the unrealized PnL for the given instrument ID (if found).

  • Parameters: instrument_id (InstrumentId) – The instrument for the unrealized PnL.
  • Return type: Money or None

unrealized_pnls(self, Venue venue) → dict

Return the unrealized PnLs for the given venue (if found).

  • Parameters: venue (Venue) – The venue for the unrealized PnL.
  • Return type: dict[Currency, Money] or None

update_account(self, AccountState event) → void

Apply the given account state.

  • Parameters: event (AccountState) – The account state to apply.

update_order(self, OrderEvent event) → void

Update the portfolio with the given order.

  • Parameters: event (OrderEvent) – The event to update with.

update_position(self, PositionEvent event) → void

Update the portfolio with the given position event.

  • Parameters: event (PositionEvent) – The event to update with.

update_quote_tick(self, QuoteTick tick) → void

Update the portfolio with the given tick.

Clears the unrealized PnL for the quoting instrument, and performs any initialization calculations which may have been pending a market quote update.

  • Parameters: tick (QuoteTick) – The tick to update with.

class PortfolioFacade

Bases: object

Provides a read-only facade for a Portfolio.

account(self, Venue venue) → Account

Abstract method (implement in subclass).

analyzer

The portfolios analyzer.

  • Returns: PortfolioAnalyzer

balances_locked(self, Venue venue) → dict

Abstract method (implement in subclass).

initialized

If the portfolio is initialized.

  • Returns: bool

is_completely_flat(self) → bool

Abstract method (implement in subclass).

is_flat(self, InstrumentId instrument_id) → bool

Abstract method (implement in subclass).

is_net_long(self, InstrumentId instrument_id) → bool

Abstract method (implement in subclass).

is_net_short(self, InstrumentId instrument_id) → bool

Abstract method (implement in subclass).

margins_init(self, Venue venue) → dict

Abstract method (implement in subclass).

margins_maint(self, Venue venue) → dict

Abstract method (implement in subclass).

net_exposure(self, InstrumentId instrument_id) → Money

Abstract method (implement in subclass).

net_exposures(self, Venue venue) → dict

Abstract method (implement in subclass).

net_position(self, InstrumentId instrument_id)

Abstract method (implement in subclass).

realized_pnl(self, InstrumentId instrument_id) → Money

Abstract method (implement in subclass).

realized_pnls(self, Venue venue) → dict

Abstract method (implement in subclass).

unrealized_pnl(self, InstrumentId instrument_id) → Money

Abstract method (implement in subclass).

unrealized_pnls(self, Venue venue) → dict

Abstract method (implement in subclass).