Skip to main content

Portfolio

Struct Portfolio 

Source
pub struct Portfolio {
    pub balances: Vec<Balance>,
    pub name: String,
}
Expand description

Represents a portfolio containing multiple option balances.

This struct provides functionality to manage and analyze a collection of option positions across different exchanges.

Fields§

§balances: Vec<Balance>

Collection of option balances

§name: String

Name or identifier for the portfolio

Implementations§

Source§

impl Portfolio

Source

pub fn new(name: String) -> Self

Creates a new empty Portfolio.

§Arguments
  • name - The name or identifier for the portfolio
§Returns

A new Portfolio instance with an empty balance collection

Source

pub fn add_balance(&mut self, balance: Balance)

Adds a balance to the portfolio.

§Arguments
  • balance - The Balance to add to the portfolio
Source

pub fn remove_balance(&mut self, symbol: &str, exchange: &str) -> bool

Removes a balance from the portfolio by symbol and exchange.

§Arguments
  • symbol - The asset symbol to remove
  • exchange - The exchange name to match
§Returns

true if a balance was removed, false if not found

Source

pub fn get_balance(&self, symbol: &str, exchange: &str) -> Option<&Balance>

Gets a reference to a balance by symbol and exchange.

§Arguments
  • symbol - The asset symbol to find
  • exchange - The exchange name to match
§Returns

An optional reference to the Balance if found

Source

pub fn get_balance_mut( &mut self, symbol: &str, exchange: &str, ) -> Option<&mut Balance>

Gets a mutable reference to a balance by symbol and exchange.

§Arguments
  • symbol - The asset symbol to find
  • exchange - The exchange name to match
§Returns

An optional mutable reference to the Balance if found

Source

pub fn get_total_value(&self) -> Result<Positive, PositiveError>

Calculates the total portfolio value.

§Returns

The sum of all balance values in the portfolio, accumulated in Decimal with no f64 step. An empty portfolio is worth zero.

§Errors

Returns PositiveError::ArithmeticError when a balance value or the running sum overflows Decimal.

Source

pub fn get_total_unrealized_pnl(&self) -> Result<Decimal, DecimalError>

Calculates the total unrealized PnL for the portfolio.

§Returns

The sum of all unrealized PnL across all balances

§Errors

Propagates the error of Balance::get_unrealized_pnl, and returns DecimalError::Overflow when the sum leaves the Decimal range; Iterator::sum aborted with Addition overflowed (#788).

Source

pub fn get_balances_by_exchange(&self, exchange: &str) -> Vec<&Balance>

Gets all balances from a specific exchange.

§Arguments
  • exchange - The exchange name to filter by
§Returns

A vector of references to balances from the specified exchange

Source

pub fn has_profitable_positions(&self) -> Result<bool, DecimalError>

Checks if the portfolio has any profitable positions.

§Returns

true if any balance in the portfolio is profitable

§Errors

Propagates the error of Balance::is_profitable.

Source

pub fn balance_count(&self) -> usize

Gets the number of balances in the portfolio.

§Returns

The count of balances in the portfolio

Source

pub fn is_empty(&self) -> bool

Checks if the portfolio is empty.

§Returns

true if the portfolio has no balances

Trait Implementations§

Source§

impl Clone for Portfolio

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl ComposeSchema for Portfolio

Source§

impl Debug for Portfolio

Source§

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

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

impl Default for Portfolio

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for Portfolio

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 Display for Portfolio

Source§

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

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

impl PartialEq for Portfolio

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for Portfolio

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
Source§

impl StructuralPartialEq for Portfolio

Source§

impl ToSchema for Portfolio

Source§

fn name() -> Cow<'static, str>

Return name of the schema. Read more
Source§

fn schemas(schemas: &mut Vec<(String, RefOr<Schema>)>)

Implement reference utoipa::openapi::schema::Schemas for this type. 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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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> PartialSchema for T
where T: ComposeSchema + ?Sized,

Source§

fn schema() -> RefOr<Schema>

Return ref or schema of implementing type that can then be used to construct combined schemas.
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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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<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