@d8x/perpetuals-sdk 2.6.23 → 2.7.0
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 +42 -25
- package/dist/cjs/d8XMath.js +188 -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/marketData.d.ts +6 -6
- package/dist/cjs/marketData.js +9 -12
- 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 +42 -25
- package/dist/esm/d8XMath.js +187 -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/marketData.d.ts +6 -6
- package/dist/esm/marketData.js +9 -12
- 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 +116 -64
- package/package.json +1 -1
- package/src/config/defaultConfig.json +2 -2
- package/src/constants.ts +0 -1
- package/src/d8XMath.ts +210 -167
- package/src/liquidatorTool.ts +16 -10
- package/src/marketData.ts +33 -25
- 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,17 @@ 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
|
-
* [~pmMaintenanceMarginRate(
|
|
152
|
-
* [~pmInitialMarginRate(posSign, sm,
|
|
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
|
+
* [~pmMaintenanceMarginRate(position, lockedInQC, sm, m)](#module_d8xMath..pmMaintenanceMarginRate) ⇒ <code>number</code>
|
|
154
|
+
* [~pmInitialMarginRate(posSign, s0, sm, cmin)](#module_d8xMath..pmInitialMarginRate) ⇒ <code>number</code>
|
|
155
155
|
* [~pmExchangeFee(prob, m, tradeAmt, tradeMgnRate)](#module_d8xMath..pmExchangeFee) ⇒
|
|
156
156
|
* [~pmMarginBalance(pos, s2, s3, ell, mc)](#module_d8xMath..pmMarginBalance) ⇒
|
|
157
|
+
* [~pmFindLiquidationPrice(pos, s3, ell, mc, baseMarginRate, sm)](#module_d8xMath..pmFindLiquidationPrice) ⇒ <code>number</code>
|
|
157
158
|
* [~excessMargin(tradeAmt, currentCashCC, currentPos, currentLockedInQC, limitPrice, Sm, S3)](#module_d8xMath..excessMargin) ⇒
|
|
158
159
|
* [~pmGetDepositAmtForLvgTrade(tradeAmt, targetLvg, price, S3, S2Mark)](#module_d8xMath..pmGetDepositAmtForLvgTrade) ⇒
|
|
159
160
|
* [~pmExcessCashAtLvg(tradeAmt, lvg, walletBalCC, currentCashCC, currentPosition, currentLockedInValue, slippage, S2, Sm, S3, totLong, totShort)](#module_d8xMath..pmExcessCashAtLvg) ⇒
|
|
@@ -395,7 +396,7 @@ See calculateLiquidationPriceCollateralQuantoConservative for a more conservativ
|
|
|
395
396
|
|
|
396
397
|
<a name="module_d8xMath..getDepositAmountForLvgTrade"></a>
|
|
397
398
|
|
|
398
|
-
### d8xMath~getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark,
|
|
399
|
+
### d8xMath~getDepositAmountForLvgTrade(pos0, b0, tradeAmnt, targetLvg, price, S3, S2Mark, cmin) ⇒ <code>number</code>
|
|
399
400
|
<p>Determine amount to be deposited into margin account so that the given leverage
|
|
400
401
|
is obtained when trading a position pos (trade amount = position)
|
|
401
402
|
Does NOT include fees
|
|
@@ -413,8 +414,77 @@ Smart contract equivalent: calcMarginForTargetLeverage(..., _ignorePosBalance =
|
|
|
413
414
|
| price | <code>number</code> | <p>price to trade amount 'tradeAmnt'</p> |
|
|
414
415
|
| S3 | <code>number</code> | <p>collateral to quote conversion (=S2 if base-collateral, =1 if quote collateral, = index S3 if quanto)</p> |
|
|
415
416
|
| S2Mark | <code>number</code> | <p>mark price</p> |
|
|
416
|
-
|
|
|
417
|
+
| cmin | <code>number</code> | <p>Absolute minimum margin per contract, only for pred markets</p> |
|
|
417
418
|
|
|
419
|
+
<a name="module_d8xMath..getDepositAmountForPredMktLvgTrade"></a>
|
|
420
|
+
|
|
421
|
+
### d8xMath~getDepositAmountForPredMktLvgTrade(pos0, b0, c0, tradeAmnt, targetLvg, prob, S3, markProb, imr) ⇒ <code>number</code>
|
|
422
|
+
<p>Determine amount to be deposited into margin account so that the given leverage
|
|
423
|
+
is obtained when opening a prediction market position
|
|
424
|
+
Does NOT include fees, but accounts for a possible non-zero current position
|
|
425
|
+
Smart contract equivalent: getDepositAmountForPredMktLvgPosition</p>
|
|
426
|
+
|
|
427
|
+
**Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
|
|
428
|
+
**Returns**: <code>number</code> - <p>Amount to be deposited to have the given leverage when trading into position pos before fees</p>
|
|
429
|
+
|
|
430
|
+
| Param | Type | Description |
|
|
431
|
+
| --- | --- | --- |
|
|
432
|
+
| pos0 | <code>number</code> | <p>current position</p> |
|
|
433
|
+
| b0 | <code>number</code> | <p>current balance</p> |
|
|
434
|
+
| c0 | <code>number</code> | <p>current available cash</p> |
|
|
435
|
+
| tradeAmnt | <code>number</code> | <p>amount to trade</p> |
|
|
436
|
+
| targetLvg | <code>number</code> | <p>target leverage</p> |
|
|
437
|
+
| prob | <code>number</code> | <p>prob to trade amount 'tradeAmnt'</p> |
|
|
438
|
+
| S3 | <code>number</code> | <p>collateral to quote conversion (=S2 if base-collateral, =1 if quote collateral, = index S3 if quanto)</p> |
|
|
439
|
+
| markProb | <code>number</code> | <p>mark prob</p> |
|
|
440
|
+
| imr | <code>number</code> | <p>minimum absolute margin per contract (fInitialMarginRate)</p> |
|
|
441
|
+
|
|
442
|
+
<a name="module_d8xMath..getDepositAmountForPredMktLvgTrade..newPos"></a>
|
|
443
|
+
|
|
444
|
+
#### getDepositAmountForPredMktLvgTrade~newPos
|
|
445
|
+
<p>Smart contract implementation:
|
|
446
|
+
// find smallest x such that:
|
|
447
|
+
// bal * s3 >= pos value / lvg
|
|
448
|
+
// where:
|
|
449
|
+
// pos value / lvg = |pos| * R(pm, sign(pos)) * margin rate
|
|
450
|
+
// pos = pos0 + k
|
|
451
|
+
// cash = cash0 + x
|
|
452
|
+
// ell = ell0 + px * k
|
|
453
|
+
// bal * s3 = cash * s3 + pos * sm - ell
|
|
454
|
+
// = bal0 * s3 + x * s3 + k * (sm - px)
|
|
455
|
+
// subject to:
|
|
456
|
+
// x >= 0
|
|
457
|
+
// cash * s3 >= |pos| * min(cmin, prob(sign(pos)))
|
|
458
|
+
// k * (sm - px) <= 0 a.s.
|
|
459
|
+
// (positive pnl does not contribute, i.e. ignore px better than mark)
|
|
460
|
+
// solution:
|
|
461
|
+
// bal0 * s3 + x * s3 >= pos value / lvg + (k * (px - sm))<em>+ = v * s3
|
|
462
|
+
// -->
|
|
463
|
+
// x >= v + (cash0 - bal0)</em>+ - cash0 = v - min(bal0, cash0)
|
|
464
|
+
// = pos value / lvg/ s3 + (k * (px - sm))_+ / s3 - min (bal0, cash0)
|
|
465
|
+
// = A + B - C
|
|
466
|
+
// x >= |pos| * min(cmin, prob(sign(pos))) / s3 - cash0
|
|
467
|
+
// x >= 0
|
|
468
|
+
// init x = A = pos value / lvg / s3
|
|
469
|
+
int128 fNewPos = _fPosition0.add(_fTradeAmount);
|
|
470
|
+
int128 v = (
|
|
471
|
+
fNewPos > 0 ? fNewPos.mul(_fMarkProb) : fNewPos.neg().mul(ONE_64x64.sub(_fMarkProb))
|
|
472
|
+
).mul(_fMarginRate).div(_fS3);
|
|
473
|
+
// + B = max(0,k * (px - sm)) / s3
|
|
474
|
+
{
|
|
475
|
+
int128 fPnL = _fTradeAmount.mul(_fMarkProb.sub(_fTradeProb));
|
|
476
|
+
if (fPnL < 0) {
|
|
477
|
+
v = v.sub(fPnL.div(_fS3)); // pnl < 0 -> increase v
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
// - C = - min(bal0, cash0) = - Equity
|
|
481
|
+
{
|
|
482
|
+
int128 equity = _fCash0CC < _fBalance0 ? _fCash0CC : _fBalance0;
|
|
483
|
+
v = v.sub(equity); // equity can be used / must be covered if negative
|
|
484
|
+
}
|
|
485
|
+
return v > 0 ? v : int128(0);</p>
|
|
486
|
+
|
|
487
|
+
**Kind**: inner constant of [<code>getDepositAmountForPredMktLvgTrade</code>](#module_d8xMath..getDepositAmountForPredMktLvgTrade)
|
|
418
488
|
<a name="module_d8xMath..priceToProb"></a>
|
|
419
489
|
|
|
420
490
|
### d8xMath~priceToProb(px) ⇒
|
|
@@ -441,82 +511,49 @@ Smart contract equivalent: calcMarginForTargetLeverage(..., _ignorePosBalance =
|
|
|
441
511
|
|
|
442
512
|
<a name="module_d8xMath..pmMarginThresh"></a>
|
|
443
513
|
|
|
444
|
-
### d8xMath~pmMarginThresh(pos, s2, s3, m) ⇒
|
|
514
|
+
### d8xMath~pmMarginThresh(pos, lockedInQC, s2, s3, m) ⇒
|
|
445
515
|
<p>Maintenance margin requirement for prediction markets</p>
|
|
446
516
|
|
|
447
517
|
**Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
|
|
448
518
|
**Returns**: <p>required margin balance</p>
|
|
449
519
|
|
|
450
|
-
| Param |
|
|
451
|
-
| --- | --- |
|
|
452
|
-
| pos |
|
|
453
|
-
|
|
|
454
|
-
|
|
|
455
|
-
|
|
|
520
|
+
| Param | Description |
|
|
521
|
+
| --- | --- |
|
|
522
|
+
| pos | <p>signed position</p> |
|
|
523
|
+
| lockedInQC | <p>locked in value</p> |
|
|
524
|
+
| s2 | <p>mark price</p> |
|
|
525
|
+
| s3 | <p>collateral to quote conversion</p> |
|
|
526
|
+
| m | <p>base margin rate</p> |
|
|
456
527
|
|
|
457
528
|
<a name="module_d8xMath..pmMaintenanceMarginRate"></a>
|
|
458
529
|
|
|
459
|
-
### d8xMath~pmMaintenanceMarginRate(
|
|
530
|
+
### d8xMath~pmMaintenanceMarginRate(position, lockedInQC, sm, m) ⇒ <code>number</code>
|
|
460
531
|
<p>Maintenance margin rate for prediction markets.</p>
|
|
461
532
|
|
|
462
533
|
**Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
|
|
463
|
-
**Returns**: <p>margin rate to be applied (Math.abs(pos) * p * tau) / s3
|
|
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>
|
|
534
|
+
**Returns**: <code>number</code> - <p>The margin rate to be applied: (Math.abs(pos) * p * tau) / s3</p>
|
|
493
535
|
|
|
494
536
|
| Param | Description |
|
|
495
537
|
| --- | --- |
|
|
496
|
-
|
|
|
497
|
-
|
|
|
498
|
-
|
|
|
499
|
-
|
|
|
500
|
-
| tradeAmt | <p>signed trade amount, can be zero</p> |
|
|
501
|
-
| tradeMgnRate | <p>margin rate of the trader</p> |
|
|
538
|
+
| position | <p>signed position in base currency</p> |
|
|
539
|
+
| lockedInQC | <p>locked in value, p or 1-p times number of contracts</p> |
|
|
540
|
+
| sm | <p>mark-price (=1+p)</p> |
|
|
541
|
+
| m | <p>absolute maintenance buffer per contract (mu_m, fMaintenanceMarginRate)</p> |
|
|
502
542
|
|
|
503
|
-
<a name="module_d8xMath..
|
|
543
|
+
<a name="module_d8xMath..pmInitialMarginRate"></a>
|
|
504
544
|
|
|
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>
|
|
545
|
+
### d8xMath~pmInitialMarginRate(posSign, s0, sm, cmin) ⇒ <code>number</code>
|
|
546
|
+
<p>Initial margin rate for prediction markets.</p>
|
|
510
547
|
|
|
511
548
|
**Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
|
|
512
|
-
**Returns**: <p>
|
|
549
|
+
**Returns**: <code>number</code> - <p>The margin rate to be applied: <code>(Math.abs(pos) * p * tau) / s3</code></p>
|
|
513
550
|
|
|
514
551
|
| Param | Description |
|
|
515
552
|
| --- | --- |
|
|
516
|
-
|
|
|
517
|
-
|
|
|
518
|
-
|
|
|
519
|
-
|
|
|
553
|
+
| posSign | <p>sign of position in base currency (can be signed position or -1, 1)</p> |
|
|
554
|
+
| s0 | <p>trade price</p> |
|
|
555
|
+
| sm | <p>mark-price (=1+p)</p> |
|
|
556
|
+
| cmin | <p>Absolute min margin saved as <code>fInitialMarginRate</code></p> |
|
|
520
557
|
|
|
521
558
|
<a name="module_d8xMath..pmExchangeFee"></a>
|
|
522
559
|
|
|
@@ -550,6 +587,21 @@ For opening trades only</p>
|
|
|
550
587
|
| ell | <p>locked in value</p> |
|
|
551
588
|
| mc | <p>margin cash in collateral currency</p> |
|
|
552
589
|
|
|
590
|
+
<a name="module_d8xMath..pmFindLiquidationPrice"></a>
|
|
591
|
+
|
|
592
|
+
### d8xMath~pmFindLiquidationPrice(pos, s3, ell, mc, baseMarginRate, sm) ⇒ <code>number</code>
|
|
593
|
+
**Kind**: inner method of [<code>d8xMath</code>](#module_d8xMath)
|
|
594
|
+
**Returns**: <code>number</code> - <p>Liquidation price as a probability in the range [0, 1]</p>
|
|
595
|
+
|
|
596
|
+
| Param | Description |
|
|
597
|
+
| --- | --- |
|
|
598
|
+
| pos | <p>Signed position size</p> |
|
|
599
|
+
| s3 | <p>Collateral to quote conversion at spot</p> |
|
|
600
|
+
| ell | <p>Locked-in value</p> |
|
|
601
|
+
| mc | <p>Margin collateral</p> |
|
|
602
|
+
| baseMarginRate | <p>Maintenance margin per contract (mu_m)</p> |
|
|
603
|
+
| sm | <p>Mark price at entry</p> |
|
|
604
|
+
|
|
553
605
|
<a name="module_d8xMath..excessMargin"></a>
|
|
554
606
|
|
|
555
607
|
### d8xMath~excessMargin(tradeAmt, currentCashCC, currentPos, currentLockedInQC, limitPrice, Sm, S3) ⇒
|
|
@@ -649,7 +701,7 @@ Factors in lot size and global max short/long, factors in opening/closing positi
|
|
|
649
701
|
| short | <p>Short open OI</p> |
|
|
650
702
|
| sm | <p>Mark price (>1)</p> |
|
|
651
703
|
| isBuy | <p>True if trade is long</p> |
|
|
652
|
-
| mr | <p>
|
|
704
|
+
| mr | <p>Margin threshold per contract for liquidation (mu_m)</p> |
|
|
653
705
|
|
|
654
706
|
<a name="module_utils"></a>
|
|
655
707
|
|
package/package.json
CHANGED
|
@@ -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";
|