pub struct MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser, { /* private fields */ }
Expand description
Portfolio with state persisted in a repository. MarketUpdater
, OrderGenerator
,
FillUpdater
and PositionHandler
.
Implementations
sourceimpl<Repository, Allocator, RiskManager, Statistic> MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser,
impl<Repository, Allocator, RiskManager, Statistic> MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser,
sourcepub fn init(
lego: PortfolioLego<Repository, Allocator, RiskManager, Statistic>
) -> Result<Self, PortfolioError>
pub fn init(
lego: PortfolioLego<Repository, Allocator, RiskManager, Statistic>
) -> Result<Self, PortfolioError>
Constructs a new MetaPortfolio
using the provided PortfolioLego
components, and
persists the initial MetaPortfolio
state in the Repository.
sourcepub fn bootstrap_repository<Markets: IntoIterator<Item = Market>>(
&mut self,
starting_cash: f64,
markets: Markets,
statistic_config: Statistic::Config
) -> Result<(), PortfolioError>
pub fn bootstrap_repository<Markets: IntoIterator<Item = Market>>(
&mut self,
starting_cash: f64,
markets: Markets,
statistic_config: Statistic::Config
) -> Result<(), PortfolioError>
Persist initial MetaPortfolio
state in the repository. This includes initialised
Statistics every market provided, as well as starting AvailableCash
& TotalEquity
.
sourcepub fn builder(
) -> MetaPortfolioBuilder<Repository, Allocator, RiskManager, Statistic>
pub fn builder(
) -> MetaPortfolioBuilder<Repository, Allocator, RiskManager, Statistic>
Returns a MetaPortfolioBuilder
instance.
Trait Implementations
sourceimpl<Repository: Debug, Allocator: Debug, RiskManager: Debug, Statistic: Debug> Debug for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser,
impl<Repository: Debug, Allocator: Debug, RiskManager: Debug, Statistic: Debug> Debug for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser,
sourceimpl<Repository, Allocator, RiskManager, Statistic> FillUpdater for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser + Serialize,
impl<Repository, Allocator, RiskManager, Statistic> FillUpdater for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser + Serialize,
sourcefn update_from_fill(
&mut self,
fill: &FillEvent
) -> Result<Vec<Event>, PortfolioError>
fn update_from_fill(
&mut self,
fill: &FillEvent
) -> Result<Vec<Event>, PortfolioError>
sourceimpl<Repository, Allocator, RiskManager, Statistic> MarketUpdater for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser,
impl<Repository, Allocator, RiskManager, Statistic> MarketUpdater for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser,
sourcefn update_from_market(
&mut self,
market: &MarketEvent
) -> Result<Option<PositionUpdate>, PortfolioError>
fn update_from_market(
&mut self,
market: &MarketEvent
) -> Result<Option<PositionUpdate>, PortfolioError>
Determines if the Portfolio has an open Position relating to the input MarketEvent
. If
so it updates it using the market data, and returns a PositionUpdate
detailing the
changes. Read more
sourceimpl<Repository, Allocator, RiskManager, Statistic> OrderGenerator for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser,
impl<Repository, Allocator, RiskManager, Statistic> OrderGenerator for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser,
sourcefn generate_order(
&mut self,
signal: &SignalEvent
) -> Result<Option<OrderEvent>, PortfolioError>
fn generate_order(
&mut self,
signal: &SignalEvent
) -> Result<Option<OrderEvent>, PortfolioError>
May generate an OrderEvent
after analysing an input advisory SignalEvent
.
sourcefn generate_exit_order(
&mut self,
signal: SignalForceExit
) -> Result<Option<OrderEvent>, PortfolioError>
fn generate_exit_order(
&mut self,
signal: SignalForceExit
) -> Result<Option<OrderEvent>, PortfolioError>
Generates an exit OrderEvent
if there is an open [Position
] associated with the
input SignalForceExit
’s [PositionId
]. Read more
sourceimpl<Repository, Allocator, RiskManager, Statistic> PositionHandler for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser,
impl<Repository, Allocator, RiskManager, Statistic> PositionHandler for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser,
sourcefn set_open_position(
&mut self,
position: Position
) -> Result<(), RepositoryError>
fn set_open_position(
&mut self,
position: Position
) -> Result<(), RepositoryError>
Upsert the open Position
using it’s PositionId
.
sourcefn get_open_position(
&mut self,
position_id: &PositionId
) -> Result<Option<Position>, RepositoryError>
fn get_open_position(
&mut self,
position_id: &PositionId
) -> Result<Option<Position>, RepositoryError>
Get an open Position
using the PositionId
provided.
sourcefn get_open_positions<'a, Markets: Iterator<Item = &'a Market>>(
&mut self,
_: Uuid,
markets: Markets
) -> Result<Vec<Position>, RepositoryError>
fn get_open_positions<'a, Markets: Iterator<Item = &'a Market>>(
&mut self,
_: Uuid,
markets: Markets
) -> Result<Vec<Position>, RepositoryError>
Get all open Position
s associated with a Portfolio.
sourcefn remove_position(
&mut self,
position_id: &PositionId
) -> Result<Option<Position>, RepositoryError>
fn remove_position(
&mut self,
position_id: &PositionId
) -> Result<Option<Position>, RepositoryError>
Remove the Position
at the PositionId
.
sourcefn set_exited_position(
&mut self,
_: Uuid,
position: Position
) -> Result<(), RepositoryError>
fn set_exited_position(
&mut self,
_: Uuid,
position: Position
) -> Result<(), RepositoryError>
Append an exited Position
to the Portfolio’s exited position list.
sourcefn get_exited_positions(
&mut self,
_: Uuid
) -> Result<Vec<Position>, RepositoryError>
fn get_exited_positions(
&mut self,
_: Uuid
) -> Result<Vec<Position>, RepositoryError>
Get every exited Position
associated with the engine_id.
sourceimpl<Repository, Allocator, RiskManager, Statistic> StatisticHandler<Statistic> for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser,
impl<Repository, Allocator, RiskManager, Statistic> StatisticHandler<Statistic> for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Repository: PositionHandler + BalanceHandler + StatisticHandler<Statistic>,
Allocator: OrderAllocator,
RiskManager: OrderEvaluator,
Statistic: Initialiser + PositionSummariser,
sourcefn set_statistics(
&mut self,
market_id: &MarketId,
statistic: Statistic
) -> Result<(), RepositoryError>
fn set_statistics(
&mut self,
market_id: &MarketId,
statistic: Statistic
) -> Result<(), RepositoryError>
Upsert the market statistics at the MarketId
provided.
sourcefn get_statistics(
&mut self,
market_id: &MarketId
) -> Result<Statistic, RepositoryError>
fn get_statistics(
&mut self,
market_id: &MarketId
) -> Result<Statistic, RepositoryError>
Get the market statistics using the MarketId
provided.
Auto Trait Implementations
impl<Repository, Allocator, RiskManager, Statistic> RefUnwindSafe for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Allocator: RefUnwindSafe,
Repository: RefUnwindSafe,
RiskManager: RefUnwindSafe,
Statistic: RefUnwindSafe,
impl<Repository, Allocator, RiskManager, Statistic> Send for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Allocator: Send,
Repository: Send,
RiskManager: Send,
Statistic: Send,
impl<Repository, Allocator, RiskManager, Statistic> Sync for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Allocator: Sync,
Repository: Sync,
RiskManager: Sync,
Statistic: Sync,
impl<Repository, Allocator, RiskManager, Statistic> Unpin for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Allocator: Unpin,
Repository: Unpin,
RiskManager: Unpin,
Statistic: Unpin,
impl<Repository, Allocator, RiskManager, Statistic> UnwindSafe for MetaPortfolio<Repository, Allocator, RiskManager, Statistic> where
Allocator: UnwindSafe,
Repository: UnwindSafe,
RiskManager: UnwindSafe,
Statistic: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more