@storm-trade/dex-math
v1.4.1
Published
Those methods are used to calculate different position and amm properties offchain based on current state.
Readme
Storm Trade math SDK
Those methods are used to calculate different position and amm properties offchain based on current state.
Where to get values to plug in
AmmState, AmmSettings, FundingSettings you can get in https://api5.storm.tg/api/markets or https://api5.storm.tg/api/markets/{address}Position you can get in https://api5.storm.tg/api/positions/{wallet_address}/active
For full API reference see https://api5.storm.tg/api/api-docs
List of available methods
calculateFundingRate(settings: AmmSettings, amm: AmmState, fundingSettings: FundingSettings | null): BNcalculateQuoteAssetWeight(amm: AmmState, terminalPrice: BN): { quoteAssetWeight: BN }getAdjustedAmmState(amm: AmmState, terminalPrice: BN): AmmState
getCloseFee(positionNotional: Numeric, feeRate: Numeric, realizedRatio = 1): BNgetEntryPrice(position: Position): BNgetFee(params: GetFeeParams): BNgetFundingPremium(position: Position, amm: AmmState): BNgetIndexPrice(amm: AmmState): BNgetLeverage(position: Position, settlementOraclePrice: Numeric = 1): BNgetLiquidationPrice(position: Position, amm: AmmState, settings: AmmSettings, settlementOraclePrice: Numeric = 1, params: GetPriceByMarginRatioParams = {}): BNgetMarginRatio(position: Position, amm: AmmState, settings: AmmSettings, settlementOraclePrice: Numeric = 1, params: GetMarginRatioParams = {}): BNgetMarketPrice(amm: AmmState): BNgetMaximumLeverage(settings: AmmSettings): numbergetMinimumLeverage(settings: AmmSettings): numbergetPriceByProfitRate(profitRate: number, position: Position, amm: AmmState, settings: AmmSettings, settlementOraclePrice: Numeric = 1, params: GetPriceByMarginRatioParams = {}): BNgetPriceImpact(before: Numeric, after: Numeric): BNgetPriceSpread(amm: AmmState): NumericgetQuoteAssetWeight(amm: AmmState, terminalPrice: BN): BNgetQuoteAssetWeight(amm: AmmState, terminalPrice: BN): BNgetRemainMarginWithFundingPayment(position: Position, amm: AmmState, settings: AmmSettings, settlementOraclePrice: Numeric = 1, params: GetRemainMarginWithFundingPaymentParams = {}): RemainMarginOutputgetRolloverFee(position: Position, settings: AmmSettings, params: GetRolloverFeeParams = {}): BNswapInput(amm: AmmState, quoteAssetIn: Numeric, isShort: boolean): SwapInputResultswapOutput(amm: AmmState, baseAssetIn: Numeric): SwapOutputResult
All BN's are intergers with 9 decimal places
