@pendle/sdk-boros 1.2.4 → 1.3.2
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/CHANGELOG.md +18 -0
- package/dist/entities/Calculator/marginCalculator.d.ts +7 -0
- package/dist/entities/Calculator/marginCalculator.js +46 -0
- package/dist/entities/Calculator/marginCalculator.js.map +1 -1
- package/dist/entities/Calculator/strategyUtils.js.map +1 -1
- package/dist/entities/market/market.d.ts +11 -0
- package/dist/entities/market/market.js +34 -1
- package/dist/entities/market/market.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @pendle/sdk-boros
|
|
2
2
|
|
|
3
|
+
## 1.3.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 688b89c: Increase buffer order size by im to 6%
|
|
8
|
+
|
|
9
|
+
## 1.3.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 3929353: Revert "ci: sign release commits via changesets github-api mode"
|
|
14
|
+
|
|
15
|
+
## 1.3.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- e8bb6db: Remove leverage
|
|
20
|
+
|
|
3
21
|
## 1.2.4
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { FixedX18 } from '@pendle/boros-offchain-math';
|
|
2
2
|
import type { MarketResponse } from '../../backend/secrettune/BorosCoreSDK';
|
|
3
3
|
export declare function getMarginRequiredFor1YU(market: MarketResponse, leverage?: number): number;
|
|
4
|
+
export declare function getMarginRequiredFor1YUV2(market: MarketResponse): number;
|
|
4
5
|
export declare function getMarginRequiredFor1YUFixedX18(market: MarketResponse, leverage?: number): FixedX18;
|
|
6
|
+
export declare function getMarginRequiredFor1YUFixedX18V2(market: MarketResponse): FixedX18;
|
|
5
7
|
export declare function getStrategyBorosMargin(longMarket: MarketResponse, shortMarket: MarketResponse, leverage?: number): number;
|
|
6
8
|
export declare function getStrategyMarginRequirements(longMarket: MarketResponse, shortMarket: MarketResponse, leverage?: {
|
|
7
9
|
longLeverage?: number;
|
|
@@ -11,3 +13,8 @@ export declare function getStrategyMarginRequirements(longMarket: MarketResponse
|
|
|
11
13
|
marginRequired2: number;
|
|
12
14
|
totalBorosMargin: number;
|
|
13
15
|
};
|
|
16
|
+
export declare function getStrategyMarginRequirementsV2(longMarket: MarketResponse, shortMarket: MarketResponse): {
|
|
17
|
+
marginRequired1: number;
|
|
18
|
+
marginRequired2: number;
|
|
19
|
+
totalBorosMargin: number;
|
|
20
|
+
};
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getMarginRequiredFor1YU = getMarginRequiredFor1YU;
|
|
4
|
+
exports.getMarginRequiredFor1YUV2 = getMarginRequiredFor1YUV2;
|
|
4
5
|
exports.getMarginRequiredFor1YUFixedX18 = getMarginRequiredFor1YUFixedX18;
|
|
6
|
+
exports.getMarginRequiredFor1YUFixedX18V2 = getMarginRequiredFor1YUFixedX18V2;
|
|
5
7
|
exports.getStrategyBorosMargin = getStrategyBorosMargin;
|
|
6
8
|
exports.getStrategyMarginRequirements = getStrategyMarginRequirements;
|
|
9
|
+
exports.getStrategyMarginRequirementsV2 = getStrategyMarginRequirementsV2;
|
|
7
10
|
const boros_offchain_math_1 = require("@pendle/boros-offchain-math");
|
|
8
11
|
const market_1 = require("../market/market");
|
|
9
12
|
const DEFAULT_MIN_MARGIN_INDEX_RATE = boros_offchain_math_1.FixedX18.fromNumber(0.1);
|
|
@@ -31,6 +34,26 @@ function extractMarketParams(market, leverage) {
|
|
|
31
34
|
isMarketOrder: true,
|
|
32
35
|
};
|
|
33
36
|
}
|
|
37
|
+
function extractMarketParamsV2(market) {
|
|
38
|
+
const marginFactor = market.config.kIM
|
|
39
|
+
? boros_offchain_math_1.FixedX18.fromRawValue(BigInt(market.config.kIM))
|
|
40
|
+
: boros_offchain_math_1.FixedX18.fromNumber(0.5);
|
|
41
|
+
const minMarginIndexDuration_s = market.config.tThresh ?? DEFAULT_MIN_MARGIN_INDEX_DURATION_S;
|
|
42
|
+
const timeToMaturity = market.data?.timeToMaturity ??
|
|
43
|
+
Math.max(0, market.imData.maturity - Math.floor(Date.now() / 1000));
|
|
44
|
+
const impliedApr = market.data?.ammImpliedApr ?? market.data?.midApr ?? 0;
|
|
45
|
+
const orderRate = boros_offchain_math_1.FixedX18.fromNumber(impliedApr);
|
|
46
|
+
const markRate = boros_offchain_math_1.FixedX18.fromNumber(market.data?.markApr ?? impliedApr);
|
|
47
|
+
return {
|
|
48
|
+
marginFactor,
|
|
49
|
+
markRate,
|
|
50
|
+
minMarginIndexRate: (0, boros_offchain_math_1.getRateAtTick)(BigInt(market.imData.iTickThresh), BigInt(market.imData.tickStep)),
|
|
51
|
+
minMarginIndexDuration_s,
|
|
52
|
+
timeToMaturity,
|
|
53
|
+
orderRate,
|
|
54
|
+
isMarketOrder: true,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
34
57
|
function getMarginRequiredFor1YU(market, leverage) {
|
|
35
58
|
const params = extractMarketParams(market, leverage);
|
|
36
59
|
const marginBigInt = market_1.Market.getInitialMarginByOrderSize({
|
|
@@ -39,6 +62,13 @@ function getMarginRequiredFor1YU(market, leverage) {
|
|
|
39
62
|
}, false);
|
|
40
63
|
return Number(marginBigInt) / 1e18;
|
|
41
64
|
}
|
|
65
|
+
function getMarginRequiredFor1YUV2(market) {
|
|
66
|
+
const marginBigInt = market_1.Market.getInitialMarginByOrderSizeV2({
|
|
67
|
+
...extractMarketParamsV2(market),
|
|
68
|
+
orderSize: ONE_YU,
|
|
69
|
+
});
|
|
70
|
+
return Number(marginBigInt) / 1e18;
|
|
71
|
+
}
|
|
42
72
|
function getMarginRequiredFor1YUFixedX18(market, leverage) {
|
|
43
73
|
const params = extractMarketParams(market, leverage);
|
|
44
74
|
const marginBigInt = market_1.Market.getInitialMarginByOrderSize({
|
|
@@ -47,6 +77,13 @@ function getMarginRequiredFor1YUFixedX18(market, leverage) {
|
|
|
47
77
|
}, false);
|
|
48
78
|
return boros_offchain_math_1.FixedX18.fromRawValue(marginBigInt);
|
|
49
79
|
}
|
|
80
|
+
function getMarginRequiredFor1YUFixedX18V2(market) {
|
|
81
|
+
const marginBigInt = market_1.Market.getInitialMarginByOrderSizeV2({
|
|
82
|
+
...extractMarketParamsV2(market),
|
|
83
|
+
orderSize: ONE_YU,
|
|
84
|
+
});
|
|
85
|
+
return boros_offchain_math_1.FixedX18.fromRawValue(marginBigInt);
|
|
86
|
+
}
|
|
50
87
|
function getStrategyBorosMargin(longMarket, shortMarket, leverage) {
|
|
51
88
|
const marginRequired1 = getMarginRequiredFor1YU(longMarket, leverage);
|
|
52
89
|
const marginRequired2 = getMarginRequiredFor1YU(shortMarket, leverage);
|
|
@@ -61,4 +98,13 @@ function getStrategyMarginRequirements(longMarket, shortMarket, leverage) {
|
|
|
61
98
|
totalBorosMargin: marginRequired1 + marginRequired2,
|
|
62
99
|
};
|
|
63
100
|
}
|
|
101
|
+
function getStrategyMarginRequirementsV2(longMarket, shortMarket) {
|
|
102
|
+
const marginRequired1 = getMarginRequiredFor1YUV2(longMarket);
|
|
103
|
+
const marginRequired2 = getMarginRequiredFor1YUV2(shortMarket);
|
|
104
|
+
return {
|
|
105
|
+
marginRequired1,
|
|
106
|
+
marginRequired2,
|
|
107
|
+
totalBorosMargin: marginRequired1 + marginRequired2,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
64
110
|
//# sourceMappingURL=marginCalculator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marginCalculator.js","sourceRoot":"","sources":["../../../src/entities/Calculator/marginCalculator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"marginCalculator.js","sourceRoot":"","sources":["../../../src/entities/Calculator/marginCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategyUtils.js","sourceRoot":"","sources":["../../../src/entities/Calculator/strategyUtils.ts"],"names":[],"mappings":";;AAWA,kCAEC;AAMD,sCAEC;
|
|
1
|
+
{"version":3,"file":"strategyUtils.js","sourceRoot":"","sources":["../../../src/entities/Calculator/strategyUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,8 +26,11 @@ export type GetOrderValueParams = {
|
|
|
26
26
|
};
|
|
27
27
|
export declare class Market {
|
|
28
28
|
static getOrderSizeByExactInitialMargin(params: GetOrderSizeByExactInitialMarginParams, useBuffer?: boolean): bigint;
|
|
29
|
+
static getOrderSizeByExactInitialMarginV2(params: Omit<GetOrderSizeByExactInitialMarginParams, 'leverage'>, useBuffer?: boolean): bigint;
|
|
29
30
|
static getInitialMarginByOrderSize(params: GetInitialMarginByOrderSizeParams, useBuffer?: boolean): bigint;
|
|
31
|
+
static getInitialMarginByOrderSizeV2(params: Omit<GetInitialMarginByOrderSizeParams, 'leverage'>): bigint;
|
|
30
32
|
private static getIMSuf;
|
|
33
|
+
private static getIMSufV2;
|
|
31
34
|
static getOrderValue(params: GetOrderValueParams): bigint;
|
|
32
35
|
}
|
|
33
36
|
export declare function getLongYieldAprFixedX18({ underlyingApr, fixedApr, timeToMaturity, marginFloor, maturityFloor, leverage, }: {
|
|
@@ -38,4 +41,12 @@ export declare function getLongYieldAprFixedX18({ underlyingApr, fixedApr, timeT
|
|
|
38
41
|
maturityFloor: FixedX18;
|
|
39
42
|
leverage?: number;
|
|
40
43
|
}): FixedX18;
|
|
44
|
+
export declare function getLongYieldAprFixedX18V2({ underlyingApr, fixedApr, timeToMaturity, marginFloor, maturityFloor, kIM, }: {
|
|
45
|
+
underlyingApr: FixedX18;
|
|
46
|
+
fixedApr: FixedX18;
|
|
47
|
+
timeToMaturity: FixedX18;
|
|
48
|
+
marginFloor: FixedX18;
|
|
49
|
+
maturityFloor: FixedX18;
|
|
50
|
+
kIM: FixedX18;
|
|
51
|
+
}): FixedX18;
|
|
41
52
|
export declare function getMaxRateDeviation(maxRateDeviationFactorBase1e4: number, markApr: number, k_iTickThresh: number, tickStep: number): number;
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Market = void 0;
|
|
4
4
|
exports.getLongYieldAprFixedX18 = getLongYieldAprFixedX18;
|
|
5
|
+
exports.getLongYieldAprFixedX18V2 = getLongYieldAprFixedX18V2;
|
|
5
6
|
exports.getMaxRateDeviation = getMaxRateDeviation;
|
|
6
7
|
const boros_offchain_math_1 = require("@pendle/boros-offchain-math");
|
|
7
|
-
const BUFFERED_ORDER_SIZE_BY_EXACT_INITIAL_MARGIN_RATIO = boros_offchain_math_1.FixedX18.fromNumber(0.
|
|
8
|
+
const BUFFERED_ORDER_SIZE_BY_EXACT_INITIAL_MARGIN_RATIO = boros_offchain_math_1.FixedX18.fromNumber(0.06);
|
|
8
9
|
const SECONDS_PER_YEARS = 3600 * 24 * 365;
|
|
9
10
|
class Market {
|
|
10
11
|
static getOrderSizeByExactInitialMargin(params, useBuffer = false) {
|
|
@@ -15,11 +16,26 @@ class Market {
|
|
|
15
16
|
}
|
|
16
17
|
return orderSize.value;
|
|
17
18
|
}
|
|
19
|
+
static getOrderSizeByExactInitialMarginV2(params, useBuffer = false) {
|
|
20
|
+
const imSuf = Market.getIMSufV2(params);
|
|
21
|
+
if (imSuf.is0()) {
|
|
22
|
+
return 0n;
|
|
23
|
+
}
|
|
24
|
+
const orderSize = boros_offchain_math_1.FixedX18.fromRawValue(params.initialMargin).divDown(imSuf);
|
|
25
|
+
if (useBuffer) {
|
|
26
|
+
return orderSize.mulDown(boros_offchain_math_1.FixedX18.ONE.sub(BUFFERED_ORDER_SIZE_BY_EXACT_INITIAL_MARGIN_RATIO)).value;
|
|
27
|
+
}
|
|
28
|
+
return orderSize.value;
|
|
29
|
+
}
|
|
18
30
|
static getInitialMarginByOrderSize(params, useBuffer = true) {
|
|
19
31
|
const imSuf = Market.getIMSuf(params);
|
|
20
32
|
const initialMargin = boros_offchain_math_1.FixedX18.fromRawValue(params.orderSize).mulDown(imSuf);
|
|
21
33
|
return initialMargin.value;
|
|
22
34
|
}
|
|
35
|
+
static getInitialMarginByOrderSizeV2(params) {
|
|
36
|
+
const imSuf = Market.getIMSufV2(params);
|
|
37
|
+
return boros_offchain_math_1.FixedX18.fromRawValue(params.orderSize).mulDown(imSuf).value;
|
|
38
|
+
}
|
|
23
39
|
static getIMSuf(data) {
|
|
24
40
|
const { orderRate, leverage, marginFactor, markRate, minMarginIndexRate, timeToMaturity, minMarginIndexDuration_s, isMarketOrder, } = data;
|
|
25
41
|
if (timeToMaturity <= 0) {
|
|
@@ -40,6 +56,18 @@ class Market {
|
|
|
40
56
|
const offchainSuf = offchainRate.mulDown(time).divDown(boros_offchain_math_1.FixedX18.fromNumber(leverage));
|
|
41
57
|
return contractSuf.gt(offchainSuf) ? contractSuf : offchainSuf;
|
|
42
58
|
}
|
|
59
|
+
static getIMSufV2(data) {
|
|
60
|
+
const { orderRate, marginFactor, markRate, minMarginIndexRate, timeToMaturity, minMarginIndexDuration_s, isMarketOrder } = data;
|
|
61
|
+
if (timeToMaturity <= 0) {
|
|
62
|
+
return boros_offchain_math_1.FixedX18.ZERO;
|
|
63
|
+
}
|
|
64
|
+
const timeToMaturity_y = timeToMaturity / SECONDS_PER_YEARS;
|
|
65
|
+
const minTime_y = minMarginIndexDuration_s / SECONDS_PER_YEARS;
|
|
66
|
+
const time = boros_offchain_math_1.FixedX18.fromNumber(Math.max(timeToMaturity_y, minTime_y));
|
|
67
|
+
const baseRate = isMarketOrder ? markRate.abs().max(orderRate.abs()) : orderRate.abs();
|
|
68
|
+
const rate = baseRate.max(minMarginIndexRate);
|
|
69
|
+
return rate.mulDown(time).mulDown(marginFactor);
|
|
70
|
+
}
|
|
43
71
|
static getOrderValue(params) {
|
|
44
72
|
const { orderSize, orderRate, timeToMaturity } = params;
|
|
45
73
|
if (timeToMaturity <= 0) {
|
|
@@ -60,6 +88,11 @@ function getLongYieldAprFixedX18({ underlyingApr, fixedApr, timeToMaturity, marg
|
|
|
60
88
|
.divDown(boros_offchain_math_1.FixedX18.fromNumber(leverage ?? 1));
|
|
61
89
|
return profitOf1YU.divDown(marginOf1YU);
|
|
62
90
|
}
|
|
91
|
+
function getLongYieldAprFixedX18V2({ underlyingApr, fixedApr, timeToMaturity, marginFloor, maturityFloor, kIM, }) {
|
|
92
|
+
const profitOf1YU = underlyingApr.sub(fixedApr).mulDown(timeToMaturity);
|
|
93
|
+
const marginOf1YU = fixedApr.abs().max(marginFloor).mulDown(timeToMaturity.max(maturityFloor)).mulDown(kIM);
|
|
94
|
+
return profitOf1YU.divDown(marginOf1YU);
|
|
95
|
+
}
|
|
63
96
|
function getMaxRateDeviation(maxRateDeviationFactorBase1e4, markApr, k_iTickThresh, tickStep) {
|
|
64
97
|
const iTickThresh = (0, boros_offchain_math_1.getRateAtTick)(BigInt(k_iTickThresh), BigInt(tickStep));
|
|
65
98
|
const maxRateDeviationFactor = maxRateDeviationFactorBase1e4 / 10000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/entities/market/market.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/entities/market/market.ts"],"names":[],"mappings":"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"}
|