@drift-labs/sdk 2.2.0 → 2.3.0-beta.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/lib/idl/drift.json +1 -1
- package/lib/math/amm.js +7 -5
- package/package.json +1 -1
- package/src/idl/drift.json +1 -1
- package/src/math/amm.ts +17 -14
package/lib/idl/drift.json
CHANGED
package/lib/math/amm.js
CHANGED
|
@@ -198,16 +198,18 @@ function calculateInventoryScale(baseAssetAmountWithAmm, baseAssetReserve, minBa
|
|
|
198
198
|
// inventory skew
|
|
199
199
|
const [openBids, openAsks] = calculateMarketOpenBidAsk(baseAssetReserve, minBaseAssetReserve, maxBaseAssetReserve);
|
|
200
200
|
const minSideLiquidity = anchor_1.BN.max(new anchor_1.BN(1), anchor_1.BN.min(openBids.abs(), openAsks.abs()));
|
|
201
|
-
const
|
|
201
|
+
const inventoryScaleMaxBN = anchor_1.BN.max(defaultLargeBidAskFactor, new anchor_1.BN(maxSpread / 2)
|
|
202
202
|
.mul(numericConstants_1.BID_ASK_SPREAD_PRECISION)
|
|
203
|
-
.div(new anchor_1.BN(Math.max(directionalSpread, 1))))
|
|
204
|
-
const
|
|
203
|
+
.div(new anchor_1.BN(Math.max(directionalSpread, 1))));
|
|
204
|
+
const inventoryScaleBN = baseAssetAmountWithAmm
|
|
205
205
|
.mul(anchor_1.BN.max(baseAssetAmountWithAmm.abs(), numericConstants_1.BASE_PRECISION))
|
|
206
206
|
.div(numericConstants_1.BASE_PRECISION)
|
|
207
207
|
.mul(defaultLargeBidAskFactor)
|
|
208
208
|
.div(minSideLiquidity)
|
|
209
|
-
.abs()
|
|
210
|
-
|
|
209
|
+
.abs();
|
|
210
|
+
const inventoryScale = anchor_1.BN.min(inventoryScaleMaxBN, inventoryScaleBN).toNumber() /
|
|
211
|
+
numericConstants_1.BID_ASK_SPREAD_PRECISION.toNumber();
|
|
212
|
+
const inventoryScaleMax = inventoryScaleMaxBN.toNumber() / numericConstants_1.BID_ASK_SPREAD_PRECISION.toNumber();
|
|
211
213
|
const inventorySpreadScale = Math.min(inventoryScaleMax, 1 + inventoryScale);
|
|
212
214
|
return inventorySpreadScale;
|
|
213
215
|
}
|
package/package.json
CHANGED
package/src/idl/drift.json
CHANGED
package/src/math/amm.ts
CHANGED
|
@@ -361,23 +361,26 @@ export function calculateInventoryScale(
|
|
|
361
361
|
BN.min(openBids.abs(), openAsks.abs())
|
|
362
362
|
);
|
|
363
363
|
|
|
364
|
-
const
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
364
|
+
const inventoryScaleMaxBN = BN.max(
|
|
365
|
+
defaultLargeBidAskFactor,
|
|
366
|
+
new BN(maxSpread / 2)
|
|
367
|
+
.mul(BID_ASK_SPREAD_PRECISION)
|
|
368
|
+
.div(new BN(Math.max(directionalSpread, 1)))
|
|
369
|
+
);
|
|
370
|
+
|
|
371
|
+
const inventoryScaleBN = baseAssetAmountWithAmm
|
|
372
|
+
.mul(BN.max(baseAssetAmountWithAmm.abs(), BASE_PRECISION))
|
|
373
|
+
.div(BASE_PRECISION)
|
|
374
|
+
.mul(defaultLargeBidAskFactor)
|
|
375
|
+
.div(minSideLiquidity)
|
|
376
|
+
.abs();
|
|
371
377
|
|
|
372
378
|
const inventoryScale =
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
.div(BASE_PRECISION)
|
|
376
|
-
.mul(defaultLargeBidAskFactor)
|
|
377
|
-
.div(minSideLiquidity)
|
|
378
|
-
.abs()
|
|
379
|
-
.toNumber() / BID_ASK_SPREAD_PRECISION.toNumber();
|
|
379
|
+
BN.min(inventoryScaleMaxBN, inventoryScaleBN).toNumber() /
|
|
380
|
+
BID_ASK_SPREAD_PRECISION.toNumber();
|
|
380
381
|
|
|
382
|
+
const inventoryScaleMax =
|
|
383
|
+
inventoryScaleMaxBN.toNumber() / BID_ASK_SPREAD_PRECISION.toNumber();
|
|
381
384
|
const inventorySpreadScale = Math.min(inventoryScaleMax, 1 + inventoryScale);
|
|
382
385
|
|
|
383
386
|
return inventorySpreadScale;
|