@exponent-labs/market-math 0.0.9 → 0.1.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/build/bisect.js +2 -0
- package/build/bisect.js.map +1 -1
- package/build/index.d.ts +14 -4
- package/build/index.js +49 -25
- package/build/index.js.map +1 -1
- package/package.json +1 -1
- package/src/bisect.test.ts +2 -0
- package/src/bisect.ts +2 -0
- package/src/index.ts +57 -25
- package/src/math.test.ts +49 -28
package/build/bisect.js
CHANGED
|
@@ -20,9 +20,11 @@ function bisectSearch2(func, lo, hi, epsilon = 0.0001, maxIterations = 2000) {
|
|
|
20
20
|
}
|
|
21
21
|
// Adjust the search range based on the target
|
|
22
22
|
if (func(lo) * result < 0) {
|
|
23
|
+
// eslint-disable-next-line no-param-reassign
|
|
23
24
|
hi = mid;
|
|
24
25
|
}
|
|
25
26
|
else {
|
|
27
|
+
// eslint-disable-next-line no-param-reassign
|
|
26
28
|
lo = mid;
|
|
27
29
|
}
|
|
28
30
|
iterations++;
|
package/build/bisect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bisect.js","sourceRoot":"","sources":["../src/bisect.ts"],"names":[],"mappings":";;;AAAA,SAAgB,aAAa,CAC3B,IAA2B,EAC3B,EAAU,EACV,EAAU,EACV,UAAkB,MAAM,EACxB,gBAAwB,IAAI;IAE5B,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA,CAAC,kCAAkC;IAE1D,qDAAqD;IACrD,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,iCAAiC;IACjC,OAAO,UAAU,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QAExB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAA,CAAC,0CAA0C;QACvD,CAAC;QAED,8CAA8C;QAC9C,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,EAAE,GAAG,GAAG,CAAA;QACV,CAAC;aAAM,CAAC;YACN,EAAE,GAAG,GAAG,CAAA;QACV,CAAC;QAED,UAAU,EAAE,CAAA;IACd,CAAC;IAED,uEAAuE;IACvE,OAAO,GAAG,CAAA;AACZ,CAAC;
|
|
1
|
+
{"version":3,"file":"bisect.js","sourceRoot":"","sources":["../src/bisect.ts"],"names":[],"mappings":";;;AAAA,SAAgB,aAAa,CAC3B,IAA2B,EAC3B,EAAU,EACV,EAAU,EACV,UAAkB,MAAM,EACxB,gBAAwB,IAAI;IAE5B,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA,CAAC,kCAAkC;IAE1D,qDAAqD;IACrD,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,iCAAiC;IACjC,OAAO,UAAU,GAAG,aAAa,EAAE,CAAC;QAClC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QAExB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAA,CAAC,0CAA0C;QACvD,CAAC;QAED,8CAA8C;QAC9C,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,6CAA6C;YAC7C,EAAE,GAAG,GAAG,CAAA;QACV,CAAC;aAAM,CAAC;YACN,6CAA6C;YAC7C,EAAE,GAAG,GAAG,CAAA;QACV,CAAC;QAED,UAAU,EAAE,CAAA;IACd,CAAC;IAED,uEAAuE;IACvE,OAAO,GAAG,CAAA;AACZ,CAAC;AA1CD,sCA0CC"}
|
package/build/index.d.ts
CHANGED
|
@@ -81,6 +81,7 @@ export interface MarketMathState {
|
|
|
81
81
|
maxNetBalanceChangeNegativePercentage: number;
|
|
82
82
|
maxNetBalanceChangePositivePercentage: number;
|
|
83
83
|
windowDurationSeconds: number;
|
|
84
|
+
feeTreasurySyBps: number;
|
|
84
85
|
}
|
|
85
86
|
export declare class MarketCalculator {
|
|
86
87
|
state: MarketMathState;
|
|
@@ -89,13 +90,13 @@ export declare class MarketCalculator {
|
|
|
89
90
|
get liquiditySy(): number;
|
|
90
91
|
get liquidityPt(): number;
|
|
91
92
|
get currentSyExchangeRate(): number;
|
|
92
|
-
get
|
|
93
|
+
get liquidityAsset(): number;
|
|
93
94
|
get rateScalarRoot(): number;
|
|
94
95
|
get secondsRemaining(): number;
|
|
95
96
|
get proportionPtInAsset(): number;
|
|
96
97
|
/** Proportion of PT in terms of SY - which is useful for computing liquidity add */
|
|
97
98
|
get proportionPtInSy(): number;
|
|
98
|
-
/** Calculate the current rate scalar, which increases hyperbolically to
|
|
99
|
+
/** Calculate the current rate scalar, which increases hyperbolically to infinity as time remaining goes to zero */
|
|
99
100
|
get rateScalar(): number;
|
|
100
101
|
/** Get exchange rate of asset to PT */
|
|
101
102
|
get exchangeRate(): number;
|
|
@@ -178,6 +179,15 @@ export declare class MarketCalculator {
|
|
|
178
179
|
*/
|
|
179
180
|
verifyNetBalanceLimits(currentTimestamp: number, proposedChange: number): void;
|
|
180
181
|
get lpPriceInAsset(): number;
|
|
182
|
+
/** Calculate the amount of SY to strip into PT based on the current market state
|
|
183
|
+
* This matches the Rust implementation of calc_strip_amount
|
|
184
|
+
* @param totalAmountSy - The total amount of SY to be processed
|
|
185
|
+
* @returns The amount of SY to strip into PT
|
|
186
|
+
*/
|
|
187
|
+
calcStripAmount(totalAmountSy: number): {
|
|
188
|
+
syToStrip: number;
|
|
189
|
+
pyToReceive: number;
|
|
190
|
+
};
|
|
181
191
|
}
|
|
182
192
|
export interface CalculatorTradeResult {
|
|
183
193
|
feeAsset: number;
|
|
@@ -221,11 +231,11 @@ export declare function calcBalancedDeposit(c: MarketCalculator, totalSy: number
|
|
|
221
231
|
syRemainder: number;
|
|
222
232
|
};
|
|
223
233
|
/** Calculate the amount of LP tokens that will be received for a wrapper_provide_liquidity_base deposit
|
|
224
|
-
* @param
|
|
234
|
+
* @param marketCalculator - The market calculator instance
|
|
225
235
|
* @param baseAmount - The amount of base tokens being deposited (will be converted to SY using exchange rate)
|
|
226
236
|
* @returns The amount of LP tokens that will be received and the PT trade price
|
|
227
237
|
*/
|
|
228
|
-
export declare function simulateWrapperProvideLiquidityBase(
|
|
238
|
+
export declare function simulateWrapperProvideLiquidityBase(marketCalculator: MarketCalculator, baseAmount: number): {
|
|
229
239
|
lpOut: number;
|
|
230
240
|
ptTradePrice: number;
|
|
231
241
|
feeAsset: number;
|
package/build/index.js
CHANGED
|
@@ -85,7 +85,7 @@ function tradeFee(netTraderAsset, currentFeeRate) {
|
|
|
85
85
|
return Math.abs(-netTraderAsset * (1 - currentFeeRate));
|
|
86
86
|
}
|
|
87
87
|
// buying PT with asset
|
|
88
|
-
// the fee is
|
|
88
|
+
// the fee is positive to mean they pay more asset
|
|
89
89
|
if (netTraderAsset < 0) {
|
|
90
90
|
return Math.abs((netTraderAsset * (1 - currentFeeRate)) / currentFeeRate);
|
|
91
91
|
}
|
|
@@ -163,7 +163,7 @@ class MarketCalculator {
|
|
|
163
163
|
get currentSyExchangeRate() {
|
|
164
164
|
return this.state.currentSyExchangeRate;
|
|
165
165
|
}
|
|
166
|
-
get
|
|
166
|
+
get liquidityAsset() {
|
|
167
167
|
return this.liquiditySy * this.currentSyExchangeRate;
|
|
168
168
|
}
|
|
169
169
|
get rateScalarRoot() {
|
|
@@ -173,13 +173,13 @@ class MarketCalculator {
|
|
|
173
173
|
return this.state.secondsRemaining;
|
|
174
174
|
}
|
|
175
175
|
get proportionPtInAsset() {
|
|
176
|
-
return proportionPt({ pt: this.liquidityPt, asset: this.
|
|
176
|
+
return proportionPt({ pt: this.liquidityPt, asset: this.liquidityAsset });
|
|
177
177
|
}
|
|
178
178
|
/** Proportion of PT in terms of SY - which is useful for computing liquidity add */
|
|
179
179
|
get proportionPtInSy() {
|
|
180
180
|
return this.liquidityPt / (this.liquidityPt + this.liquiditySy);
|
|
181
181
|
}
|
|
182
|
-
/** Calculate the current rate scalar, which increases hyperbolically to
|
|
182
|
+
/** Calculate the current rate scalar, which increases hyperbolically to infinity as time remaining goes to zero */
|
|
183
183
|
get rateScalar() {
|
|
184
184
|
return currentRateScalar({
|
|
185
185
|
rateScalarRoot: this.rateScalarRoot,
|
|
@@ -252,6 +252,10 @@ class MarketCalculator {
|
|
|
252
252
|
const mc = this.clone();
|
|
253
253
|
// merge the PT & YT into SY
|
|
254
254
|
const sy = ytIn / this.currentSyExchangeRate;
|
|
255
|
+
// Check if there's enough PT liquidity to borrow for the flash swap
|
|
256
|
+
if (mc.liquidityPt < ytIn * 2) {
|
|
257
|
+
throw new Error("not enough PT liquidity to borrow for the flash swap");
|
|
258
|
+
}
|
|
255
259
|
// buy back PT with SY
|
|
256
260
|
const tradeRes = mc.calcTradePt(ytIn, true);
|
|
257
261
|
// negate the result to get the amount of asset spent
|
|
@@ -346,7 +350,7 @@ class MarketCalculator {
|
|
|
346
350
|
const currentFeeRate = this.feeRate;
|
|
347
351
|
const currentRateScalar = this.rateScalar;
|
|
348
352
|
const res = tradePt({
|
|
349
|
-
liquidityAsset: this.
|
|
353
|
+
liquidityAsset: this.liquidityAsset,
|
|
350
354
|
liquidityPt: this.liquidityPt,
|
|
351
355
|
currentRateScalar,
|
|
352
356
|
currentRateAnchor,
|
|
@@ -355,8 +359,8 @@ class MarketCalculator {
|
|
|
355
359
|
isCurrentFlashSwap,
|
|
356
360
|
});
|
|
357
361
|
const newLiquidityPt = this.liquidityPt - netTraderPt;
|
|
358
|
-
const
|
|
359
|
-
const newProportionPt = proportionPt({ pt: newLiquidityPt, asset:
|
|
362
|
+
const newLiquidityAsset = this.liquidityAsset - res.netTraderAsset;
|
|
363
|
+
const newProportionPt = proportionPt({ pt: newLiquidityPt, asset: newLiquidityAsset });
|
|
360
364
|
const newExchangeRate = exchangeRate({
|
|
361
365
|
proportionPt: newProportionPt,
|
|
362
366
|
rateScalar: currentRateScalar,
|
|
@@ -368,7 +372,7 @@ class MarketCalculator {
|
|
|
368
372
|
});
|
|
369
373
|
const newMarketCalculator = new MarketCalculator({
|
|
370
374
|
liquidityPt: newLiquidityPt,
|
|
371
|
-
liquiditySy:
|
|
375
|
+
liquiditySy: newLiquidityAsset / this.currentSyExchangeRate,
|
|
372
376
|
currentSyExchangeRate: this.currentSyExchangeRate,
|
|
373
377
|
lnFeeRateRoot: this.state.lnFeeRateRoot,
|
|
374
378
|
secondsRemaining: this.secondsRemaining,
|
|
@@ -380,6 +384,7 @@ class MarketCalculator {
|
|
|
380
384
|
maxNetBalanceChangeNegativePercentage: this.state.maxNetBalanceChangeNegativePercentage,
|
|
381
385
|
maxNetBalanceChangePositivePercentage: this.state.maxNetBalanceChangePositivePercentage,
|
|
382
386
|
windowDurationSeconds: this.state.windowDurationSeconds,
|
|
387
|
+
feeTreasurySyBps: this.state.feeTreasurySyBps,
|
|
383
388
|
});
|
|
384
389
|
return { ...res, newMarketCalculator };
|
|
385
390
|
}
|
|
@@ -436,14 +441,14 @@ class MarketCalculator {
|
|
|
436
441
|
});
|
|
437
442
|
}
|
|
438
443
|
totalAssetValue() {
|
|
439
|
-
return this.
|
|
444
|
+
return this.liquidityAsset + this.liquidityPt / this.exchangeRate;
|
|
440
445
|
}
|
|
441
446
|
findRateAnchor() {
|
|
442
447
|
return findRateAnchor({
|
|
443
448
|
currentRateScalar: this.rateScalar,
|
|
444
449
|
lastLnImpliedRate: this.state.lastLnImpliedRate,
|
|
445
450
|
secondsRemaining: this.secondsRemaining,
|
|
446
|
-
liquidityAsset: this.
|
|
451
|
+
liquidityAsset: this.liquidityAsset,
|
|
447
452
|
liquidityPt: this.liquidityPt,
|
|
448
453
|
});
|
|
449
454
|
}
|
|
@@ -532,6 +537,22 @@ class MarketCalculator {
|
|
|
532
537
|
const liquidityPoolTvl = this.liquiditySy * this.currentSyExchangeRate + this.liquidityPt / this.exchangeRate;
|
|
533
538
|
return Number(this.state.lpTokenSupply) === 0 ? 0 : liquidityPoolTvl / Number(this.state.lpTokenSupply);
|
|
534
539
|
}
|
|
540
|
+
/** Calculate the amount of SY to strip into PT based on the current market state
|
|
541
|
+
* This matches the Rust implementation of calc_strip_amount
|
|
542
|
+
* @param totalAmountSy - The total amount of SY to be processed
|
|
543
|
+
* @returns The amount of SY to strip into PT
|
|
544
|
+
*/
|
|
545
|
+
calcStripAmount(totalAmountSy) {
|
|
546
|
+
// Convert inputs to numbers for calculation
|
|
547
|
+
const amtSy = totalAmountSy;
|
|
548
|
+
const curSyRate = this.currentSyExchangeRate;
|
|
549
|
+
const marketPtLiq = this.liquidityPt;
|
|
550
|
+
const marketSyLiq = this.liquiditySy;
|
|
551
|
+
// Calculate strip amount using the same formula as Rust implementation
|
|
552
|
+
const toStrip = (amtSy * marketPtLiq) / (curSyRate * marketSyLiq + marketPtLiq);
|
|
553
|
+
// Round up to match Rust's ceil_u64 behavior
|
|
554
|
+
return { syToStrip: toStrip, pyToReceive: toStrip * curSyRate };
|
|
555
|
+
}
|
|
535
556
|
}
|
|
536
557
|
exports.MarketCalculator = MarketCalculator;
|
|
537
558
|
function calcExactPtForNetAsset(c, netTraderAsset) {
|
|
@@ -598,7 +619,7 @@ function estimateYtOutForExactAssetIn(c, assetIn) {
|
|
|
598
619
|
const syIn = assetIn / c.currentSyExchangeRate;
|
|
599
620
|
const targetSy = mid / c.currentSyExchangeRate;
|
|
600
621
|
const syToBorrow = targetSy - syIn;
|
|
601
|
-
if (syToBorrow > c.liquiditySy) {
|
|
622
|
+
if (syToBorrow + c.calcTradePt(-mid, false).netTraderAsset * c.currentSyExchangeRate > c.liquiditySy) {
|
|
602
623
|
console.log("Not enough liquidity - required SY exceeds available SY");
|
|
603
624
|
return null;
|
|
604
625
|
}
|
|
@@ -680,7 +701,7 @@ function calcMaxYtOutForPriceImpact(c, maxPriceImpactPercentage) {
|
|
|
680
701
|
const targetProportionPt = 1 / (1 + Math.exp(-rateScalar * (minPrice - rateAnchor)));
|
|
681
702
|
// Given the current asset amount and target proportion, we can calculate how much PT we can add
|
|
682
703
|
// before hitting our price impact limit
|
|
683
|
-
const currentAsset = c.
|
|
704
|
+
const currentAsset = c.liquidityAsset;
|
|
684
705
|
const currentPt = c.liquidityPt;
|
|
685
706
|
const currentProportionPt = currentPt / (currentPt + currentAsset);
|
|
686
707
|
// The maximum amount of PT we can sell is limited by:
|
|
@@ -720,7 +741,7 @@ function calcBalancedDeposit(c, totalSy) {
|
|
|
720
741
|
syRemainder: totalSy - Math.floor(half),
|
|
721
742
|
};
|
|
722
743
|
}
|
|
723
|
-
|
|
744
|
+
/**
|
|
724
745
|
We now account for the fact that executing a PT trade changes the pool state.
|
|
725
746
|
Instead of using the original pool ratio (c.liquidityPt/c.liquiditySy), we simulate the trade
|
|
726
747
|
for a candidate pt amount, obtain the new market state via c.calcTradePt(pt, true), and then
|
|
@@ -734,8 +755,11 @@ function calcBalancedDeposit(c, totalSy) {
|
|
|
734
755
|
const syDeposit = totalSy - costInSY;
|
|
735
756
|
if (syDeposit <= 0)
|
|
736
757
|
return Infinity;
|
|
758
|
+
// Calculate treasury fee using the same logic as Rust
|
|
759
|
+
// fee_treasury_sy_bps is in basis points (10000 = 100%)
|
|
760
|
+
const feeInSY = (tradeResult.feeAsset * c.state.feeTreasurySyBps) / 10000 / c.currentSyExchangeRate;
|
|
737
761
|
const newLiquidityPt = tradeResult.newMarketCalculator.liquidityPt;
|
|
738
|
-
const newLiquiditySy = tradeResult.newMarketCalculator.liquiditySy;
|
|
762
|
+
const newLiquiditySy = tradeResult.newMarketCalculator.liquiditySy - feeInSY;
|
|
739
763
|
const newRatio = newLiquidityPt / newLiquiditySy;
|
|
740
764
|
return pt / syDeposit - newRatio;
|
|
741
765
|
}
|
|
@@ -767,24 +791,24 @@ function calcBalancedDeposit(c, totalSy) {
|
|
|
767
791
|
}
|
|
768
792
|
exports.calcBalancedDeposit = calcBalancedDeposit;
|
|
769
793
|
/** Calculate the amount of LP tokens that will be received for a wrapper_provide_liquidity_base deposit
|
|
770
|
-
* @param
|
|
794
|
+
* @param marketCalculator - The market calculator instance
|
|
771
795
|
* @param baseAmount - The amount of base tokens being deposited (will be converted to SY using exchange rate)
|
|
772
796
|
* @returns The amount of LP tokens that will be received and the PT trade price
|
|
773
797
|
*/
|
|
774
|
-
function simulateWrapperProvideLiquidityBase(
|
|
798
|
+
function simulateWrapperProvideLiquidityBase(marketCalculator, baseAmount) {
|
|
775
799
|
try {
|
|
776
800
|
// Convert base amount to SY using the exchange rate
|
|
777
|
-
const syAmount = baseAmount /
|
|
801
|
+
const syAmount = baseAmount / marketCalculator.currentSyExchangeRate;
|
|
778
802
|
// Calculate balanced deposit amounts for PT and SY
|
|
779
|
-
const balancedAmounts = calcBalancedDeposit(
|
|
803
|
+
const balancedAmounts = calcBalancedDeposit(marketCalculator, syAmount);
|
|
780
804
|
// If no PT is being bought, return early with just the SY deposit
|
|
781
805
|
if (balancedAmounts.ptToBuy === 0) {
|
|
782
806
|
const lpResult = lpOutForTokensIn({
|
|
783
807
|
syIntent: syAmount,
|
|
784
808
|
ptIntent: 0,
|
|
785
|
-
lpSupply: Number(
|
|
786
|
-
syLiquidity:
|
|
787
|
-
ptLiquidity:
|
|
809
|
+
lpSupply: Number(marketCalculator.state.lpTokenSupply),
|
|
810
|
+
syLiquidity: marketCalculator.liquiditySy,
|
|
811
|
+
ptLiquidity: marketCalculator.liquidityPt,
|
|
788
812
|
});
|
|
789
813
|
return {
|
|
790
814
|
lpOut: lpResult.lpOut,
|
|
@@ -798,8 +822,8 @@ function simulateWrapperProvideLiquidityBase(c, baseAmount) {
|
|
|
798
822
|
};
|
|
799
823
|
}
|
|
800
824
|
// Execute the PT trade using balancedAmounts.ptToBuy with flash swap enabled
|
|
801
|
-
const ptTradeResult =
|
|
802
|
-
console.log("new lp price after trade", ptTradeResult.newMarketCalculator.lpPriceInAsset)
|
|
825
|
+
const ptTradeResult = marketCalculator.calcTradePt(balancedAmounts.ptToBuy, true);
|
|
826
|
+
// console.log("new lp price after trade", ptTradeResult.newMarketCalculator.lpPriceInAsset)
|
|
803
827
|
// Verify there's enough liquidity
|
|
804
828
|
if (ptTradeResult.netTraderAsset === 0 || !ptTradeResult.newMarketCalculator) {
|
|
805
829
|
return null;
|
|
@@ -812,7 +836,7 @@ function simulateWrapperProvideLiquidityBase(c, baseAmount) {
|
|
|
812
836
|
const lpResult = lpOutForTokensIn({
|
|
813
837
|
syIntent: balancedAmounts.syRemainder,
|
|
814
838
|
ptIntent: balancedAmounts.ptToBuy,
|
|
815
|
-
lpSupply: Number(
|
|
839
|
+
lpSupply: Number(marketCalculator.state.lpTokenSupply),
|
|
816
840
|
syLiquidity: newMarketState.liquiditySy,
|
|
817
841
|
ptLiquidity: newMarketState.liquidityPt,
|
|
818
842
|
});
|
|
@@ -828,7 +852,7 @@ function simulateWrapperProvideLiquidityBase(c, baseAmount) {
|
|
|
828
852
|
};
|
|
829
853
|
return result;
|
|
830
854
|
}
|
|
831
|
-
catch
|
|
855
|
+
catch {
|
|
832
856
|
return null;
|
|
833
857
|
}
|
|
834
858
|
}
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/bisect.test.ts
CHANGED
package/src/bisect.ts
CHANGED
|
@@ -28,8 +28,10 @@ export function bisectSearch2(
|
|
|
28
28
|
|
|
29
29
|
// Adjust the search range based on the target
|
|
30
30
|
if (func(lo) * result < 0) {
|
|
31
|
+
// eslint-disable-next-line no-param-reassign
|
|
31
32
|
hi = mid
|
|
32
33
|
} else {
|
|
34
|
+
// eslint-disable-next-line no-param-reassign
|
|
33
35
|
lo = mid
|
|
34
36
|
}
|
|
35
37
|
|
package/src/index.ts
CHANGED
|
@@ -139,7 +139,7 @@ export function tradeFee(netTraderAsset: number, currentFeeRate: number): number
|
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
// buying PT with asset
|
|
142
|
-
// the fee is
|
|
142
|
+
// the fee is positive to mean they pay more asset
|
|
143
143
|
if (netTraderAsset < 0) {
|
|
144
144
|
return Math.abs((netTraderAsset * (1 - currentFeeRate)) / currentFeeRate)
|
|
145
145
|
}
|
|
@@ -269,6 +269,7 @@ export interface MarketMathState {
|
|
|
269
269
|
maxNetBalanceChangeNegativePercentage: number
|
|
270
270
|
maxNetBalanceChangePositivePercentage: number
|
|
271
271
|
windowDurationSeconds: number
|
|
272
|
+
feeTreasurySyBps: number
|
|
272
273
|
}
|
|
273
274
|
|
|
274
275
|
export class MarketCalculator {
|
|
@@ -290,7 +291,7 @@ export class MarketCalculator {
|
|
|
290
291
|
return this.state.currentSyExchangeRate
|
|
291
292
|
}
|
|
292
293
|
|
|
293
|
-
get
|
|
294
|
+
get liquidityAsset(): number {
|
|
294
295
|
return this.liquiditySy * this.currentSyExchangeRate
|
|
295
296
|
}
|
|
296
297
|
|
|
@@ -303,7 +304,7 @@ export class MarketCalculator {
|
|
|
303
304
|
}
|
|
304
305
|
|
|
305
306
|
get proportionPtInAsset(): number {
|
|
306
|
-
return proportionPt({ pt: this.liquidityPt, asset: this.
|
|
307
|
+
return proportionPt({ pt: this.liquidityPt, asset: this.liquidityAsset })
|
|
307
308
|
}
|
|
308
309
|
|
|
309
310
|
/** Proportion of PT in terms of SY - which is useful for computing liquidity add */
|
|
@@ -311,7 +312,7 @@ export class MarketCalculator {
|
|
|
311
312
|
return this.liquidityPt / (this.liquidityPt + this.liquiditySy)
|
|
312
313
|
}
|
|
313
314
|
|
|
314
|
-
/** Calculate the current rate scalar, which increases hyperbolically to
|
|
315
|
+
/** Calculate the current rate scalar, which increases hyperbolically to infinity as time remaining goes to zero */
|
|
315
316
|
get rateScalar(): number {
|
|
316
317
|
return currentRateScalar({
|
|
317
318
|
rateScalarRoot: this.rateScalarRoot,
|
|
@@ -399,6 +400,12 @@ export class MarketCalculator {
|
|
|
399
400
|
// merge the PT & YT into SY
|
|
400
401
|
const sy = ytIn / this.currentSyExchangeRate
|
|
401
402
|
|
|
403
|
+
// Check if there's enough PT liquidity to borrow for the flash swap
|
|
404
|
+
|
|
405
|
+
if (mc.liquidityPt < ytIn * 2) {
|
|
406
|
+
throw new Error("not enough PT liquidity to borrow for the flash swap")
|
|
407
|
+
}
|
|
408
|
+
|
|
402
409
|
// buy back PT with SY
|
|
403
410
|
const tradeRes = mc.calcTradePt(ytIn, true)
|
|
404
411
|
|
|
@@ -520,7 +527,7 @@ export class MarketCalculator {
|
|
|
520
527
|
const currentFeeRate = this.feeRate
|
|
521
528
|
const currentRateScalar = this.rateScalar
|
|
522
529
|
const res = tradePt({
|
|
523
|
-
liquidityAsset: this.
|
|
530
|
+
liquidityAsset: this.liquidityAsset,
|
|
524
531
|
liquidityPt: this.liquidityPt,
|
|
525
532
|
currentRateScalar,
|
|
526
533
|
currentRateAnchor,
|
|
@@ -530,8 +537,8 @@ export class MarketCalculator {
|
|
|
530
537
|
})
|
|
531
538
|
|
|
532
539
|
const newLiquidityPt = this.liquidityPt - netTraderPt
|
|
533
|
-
const
|
|
534
|
-
const newProportionPt = proportionPt({ pt: newLiquidityPt, asset:
|
|
540
|
+
const newLiquidityAsset = this.liquidityAsset - res.netTraderAsset
|
|
541
|
+
const newProportionPt = proportionPt({ pt: newLiquidityPt, asset: newLiquidityAsset })
|
|
535
542
|
const newExchangeRate = exchangeRate({
|
|
536
543
|
proportionPt: newProportionPt,
|
|
537
544
|
rateScalar: currentRateScalar,
|
|
@@ -544,7 +551,7 @@ export class MarketCalculator {
|
|
|
544
551
|
|
|
545
552
|
const newMarketCalculator = new MarketCalculator({
|
|
546
553
|
liquidityPt: newLiquidityPt,
|
|
547
|
-
liquiditySy:
|
|
554
|
+
liquiditySy: newLiquidityAsset / this.currentSyExchangeRate,
|
|
548
555
|
currentSyExchangeRate: this.currentSyExchangeRate,
|
|
549
556
|
lnFeeRateRoot: this.state.lnFeeRateRoot,
|
|
550
557
|
secondsRemaining: this.secondsRemaining,
|
|
@@ -556,6 +563,7 @@ export class MarketCalculator {
|
|
|
556
563
|
maxNetBalanceChangeNegativePercentage: this.state.maxNetBalanceChangeNegativePercentage,
|
|
557
564
|
maxNetBalanceChangePositivePercentage: this.state.maxNetBalanceChangePositivePercentage,
|
|
558
565
|
windowDurationSeconds: this.state.windowDurationSeconds,
|
|
566
|
+
feeTreasurySyBps: this.state.feeTreasurySyBps,
|
|
559
567
|
})
|
|
560
568
|
|
|
561
569
|
return { ...res, newMarketCalculator }
|
|
@@ -634,7 +642,7 @@ export class MarketCalculator {
|
|
|
634
642
|
}
|
|
635
643
|
|
|
636
644
|
totalAssetValue() {
|
|
637
|
-
return this.
|
|
645
|
+
return this.liquidityAsset + this.liquidityPt / this.exchangeRate
|
|
638
646
|
}
|
|
639
647
|
|
|
640
648
|
findRateAnchor() {
|
|
@@ -642,7 +650,7 @@ export class MarketCalculator {
|
|
|
642
650
|
currentRateScalar: this.rateScalar,
|
|
643
651
|
lastLnImpliedRate: this.state.lastLnImpliedRate,
|
|
644
652
|
secondsRemaining: this.secondsRemaining,
|
|
645
|
-
liquidityAsset: this.
|
|
653
|
+
liquidityAsset: this.liquidityAsset,
|
|
646
654
|
liquidityPt: this.liquidityPt,
|
|
647
655
|
})
|
|
648
656
|
}
|
|
@@ -754,6 +762,25 @@ export class MarketCalculator {
|
|
|
754
762
|
|
|
755
763
|
return Number(this.state.lpTokenSupply) === 0 ? 0 : liquidityPoolTvl / Number(this.state.lpTokenSupply)
|
|
756
764
|
}
|
|
765
|
+
|
|
766
|
+
/** Calculate the amount of SY to strip into PT based on the current market state
|
|
767
|
+
* This matches the Rust implementation of calc_strip_amount
|
|
768
|
+
* @param totalAmountSy - The total amount of SY to be processed
|
|
769
|
+
* @returns The amount of SY to strip into PT
|
|
770
|
+
*/
|
|
771
|
+
calcStripAmount(totalAmountSy: number): { syToStrip: number; pyToReceive: number } {
|
|
772
|
+
// Convert inputs to numbers for calculation
|
|
773
|
+
const amtSy = totalAmountSy
|
|
774
|
+
const curSyRate = this.currentSyExchangeRate
|
|
775
|
+
const marketPtLiq = this.liquidityPt
|
|
776
|
+
const marketSyLiq = this.liquiditySy
|
|
777
|
+
|
|
778
|
+
// Calculate strip amount using the same formula as Rust implementation
|
|
779
|
+
const toStrip = (amtSy * marketPtLiq) / (curSyRate * marketSyLiq + marketPtLiq)
|
|
780
|
+
|
|
781
|
+
// Round up to match Rust's ceil_u64 behavior
|
|
782
|
+
return { syToStrip: toStrip, pyToReceive: toStrip * curSyRate }
|
|
783
|
+
}
|
|
757
784
|
}
|
|
758
785
|
|
|
759
786
|
export interface CalculatorTradeResult {
|
|
@@ -834,7 +861,7 @@ export function estimateYtOutForExactAssetIn(c: MarketCalculator, assetIn: numbe
|
|
|
834
861
|
const targetSy = mid / c.currentSyExchangeRate
|
|
835
862
|
const syToBorrow = targetSy - syIn
|
|
836
863
|
|
|
837
|
-
if (syToBorrow > c.liquiditySy) {
|
|
864
|
+
if (syToBorrow + c.calcTradePt(-mid, false).netTraderAsset * c.currentSyExchangeRate > c.liquiditySy) {
|
|
838
865
|
console.log("Not enough liquidity - required SY exceeds available SY")
|
|
839
866
|
return null
|
|
840
867
|
}
|
|
@@ -881,6 +908,7 @@ export function estimateYtOutForExactAssetIn(c: MarketCalculator, assetIn: numbe
|
|
|
881
908
|
"iterations, returning best approximation:",
|
|
882
909
|
bestApproximation,
|
|
883
910
|
)
|
|
911
|
+
|
|
884
912
|
return bestApproximation
|
|
885
913
|
}
|
|
886
914
|
|
|
@@ -932,7 +960,7 @@ export function calcMaxYtOutForPriceImpact(c: MarketCalculator, maxPriceImpactPe
|
|
|
932
960
|
|
|
933
961
|
// Given the current asset amount and target proportion, we can calculate how much PT we can add
|
|
934
962
|
// before hitting our price impact limit
|
|
935
|
-
const currentAsset = c.
|
|
963
|
+
const currentAsset = c.liquidityAsset
|
|
936
964
|
const currentPt = c.liquidityPt
|
|
937
965
|
const currentProportionPt = currentPt / (currentPt + currentAsset)
|
|
938
966
|
|
|
@@ -978,7 +1006,7 @@ export function calcBalancedDeposit(c: MarketCalculator, totalSy: number): { ptT
|
|
|
978
1006
|
}
|
|
979
1007
|
}
|
|
980
1008
|
|
|
981
|
-
|
|
1009
|
+
/**
|
|
982
1010
|
We now account for the fact that executing a PT trade changes the pool state.
|
|
983
1011
|
Instead of using the original pool ratio (c.liquidityPt/c.liquiditySy), we simulate the trade
|
|
984
1012
|
for a candidate pt amount, obtain the new market state via c.calcTradePt(pt, true), and then
|
|
@@ -991,8 +1019,12 @@ export function calcBalancedDeposit(c: MarketCalculator, totalSy: number): { ptT
|
|
|
991
1019
|
const costInSY = -tradeResult.netTraderAsset / c.currentSyExchangeRate
|
|
992
1020
|
const syDeposit = totalSy - costInSY
|
|
993
1021
|
if (syDeposit <= 0) return Infinity
|
|
1022
|
+
|
|
1023
|
+
// Calculate treasury fee using the same logic as Rust
|
|
1024
|
+
// fee_treasury_sy_bps is in basis points (10000 = 100%)
|
|
1025
|
+
const feeInSY = (tradeResult.feeAsset * c.state.feeTreasurySyBps) / 10000 / c.currentSyExchangeRate
|
|
994
1026
|
const newLiquidityPt = tradeResult.newMarketCalculator.liquidityPt
|
|
995
|
-
const newLiquiditySy = tradeResult.newMarketCalculator.liquiditySy
|
|
1027
|
+
const newLiquiditySy = tradeResult.newMarketCalculator.liquiditySy - feeInSY
|
|
996
1028
|
const newRatio = newLiquidityPt / newLiquiditySy
|
|
997
1029
|
return pt / syDeposit - newRatio
|
|
998
1030
|
}
|
|
@@ -1026,12 +1058,12 @@ export function calcBalancedDeposit(c: MarketCalculator, totalSy: number): { ptT
|
|
|
1026
1058
|
}
|
|
1027
1059
|
|
|
1028
1060
|
/** Calculate the amount of LP tokens that will be received for a wrapper_provide_liquidity_base deposit
|
|
1029
|
-
* @param
|
|
1061
|
+
* @param marketCalculator - The market calculator instance
|
|
1030
1062
|
* @param baseAmount - The amount of base tokens being deposited (will be converted to SY using exchange rate)
|
|
1031
1063
|
* @returns The amount of LP tokens that will be received and the PT trade price
|
|
1032
1064
|
*/
|
|
1033
1065
|
export function simulateWrapperProvideLiquidityBase(
|
|
1034
|
-
|
|
1066
|
+
marketCalculator: MarketCalculator,
|
|
1035
1067
|
baseAmount: number,
|
|
1036
1068
|
): {
|
|
1037
1069
|
lpOut: number
|
|
@@ -1045,19 +1077,19 @@ export function simulateWrapperProvideLiquidityBase(
|
|
|
1045
1077
|
} | null {
|
|
1046
1078
|
try {
|
|
1047
1079
|
// Convert base amount to SY using the exchange rate
|
|
1048
|
-
const syAmount = baseAmount /
|
|
1080
|
+
const syAmount = baseAmount / marketCalculator.currentSyExchangeRate
|
|
1049
1081
|
|
|
1050
1082
|
// Calculate balanced deposit amounts for PT and SY
|
|
1051
|
-
const balancedAmounts = calcBalancedDeposit(
|
|
1083
|
+
const balancedAmounts = calcBalancedDeposit(marketCalculator, syAmount)
|
|
1052
1084
|
|
|
1053
1085
|
// If no PT is being bought, return early with just the SY deposit
|
|
1054
1086
|
if (balancedAmounts.ptToBuy === 0) {
|
|
1055
1087
|
const lpResult = lpOutForTokensIn({
|
|
1056
1088
|
syIntent: syAmount,
|
|
1057
1089
|
ptIntent: 0,
|
|
1058
|
-
lpSupply: Number(
|
|
1059
|
-
syLiquidity:
|
|
1060
|
-
ptLiquidity:
|
|
1090
|
+
lpSupply: Number(marketCalculator.state.lpTokenSupply),
|
|
1091
|
+
syLiquidity: marketCalculator.liquiditySy,
|
|
1092
|
+
ptLiquidity: marketCalculator.liquidityPt,
|
|
1061
1093
|
})
|
|
1062
1094
|
|
|
1063
1095
|
return {
|
|
@@ -1073,9 +1105,9 @@ export function simulateWrapperProvideLiquidityBase(
|
|
|
1073
1105
|
}
|
|
1074
1106
|
|
|
1075
1107
|
// Execute the PT trade using balancedAmounts.ptToBuy with flash swap enabled
|
|
1076
|
-
const ptTradeResult =
|
|
1108
|
+
const ptTradeResult = marketCalculator.calcTradePt(balancedAmounts.ptToBuy, true)
|
|
1077
1109
|
|
|
1078
|
-
console.log("new lp price after trade", ptTradeResult.newMarketCalculator.lpPriceInAsset)
|
|
1110
|
+
// console.log("new lp price after trade", ptTradeResult.newMarketCalculator.lpPriceInAsset)
|
|
1079
1111
|
|
|
1080
1112
|
// Verify there's enough liquidity
|
|
1081
1113
|
if (ptTradeResult.netTraderAsset === 0 || !ptTradeResult.newMarketCalculator) {
|
|
@@ -1092,7 +1124,7 @@ export function simulateWrapperProvideLiquidityBase(
|
|
|
1092
1124
|
const lpResult = lpOutForTokensIn({
|
|
1093
1125
|
syIntent: balancedAmounts.syRemainder,
|
|
1094
1126
|
ptIntent: balancedAmounts.ptToBuy,
|
|
1095
|
-
lpSupply: Number(
|
|
1127
|
+
lpSupply: Number(marketCalculator.state.lpTokenSupply),
|
|
1096
1128
|
syLiquidity: newMarketState.liquiditySy,
|
|
1097
1129
|
ptLiquidity: newMarketState.liquidityPt,
|
|
1098
1130
|
})
|
|
@@ -1109,7 +1141,7 @@ export function simulateWrapperProvideLiquidityBase(
|
|
|
1109
1141
|
}
|
|
1110
1142
|
|
|
1111
1143
|
return result
|
|
1112
|
-
} catch
|
|
1144
|
+
} catch {
|
|
1113
1145
|
return null
|
|
1114
1146
|
}
|
|
1115
1147
|
}
|
package/src/math.test.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
import { describe, expect, test } from "@jest/globals"
|
|
2
|
+
|
|
1
3
|
import {
|
|
4
|
+
MarketCalculator,
|
|
2
5
|
currentLnImpliedRate,
|
|
3
6
|
currentRateScalar,
|
|
4
|
-
estimateYtOutForExactAssetIn,
|
|
5
7
|
exchangeRate,
|
|
6
8
|
exchangeRateFromLnImpliedRate,
|
|
7
9
|
feeRate,
|
|
8
10
|
findRateAnchor,
|
|
9
11
|
logit,
|
|
10
|
-
MarketCalculator,
|
|
11
12
|
tradePt,
|
|
12
13
|
} from "./index"
|
|
13
14
|
|
|
@@ -20,6 +21,8 @@ const WINDOW_ARGS = {
|
|
|
20
21
|
windowDurationSeconds: 0,
|
|
21
22
|
}
|
|
22
23
|
|
|
24
|
+
const FEE_TREASURY_SY_BPS_PLACEHOLDER = 0
|
|
25
|
+
|
|
23
26
|
describe("market functions", () => {
|
|
24
27
|
test("logit gets large as proportion = 1", () => {
|
|
25
28
|
expect(logit(0.9999)).toBeGreaterThan(5)
|
|
@@ -247,28 +250,28 @@ describe("market functions", () => {
|
|
|
247
250
|
expect(effectiveExchangeRate).toBeGreaterThan(er)
|
|
248
251
|
})
|
|
249
252
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
})
|
|
253
|
+
// TODO assertions
|
|
254
|
+
// test("sells PT with fee", () => {
|
|
255
|
+
// const rs = currentRateScalar({ rateScalarRoot: 20, secondsRemaining: 3600 * 200 })
|
|
256
|
+
// const currentRateAnchor = 1.1
|
|
257
|
+
// const liquidityPt = 110_000
|
|
258
|
+
// const liquidityAsset = 100_000
|
|
259
|
+
|
|
260
|
+
// const er = exchangeRate({
|
|
261
|
+
// proportionPt: liquidityPt / (liquidityAsset + liquidityPt),
|
|
262
|
+
// rateAnchor: currentRateAnchor,
|
|
263
|
+
// rateScalar: rs,
|
|
264
|
+
// })
|
|
265
|
+
|
|
266
|
+
// const tr = tradePt({
|
|
267
|
+
// liquidityPt,
|
|
268
|
+
// liquidityAsset,
|
|
269
|
+
// currentRateScalar: rs,
|
|
270
|
+
// currentRateAnchor: 1.1,
|
|
271
|
+
// currentFeeRate: 1.01,
|
|
272
|
+
// netTraderPt: -10,
|
|
273
|
+
// })
|
|
274
|
+
// })
|
|
272
275
|
|
|
273
276
|
test("exchange rate", () => {
|
|
274
277
|
const rateScalar = 20
|
|
@@ -321,14 +324,15 @@ describe("market calculator", () => {
|
|
|
321
324
|
lnFeeRateRoot: Math.log(1.01),
|
|
322
325
|
secondsRemaining: 3600 * 24 * 300,
|
|
323
326
|
rateScalarRoot: 20,
|
|
327
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
324
328
|
...WINDOW_ARGS,
|
|
325
329
|
})
|
|
326
330
|
|
|
327
|
-
expect(mc.
|
|
331
|
+
expect(mc.liquidityAsset).toBe(100)
|
|
328
332
|
|
|
329
333
|
mc.state.currentSyExchangeRate = 1.5
|
|
330
334
|
|
|
331
|
-
expect(mc.
|
|
335
|
+
expect(mc.liquidityAsset).toBe(150)
|
|
332
336
|
})
|
|
333
337
|
|
|
334
338
|
test("trading PT creates a new MarketCalculator which has the right exchange rate", () => {
|
|
@@ -342,6 +346,7 @@ describe("market calculator", () => {
|
|
|
342
346
|
lnFeeRateRoot: Math.log(1),
|
|
343
347
|
secondsRemaining: 3600 * 24 * 365,
|
|
344
348
|
rateScalarRoot: 20,
|
|
349
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
345
350
|
...WINDOW_ARGS,
|
|
346
351
|
})
|
|
347
352
|
|
|
@@ -360,7 +365,7 @@ describe("market calculator", () => {
|
|
|
360
365
|
expect(tr1.newMarketCalculator.liquidityPt + tr1.netTraderPt).toBe(100)
|
|
361
366
|
|
|
362
367
|
// the market has has the liquidity of asset equal to 100 plus the change to trader (a negative number)
|
|
363
|
-
expect(tr1.newMarketCalculator.
|
|
368
|
+
expect(tr1.newMarketCalculator.liquidityAsset + tr1.netTraderAsset).toBe(100)
|
|
364
369
|
|
|
365
370
|
// now test selling pt
|
|
366
371
|
const tr2 = mc.calcTradePt(-1)
|
|
@@ -382,6 +387,7 @@ describe("market calculator", () => {
|
|
|
382
387
|
lnFeeRateRoot: Math.log(1.01),
|
|
383
388
|
secondsRemaining: 3600 * 24 * 365,
|
|
384
389
|
rateScalarRoot: 20,
|
|
390
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
385
391
|
...WINDOW_ARGS,
|
|
386
392
|
})
|
|
387
393
|
|
|
@@ -401,6 +407,7 @@ describe("market calculator", () => {
|
|
|
401
407
|
lnFeeRateRoot: Math.log(1),
|
|
402
408
|
secondsRemaining: 3600 * 24 * 365,
|
|
403
409
|
rateScalarRoot: 20,
|
|
410
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
404
411
|
...WINDOW_ARGS,
|
|
405
412
|
})
|
|
406
413
|
|
|
@@ -429,6 +436,7 @@ describe("market calculator", () => {
|
|
|
429
436
|
lnFeeRateRoot: Math.log(1),
|
|
430
437
|
secondsRemaining: 3600 * 24 * 365,
|
|
431
438
|
rateScalarRoot: 20,
|
|
439
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
432
440
|
...WINDOW_ARGS,
|
|
433
441
|
})
|
|
434
442
|
|
|
@@ -464,6 +472,7 @@ describe("market calculator", () => {
|
|
|
464
472
|
lnFeeRateRoot: Math.log(1.01),
|
|
465
473
|
secondsRemaining: 3600 * 24 * 365,
|
|
466
474
|
rateScalarRoot: 20,
|
|
475
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
467
476
|
...WINDOW_ARGS,
|
|
468
477
|
})
|
|
469
478
|
|
|
@@ -497,6 +506,7 @@ describe("market calculator", () => {
|
|
|
497
506
|
lnFeeRateRoot: Math.log(1.01),
|
|
498
507
|
secondsRemaining: 3600 * 24 * 365,
|
|
499
508
|
rateScalarRoot: 20,
|
|
509
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
500
510
|
...WINDOW_ARGS,
|
|
501
511
|
})
|
|
502
512
|
|
|
@@ -530,6 +540,7 @@ describe("market calculator", () => {
|
|
|
530
540
|
lnFeeRateRoot: Math.log(1),
|
|
531
541
|
secondsRemaining: 3600 * 24 * 365,
|
|
532
542
|
rateScalarRoot: 20,
|
|
543
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
533
544
|
...WINDOW_ARGS,
|
|
534
545
|
})
|
|
535
546
|
|
|
@@ -558,6 +569,7 @@ describe("market calculator", () => {
|
|
|
558
569
|
lnFeeRateRoot: Math.log(1),
|
|
559
570
|
secondsRemaining: 3600 * 24 * 365,
|
|
560
571
|
rateScalarRoot: 20,
|
|
572
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
561
573
|
...WINDOW_ARGS,
|
|
562
574
|
})
|
|
563
575
|
|
|
@@ -584,6 +596,7 @@ describe("market calculator", () => {
|
|
|
584
596
|
lnFeeRateRoot: Math.log(1),
|
|
585
597
|
secondsRemaining: 3600 * 24 * 365,
|
|
586
598
|
rateScalarRoot: 20,
|
|
599
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
587
600
|
...WINDOW_ARGS,
|
|
588
601
|
})
|
|
589
602
|
|
|
@@ -602,6 +615,7 @@ describe("market calculator", () => {
|
|
|
602
615
|
lnFeeRateRoot: Math.log(1),
|
|
603
616
|
secondsRemaining: 3600 * 24 * 365,
|
|
604
617
|
rateScalarRoot: 20,
|
|
618
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
605
619
|
...WINDOW_ARGS,
|
|
606
620
|
})
|
|
607
621
|
|
|
@@ -624,6 +638,7 @@ describe("market calculator", () => {
|
|
|
624
638
|
lnFeeRateRoot: Math.log(1),
|
|
625
639
|
secondsRemaining: 3600 * 24 * 365,
|
|
626
640
|
rateScalarRoot: 20,
|
|
641
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
627
642
|
...WINDOW_ARGS,
|
|
628
643
|
})
|
|
629
644
|
|
|
@@ -648,6 +663,7 @@ describe("market calculator", () => {
|
|
|
648
663
|
lnFeeRateRoot: Math.log(1),
|
|
649
664
|
secondsRemaining: 3600 * 24 * 365,
|
|
650
665
|
rateScalarRoot: 20,
|
|
666
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
651
667
|
...WINDOW_ARGS,
|
|
652
668
|
})
|
|
653
669
|
|
|
@@ -666,6 +682,7 @@ describe("market calculator", () => {
|
|
|
666
682
|
lnFeeRateRoot: Math.log(1),
|
|
667
683
|
secondsRemaining: 3600 * 24 * 365,
|
|
668
684
|
rateScalarRoot: 20,
|
|
685
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
669
686
|
...WINDOW_ARGS,
|
|
670
687
|
})
|
|
671
688
|
|
|
@@ -683,6 +700,7 @@ describe("market calculator", () => {
|
|
|
683
700
|
lnFeeRateRoot: Math.log(1),
|
|
684
701
|
secondsRemaining: 3600 * 24 * 365,
|
|
685
702
|
rateScalarRoot: 20,
|
|
703
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
686
704
|
...WINDOW_ARGS,
|
|
687
705
|
})
|
|
688
706
|
|
|
@@ -705,7 +723,7 @@ describe("market calculator", () => {
|
|
|
705
723
|
const ytIn2 = 10
|
|
706
724
|
const res2 = mc.simSellYt(ytIn2)
|
|
707
725
|
expect(res2).not.toBeNull()
|
|
708
|
-
const {
|
|
726
|
+
const { assetOut: assetOut2 } = res2!
|
|
709
727
|
const ytPrice2 = assetOut2 / ytIn2
|
|
710
728
|
// the price of YT should be lower with selling 10 than 1
|
|
711
729
|
// because of the price impact
|
|
@@ -723,6 +741,7 @@ describe("market calculator", () => {
|
|
|
723
741
|
lnFeeRateRoot: Math.log(1),
|
|
724
742
|
secondsRemaining: 3600 * 24 * 180,
|
|
725
743
|
rateScalarRoot: 20,
|
|
744
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
726
745
|
...WINDOW_ARGS,
|
|
727
746
|
})
|
|
728
747
|
|
|
@@ -754,6 +773,7 @@ describe("market calculator", () => {
|
|
|
754
773
|
lnFeeRateRoot: Math.log(1),
|
|
755
774
|
secondsRemaining: 3600 * 24 * 365,
|
|
756
775
|
rateScalarRoot: 20,
|
|
776
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
757
777
|
...WINDOW_ARGS,
|
|
758
778
|
})
|
|
759
779
|
|
|
@@ -774,6 +794,7 @@ describe("market calculator", () => {
|
|
|
774
794
|
lnFeeRateRoot: Math.log(1),
|
|
775
795
|
secondsRemaining: 3600 * 24 * 365,
|
|
776
796
|
rateScalarRoot: 20,
|
|
797
|
+
feeTreasurySyBps: FEE_TREASURY_SY_BPS_PLACEHOLDER,
|
|
777
798
|
...WINDOW_ARGS,
|
|
778
799
|
})
|
|
779
800
|
|