pub struct PositionModel { /* private fields */ }Expand description
Position Model.
Implementations§
Source§impl PositionModel
impl PositionModel
Sourcepub fn new(
market: MarketModel,
position: Arc<Position>,
) -> Result<PositionModel, Error>
pub fn new( market: MarketModel, position: Arc<Position>, ) -> Result<PositionModel, Error>
Create from MarketModel and Position.
Sourcepub fn position_arc(&self) -> &Arc<Position>
pub fn position_arc(&self) -> &Arc<Position>
Returns a reference to the position wrapped in an Arc.
Sourcepub fn swap_history(&self) -> &[Arc<SwapReport<u128, i128>>]
pub fn swap_history(&self) -> &[Arc<SwapReport<u128, i128>>]
Returns the swap history.
Sourcepub fn update(&mut self, new_state: &PositionState, force_update: bool) -> bool
pub fn update(&mut self, new_state: &PositionState, force_update: bool) -> bool
Updates the current state with the given PositionState
if its trade_id is newer.
Skips the trade ID check if force_update is true.
Returns true if an update was made.
Sourcepub fn market_model(&self) -> &MarketModel
pub fn market_model(&self) -> &MarketModel
Get the market model.
Sourcepub fn set_market_model(&mut self, market: &MarketModel)
pub fn set_market_model(&mut self, market: &MarketModel)
Set market model to the given.
Trait Implementations§
Source§impl Clone for PositionModel
impl Clone for PositionModel
Source§fn clone(&self) -> PositionModel
fn clone(&self) -> PositionModel
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PositionModel
impl Debug for PositionModel
Source§impl From<PositionModel> for JsPositionModel
Available on crate feature js only.
impl From<PositionModel> for JsPositionModel
Available on crate feature
js only.Source§fn from(model: PositionModel) -> Self
fn from(model: PositionModel) -> Self
Converts to this type from the input type.
Source§impl Position<gmsol_programs::::model::position::{impl#5}::{constant#0}> for PositionModel
impl Position<gmsol_programs::::model::position::{impl#5}::{constant#0}> for PositionModel
Source§type Market = MarketModel
type Market = MarketModel
Market type.
Source§fn market(
&self,
) -> &<PositionModel as Position<gmsol_programs::::model::position::{impl#5}::{constant#0}>>::Market
fn market( &self, ) -> &<PositionModel as Position<gmsol_programs::::model::position::{impl#5}::{constant#0}>>::Market
Get a reference to the market.
Source§fn is_collateral_token_long(&self) -> bool
fn is_collateral_token_long(&self) -> bool
Returns whether the collateral token is the long token of the market.
Source§fn are_pnl_and_collateral_tokens_the_same(&self) -> bool
fn are_pnl_and_collateral_tokens_the_same(&self) -> bool
Returns whether the pnl and collateral tokens are the same.
Source§impl PositionCalculations for PositionModel
impl PositionCalculations for PositionModel
Source§impl PositionMut<gmsol_programs::::model::position::{impl#6}::{constant#0}> for PositionModel
impl PositionMut<gmsol_programs::::model::position::{impl#6}::{constant#0}> for PositionModel
Source§fn market_mut(
&mut self,
) -> &mut <PositionModel as Position<gmsol_programs::::model::position::{impl#6}::{constant#0}>>::Market
fn market_mut( &mut self, ) -> &mut <PositionModel as Position<gmsol_programs::::model::position::{impl#6}::{constant#0}>>::Market
Get a mutable reference to the market.
Source§fn on_swapped(
&mut self,
_ty: DecreasePositionSwapType,
report: &SwapReport<<PositionModel as PositionState<gmsol_programs::::model::position::{impl#6}::{constant#0}>>::Num, <<PositionModel as PositionState<gmsol_programs::::model::position::{impl#6}::{constant#0}>>::Num as Unsigned>::Signed>,
) -> Result<(), Error>
fn on_swapped( &mut self, _ty: DecreasePositionSwapType, report: &SwapReport<<PositionModel as PositionState<gmsol_programs::::model::position::{impl#6}::{constant#0}>>::Num, <<PositionModel as PositionState<gmsol_programs::::model::position::{impl#6}::{constant#0}>>::Num as Unsigned>::Signed>, ) -> Result<(), Error>
Swapped callback.
Source§fn on_swap_error(
&mut self,
_ty: DecreasePositionSwapType,
_error: Error,
) -> Result<(), Error>
fn on_swap_error( &mut self, _ty: DecreasePositionSwapType, _error: Error, ) -> Result<(), Error>
Handle swap error.
Source§impl PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}> for PositionModel
impl PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}> for PositionModel
Source§fn collateral_amount(
&self,
) -> &<PositionModel as PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}>>::Num
fn collateral_amount( &self, ) -> &<PositionModel as PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}>>::Num
Get the collateral amount.
Source§fn size_in_usd(
&self,
) -> &<PositionModel as PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}>>::Num
fn size_in_usd( &self, ) -> &<PositionModel as PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}>>::Num
Get a reference to the size (in USD) of the position.
Source§fn size_in_tokens(
&self,
) -> &<PositionModel as PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}>>::Num
fn size_in_tokens( &self, ) -> &<PositionModel as PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}>>::Num
Get a reference to the size (in tokens) of the position.
Source§fn borrowing_factor(
&self,
) -> &<PositionModel as PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}>>::Num
fn borrowing_factor( &self, ) -> &<PositionModel as PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}>>::Num
Get a reference to last borrowing factor applied by the position.
Source§fn funding_fee_amount_per_size(
&self,
) -> &<PositionModel as PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}>>::Num
fn funding_fee_amount_per_size( &self, ) -> &<PositionModel as PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}>>::Num
Get a reference to the funding fee amount per size.
Source§fn claimable_funding_fee_amount_per_size(
&self,
is_long_collateral: bool,
) -> &<PositionModel as PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}>>::Num
fn claimable_funding_fee_amount_per_size( &self, is_long_collateral: bool, ) -> &<PositionModel as PositionState<gmsol_programs::::model::position::{impl#3}::{constant#0}>>::Num
Get a reference to claimable funding fee amount per size of the given collateral.
Source§impl PositionStateMut<gmsol_programs::::model::position::{impl#4}::{constant#0}> for PositionModel
impl PositionStateMut<gmsol_programs::::model::position::{impl#4}::{constant#0}> for PositionModel
Source§fn collateral_amount_mut(
&mut self,
) -> &mut <PositionModel as PositionState<gmsol_programs::::model::position::{impl#4}::{constant#0}>>::Num
fn collateral_amount_mut( &mut self, ) -> &mut <PositionModel as PositionState<gmsol_programs::::model::position::{impl#4}::{constant#0}>>::Num
Get a mutable reference to the collateral amount.
Source§fn size_in_usd_mut(
&mut self,
) -> &mut <PositionModel as PositionState<gmsol_programs::::model::position::{impl#4}::{constant#0}>>::Num
fn size_in_usd_mut( &mut self, ) -> &mut <PositionModel as PositionState<gmsol_programs::::model::position::{impl#4}::{constant#0}>>::Num
Get a mutable reference to the size (in USD) of the position.
Source§fn size_in_tokens_mut(
&mut self,
) -> &mut <PositionModel as PositionState<gmsol_programs::::model::position::{impl#4}::{constant#0}>>::Num
fn size_in_tokens_mut( &mut self, ) -> &mut <PositionModel as PositionState<gmsol_programs::::model::position::{impl#4}::{constant#0}>>::Num
Get a mutable reference to the size (in tokens) of the position.
Source§fn borrowing_factor_mut(
&mut self,
) -> &mut <PositionModel as PositionState<gmsol_programs::::model::position::{impl#4}::{constant#0}>>::Num
fn borrowing_factor_mut( &mut self, ) -> &mut <PositionModel as PositionState<gmsol_programs::::model::position::{impl#4}::{constant#0}>>::Num
Get a mutable reference to last borrowing factor applied by the position.
Source§fn funding_fee_amount_per_size_mut(
&mut self,
) -> &mut <PositionModel as PositionState<gmsol_programs::::model::position::{impl#4}::{constant#0}>>::Num
fn funding_fee_amount_per_size_mut( &mut self, ) -> &mut <PositionModel as PositionState<gmsol_programs::::model::position::{impl#4}::{constant#0}>>::Num
Get a mutable reference to the funding fee amount per size.
Source§fn claimable_funding_fee_amount_per_size_mut(
&mut self,
is_long_collateral: bool,
) -> &mut <PositionModel as PositionState<gmsol_programs::::model::position::{impl#4}::{constant#0}>>::Num
fn claimable_funding_fee_amount_per_size_mut( &mut self, is_long_collateral: bool, ) -> &mut <PositionModel as PositionState<gmsol_programs::::model::position::{impl#4}::{constant#0}>>::Num
Get a mutable reference to claimable funding fee amount per size of the given collateral.
Auto Trait Implementations§
impl Freeze for PositionModel
impl RefUnwindSafe for PositionModel
impl Send for PositionModel
impl Sync for PositionModel
impl Unpin for PositionModel
impl UnwindSafe for PositionModel
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<const DECIMALS: u8, P> PositionExt<DECIMALS> for Pwhere
P: Position<DECIMALS>,
impl<const DECIMALS: u8, P> PositionExt<DECIMALS> for Pwhere
P: Position<DECIMALS>,
Source§fn will_collateral_be_sufficient(
&self,
prices: &Prices<Self::Num>,
delta: &CollateralDelta<Self::Num>,
) -> Result<WillCollateralBeSufficient<Self::Signed>, Error>
fn will_collateral_be_sufficient( &self, prices: &Prices<Self::Num>, delta: &CollateralDelta<Self::Num>, ) -> Result<WillCollateralBeSufficient<Self::Signed>, Error>
Check that whether the collateral will be sufficient after paying the given
realized_pnl and applying delta_size. Read moreSource§fn collateral_price<'a>(
&self,
prices: &'a Prices<Self::Num>,
) -> &'a Price<Self::Num>
fn collateral_price<'a>( &self, prices: &'a Prices<Self::Num>, ) -> &'a Price<Self::Num>
Get collateral price.
Source§fn collateral_value(
&self,
prices: &Prices<Self::Num>,
) -> Result<Self::Num, Error>
fn collateral_value( &self, prices: &Prices<Self::Num>, ) -> Result<Self::Num, Error>
Get collateral value.
Source§fn pnl_value(
&self,
prices: &Prices<Self::Num>,
size_delta_usd: &Self::Num,
) -> Result<(Self::Signed, Self::Signed, Self::Num), Error>
fn pnl_value( &self, prices: &Prices<Self::Num>, size_delta_usd: &Self::Num, ) -> Result<(Self::Signed, Self::Signed, Self::Num), Error>
Calculate the pnl value when decreased by the given delta size. Read more
Source§fn validate(
&self,
prices: &Prices<Self::Num>,
should_validate_min_position_size: bool,
should_validate_min_collateral_usd: bool,
) -> Result<(), Error>
fn validate( &self, prices: &Prices<Self::Num>, should_validate_min_position_size: bool, should_validate_min_collateral_usd: bool, ) -> Result<(), Error>
Validate the position.
Source§fn check_liquidatable(
&self,
prices: &Prices<Self::Num>,
should_validate_min_collateral_usd: bool,
for_liquidation: bool,
) -> Result<Option<LiquidatableReason>, Error>
fn check_liquidatable( &self, prices: &Prices<Self::Num>, should_validate_min_collateral_usd: bool, for_liquidation: bool, ) -> Result<Option<LiquidatableReason>, Error>
Check if the position is liquidatable. Read more
Source§fn position_price_impact(
&self,
size_delta_usd: &Self::Signed,
include_virtual_inventory_impact: bool,
) -> Result<PriceImpact<Self::Signed>, Error>
fn position_price_impact( &self, size_delta_usd: &Self::Signed, include_virtual_inventory_impact: bool, ) -> Result<PriceImpact<Self::Signed>, Error>
Get position price impact.
Source§fn capped_positive_position_price_impact(
&self,
index_token_price: &Price<Self::Num>,
size_delta_usd: &Self::Signed,
include_virtual_inventory_impact: bool,
) -> Result<PriceImpact<Self::Signed>, Error>
fn capped_positive_position_price_impact( &self, index_token_price: &Price<Self::Num>, size_delta_usd: &Self::Signed, include_virtual_inventory_impact: bool, ) -> Result<PriceImpact<Self::Signed>, Error>
Get position price impact usd and cap the value if it is positive.
Source§fn capped_position_price_impact(
&self,
index_token_price: &Price<Self::Num>,
size_delta_usd: &Self::Signed,
include_virtual_inventory_impact: bool,
) -> Result<(PriceImpact<Self::Signed>, Self::Num), Error>
fn capped_position_price_impact( &self, index_token_price: &Price<Self::Num>, size_delta_usd: &Self::Signed, include_virtual_inventory_impact: bool, ) -> Result<(PriceImpact<Self::Signed>, Self::Num), Error>
Get capped position price impact usd. Read more
Source§fn pending_borrowing_fee_value(&self) -> Result<Self::Num, Error>
fn pending_borrowing_fee_value(&self) -> Result<Self::Num, Error>
Get pending borrowing fee value of this position.
Source§fn pending_funding_fees(&self) -> Result<FundingFees<Self::Num>, Error>
fn pending_funding_fees(&self) -> Result<FundingFees<Self::Num>, Error>
Get pending funding fees.
Source§fn position_fees(
&self,
collateral_token_price: &Price<Self::Num>,
size_delta_usd: &Self::Num,
balance_change: BalanceChange,
is_liquidation: bool,
) -> Result<PositionFees<Self::Num>, Error>
fn position_fees( &self, collateral_token_price: &Price<Self::Num>, size_delta_usd: &Self::Num, balance_change: BalanceChange, is_liquidation: bool, ) -> Result<PositionFees<Self::Num>, Error>
Calculates the
PositionFees generated by changing the position size by the specified size_delta_usd.