@d8x/perpetuals-sdk 2.6.23 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/config/defaultConfig.json +2 -2
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/d8XMath.d.ts +40 -29
- package/dist/cjs/d8XMath.js +244 -151
- package/dist/cjs/d8XMath.js.map +1 -1
- package/dist/cjs/liquidatorTool.d.ts +1 -1
- package/dist/cjs/liquidatorTool.js +9 -9
- package/dist/cjs/liquidatorTool.js.map +1 -1
- package/dist/cjs/main.d.ts +1 -0
- package/dist/cjs/main.js +15 -0
- package/dist/cjs/main.js.map +1 -0
- package/dist/cjs/marketData.d.ts +7 -11
- package/dist/cjs/marketData.js +31 -20
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.d.ts +12 -12
- package/dist/cjs/perpetualDataHandler.js +13 -14
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/polyMktsPxFeed.js +2 -2
- package/dist/cjs/polyMktsPxFeed.js.map +1 -1
- package/dist/cjs/priceFeeds.d.ts +1 -0
- package/dist/cjs/priceFeeds.js +19 -3
- package/dist/cjs/priceFeeds.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/config/defaultConfig.json +2 -2
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/d8XMath.d.ts +40 -29
- package/dist/esm/d8XMath.js +241 -150
- package/dist/esm/d8XMath.js.map +1 -1
- package/dist/esm/liquidatorTool.d.ts +1 -1
- package/dist/esm/liquidatorTool.js +10 -10
- package/dist/esm/liquidatorTool.js.map +1 -1
- package/dist/esm/main.d.ts +1 -0
- package/dist/esm/main.js +13 -0
- package/dist/esm/main.js.map +1 -0
- package/dist/esm/main2.d.ts +1 -0
- package/dist/esm/main2.js +18 -0
- package/dist/esm/main2.js.map +1 -0
- package/dist/esm/marketData.d.ts +7 -11
- package/dist/esm/marketData.js +32 -21
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/perpetualDataHandler.d.ts +12 -12
- package/dist/esm/perpetualDataHandler.js +13 -14
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/polyMktsPxFeed.js +2 -2
- package/dist/esm/polyMktsPxFeed.js.map +1 -1
- package/dist/esm/priceFeeds.d.ts +1 -0
- package/dist/esm/priceFeeds.js +19 -3
- package/dist/esm/priceFeeds.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/doc/d8x-perpetuals-sdk.md +109 -81
- package/doc/marketData.md +2 -10
- package/package.json +5 -2
- package/src/config/defaultConfig.json +2 -2
- package/src/constants.ts +0 -1
- package/src/d8XMath.ts +268 -167
- package/src/liquidatorTool.ts +16 -10
- package/src/marketData.ts +62 -35
- package/src/perpetualDataHandler.ts +28 -34
- package/src/polyMktsPxFeed.ts +6 -7
- package/src/priceFeeds.ts +20 -4
- package/src/version.ts +1 -1
- package/dist/cjs/abi/AMMPerpLogic.json +0 -580
- package/dist/cjs/abi/BeaconProxy.json +0 -71
- package/dist/cjs/abi/IPerpetualManager copy.json +0 -5599
- package/dist/cjs/abi/IPerpetualMarginViewLogic.json +0 -286
- package/dist/cjs/abi/Maintainer.json +0 -774
- package/dist/cjs/abi/MockToken.json +0 -347
- package/dist/cjs/abi/MockUSD.json +0 -413
- package/dist/cjs/abi/UUPSUpgradeable.json +0 -104
- package/dist/cjs/abi/WeETH.json +0 -310
- package/dist/cjs/abi-zkevm/IPerpetualManager.json +0 -5366
- package/dist/cjs/abi-zkevm/LimitOrderBook.json +0 -910
- package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +0 -236
- package/dist/cjs/contracts/AMMPerpLogic.d.ts +0 -303
- package/dist/cjs/contracts/AMMPerpLogic.js +0 -3
- package/dist/cjs/contracts/AMMPerpLogic.js.map +0 -1
- package/dist/cjs/contracts/BeaconProxy.d.ts +0 -63
- package/dist/cjs/contracts/BeaconProxy.js +0 -3
- package/dist/cjs/contracts/BeaconProxy.js.map +0 -1
- package/dist/cjs/contracts/IPerpetualManagerCopy.d.ts +0 -3223
- package/dist/cjs/contracts/IPerpetualManagerCopy.js +0 -3
- package/dist/cjs/contracts/IPerpetualManagerCopy.js.map +0 -1
- package/dist/cjs/contracts/IPerpetualMarginViewLogic.d.ts +0 -183
- package/dist/cjs/contracts/IPerpetualMarginViewLogic.js +0 -3
- package/dist/cjs/contracts/IPerpetualMarginViewLogic.js.map +0 -1
- package/dist/cjs/contracts/Maintainer.d.ts +0 -799
- package/dist/cjs/contracts/Maintainer.js +0 -3
- package/dist/cjs/contracts/Maintainer.js.map +0 -1
- package/dist/cjs/contracts/MockToken.d.ts +0 -263
- package/dist/cjs/contracts/MockToken.js +0 -3
- package/dist/cjs/contracts/MockToken.js.map +0 -1
- package/dist/cjs/contracts/MockUSD.d.ts +0 -186
- package/dist/cjs/contracts/MockUSD.js +0 -3
- package/dist/cjs/contracts/MockUSD.js.map +0 -1
- package/dist/cjs/contracts/UUPSUpgradeable.d.ts +0 -118
- package/dist/cjs/contracts/UUPSUpgradeable.js +0 -3
- package/dist/cjs/contracts/UUPSUpgradeable.js.map +0 -1
- package/dist/cjs/contracts/WeETH.d.ts +0 -503
- package/dist/cjs/contracts/WeETH.js +0 -3
- package/dist/cjs/contracts/WeETH.js.map +0 -1
- package/dist/cjs/contracts/factories/AMMPerpLogic__factory.d.ts +0 -452
- package/dist/cjs/contracts/factories/AMMPerpLogic__factory.js +0 -598
- package/dist/cjs/contracts/factories/AMMPerpLogic__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +0 -61
- package/dist/cjs/contracts/factories/BeaconProxy__factory.js +0 -89
- package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/IPerpetualManagerCopy__factory.d.ts +0 -4358
- package/dist/cjs/contracts/factories/IPerpetualManagerCopy__factory.js +0 -5617
- package/dist/cjs/contracts/factories/IPerpetualManagerCopy__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/IPerpetualMarginViewLogic__factory.d.ts +0 -221
- package/dist/cjs/contracts/factories/IPerpetualMarginViewLogic__factory.js +0 -304
- package/dist/cjs/contracts/factories/IPerpetualMarginViewLogic__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +0 -609
- package/dist/cjs/contracts/factories/Maintainer__factory.js +0 -792
- package/dist/cjs/contracts/factories/Maintainer__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/MockToken__factory.d.ts +0 -273
- package/dist/cjs/contracts/factories/MockToken__factory.js +0 -365
- package/dist/cjs/contracts/factories/MockToken__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/MockUSD__factory.d.ts +0 -320
- package/dist/cjs/contracts/factories/MockUSD__factory.js +0 -431
- package/dist/cjs/contracts/factories/MockUSD__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +0 -122
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/WeETH__factory.d.ts +0 -545
- package/dist/cjs/contracts/factories/WeETH__factory.js +0 -721
- package/dist/cjs/contracts/factories/WeETH__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5324
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -254
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +0 -928
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +0 -456
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
- package/dist/cjs/contracts/factories/lean0/index.d.ts +0 -4
- package/dist/cjs/contracts/factories/lean0/index.js +0 -15
- package/dist/cjs/contracts/factories/lean0/index.js.map +0 -1
- package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +0 -2821
- package/dist/cjs/contracts/lean0/IPerpetualManager.js +0 -3
- package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +0 -1
- package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +0 -533
- package/dist/cjs/contracts/lean0/LimitOrderBook.js +0 -3
- package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +0 -1
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +0 -3
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
- package/dist/cjs/contracts/lean0/ShareToken.d.ts +0 -320
- package/dist/cjs/contracts/lean0/ShareToken.js +0 -3
- package/dist/cjs/contracts/lean0/ShareToken.js.map +0 -1
- package/dist/cjs/contracts/lean0/index.d.ts +0 -4
- package/dist/cjs/contracts/lean0/index.js +0 -3
- package/dist/cjs/contracts/lean0/index.js.map +0 -1
- package/dist/esm/abi/AMMPerpLogic.json +0 -580
- package/dist/esm/abi/BeaconProxy.json +0 -71
- package/dist/esm/abi/IPerpetualManager copy.json +0 -5599
- package/dist/esm/abi/IPerpetualMarginViewLogic.json +0 -286
- package/dist/esm/abi/Maintainer.json +0 -774
- package/dist/esm/abi/MockToken.json +0 -347
- package/dist/esm/abi/MockUSD.json +0 -413
- package/dist/esm/abi/UUPSUpgradeable.json +0 -104
- package/dist/esm/abi/WeETH.json +0 -310
- package/dist/esm/abi/lean0/IPerpetualManager.json +0 -5306
- package/dist/esm/abi/lean0/LimitOrderBook.json +0 -910
- package/dist/esm/abi/lean0/LimitOrderBookFactory.json +0 -236
- package/dist/esm/abi/lean0/ShareToken.json +0 -438
- package/dist/esm/abi-zkevm/IPerpetualManager.json +0 -5366
- package/dist/esm/abi-zkevm/LimitOrderBook.json +0 -910
- package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +0 -236
- package/dist/esm/contracts/AMMPerpLogic.d.ts +0 -303
- package/dist/esm/contracts/AMMPerpLogic.js +0 -2
- package/dist/esm/contracts/AMMPerpLogic.js.map +0 -1
- package/dist/esm/contracts/BeaconProxy.d.ts +0 -63
- package/dist/esm/contracts/BeaconProxy.js +0 -2
- package/dist/esm/contracts/BeaconProxy.js.map +0 -1
- package/dist/esm/contracts/IPerpetualManagerCopy.d.ts +0 -3223
- package/dist/esm/contracts/IPerpetualManagerCopy.js +0 -2
- package/dist/esm/contracts/IPerpetualManagerCopy.js.map +0 -1
- package/dist/esm/contracts/IPerpetualMarginViewLogic.d.ts +0 -183
- package/dist/esm/contracts/IPerpetualMarginViewLogic.js +0 -2
- package/dist/esm/contracts/IPerpetualMarginViewLogic.js.map +0 -1
- package/dist/esm/contracts/Maintainer.d.ts +0 -799
- package/dist/esm/contracts/Maintainer.js +0 -2
- package/dist/esm/contracts/Maintainer.js.map +0 -1
- package/dist/esm/contracts/MockToken.d.ts +0 -263
- package/dist/esm/contracts/MockToken.js +0 -2
- package/dist/esm/contracts/MockToken.js.map +0 -1
- package/dist/esm/contracts/MockUSD.d.ts +0 -186
- package/dist/esm/contracts/MockUSD.js +0 -2
- package/dist/esm/contracts/MockUSD.js.map +0 -1
- package/dist/esm/contracts/UUPSUpgradeable.d.ts +0 -118
- package/dist/esm/contracts/UUPSUpgradeable.js +0 -2
- package/dist/esm/contracts/UUPSUpgradeable.js.map +0 -1
- package/dist/esm/contracts/WeETH.d.ts +0 -503
- package/dist/esm/contracts/WeETH.js +0 -2
- package/dist/esm/contracts/WeETH.js.map +0 -1
- package/dist/esm/contracts/factories/AMMPerpLogic__factory.d.ts +0 -452
- package/dist/esm/contracts/factories/AMMPerpLogic__factory.js +0 -594
- package/dist/esm/contracts/factories/AMMPerpLogic__factory.js.map +0 -1
- package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +0 -61
- package/dist/esm/contracts/factories/BeaconProxy__factory.js +0 -85
- package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +0 -1
- package/dist/esm/contracts/factories/IPerpetualManagerCopy__factory.d.ts +0 -4358
- package/dist/esm/contracts/factories/IPerpetualManagerCopy__factory.js +0 -5613
- package/dist/esm/contracts/factories/IPerpetualManagerCopy__factory.js.map +0 -1
- package/dist/esm/contracts/factories/IPerpetualMarginViewLogic__factory.d.ts +0 -221
- package/dist/esm/contracts/factories/IPerpetualMarginViewLogic__factory.js +0 -300
- package/dist/esm/contracts/factories/IPerpetualMarginViewLogic__factory.js.map +0 -1
- package/dist/esm/contracts/factories/Maintainer__factory.d.ts +0 -609
- package/dist/esm/contracts/factories/Maintainer__factory.js +0 -788
- package/dist/esm/contracts/factories/Maintainer__factory.js.map +0 -1
- package/dist/esm/contracts/factories/MockToken__factory.d.ts +0 -273
- package/dist/esm/contracts/factories/MockToken__factory.js +0 -361
- package/dist/esm/contracts/factories/MockToken__factory.js.map +0 -1
- package/dist/esm/contracts/factories/MockUSD__factory.d.ts +0 -320
- package/dist/esm/contracts/factories/MockUSD__factory.js +0 -427
- package/dist/esm/contracts/factories/MockUSD__factory.js.map +0 -1
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +0 -87
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +0 -118
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +0 -1
- package/dist/esm/contracts/factories/WeETH__factory.d.ts +0 -545
- package/dist/esm/contracts/factories/WeETH__factory.js +0 -717
- package/dist/esm/contracts/factories/WeETH__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +0 -4136
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +0 -5320
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +0 -189
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +0 -250
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +0 -715
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +0 -924
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +0 -344
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +0 -452
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +0 -1
- package/dist/esm/contracts/factories/lean0/index.d.ts +0 -4
- package/dist/esm/contracts/factories/lean0/index.js +0 -8
- package/dist/esm/contracts/factories/lean0/index.js.map +0 -1
- package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +0 -2821
- package/dist/esm/contracts/lean0/IPerpetualManager.js +0 -2
- package/dist/esm/contracts/lean0/IPerpetualManager.js.map +0 -1
- package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +0 -533
- package/dist/esm/contracts/lean0/LimitOrderBook.js +0 -2
- package/dist/esm/contracts/lean0/LimitOrderBook.js.map +0 -1
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +0 -210
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +0 -2
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +0 -1
- package/dist/esm/contracts/lean0/ShareToken.d.ts +0 -320
- package/dist/esm/contracts/lean0/ShareToken.js +0 -2
- package/dist/esm/contracts/lean0/ShareToken.js.map +0 -1
- package/dist/esm/contracts/lean0/index.d.ts +0 -4
- package/dist/esm/contracts/lean0/index.js +0 -2
- package/dist/esm/contracts/lean0/index.js.map +0 -1
- package/src/contracts/IPerpetualMarginViewLogic.ts +0 -347
- package/src/contracts/MockUSD.ts +0 -378
- package/src/contracts/factories/IPerpetualMarginViewLogic__factory.ts +0 -313
- package/src/contracts/factories/MockUSD__factory.ts +0 -430
|
@@ -144,16 +144,16 @@ on-chain</p></dd>
|
|
|
144
144
|
* [~calculateLiquidationPriceCollateralQuote(LockedInValueQC, position, cash_cc, maintenance_margin_rate, S3)](#module_d8xMath..calculateLiquidationPriceCollateralQuote) ⇒ <code>number</code>
|
|
145
145
|
* [~getMarginRequiredForLeveragedTrade(targetLeverage, currentPosition, currentLockedInValue, tradeAmount, markPrice, indexPriceS2, indexPriceS3, tradePrice, feeRate)](#module_d8xMath..getMarginRequiredForLeveragedTrade) ⇒ <code>number</code>
|
|
146
146
|
* [~getNewPositionLeverage(tradeAmount, marginCollateral, currentPosition, currentLockedInValue, price, indexPriceS3, markPrice)](#module_d8xMath..getNewPositionLeverage) ⇒
|
|
147
|
-
* [~getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark,
|
|
147
|
+
* [~getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark, cmin)](#module_d8xMath..getDepositAmountForLvgTrade) ⇒ <code>number</code>
|
|
148
|
+
* [~getDepositAmountForPredMktLvgTrade(pos0, b0, c0, tradeAmnt, targetLvg, prob, S3, markProb, imr)](#module_d8xMath..getDepositAmountForPredMktLvgTrade) ⇒ <code>number</code>
|
|
149
|
+
* [~newPos](#module_d8xMath..getDepositAmountForPredMktLvgTrade..newPos)
|
|
148
150
|
* [~priceToProb(px)](#module_d8xMath..priceToProb) ⇒
|
|
149
151
|
* [~probToPrice(prob)](#module_d8xMath..probToPrice) ⇒
|
|
150
|
-
* [~pmMarginThresh(pos, s2, s3, m)](#module_d8xMath..pmMarginThresh) ⇒
|
|
151
|
-
* [~
|
|
152
|
-
* [~pmInitialMarginRate(posSign, sm, m)](#module_d8xMath..pmInitialMarginRate) ⇒
|
|
153
|
-
* [~expectedLoss(p, m, totLong, totShort, tradeAmt, tradeMgnRate)](#module_d8xMath..expectedLoss) ⇒
|
|
154
|
-
* [~expectedLossImpact(p, m, tradeAmt, tradeMgnRate)](#module_d8xMath..expectedLossImpact) ⇒
|
|
152
|
+
* [~pmMarginThresh(pos, lockedInQC, s2, s3, m)](#module_d8xMath..pmMarginThresh) ⇒
|
|
153
|
+
* [~pmInitialMarginRate(posSign, s0, sm, cmin)](#module_d8xMath..pmInitialMarginRate) ⇒ <code>number</code>
|
|
155
154
|
* [~pmExchangeFee(prob, m, tradeAmt, tradeMgnRate)](#module_d8xMath..pmExchangeFee) ⇒
|
|
156
155
|
* [~pmMarginBalance(pos, s2, s3, ell, mc)](#module_d8xMath..pmMarginBalance) ⇒
|
|
156
|
+
* [~pmFindLiquidationPrice(pos, s3, ell, mc, baseMarginRate, sm)](#module_d8xMath..pmFindLiquidationPrice) ⇒ <code>number</code>
|
|
157
157
|
* [~excessMargin(tradeAmt, currentCashCC, currentPos, currentLockedInQC, limitPrice, Sm, S3)](#module_d8xMath..excessMargin) ⇒
|
|
158
158
|
* [~pmGetDepositAmtForLvgTrade(tradeAmt, targetLvg, price, S3, S2Mark)](#module_d8xMath..pmGetDepositAmtForLvgTrade) ⇒
|
|
159
159
|
* [~pmExcessCashAtLvg(tradeAmt, lvg, walletBalCC, currentCashCC, currentPosition, currentLockedInValue, slippage, S2, Sm, S3, totLong, totShort)](#module_d8xMath..pmExcessCashAtLvg) ⇒
|
|
@@ -395,7 +395,7 @@ See calculateLiquidationPriceCollateralQuantoConservative for a more conservativ
|
|
|
395
395
|
|
|
396
396
|
<a name="module_d8xMath..getDepositAmountForLvgTrade"></a>
|
|
397
397
|
|
|
398
|
-
### d8xMath~getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark,
|
|
398
|
+
### d8xMath~getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark, cmin) ⇒ <code>number</code>
|
|
399
399
|
<p>Determine amount to be deposited into margin account so that the given leverage
|
|
400
400
|
is obtained when trading a position pos (trade amount = position)
|
|
401
401
|
Does NOT include fees
|
|
@@ -413,8 +413,77 @@ Smart contract equivalent: calcMarginForTargetLeverage(..., _ignorePosBalance =
|
|
|
413
413
|
| price | <code>number</code> | <p>price to trade amount 'tradeAmnt'</p> |
|
|
414
414
|
| S3 | <code>number</code> | <p>collateral to quote conversion (=S2 if base-collateral, =1 if quote collateral, = index S3 if quanto)</p> |
|
|
415
415
|
| S2Mark | <code>number</code> | <p>mark price</p> |
|
|
416
|
-
|
|
|
416
|
+
| cmin | <code>number</code> | <p>Absolute minimum margin per contract, only for pred markets</p> |
|
|
417
417
|
|
|
418
|
+
<a name="module_d8xMath..getDepositAmountForPredMktLvgTrade"></a>
|
|
419
|
+
|
|
420
|
+
### d8xMath~getDepositAmountForPredMktLvgTrade(pos0, b0, c0, tradeAmnt, targetLvg, prob, S3, markProb, imr) ⇒ <code>number</code>
|
|
421
|
+
<p>Determine amount to be deposited into margin account so that the given leverage
|
|
422
|
+
is obtained when opening a prediction market position
|
|
423
|
+
Does NOT include fees, but accounts for a possible non-zero current position
|
|
424
|
+
Smart contract equivalent: getDepositAmountForPredMktLvgPosition</p>
|
|
425
|
+
|
|
426
|
+
**Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
|
|
427
|
+
**Returns**: <code>number</code> - <p>Amount to be deposited to have the given leverage when trading into position pos before fees</p>
|
|
428
|
+
|
|
429
|
+
| Param | Type | Description |
|
|
430
|
+
| --- | --- | --- |
|
|
431
|
+
| pos0 | <code>number</code> | <p>current position</p> |
|
|
432
|
+
| b0 | <code>number</code> | <p>current balance</p> |
|
|
433
|
+
| c0 | <code>number</code> | <p>current available cash</p> |
|
|
434
|
+
| tradeAmnt | <code>number</code> | <p>amount to trade</p> |
|
|
435
|
+
| targetLvg | <code>number</code> | <p>target leverage</p> |
|
|
436
|
+
| prob | <code>number</code> | <p>prob to trade amount 'tradeAmnt'</p> |
|
|
437
|
+
| S3 | <code>number</code> | <p>collateral to quote conversion (=S2 if base-collateral, =1 if quote collateral, = index S3 if quanto)</p> |
|
|
438
|
+
| markProb | <code>number</code> | <p>mark prob</p> |
|
|
439
|
+
| imr | <code>number</code> | <p>minimum absolute margin per contract (fInitialMarginRate)</p> |
|
|
440
|
+
|
|
441
|
+
<a name="module_d8xMath..getDepositAmountForPredMktLvgTrade..newPos"></a>
|
|
442
|
+
|
|
443
|
+
#### getDepositAmountForPredMktLvgTrade~newPos
|
|
444
|
+
<p>Smart contract implementation:
|
|
445
|
+
// find smallest x such that:
|
|
446
|
+
// bal * s3 >= pos value / lvg
|
|
447
|
+
// where:
|
|
448
|
+
// pos value / lvg = |pos| * R(pm, sign(pos)) * margin rate
|
|
449
|
+
// pos = pos0 + k
|
|
450
|
+
// cash = cash0 + x
|
|
451
|
+
// ell = ell0 + px * k
|
|
452
|
+
// bal * s3 = cash * s3 + pos * sm - ell
|
|
453
|
+
// = bal0 * s3 + x * s3 + k * (sm - px)
|
|
454
|
+
// subject to:
|
|
455
|
+
// x >= 0
|
|
456
|
+
// cash * s3 >= |pos| * min(cmin, prob(sign(pos)))
|
|
457
|
+
// k * (sm - px) <= 0 a.s.
|
|
458
|
+
// (positive pnl does not contribute, i.e. ignore px better than mark)
|
|
459
|
+
// solution:
|
|
460
|
+
// bal0 * s3 + x * s3 >= pos value / lvg + (k * (px - sm))<em>+ = v * s3
|
|
461
|
+
// -->
|
|
462
|
+
// x >= v + (cash0 - bal0)</em>+ - cash0 = v - min(bal0, cash0)
|
|
463
|
+
// = pos value / lvg/ s3 + (k * (px - sm))_+ / s3 - min (bal0, cash0)
|
|
464
|
+
// = A + B - C
|
|
465
|
+
// x >= |pos| * min(cmin, prob(sign(pos))) / s3 - cash0
|
|
466
|
+
// x >= 0
|
|
467
|
+
// init x = A = pos value / lvg / s3
|
|
468
|
+
int128 fNewPos = _fPosition0.add(_fTradeAmount);
|
|
469
|
+
int128 v = (
|
|
470
|
+
fNewPos > 0 ? fNewPos.mul(_fMarkProb) : fNewPos.neg().mul(ONE_64x64.sub(_fMarkProb))
|
|
471
|
+
).mul(_fMarginRate).div(_fS3);
|
|
472
|
+
// + B = max(0,k * (px - sm)) / s3
|
|
473
|
+
{
|
|
474
|
+
int128 fPnL = _fTradeAmount.mul(_fMarkProb.sub(_fTradeProb));
|
|
475
|
+
if (fPnL < 0) {
|
|
476
|
+
v = v.sub(fPnL.div(_fS3)); // pnl < 0 -> increase v
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
// - C = - min(bal0, cash0) = - Equity
|
|
480
|
+
{
|
|
481
|
+
int128 equity = _fCash0CC < _fBalance0 ? _fCash0CC : _fBalance0;
|
|
482
|
+
v = v.sub(equity); // equity can be used / must be covered if negative
|
|
483
|
+
}
|
|
484
|
+
return v > 0 ? v : int128(0);</p>
|
|
485
|
+
|
|
486
|
+
**Kind**: inner constant of [<code>getDepositAmountForPredMktLvgTrade</code>](#module_d8xMath..getDepositAmountForPredMktLvgTrade)
|
|
418
487
|
<a name="module_d8xMath..priceToProb"></a>
|
|
419
488
|
|
|
420
489
|
### d8xMath~priceToProb(px) ⇒
|
|
@@ -441,82 +510,34 @@ Smart contract equivalent: calcMarginForTargetLeverage(..., _ignorePosBalance =
|
|
|
441
510
|
|
|
442
511
|
<a name="module_d8xMath..pmMarginThresh"></a>
|
|
443
512
|
|
|
444
|
-
### d8xMath~pmMarginThresh(pos, s2, s3, m) ⇒
|
|
513
|
+
### d8xMath~pmMarginThresh(pos, lockedInQC, s2, s3, m) ⇒
|
|
445
514
|
<p>Maintenance margin requirement for prediction markets</p>
|
|
446
515
|
|
|
447
516
|
**Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
|
|
448
517
|
**Returns**: <p>required margin balance</p>
|
|
449
518
|
|
|
450
|
-
| Param | Default | Description |
|
|
451
|
-
| --- | --- | --- |
|
|
452
|
-
| pos | | <p>signed position</p> |
|
|
453
|
-
| s2 | | <p>mark price</p> |
|
|
454
|
-
| s3 | | <p>collateral to quote conversion</p> |
|
|
455
|
-
| m | <code>0.18</code> | <p>base margin rate</p> |
|
|
456
|
-
|
|
457
|
-
<a name="module_d8xMath..pmMaintenanceMarginRate"></a>
|
|
458
|
-
|
|
459
|
-
### d8xMath~pmMaintenanceMarginRate(posSign, sm, m) ⇒
|
|
460
|
-
<p>Maintenance margin rate for prediction markets.</p>
|
|
461
|
-
|
|
462
|
-
**Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
|
|
463
|
-
**Returns**: <p>margin rate to be applied (Math.abs(pos) * p * tau) / s3;</p>
|
|
464
|
-
|
|
465
|
-
| Param | Default | Description |
|
|
466
|
-
| --- | --- | --- |
|
|
467
|
-
| posSign | | <p>sign of position in base currency (can be signed position or -1, 1)</p> |
|
|
468
|
-
| sm | | <p>mark-price (=1+p)</p> |
|
|
469
|
-
| m | <code>0.18</code> | <p>max margin rate from fInitialMarginRate</p> |
|
|
470
|
-
|
|
471
|
-
<a name="module_d8xMath..pmInitialMarginRate"></a>
|
|
472
|
-
|
|
473
|
-
### d8xMath~pmInitialMarginRate(posSign, sm, m) ⇒
|
|
474
|
-
<p>Maintenance margin rate for prediction markets.</p>
|
|
475
|
-
|
|
476
|
-
**Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
|
|
477
|
-
**Returns**: <p>margin rate to be applied (Math.abs(pos) * p * tau) / s3;</p>
|
|
478
|
-
|
|
479
|
-
| Param | Default | Description |
|
|
480
|
-
| --- | --- | --- |
|
|
481
|
-
| posSign | | <p>sign of position in base currency (can be signed position or -1, 1)</p> |
|
|
482
|
-
| sm | | <p>mark-price (=1+p)</p> |
|
|
483
|
-
| m | <code>0.2</code> | <p>max margin rate from fMaintenanceMarginRate</p> |
|
|
484
|
-
|
|
485
|
-
<a name="module_d8xMath..expectedLoss"></a>
|
|
486
|
-
|
|
487
|
-
### d8xMath~expectedLoss(p, m, totLong, totShort, tradeAmt, tradeMgnRate) ⇒
|
|
488
|
-
<p>Calculate the expected loss for a prediction market trade used for
|
|
489
|
-
prediction market fees</p>
|
|
490
|
-
|
|
491
|
-
**Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
|
|
492
|
-
**Returns**: <p>expected loss in dollars</p>
|
|
493
|
-
|
|
494
519
|
| Param | Description |
|
|
495
520
|
| --- | --- |
|
|
496
|
-
|
|
|
497
|
-
|
|
|
498
|
-
|
|
|
499
|
-
|
|
|
500
|
-
|
|
|
501
|
-
| tradeMgnRate | <p>margin rate of the trader</p> |
|
|
521
|
+
| pos | <p>signed position</p> |
|
|
522
|
+
| lockedInQC | <p>locked in value</p> |
|
|
523
|
+
| s2 | <p>mark price</p> |
|
|
524
|
+
| s3 | <p>collateral to quote conversion</p> |
|
|
525
|
+
| m | <p>base margin rate</p> |
|
|
502
526
|
|
|
503
|
-
<a name="module_d8xMath..
|
|
527
|
+
<a name="module_d8xMath..pmInitialMarginRate"></a>
|
|
504
528
|
|
|
505
|
-
### d8xMath~
|
|
506
|
-
<p>
|
|
507
|
-
const el0 = expectedLoss(prob, m, totLong, totShort, 0, 0);
|
|
508
|
-
const el1 = expectedLoss(prob, m, totLong, totShort, tradeAmt, tradeMgnRate)
|
|
509
|
-
const fee = (el1 - el0) / Math.abs(tradeAmt);</p>
|
|
529
|
+
### d8xMath~pmInitialMarginRate(posSign, s0, sm, cmin) ⇒ <code>number</code>
|
|
530
|
+
<p>Initial margin rate for prediction markets.</p>
|
|
510
531
|
|
|
511
532
|
**Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
|
|
512
|
-
**Returns**: <p>
|
|
533
|
+
**Returns**: <code>number</code> - <p>The margin rate to be applied: <code>(Math.abs(pos) * p * tau) / s3</code></p>
|
|
513
534
|
|
|
514
535
|
| Param | Description |
|
|
515
536
|
| --- | --- |
|
|
516
|
-
|
|
|
517
|
-
|
|
|
518
|
-
|
|
|
519
|
-
|
|
|
537
|
+
| posSign | <p>sign of position in base currency (can be signed position or -1, 1)</p> |
|
|
538
|
+
| s0 | <p>trade price</p> |
|
|
539
|
+
| sm | <p>mark-price (=1+p)</p> |
|
|
540
|
+
| cmin | <p>Absolute min margin saved as <code>fInitialMarginRate</code></p> |
|
|
520
541
|
|
|
521
542
|
<a name="module_d8xMath..pmExchangeFee"></a>
|
|
522
543
|
|
|
@@ -550,6 +571,21 @@ For opening trades only</p>
|
|
|
550
571
|
| ell | <p>locked in value</p> |
|
|
551
572
|
| mc | <p>margin cash in collateral currency</p> |
|
|
552
573
|
|
|
574
|
+
<a name="module_d8xMath..pmFindLiquidationPrice"></a>
|
|
575
|
+
|
|
576
|
+
### d8xMath~pmFindLiquidationPrice(pos, s3, ell, mc, baseMarginRate, sm) ⇒ <code>number</code>
|
|
577
|
+
**Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
|
|
578
|
+
**Returns**: <code>number</code> - <p>Liquidation price as a probability in the range [0, 1]</p>
|
|
579
|
+
|
|
580
|
+
| Param | Description |
|
|
581
|
+
| --- | --- |
|
|
582
|
+
| pos | <p>Signed position size</p> |
|
|
583
|
+
| s3 | <p>Collateral to quote conversion at spot</p> |
|
|
584
|
+
| ell | <p>Locked-in value</p> |
|
|
585
|
+
| mc | <p>Margin collateral</p> |
|
|
586
|
+
| baseMarginRate | <p>Maintenance margin per contract (mu_m)</p> |
|
|
587
|
+
| sm | <p>Mark price at entry</p> |
|
|
588
|
+
|
|
553
589
|
<a name="module_d8xMath..excessMargin"></a>
|
|
554
590
|
|
|
555
591
|
### d8xMath~excessMargin(tradeAmt, currentCashCC, currentPos, currentLockedInQC, limitPrice, Sm, S3) ⇒
|
|
@@ -649,7 +685,7 @@ Factors in lot size and global max short/long, factors in opening/closing positi
|
|
|
649
685
|
| short | <p>Short open OI</p> |
|
|
650
686
|
| sm | <p>Mark price (>1)</p> |
|
|
651
687
|
| isBuy | <p>True if trade is long</p> |
|
|
652
|
-
| mr | <p>
|
|
688
|
+
| mr | <p>Margin threshold per contract for liquidation (mu_m)</p> |
|
|
653
689
|
|
|
654
690
|
<a name="module_utils"></a>
|
|
655
691
|
|
|
@@ -4285,7 +4321,7 @@ No gas required for the queries here.</p>
|
|
|
4285
4321
|
* [.fetchOnChainPerpetualStates()](#PerpetualDataHandler+fetchOnChainPerpetualStates) ⇒
|
|
4286
4322
|
* [.checkHeartbeat()](#PerpetualDataHandler+checkHeartbeat) ⇒
|
|
4287
4323
|
* _static_
|
|
4288
|
-
* [.exchangeFeePrdMkts(
|
|
4324
|
+
* [.exchangeFeePrdMkts()](#MarketData.exchangeFeePrdMkts) ⇒
|
|
4289
4325
|
|
|
4290
4326
|
<a name="new_MarketData_new"></a>
|
|
4291
4327
|
|
|
@@ -5610,19 +5646,11 @@ main();
|
|
|
5610
5646
|
**Returns**: <p>True if all perp states are correct</p>
|
|
5611
5647
|
<a name="MarketData.exchangeFeePrdMkts"></a>
|
|
5612
5648
|
|
|
5613
|
-
### MarketData.exchangeFeePrdMkts(
|
|
5649
|
+
### MarketData.exchangeFeePrdMkts() ⇒
|
|
5614
5650
|
<p>Fee is relative to base-currency amount (=trade amount)</p>
|
|
5615
5651
|
|
|
5616
5652
|
**Kind**: static method of [<code>MarketData</code>](#MarketData)
|
|
5617
5653
|
**Returns**: <p>relative exchange fee in decimals</p>
|
|
5618
|
-
|
|
5619
|
-
| Param | Description |
|
|
5620
|
-
| --- | --- |
|
|
5621
|
-
| maxMaintMgnRate | <p>maintenance margin rate param for pred mkts</p> |
|
|
5622
|
-
| Sm | <p>Mark price</p> |
|
|
5623
|
-
| tradeAmtBC | <p>signed trade amount</p> |
|
|
5624
|
-
| tradeMgnRate | <p>margin rate param from perpetual</p> |
|
|
5625
|
-
|
|
5626
5654
|
<a name="OnChainPxFeed"></a>
|
|
5627
5655
|
|
|
5628
5656
|
## OnChainPxFeed
|
package/doc/marketData.md
CHANGED
|
@@ -47,7 +47,7 @@ No gas required for the queries here.</p>
|
|
|
47
47
|
* [.fetchPrdMktMetaData(symbol)](#MarketData+fetchPrdMktMetaData) ⇒
|
|
48
48
|
* [.fetchPythMetaData(symbol)](#MarketData+fetchPythMetaData) ⇒
|
|
49
49
|
* _static_
|
|
50
|
-
* [.exchangeFeePrdMkts(
|
|
50
|
+
* [.exchangeFeePrdMkts()](#MarketData.exchangeFeePrdMkts) ⇒
|
|
51
51
|
|
|
52
52
|
<a name="new_MarketData_new"></a>
|
|
53
53
|
|
|
@@ -860,16 +860,8 @@ The priority is:</p>
|
|
|
860
860
|
|
|
861
861
|
<a name="MarketData.exchangeFeePrdMkts"></a>
|
|
862
862
|
|
|
863
|
-
### MarketData.exchangeFeePrdMkts(
|
|
863
|
+
### MarketData.exchangeFeePrdMkts() ⇒
|
|
864
864
|
<p>Fee is relative to base-currency amount (=trade amount)</p>
|
|
865
865
|
|
|
866
866
|
**Kind**: static method of [<code>MarketData</code>](#MarketData)
|
|
867
867
|
**Returns**: <p>relative exchange fee in decimals</p>
|
|
868
|
-
|
|
869
|
-
| Param | Description |
|
|
870
|
-
| --- | --- |
|
|
871
|
-
| maxMaintMgnRate | <p>maintenance margin rate param for pred mkts</p> |
|
|
872
|
-
| Sm | <p>Mark price</p> |
|
|
873
|
-
| tradeAmtBC | <p>signed trade amount</p> |
|
|
874
|
-
| tradeMgnRate | <p>margin rate param from perpetual</p> |
|
|
875
|
-
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@d8x/perpetuals-sdk",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.01",
|
|
4
4
|
"description": "Node TypeScript SDK for D8X Perpetual Futures",
|
|
5
5
|
"author": "D8X",
|
|
6
6
|
"homepage": "https://github.com/D8-X/d8x-futures-node-sdk#readme",
|
|
@@ -68,5 +68,8 @@
|
|
|
68
68
|
"tslib": "^2.5.0",
|
|
69
69
|
"typescript": "^4.9.5"
|
|
70
70
|
},
|
|
71
|
-
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
|
71
|
+
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e",
|
|
72
|
+
"resolutions": {
|
|
73
|
+
"jsdoc": "4.0.3"
|
|
74
|
+
}
|
|
72
75
|
}
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
{
|
|
29
29
|
"name": "base_sepolia",
|
|
30
30
|
"chainId": 84532,
|
|
31
|
-
"version":
|
|
32
|
-
"proxyAddr": "
|
|
31
|
+
"version": 3,
|
|
32
|
+
"proxyAddr": "0xfaC638d51B769D060aFC5953C41bF35595620b1c",
|
|
33
33
|
"nodeURL": "https://sepolia.base.org",
|
|
34
34
|
"priceFeedConfigNetwork": "mainnet",
|
|
35
35
|
"shareTokenABILocation": "./abi/ShareToken.json",
|
package/src/constants.ts
CHANGED
|
@@ -34,7 +34,6 @@ export const MASK_PREDICTION_MARKET = 2n;
|
|
|
34
34
|
export const MASK_LOW_LIQUIDITY_MARKET = 4n;
|
|
35
35
|
export const MASK_TRADFI_MARKET = 8n;
|
|
36
36
|
|
|
37
|
-
|
|
38
37
|
export const ORDER_TYPE_LIMIT = "LIMIT";
|
|
39
38
|
export const ORDER_TYPE_MARKET = "MARKET";
|
|
40
39
|
export const ORDER_TYPE_STOP_MARKET = "STOP_MARKET";
|