@exponent-labs/market-math 0.1.7 → 0.9.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/index.d.ts CHANGED
@@ -36,14 +36,17 @@ export declare function findRateAnchor({ currentRateScalar, lastLnImpliedRate, s
36
36
  /** Calculate fee on asset */
37
37
  export declare function tradeFee(netTraderAsset: number, currentFeeRate: number): number;
38
38
  /** Calculate result of trading pt */
39
- export declare function tradePt({ liquidityPt, liquidityAsset, currentRateScalar, currentRateAnchor, currentFeeRate, netTraderPt, isCurrentFlashSwap, }: {
39
+ export declare function tradePt({ liquidityPt, liquidityAsset, currentRateScalar, currentRateAnchor, currentFeeRate, netTraderPt, syExchangeRate, feeTreasurySyBps, isCurrentFlashSwap, skipFees, }: {
40
40
  liquidityPt: number;
41
41
  liquidityAsset: number;
42
42
  currentRateScalar: number;
43
43
  currentRateAnchor: number;
44
44
  currentFeeRate: number;
45
45
  netTraderPt: number;
46
+ syExchangeRate: number;
47
+ feeTreasurySyBps: number;
46
48
  isCurrentFlashSwap?: boolean;
49
+ skipFees?: boolean;
47
50
  }): TradeResult;
48
51
  export interface LiquidityAdd {
49
52
  syIn: number;
@@ -66,6 +69,7 @@ export interface TradeResult {
66
69
  feeAsset: number;
67
70
  netTraderAsset: number;
68
71
  netTraderPt: number;
72
+ treasuryFeeAmount: number;
69
73
  }
70
74
  export interface MarketMathState {
71
75
  liquiditySy: number;
@@ -132,7 +136,16 @@ export declare class MarketCalculator {
132
136
  * If the trade is impossible, return null
133
137
  * This can happen if there is not enough liquidity to sell YT for the amount of asset desired
134
138
  */
135
- simSellYt(ytIn: number): {
139
+ simSellYt(ytIn: number, skipFees?: boolean): {
140
+ assetOut: number;
141
+ feeInAsset: number;
142
+ newMarketCalculator: MarketCalculator;
143
+ } | null;
144
+ /**
145
+ * @param ytIn - YT amount in lamports
146
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
147
+ */
148
+ simSellYtWithImpliedApy(ytIn: number, impliedApy: number, skipFees?: boolean): {
136
149
  assetOut: number;
137
150
  feeInAsset: number;
138
151
  newMarketCalculator: MarketCalculator;
@@ -140,10 +153,27 @@ export declare class MarketCalculator {
140
153
  /** Calculate the amount of asset out for selling YT */
141
154
  estimateYtInForExactBaseOut(assetOut: number): number | null;
142
155
  /** Calculate the amount of asset to pay for buying YT */
143
- calcBuyYt(ytOut: number): number | null;
156
+ calcBuyYt(ytOut: number, skipFees?: boolean): number | null;
144
157
  /** Calculate the trade result for trading PT */
145
- calcTradePt(netTraderPt: number, isCurrentFlashSwap?: boolean): CalculatorTradeResult;
158
+ calcTradePt(netTraderPt: number, isCurrentFlashSwap?: boolean, skipFees?: boolean): CalculatorTradeResult;
146
159
  estimateNetPtForExactNetAsset(netTraderAsset: number): number | null;
160
+ /**
161
+ * @param netAssetIn - Net asset in lamports. Trade direction:
162
+ * - Positive: selling PT for underlying asset
163
+ * - Negative: buying PT with underlying asset
164
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
165
+ */
166
+ estimateNetPtForExactNetAssetWithImpliedApy(netAssetIn: number, impliedApy: number, skipFees?: boolean): number | null;
167
+ /**
168
+ * @param ptAmount - Amount of PT to sell in lamports
169
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
170
+ */
171
+ estimateAssetOutForPtInWithImpliedApy(ptAmount: number, impliedApy: number, skipFees?: boolean): number | null;
172
+ /**
173
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
174
+ * @returns A new MarketCalculator instance with the implied APY
175
+ */
176
+ withImpliedApy(impliedApy: number): MarketCalculator;
147
177
  simulateClassicLpWithdraw({ lpAmount }: {
148
178
  lpAmount: number;
149
179
  }): {
@@ -156,8 +186,16 @@ export declare class MarketCalculator {
156
186
  assetOut: number;
157
187
  };
158
188
  /** Deprecated - bad name - use estimateNetPtForExactNetAsset */
159
- calcExactPtForNetAsset(netTraderAsset: number): number | null;
160
- estimateYtOutForExactAssetIn(assetIn: number): {
189
+ calcExactPtForNetAsset(netTraderAsset: number, skipFees?: boolean): number | null;
190
+ estimateYtOutForExactAssetIn(assetIn: number, skipFees?: boolean): {
191
+ ytOut: number;
192
+ feeInAsset: number;
193
+ } | null;
194
+ /**
195
+ * @param assetIn - Asset amount in lamports
196
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
197
+ */
198
+ estimateYtOutForExactAssetInWithImpliedApy(assetIn: number, impliedApy: number, skipFees?: boolean): {
161
199
  ytOut: number;
162
200
  feeInAsset: number;
163
201
  } | null;
@@ -201,10 +239,11 @@ export interface CalculatorTradeResult {
201
239
  feeAsset: number;
202
240
  netTraderAsset: number;
203
241
  netTraderPt: number;
242
+ treasuryFeeAmount: number;
204
243
  newMarketCalculator: MarketCalculator;
205
244
  }
206
- export declare function calcExactPtForNetAsset(c: MarketCalculator, netTraderAsset: number): number | null;
207
- export declare function estimateYtOutForExactAssetIn(c: MarketCalculator, assetIn: number): number | null;
245
+ export declare function calcExactPtForNetAsset(c: MarketCalculator, netTraderAsset: number, skipFees?: boolean): number | null;
246
+ export declare function estimateYtOutForExactAssetIn(c: MarketCalculator, assetIn: number, skipFees?: boolean): number | null;
208
247
  export declare function calcYieldExposureWithAssetIn(c: MarketCalculator, assetIn: number): number;
209
248
  export declare function calcWithdrawLiquidity(c: MarketCalculator, lpAmount: number): {
210
249
  syOut: number;
@@ -247,6 +286,7 @@ export declare function simulateWrapperProvideLiquidityBase(marketCalculator: Ma
247
286
  lpOut: number;
248
287
  ptTradePrice: number;
249
288
  feeAsset: number;
289
+ treasuryFeeAmount: number;
250
290
  assetSpendOnTrade: number;
251
291
  assetDeposited: number;
252
292
  ptToBuy: number;
package/build/index.js CHANGED
@@ -93,7 +93,7 @@ function tradeFee(netTraderAsset, currentFeeRate) {
93
93
  }
94
94
  exports.tradeFee = tradeFee;
95
95
  /** Calculate result of trading pt */
96
- function tradePt({ liquidityPt, liquidityAsset, currentRateScalar, currentRateAnchor, currentFeeRate, netTraderPt, isCurrentFlashSwap = false, }) {
96
+ function tradePt({ liquidityPt, liquidityAsset, currentRateScalar, currentRateAnchor, currentFeeRate, netTraderPt, syExchangeRate, feeTreasurySyBps, isCurrentFlashSwap = false, skipFees = false, }) {
97
97
  // if netTradePt is positive, the trader is *buying* pt
98
98
  const newPt = liquidityPt - netTraderPt;
99
99
  const proportionPt = newPt / (liquidityPt + liquidityAsset);
@@ -111,17 +111,22 @@ function tradePt({ liquidityPt, liquidityAsset, currentRateScalar, currentRateAn
111
111
  const ytValue = (1 - 1 / rate) * Math.abs(netTraderPt);
112
112
  // Use ytValue for fee calculation during flash swaps, otherwise use preFeeNetTraderAsset
113
113
  const feeBase = isCurrentFlashSwap ? ytValue : preFeeNetTraderAsset;
114
- const feeAsset = tradeFee(feeBase, currentFeeRate);
114
+ const feeAsset = skipFees ? 0 : tradeFee(feeBase, currentFeeRate);
115
115
  // if netTraderAsset is negative, the user is buying PT
116
116
  // and the fee is positive, meaning they pay more asset
117
117
  // subtracting the fee from the negative netPreFeeTraderAsset increases its magnitude
118
118
  // if netTraderAsset is positive, the user is selling PT
119
119
  // and the fee is positive, meaning they receive less asset
120
120
  const netTraderAsset = preFeeNetTraderAsset - feeAsset;
121
+ // Convert fee to SY units (matching Rust: sy_fee_from_asset_fee)
122
+ const syFee = Math.floor(feeAsset / syExchangeRate);
123
+ // Calculate treasury fee amount (matching Rust implementation)
124
+ const treasuryFeeAmount = Math.floor((syFee * feeTreasurySyBps) / 10_000);
121
125
  return {
122
126
  feeAsset,
123
127
  netTraderAsset,
124
128
  netTraderPt,
129
+ treasuryFeeAmount,
125
130
  };
126
131
  }
127
132
  exports.tradePt = tradePt;
@@ -266,7 +271,7 @@ class MarketCalculator {
266
271
  * If the trade is impossible, return null
267
272
  * This can happen if there is not enough liquidity to sell YT for the amount of asset desired
268
273
  */
269
- simSellYt(ytIn) {
274
+ simSellYt(ytIn, skipFees = false) {
270
275
  try {
271
276
  // first, clone the market calculator, so as not to modify the original
272
277
  const mc = this.clone();
@@ -277,7 +282,7 @@ class MarketCalculator {
277
282
  throw new Error("not enough PT liquidity to borrow for the flash swap");
278
283
  }
279
284
  // buy back PT with SY
280
- const tradeRes = mc.calcTradePt(ytIn, true);
285
+ const tradeRes = mc.calcTradePt(ytIn, true, skipFees);
281
286
  // negate the result to get the amount of asset spent
282
287
  const assetSpend = -tradeRes.netTraderAsset;
283
288
  // capture the mutated market calculator
@@ -305,6 +310,14 @@ class MarketCalculator {
305
310
  return null;
306
311
  }
307
312
  }
313
+ /**
314
+ * @param ytIn - YT amount in lamports
315
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
316
+ */
317
+ simSellYtWithImpliedApy(ytIn, impliedApy, skipFees = false) {
318
+ const impliedCalculator = this.withImpliedApy(impliedApy);
319
+ return impliedCalculator.simSellYt(ytIn, skipFees);
320
+ }
308
321
  /** Calculate the amount of asset out for selling YT */
309
322
  estimateYtInForExactBaseOut(assetOut) {
310
323
  // find an amount of asset out that would balance the equation
@@ -327,7 +340,7 @@ class MarketCalculator {
327
340
  return (0, bisect_1.bisectSearch2)(fn, lo, hi, 0.0000001);
328
341
  }
329
342
  /** Calculate the amount of asset to pay for buying YT */
330
- calcBuyYt(ytOut) {
343
+ calcBuyYt(ytOut, skipFees = false) {
331
344
  // flash swap for buying YT with assetIn
332
345
  const fn = (assetIn) => {
333
346
  const syIn = assetIn / this.currentSyExchangeRate;
@@ -352,7 +365,7 @@ class MarketCalculator {
352
365
  }
353
366
  // sell PT to the market for SY
354
367
  // the trader sells exactly as much PT as they want to buy YT
355
- const tradeRes = newMarketCalculator.calcTradePt(-ytOut, true);
368
+ const tradeRes = newMarketCalculator.calcTradePt(-ytOut, true, skipFees);
356
369
  // The amount of asset returned plus the initial asset in must equal
357
370
  // the amount of asset borrowed
358
371
  const returnedAsset = tradeRes.netTraderAsset;
@@ -365,7 +378,7 @@ class MarketCalculator {
365
378
  return assetIn;
366
379
  }
367
380
  /** Calculate the trade result for trading PT */
368
- calcTradePt(netTraderPt, isCurrentFlashSwap = false) {
381
+ calcTradePt(netTraderPt, isCurrentFlashSwap = false, skipFees = false) {
369
382
  const currentRateAnchor = this.findRateAnchor();
370
383
  const currentFeeRate = this.feeRate;
371
384
  const currentRateScalar = this.rateScalar;
@@ -376,11 +389,19 @@ class MarketCalculator {
376
389
  currentRateAnchor,
377
390
  currentFeeRate,
378
391
  netTraderPt,
392
+ syExchangeRate: this.currentSyExchangeRate,
393
+ feeTreasurySyBps: this.state.feeTreasurySyBps,
379
394
  isCurrentFlashSwap,
395
+ skipFees,
380
396
  });
381
397
  const newLiquidityPt = this.liquidityPt - netTraderPt;
382
398
  const newLiquidityAsset = this.liquidityAsset - res.netTraderAsset;
383
- const newProportionPt = proportionPt({ pt: newLiquidityPt, asset: newLiquidityAsset });
399
+ // Deduct treasury fee from SY balance (matching Rust: self.dec_sy_balance(treasury_fee_amount))
400
+ const newLiquiditySy = newLiquidityAsset / this.currentSyExchangeRate - res.treasuryFeeAmount;
401
+ // Calculate exchange rate and ln implied rate AFTER treasury fee deduction
402
+ // (matching Rust: uses self.asset_balance() after dec_sy_balance)
403
+ const newLiquidityAssetAfterFee = newLiquiditySy * this.currentSyExchangeRate;
404
+ const newProportionPt = proportionPt({ pt: newLiquidityPt, asset: newLiquidityAssetAfterFee });
384
405
  const newExchangeRate = exchangeRate({
385
406
  proportionPt: newProportionPt,
386
407
  rateScalar: currentRateScalar,
@@ -392,7 +413,7 @@ class MarketCalculator {
392
413
  });
393
414
  const newMarketCalculator = new MarketCalculator({
394
415
  liquidityPt: newLiquidityPt,
395
- liquiditySy: newLiquidityAsset / this.currentSyExchangeRate,
416
+ liquiditySy: newLiquiditySy,
396
417
  currentSyExchangeRate: this.currentSyExchangeRate,
397
418
  lnFeeRateRoot: this.state.lnFeeRateRoot,
398
419
  secondsRemaining: this.secondsRemaining,
@@ -411,6 +432,52 @@ class MarketCalculator {
411
432
  estimateNetPtForExactNetAsset(netTraderAsset) {
412
433
  return this.calcExactPtForNetAsset(netTraderAsset);
413
434
  }
435
+ /**
436
+ * @param netAssetIn - Net asset in lamports. Trade direction:
437
+ * - Positive: selling PT for underlying asset
438
+ * - Negative: buying PT with underlying asset
439
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
440
+ */
441
+ estimateNetPtForExactNetAssetWithImpliedApy(netAssetIn, impliedApy, skipFees = false) {
442
+ const impliedCalculator = this.withImpliedApy(impliedApy);
443
+ return impliedCalculator.calcExactPtForNetAsset(netAssetIn, skipFees);
444
+ }
445
+ /**
446
+ * @param ptAmount - Amount of PT to sell in lamports
447
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
448
+ */
449
+ estimateAssetOutForPtInWithImpliedApy(ptAmount, impliedApy, skipFees = false) {
450
+ const impliedCalculator = this.withImpliedApy(impliedApy);
451
+ try {
452
+ const tradeResult = impliedCalculator.calcTradePt(-ptAmount, false, skipFees);
453
+ return tradeResult.netTraderAsset;
454
+ }
455
+ catch (error) {
456
+ return null;
457
+ }
458
+ }
459
+ /**
460
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
461
+ * @returns A new MarketCalculator instance with the implied APY
462
+ */
463
+ withImpliedApy(impliedApy) {
464
+ // Calculate what ptPriceInAsset would give us the target APY
465
+ const yearSeconds = 365 * 24 * 3600;
466
+ const rateMultiplier = yearSeconds / this.secondsRemaining;
467
+ const targetPtPriceInAsset = rateMultiplier / (impliedApy + rateMultiplier);
468
+ // Convert ptPriceInAsset to exchangeRate (asset to PT)
469
+ // ptPriceInAsset = 1 / exchangeRate, so exchangeRate = 1 / ptPriceInAsset
470
+ const targetExchangeRate = 1 / targetPtPriceInAsset;
471
+ const targetLnImpliedRate = currentLnImpliedRate({
472
+ exchangeRate: targetExchangeRate,
473
+ secondsRemaining: this.secondsRemaining,
474
+ });
475
+ const newState = {
476
+ ...this.state,
477
+ lastLnImpliedRate: targetLnImpliedRate,
478
+ };
479
+ return new MarketCalculator(newState);
480
+ }
414
481
  simulateClassicLpWithdraw({ lpAmount }) {
415
482
  const ptInPool = this.state.liquidityPt;
416
483
  const syInPool = this.state.liquiditySy;
@@ -436,17 +503,17 @@ class MarketCalculator {
436
503
  };
437
504
  }
438
505
  /** Deprecated - bad name - use estimateNetPtForExactNetAsset */
439
- calcExactPtForNetAsset(netTraderAsset) {
506
+ calcExactPtForNetAsset(netTraderAsset, skipFees = false) {
440
507
  if (netTraderAsset === 0) {
441
508
  return 0;
442
509
  }
443
- return calcExactPtForNetAsset(this, netTraderAsset);
510
+ return calcExactPtForNetAsset(this, netTraderAsset, skipFees);
444
511
  }
445
- estimateYtOutForExactAssetIn(assetIn) {
512
+ estimateYtOutForExactAssetIn(assetIn, skipFees = false) {
446
513
  if (assetIn === 0) {
447
514
  return { ytOut: 0, feeInAsset: 0 };
448
515
  }
449
- const ytOut = estimateYtOutForExactAssetIn(this, assetIn);
516
+ const ytOut = estimateYtOutForExactAssetIn(this, assetIn, skipFees);
450
517
  const syIn = assetIn / this.currentSyExchangeRate;
451
518
  const targetSy = ytOut / this.currentSyExchangeRate;
452
519
  const syToBorrow = targetSy - syIn;
@@ -454,6 +521,14 @@ class MarketCalculator {
454
521
  const feeInAsset = tradeFee((1 - 1 / this.exchangeRate) * syToBorrowInAsset, this.feeRate);
455
522
  return { ytOut, feeInAsset };
456
523
  }
524
+ /**
525
+ * @param assetIn - Asset amount in lamports
526
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
527
+ */
528
+ estimateYtOutForExactAssetInWithImpliedApy(assetIn, impliedApy, skipFees = false) {
529
+ const impliedCalculator = this.withImpliedApy(impliedApy);
530
+ return impliedCalculator.estimateYtOutForExactAssetIn(assetIn, skipFees);
531
+ }
457
532
  exchangeRateFromLnImpliedRate(lnImpliedRate) {
458
533
  return exchangeRateFromLnImpliedRate({
459
534
  lnImpliedRate,
@@ -575,22 +650,22 @@ class MarketCalculator {
575
650
  }
576
651
  }
577
652
  exports.MarketCalculator = MarketCalculator;
578
- function calcExactPtForNetAsset(c, netTraderAsset) {
653
+ function calcExactPtForNetAsset(c, netTraderAsset, skipFees = false) {
579
654
  const isBuyPt = netTraderAsset < 0;
580
655
  if (isBuyPt) {
581
656
  // negate netTraderAsset, because it is negative
582
657
  // the search function expects a positive assetIn
583
- return estimatePtOutForExactAssetIn(c, -netTraderAsset);
658
+ return estimatePtOutForExactAssetIn(c, -netTraderAsset, skipFees);
584
659
  }
585
660
  else {
586
- return estimatePtInForExactAssetOut(c, netTraderAsset);
661
+ return estimatePtInForExactAssetOut(c, netTraderAsset, skipFees);
587
662
  }
588
663
  }
589
664
  exports.calcExactPtForNetAsset = calcExactPtForNetAsset;
590
- function estimatePtOutForExactAssetIn(c, assetIn) {
665
+ function estimatePtOutForExactAssetIn(c, assetIn, skipFees = false) {
591
666
  const fn = (pt) => {
592
667
  try {
593
- const res = c.calcTradePt(pt, false);
668
+ const res = c.calcTradePt(pt, false, skipFees);
594
669
  const assetSpend = -res.netTraderAsset;
595
670
  return assetSpend - assetIn;
596
671
  }
@@ -604,10 +679,10 @@ function estimatePtOutForExactAssetIn(c, assetIn) {
604
679
  const hi = c.liquidityPt * 0.9999999;
605
680
  return (0, bisect_1.bisectSearch2)(fn, lo, hi, 0.0000001);
606
681
  }
607
- function estimatePtInForExactAssetOut(c, assetOut) {
682
+ function estimatePtInForExactAssetOut(c, assetOut, skipFees = false) {
608
683
  const fn = (pt) => {
609
684
  // negate PT to signal that the trader is selling PT
610
- const res = c.calcTradePt(-pt, false);
685
+ const res = c.calcTradePt(-pt, false, skipFees);
611
686
  // for very large sales of PT in, the trade will fail by returning 0 asset
612
687
  // signal this by returning a high value
613
688
  if (res.netTraderPt < 0 && res.netTraderAsset === 0) {
@@ -622,11 +697,13 @@ function estimatePtInForExactAssetOut(c, assetOut) {
622
697
  const hi = pricePtInAsset * assetOut * 2;
623
698
  return (0, bisect_1.bisectSearch2)(fn, lo, hi, 0.0000001);
624
699
  }
625
- function estimateYtOutForExactAssetIn(c, assetIn) {
700
+ function estimateYtOutForExactAssetIn(c, assetIn, skipFees = false) {
626
701
  const ytToAssetExchangeRate = Math.min(1 - 1 / c.exchangeRate, 1);
627
702
  let lo = 0;
628
703
  let hi = assetIn / ytToAssetExchangeRate;
629
- console.log("Starting search with bounds:", { lo, hi, assetIn });
704
+ if (typeof window !== "undefined") {
705
+ console.log("Starting search with bounds:", { lo, hi, assetIn });
706
+ }
630
707
  // Manual binary search with detailed logging
631
708
  let iterations = 0;
632
709
  const MAX_ITERATIONS = 100;
@@ -635,22 +712,16 @@ function estimateYtOutForExactAssetIn(c, assetIn) {
635
712
  let bestDiff = Infinity;
636
713
  while (iterations < MAX_ITERATIONS) {
637
714
  const mid = (lo + hi) / 2;
638
- const assetInForYtOut = c.calcBuyYt(mid);
715
+ const assetInForYtOut = c.calcBuyYt(mid, skipFees);
639
716
  const syIn = assetIn / c.currentSyExchangeRate;
640
717
  const targetSy = mid / c.currentSyExchangeRate;
641
718
  const syToBorrow = targetSy - syIn;
642
- if (syToBorrow + c.calcTradePt(-mid, false).netTraderAsset * c.currentSyExchangeRate > c.liquiditySy) {
643
- console.error("Not enough liquidity - required SY exceeds available SY");
719
+ if (syToBorrow + c.calcTradePt(-mid, false).netTraderAsset / c.currentSyExchangeRate > c.liquiditySy) {
720
+ if (typeof window !== "undefined") {
721
+ console.error("Not enough liquidity - required SY exceeds available SY");
722
+ }
644
723
  return null;
645
724
  }
646
- console.log("Iteration", iterations, {
647
- lo,
648
- hi,
649
- mid,
650
- assetInForYtOut,
651
- targetAssetIn: assetIn,
652
- diff: assetInForYtOut ? assetInForYtOut - assetIn : "null",
653
- });
654
725
  // Track best approximation
655
726
  if (assetInForYtOut !== null) {
656
727
  const currentDiff = Math.abs(assetInForYtOut - assetIn);
@@ -661,7 +732,9 @@ function estimateYtOutForExactAssetIn(c, assetIn) {
661
732
  }
662
733
  // If we found an exact match or we're close enough
663
734
  if (assetInForYtOut !== null && Math.abs(assetInForYtOut - assetIn) < EPSILON) {
664
- console.log("Found solution:", { ytOut: mid, assetIn: assetInForYtOut });
735
+ if (typeof window !== "undefined") {
736
+ console.log("Found solution:", { ytOut: mid, assetIn: assetInForYtOut });
737
+ }
665
738
  return mid;
666
739
  }
667
740
  // If calcBuyYt returns null or the asset amount is too high,
@@ -775,11 +848,9 @@ function calcBalancedDeposit(c, totalSy) {
775
848
  const syDeposit = totalSy - costInSY;
776
849
  if (syDeposit <= 0)
777
850
  return Infinity;
778
- // Calculate treasury fee using the same logic as Rust
779
- // fee_treasury_sy_bps is in basis points (10000 = 100%)
780
- const feeInSY = (tradeResult.feeAsset * c.state.feeTreasurySyBps) / 10000 / c.currentSyExchangeRate;
851
+ // Treasury fee is already deducted in tradeResult.newMarketCalculator.liquiditySy
781
852
  const newLiquidityPt = tradeResult.newMarketCalculator.liquidityPt;
782
- const newLiquiditySy = tradeResult.newMarketCalculator.liquiditySy - feeInSY;
853
+ const newLiquiditySy = tradeResult.newMarketCalculator.liquiditySy;
783
854
  const newRatio = newLiquidityPt / newLiquiditySy;
784
855
  return pt / syDeposit - newRatio;
785
856
  }
@@ -834,6 +905,7 @@ function simulateWrapperProvideLiquidityBase(marketCalculator, baseAmount) {
834
905
  lpOut: lpResult.lpOut,
835
906
  ptTradePrice: 0,
836
907
  feeAsset: 0,
908
+ treasuryFeeAmount: 0,
837
909
  assetSpendOnTrade: 0,
838
910
  assetDeposited: 0,
839
911
  ptToBuy: 0,
@@ -864,6 +936,7 @@ function simulateWrapperProvideLiquidityBase(marketCalculator, baseAmount) {
864
936
  lpOut: lpResult.lpOut,
865
937
  ptTradePrice,
866
938
  feeAsset: ptTradeResult.feeAsset,
939
+ treasuryFeeAmount: ptTradeResult.treasuryFeeAmount,
867
940
  assetSpendOnTrade: -ptTradeResult.netTraderAsset,
868
941
  assetDeposited: baseAmount + ptTradeResult.netTraderAsset,
869
942
  ptToBuy: balancedAmounts.ptToBuy,
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exponent-labs/market-math",
3
- "version": "0.1.7",
3
+ "version": "0.9.0",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "license": "AGPL-3.0",
package/src/index.ts CHANGED
@@ -155,7 +155,10 @@ export function tradePt({
155
155
  currentRateAnchor,
156
156
  currentFeeRate,
157
157
  netTraderPt,
158
+ syExchangeRate,
159
+ feeTreasurySyBps,
158
160
  isCurrentFlashSwap = false,
161
+ skipFees = false,
159
162
  }: {
160
163
  liquidityPt: number
161
164
  liquidityAsset: number
@@ -163,7 +166,10 @@ export function tradePt({
163
166
  currentRateAnchor: number
164
167
  currentFeeRate: number
165
168
  netTraderPt: number
169
+ syExchangeRate: number
170
+ feeTreasurySyBps: number
166
171
  isCurrentFlashSwap?: boolean
172
+ skipFees?: boolean
167
173
  }): TradeResult {
168
174
  // if netTradePt is positive, the trader is *buying* pt
169
175
  const newPt = liquidityPt - netTraderPt
@@ -186,7 +192,8 @@ export function tradePt({
186
192
 
187
193
  // Use ytValue for fee calculation during flash swaps, otherwise use preFeeNetTraderAsset
188
194
  const feeBase = isCurrentFlashSwap ? ytValue : preFeeNetTraderAsset
189
- const feeAsset = tradeFee(feeBase, currentFeeRate)
195
+
196
+ const feeAsset = skipFees ? 0 : tradeFee(feeBase, currentFeeRate)
190
197
 
191
198
  // if netTraderAsset is negative, the user is buying PT
192
199
  // and the fee is positive, meaning they pay more asset
@@ -196,10 +203,17 @@ export function tradePt({
196
203
  // and the fee is positive, meaning they receive less asset
197
204
  const netTraderAsset = preFeeNetTraderAsset - feeAsset
198
205
 
206
+ // Convert fee to SY units (matching Rust: sy_fee_from_asset_fee)
207
+ const syFee = Math.floor(feeAsset / syExchangeRate)
208
+
209
+ // Calculate treasury fee amount (matching Rust implementation)
210
+ const treasuryFeeAmount = Math.floor((syFee * feeTreasurySyBps) / 10_000)
211
+
199
212
  return {
200
213
  feeAsset,
201
214
  netTraderAsset,
202
215
  netTraderPt,
216
+ treasuryFeeAmount,
203
217
  }
204
218
  }
205
219
 
@@ -253,6 +267,7 @@ export interface TradeResult {
253
267
  feeAsset: number
254
268
  netTraderAsset: number
255
269
  netTraderPt: number
270
+ treasuryFeeAmount: number
256
271
  }
257
272
 
258
273
  export interface MarketMathState {
@@ -417,7 +432,7 @@ export class MarketCalculator {
417
432
  * If the trade is impossible, return null
418
433
  * This can happen if there is not enough liquidity to sell YT for the amount of asset desired
419
434
  */
420
- simSellYt(ytIn: number): { assetOut: number; feeInAsset: number; newMarketCalculator: MarketCalculator } | null {
435
+ simSellYt(ytIn: number, skipFees: boolean = false): { assetOut: number; feeInAsset: number; newMarketCalculator: MarketCalculator } | null {
421
436
  try {
422
437
  // first, clone the market calculator, so as not to modify the original
423
438
  const mc = this.clone()
@@ -432,7 +447,7 @@ export class MarketCalculator {
432
447
  }
433
448
 
434
449
  // buy back PT with SY
435
- const tradeRes = mc.calcTradePt(ytIn, true)
450
+ const tradeRes = mc.calcTradePt(ytIn, true, skipFees)
436
451
 
437
452
  // negate the result to get the amount of asset spent
438
453
  const assetSpend = -tradeRes.netTraderAsset
@@ -469,6 +484,19 @@ export class MarketCalculator {
469
484
  }
470
485
  }
471
486
 
487
+ /**
488
+ * @param ytIn - YT amount in lamports
489
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
490
+ */
491
+ simSellYtWithImpliedApy(
492
+ ytIn: number,
493
+ impliedApy: number,
494
+ skipFees: boolean = false,
495
+ ): { assetOut: number; feeInAsset: number; newMarketCalculator: MarketCalculator } | null {
496
+ const impliedCalculator = this.withImpliedApy(impliedApy)
497
+ return impliedCalculator.simSellYt(ytIn, skipFees)
498
+ }
499
+
472
500
  /** Calculate the amount of asset out for selling YT */
473
501
  estimateYtInForExactBaseOut(assetOut: number): number | null {
474
502
  // find an amount of asset out that would balance the equation
@@ -497,7 +525,7 @@ export class MarketCalculator {
497
525
  }
498
526
 
499
527
  /** Calculate the amount of asset to pay for buying YT */
500
- calcBuyYt(ytOut: number): number | null {
528
+ calcBuyYt(ytOut: number, skipFees: boolean = false): number | null {
501
529
  // flash swap for buying YT with assetIn
502
530
  const fn = (assetIn: number) => {
503
531
  const syIn = assetIn / this.currentSyExchangeRate
@@ -528,7 +556,7 @@ export class MarketCalculator {
528
556
 
529
557
  // sell PT to the market for SY
530
558
  // the trader sells exactly as much PT as they want to buy YT
531
- const tradeRes = newMarketCalculator.calcTradePt(-ytOut, true)
559
+ const tradeRes = newMarketCalculator.calcTradePt(-ytOut, true, skipFees)
532
560
 
533
561
  // The amount of asset returned plus the initial asset in must equal
534
562
  // the amount of asset borrowed
@@ -547,7 +575,11 @@ export class MarketCalculator {
547
575
  }
548
576
 
549
577
  /** Calculate the trade result for trading PT */
550
- calcTradePt(netTraderPt: number, isCurrentFlashSwap: boolean = false): CalculatorTradeResult {
578
+ calcTradePt(
579
+ netTraderPt: number,
580
+ isCurrentFlashSwap: boolean = false,
581
+ skipFees: boolean = false,
582
+ ): CalculatorTradeResult {
551
583
  const currentRateAnchor = this.findRateAnchor()
552
584
  const currentFeeRate = this.feeRate
553
585
  const currentRateScalar = this.rateScalar
@@ -558,12 +590,23 @@ export class MarketCalculator {
558
590
  currentRateAnchor,
559
591
  currentFeeRate,
560
592
  netTraderPt,
593
+ syExchangeRate: this.currentSyExchangeRate,
594
+ feeTreasurySyBps: this.state.feeTreasurySyBps,
561
595
  isCurrentFlashSwap,
596
+ skipFees,
562
597
  })
563
598
 
564
599
  const newLiquidityPt = this.liquidityPt - netTraderPt
565
600
  const newLiquidityAsset = this.liquidityAsset - res.netTraderAsset
566
- const newProportionPt = proportionPt({ pt: newLiquidityPt, asset: newLiquidityAsset })
601
+
602
+ // Deduct treasury fee from SY balance (matching Rust: self.dec_sy_balance(treasury_fee_amount))
603
+ const newLiquiditySy = newLiquidityAsset / this.currentSyExchangeRate - res.treasuryFeeAmount
604
+
605
+ // Calculate exchange rate and ln implied rate AFTER treasury fee deduction
606
+ // (matching Rust: uses self.asset_balance() after dec_sy_balance)
607
+ const newLiquidityAssetAfterFee = newLiquiditySy * this.currentSyExchangeRate
608
+
609
+ const newProportionPt = proportionPt({ pt: newLiquidityPt, asset: newLiquidityAssetAfterFee })
567
610
  const newExchangeRate = exchangeRate({
568
611
  proportionPt: newProportionPt,
569
612
  rateScalar: currentRateScalar,
@@ -576,7 +619,7 @@ export class MarketCalculator {
576
619
 
577
620
  const newMarketCalculator = new MarketCalculator({
578
621
  liquidityPt: newLiquidityPt,
579
- liquiditySy: newLiquidityAsset / this.currentSyExchangeRate,
622
+ liquiditySy: newLiquiditySy,
580
623
  currentSyExchangeRate: this.currentSyExchangeRate,
581
624
  lnFeeRateRoot: this.state.lnFeeRateRoot,
582
625
  secondsRemaining: this.secondsRemaining,
@@ -598,6 +641,63 @@ export class MarketCalculator {
598
641
  return this.calcExactPtForNetAsset(netTraderAsset)
599
642
  }
600
643
 
644
+ /**
645
+ * @param netAssetIn - Net asset in lamports. Trade direction:
646
+ * - Positive: selling PT for underlying asset
647
+ * - Negative: buying PT with underlying asset
648
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
649
+ */
650
+ estimateNetPtForExactNetAssetWithImpliedApy(
651
+ netAssetIn: number,
652
+ impliedApy: number,
653
+ skipFees: boolean = false,
654
+ ): number | null {
655
+ const impliedCalculator = this.withImpliedApy(impliedApy)
656
+ return impliedCalculator.calcExactPtForNetAsset(netAssetIn, skipFees)
657
+ }
658
+
659
+ /**
660
+ * @param ptAmount - Amount of PT to sell in lamports
661
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
662
+ */
663
+ estimateAssetOutForPtInWithImpliedApy(ptAmount: number, impliedApy: number, skipFees: boolean = false): number | null {
664
+ const impliedCalculator = this.withImpliedApy(impliedApy)
665
+
666
+ try {
667
+ const tradeResult = impliedCalculator.calcTradePt(-ptAmount, false, skipFees)
668
+ return tradeResult.netTraderAsset
669
+ } catch (error) {
670
+ return null
671
+ }
672
+ }
673
+
674
+ /**
675
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
676
+ * @returns A new MarketCalculator instance with the implied APY
677
+ */
678
+ withImpliedApy(impliedApy: number): MarketCalculator {
679
+ // Calculate what ptPriceInAsset would give us the target APY
680
+ const yearSeconds = 365 * 24 * 3600
681
+ const rateMultiplier = yearSeconds / this.secondsRemaining
682
+ const targetPtPriceInAsset = rateMultiplier / (impliedApy + rateMultiplier)
683
+
684
+ // Convert ptPriceInAsset to exchangeRate (asset to PT)
685
+ // ptPriceInAsset = 1 / exchangeRate, so exchangeRate = 1 / ptPriceInAsset
686
+ const targetExchangeRate = 1 / targetPtPriceInAsset
687
+
688
+ const targetLnImpliedRate = currentLnImpliedRate({
689
+ exchangeRate: targetExchangeRate,
690
+ secondsRemaining: this.secondsRemaining,
691
+ })
692
+
693
+ const newState = {
694
+ ...this.state,
695
+ lastLnImpliedRate: targetLnImpliedRate,
696
+ }
697
+
698
+ return new MarketCalculator(newState)
699
+ }
700
+
601
701
  simulateClassicLpWithdraw({ lpAmount }: { lpAmount: number }): {
602
702
  assetOut: number
603
703
  ptOut: number
@@ -637,18 +737,18 @@ export class MarketCalculator {
637
737
  }
638
738
 
639
739
  /** Deprecated - bad name - use estimateNetPtForExactNetAsset */
640
- calcExactPtForNetAsset(netTraderAsset: number): number | null {
740
+ calcExactPtForNetAsset(netTraderAsset: number, skipFees: boolean = false): number | null {
641
741
  if (netTraderAsset === 0) {
642
742
  return 0
643
743
  }
644
- return calcExactPtForNetAsset(this, netTraderAsset)
744
+ return calcExactPtForNetAsset(this, netTraderAsset, skipFees)
645
745
  }
646
746
 
647
- estimateYtOutForExactAssetIn(assetIn: number): { ytOut: number; feeInAsset: number } | null {
747
+ estimateYtOutForExactAssetIn(assetIn: number, skipFees: boolean = false): { ytOut: number; feeInAsset: number } | null {
648
748
  if (assetIn === 0) {
649
749
  return { ytOut: 0, feeInAsset: 0 }
650
750
  }
651
- const ytOut = estimateYtOutForExactAssetIn(this, assetIn)
751
+ const ytOut = estimateYtOutForExactAssetIn(this, assetIn, skipFees)
652
752
 
653
753
  const syIn = assetIn / this.currentSyExchangeRate
654
754
  const targetSy = ytOut / this.currentSyExchangeRate
@@ -659,6 +759,19 @@ export class MarketCalculator {
659
759
  return { ytOut, feeInAsset }
660
760
  }
661
761
 
762
+ /**
763
+ * @param assetIn - Asset amount in lamports
764
+ * @param impliedApy - Implied APY as a decimal (e.g., 0.08 for 8%)
765
+ */
766
+ estimateYtOutForExactAssetInWithImpliedApy(
767
+ assetIn: number,
768
+ impliedApy: number,
769
+ skipFees: boolean = false,
770
+ ): { ytOut: number; feeInAsset: number } | null {
771
+ const impliedCalculator = this.withImpliedApy(impliedApy)
772
+ return impliedCalculator.estimateYtOutForExactAssetIn(assetIn, skipFees)
773
+ }
774
+
662
775
  exchangeRateFromLnImpliedRate(lnImpliedRate: number): number {
663
776
  return exchangeRateFromLnImpliedRate({
664
777
  lnImpliedRate,
@@ -812,24 +925,25 @@ export interface CalculatorTradeResult {
812
925
  feeAsset: number
813
926
  netTraderAsset: number
814
927
  netTraderPt: number
928
+ treasuryFeeAmount: number
815
929
  newMarketCalculator: MarketCalculator
816
930
  }
817
931
 
818
- export function calcExactPtForNetAsset(c: MarketCalculator, netTraderAsset: number): number | null {
932
+ export function calcExactPtForNetAsset(c: MarketCalculator, netTraderAsset: number, skipFees: boolean = false): number | null {
819
933
  const isBuyPt = netTraderAsset < 0
820
934
  if (isBuyPt) {
821
935
  // negate netTraderAsset, because it is negative
822
936
  // the search function expects a positive assetIn
823
- return estimatePtOutForExactAssetIn(c, -netTraderAsset)
937
+ return estimatePtOutForExactAssetIn(c, -netTraderAsset, skipFees)
824
938
  } else {
825
- return estimatePtInForExactAssetOut(c, netTraderAsset)
939
+ return estimatePtInForExactAssetOut(c, netTraderAsset, skipFees)
826
940
  }
827
941
  }
828
942
 
829
- function estimatePtOutForExactAssetIn(c: MarketCalculator, assetIn: number): number | null {
943
+ function estimatePtOutForExactAssetIn(c: MarketCalculator, assetIn: number, skipFees: boolean = false): number | null {
830
944
  const fn = (pt: number) => {
831
945
  try {
832
- const res = c.calcTradePt(pt, false)
946
+ const res = c.calcTradePt(pt, false, skipFees)
833
947
  const assetSpend = -res.netTraderAsset
834
948
  return assetSpend - assetIn
835
949
  } catch {
@@ -843,10 +957,10 @@ function estimatePtOutForExactAssetIn(c: MarketCalculator, assetIn: number): num
843
957
  return bisectSearch2(fn, lo, hi, 0.0000001)
844
958
  }
845
959
 
846
- function estimatePtInForExactAssetOut(c: MarketCalculator, assetOut: number): number | null {
960
+ function estimatePtInForExactAssetOut(c: MarketCalculator, assetOut: number, skipFees: boolean = false): number | null {
847
961
  const fn = (pt: number) => {
848
962
  // negate PT to signal that the trader is selling PT
849
- const res = c.calcTradePt(-pt, false)
963
+ const res = c.calcTradePt(-pt, false, skipFees)
850
964
 
851
965
  // for very large sales of PT in, the trade will fail by returning 0 asset
852
966
  // signal this by returning a high value
@@ -864,11 +978,13 @@ function estimatePtInForExactAssetOut(c: MarketCalculator, assetOut: number): nu
864
978
  return bisectSearch2(fn, lo, hi, 0.0000001)
865
979
  }
866
980
 
867
- export function estimateYtOutForExactAssetIn(c: MarketCalculator, assetIn: number): number | null {
981
+ export function estimateYtOutForExactAssetIn(c: MarketCalculator, assetIn: number, skipFees: boolean = false): number | null {
868
982
  const ytToAssetExchangeRate = Math.min(1 - 1 / c.exchangeRate, 1)
869
983
  let lo = 0
870
984
  let hi = assetIn / ytToAssetExchangeRate
871
- console.log("Starting search with bounds:", { lo, hi, assetIn })
985
+ if (typeof window !== "undefined") {
986
+ console.log("Starting search with bounds:", { lo, hi, assetIn })
987
+ }
872
988
 
873
989
  // Manual binary search with detailed logging
874
990
  let iterations = 0
@@ -880,26 +996,19 @@ export function estimateYtOutForExactAssetIn(c: MarketCalculator, assetIn: numbe
880
996
 
881
997
  while (iterations < MAX_ITERATIONS) {
882
998
  const mid = (lo + hi) / 2
883
- const assetInForYtOut = c.calcBuyYt(mid)
999
+ const assetInForYtOut = c.calcBuyYt(mid, skipFees)
884
1000
 
885
1001
  const syIn = assetIn / c.currentSyExchangeRate
886
1002
  const targetSy = mid / c.currentSyExchangeRate
887
1003
  const syToBorrow = targetSy - syIn
888
1004
 
889
- if (syToBorrow + c.calcTradePt(-mid, false).netTraderAsset * c.currentSyExchangeRate > c.liquiditySy) {
890
- console.error("Not enough liquidity - required SY exceeds available SY")
1005
+ if (syToBorrow + c.calcTradePt(-mid, false).netTraderAsset / c.currentSyExchangeRate > c.liquiditySy) {
1006
+ if (typeof window !== "undefined") {
1007
+ console.error("Not enough liquidity - required SY exceeds available SY")
1008
+ }
891
1009
  return null
892
1010
  }
893
1011
 
894
- console.log("Iteration", iterations, {
895
- lo,
896
- hi,
897
- mid,
898
- assetInForYtOut,
899
- targetAssetIn: assetIn,
900
- diff: assetInForYtOut ? assetInForYtOut - assetIn : "null",
901
- })
902
-
903
1012
  // Track best approximation
904
1013
  if (assetInForYtOut !== null) {
905
1014
  const currentDiff = Math.abs(assetInForYtOut - assetIn)
@@ -911,7 +1020,9 @@ export function estimateYtOutForExactAssetIn(c: MarketCalculator, assetIn: numbe
911
1020
 
912
1021
  // If we found an exact match or we're close enough
913
1022
  if (assetInForYtOut !== null && Math.abs(assetInForYtOut - assetIn) < EPSILON) {
914
- console.log("Found solution:", { ytOut: mid, assetIn: assetInForYtOut })
1023
+ if (typeof window !== "undefined") {
1024
+ console.log("Found solution:", { ytOut: mid, assetIn: assetInForYtOut })
1025
+ }
915
1026
  return mid
916
1027
  }
917
1028
 
@@ -1045,11 +1156,9 @@ export function calcBalancedDeposit(c: MarketCalculator, totalSy: number): { ptT
1045
1156
  const syDeposit = totalSy - costInSY
1046
1157
  if (syDeposit <= 0) return Infinity
1047
1158
 
1048
- // Calculate treasury fee using the same logic as Rust
1049
- // fee_treasury_sy_bps is in basis points (10000 = 100%)
1050
- const feeInSY = (tradeResult.feeAsset * c.state.feeTreasurySyBps) / 10000 / c.currentSyExchangeRate
1159
+ // Treasury fee is already deducted in tradeResult.newMarketCalculator.liquiditySy
1051
1160
  const newLiquidityPt = tradeResult.newMarketCalculator.liquidityPt
1052
- const newLiquiditySy = tradeResult.newMarketCalculator.liquiditySy - feeInSY
1161
+ const newLiquiditySy = tradeResult.newMarketCalculator.liquiditySy
1053
1162
  const newRatio = newLiquidityPt / newLiquiditySy
1054
1163
  return pt / syDeposit - newRatio
1055
1164
  }
@@ -1094,6 +1203,7 @@ export function simulateWrapperProvideLiquidityBase(
1094
1203
  lpOut: number
1095
1204
  ptTradePrice: number
1096
1205
  feeAsset: number
1206
+ treasuryFeeAmount: number
1097
1207
  assetSpendOnTrade: number
1098
1208
  assetDeposited: number
1099
1209
  ptToBuy: number
@@ -1121,6 +1231,7 @@ export function simulateWrapperProvideLiquidityBase(
1121
1231
  lpOut: lpResult.lpOut,
1122
1232
  ptTradePrice: 0,
1123
1233
  feeAsset: 0,
1234
+ treasuryFeeAmount: 0,
1124
1235
  assetSpendOnTrade: 0,
1125
1236
  assetDeposited: 0,
1126
1237
  ptToBuy: 0,
@@ -1158,6 +1269,7 @@ export function simulateWrapperProvideLiquidityBase(
1158
1269
  lpOut: lpResult.lpOut,
1159
1270
  ptTradePrice,
1160
1271
  feeAsset: ptTradeResult.feeAsset,
1272
+ treasuryFeeAmount: ptTradeResult.treasuryFeeAmount,
1161
1273
  assetSpendOnTrade: -ptTradeResult.netTraderAsset,
1162
1274
  assetDeposited: baseAmount + ptTradeResult.netTraderAsset,
1163
1275
  ptToBuy: balancedAmounts.ptToBuy,