@pendle/sdk-boros 1.0.11-strategies → 1.0.11-strategies-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/entities/Calculator/marginCalculator.js +33 -36
- package/dist/entities/Calculator/marginCalculator.js.map +1 -1
- package/dist/entities/Calculator/strategyApr.js +8 -9
- package/dist/entities/Calculator/strategyApr.js.map +1 -1
- package/dist/entities/Calculator/strategyExecution.js.map +1 -1
- package/dist/entities/Calculator/strategyFinder.d.ts +3 -1
- package/dist/entities/Calculator/strategyFinder.js +58 -1
- package/dist/entities/Calculator/strategyFinder.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,50 +5,47 @@ exports.getMarginRequiredFor1YUFixedX18 = getMarginRequiredFor1YUFixedX18;
|
|
|
5
5
|
exports.getStrategyBorosMargin = getStrategyBorosMargin;
|
|
6
6
|
exports.getStrategyMarginRequirements = getStrategyMarginRequirements;
|
|
7
7
|
const boros_offchain_math_1 = require("@pendle/boros-offchain-math");
|
|
8
|
-
const
|
|
8
|
+
const market_1 = require("../market/market");
|
|
9
9
|
const DEFAULT_MIN_MARGIN_INDEX_RATE = boros_offchain_math_1.FixedX18.fromNumber(0.1);
|
|
10
|
-
|
|
10
|
+
const DEFAULT_MIN_MARGIN_INDEX_DURATION_S = 604800;
|
|
11
|
+
const ONE_YU = 10n ** 18n;
|
|
12
|
+
function extractMarketParams(market, leverage) {
|
|
11
13
|
const effectiveLeverage = leverage ?? market.metadata?.maxLeverage ?? 1;
|
|
12
14
|
const marginFactor = market.config.kIM
|
|
13
15
|
? boros_offchain_math_1.FixedX18.fromRawValue(BigInt(market.config.kIM))
|
|
14
16
|
: boros_offchain_math_1.FixedX18.fromNumber(0.5);
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
(market.imData.maturity - Math.floor(Date.now() / 1000));
|
|
19
|
-
const timeToMaturity_y = Math.max(0, timeToMaturity_s / SECONDS_PER_YEAR);
|
|
20
|
-
const time_y = Math.max(timeToMaturity_y, tThresh_y);
|
|
21
|
-
const time = boros_offchain_math_1.FixedX18.fromNumber(time_y);
|
|
17
|
+
const minMarginIndexDuration_s = market.config.tThresh ?? DEFAULT_MIN_MARGIN_INDEX_DURATION_S;
|
|
18
|
+
const timeToMaturity = market.data?.timeToMaturity ??
|
|
19
|
+
Math.max(0, market.imData.maturity - Math.floor(Date.now() / 1000));
|
|
22
20
|
const impliedApr = market.data?.ammImpliedApr ?? market.data?.midApr ?? 0;
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
const orderRate = boros_offchain_math_1.FixedX18.fromNumber(impliedApr);
|
|
22
|
+
const markRate = boros_offchain_math_1.FixedX18.fromNumber(market.data?.markApr ?? impliedApr);
|
|
23
|
+
return {
|
|
24
|
+
marginFactor,
|
|
25
|
+
markRate,
|
|
26
|
+
minMarginIndexRate: (0, boros_offchain_math_1.getRateAtTick)(BigInt(market.imData.iTickThresh), BigInt(market.imData.tickStep)),
|
|
27
|
+
minMarginIndexDuration_s,
|
|
28
|
+
timeToMaturity,
|
|
29
|
+
leverage: effectiveLeverage,
|
|
30
|
+
orderRate,
|
|
31
|
+
isMarketOrder: true,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function getMarginRequiredFor1YU(market, leverage) {
|
|
35
|
+
const params = extractMarketParams(market, leverage);
|
|
36
|
+
const marginBigInt = market_1.Market.getInitialMarginByOrderSize({
|
|
37
|
+
...params,
|
|
38
|
+
orderSize: ONE_YU,
|
|
39
|
+
}, false);
|
|
40
|
+
return Number(marginBigInt) / 1e18;
|
|
31
41
|
}
|
|
32
42
|
function getMarginRequiredFor1YUFixedX18(market, leverage) {
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const timeToMaturity_s = market.data?.timeToMaturity ??
|
|
40
|
-
(market.imData.maturity - Math.floor(Date.now() / 1000));
|
|
41
|
-
const timeToMaturity_y = Math.max(0, timeToMaturity_s / SECONDS_PER_YEAR);
|
|
42
|
-
const time_y = Math.max(timeToMaturity_y, tThresh_y);
|
|
43
|
-
const time = boros_offchain_math_1.FixedX18.fromNumber(time_y);
|
|
44
|
-
const impliedApr = market.data?.ammImpliedApr ?? market.data?.midApr ?? 0;
|
|
45
|
-
const absImpliedApr = boros_offchain_math_1.FixedX18.fromNumber(Math.abs(impliedApr));
|
|
46
|
-
const rate = absImpliedApr.gt(DEFAULT_MIN_MARGIN_INDEX_RATE)
|
|
47
|
-
? absImpliedApr
|
|
48
|
-
: DEFAULT_MIN_MARGIN_INDEX_RATE;
|
|
49
|
-
const contractSuf = rate.mulDown(time).mulDown(marginFactor);
|
|
50
|
-
const offchainSuf = rate.mulDown(time).divDown(boros_offchain_math_1.FixedX18.fromNumber(effectiveLeverage));
|
|
51
|
-
return contractSuf.gt(offchainSuf) ? contractSuf : offchainSuf;
|
|
43
|
+
const params = extractMarketParams(market, leverage);
|
|
44
|
+
const marginBigInt = market_1.Market.getInitialMarginByOrderSize({
|
|
45
|
+
...params,
|
|
46
|
+
orderSize: ONE_YU,
|
|
47
|
+
}, false);
|
|
48
|
+
return boros_offchain_math_1.FixedX18.fromRawValue(marginBigInt);
|
|
52
49
|
}
|
|
53
50
|
function getStrategyBorosMargin(longMarket, shortMarket, leverage) {
|
|
54
51
|
const marginRequired1 = getMarginRequiredFor1YU(longMarket, leverage);
|
|
@@ -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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"}
|
|
@@ -13,11 +13,11 @@ function calculateStrategyFixedApr(params) {
|
|
|
13
13
|
}
|
|
14
14
|
const impliedAprDiff = Math.abs(impliedApr1 - impliedApr2);
|
|
15
15
|
const annualizationFactor = 365 / daysToMaturity;
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const totalFees =
|
|
16
|
+
const annualizedExchangeFees = annualizationFactor * (exchangeFee1 + exchangeFee2);
|
|
17
|
+
const borosFees = 2 * (borosSettlementFee + borosTradeFee);
|
|
18
|
+
const totalFees = annualizedExchangeFees + borosFees;
|
|
19
19
|
const leverageFactor = 1 / (2 / perpLeverage + borosMargin);
|
|
20
|
-
const fixedApr = leverageFactor * (impliedAprDiff -
|
|
20
|
+
const fixedApr = leverageFactor * (impliedAprDiff - totalFees);
|
|
21
21
|
return fixedApr;
|
|
22
22
|
}
|
|
23
23
|
function calculateStrategyFixedAprFixedX18(params) {
|
|
@@ -28,11 +28,10 @@ function calculateStrategyFixedAprFixedX18(params) {
|
|
|
28
28
|
const impliedAprDiff = impliedApr1.sub(impliedApr2).abs();
|
|
29
29
|
const annualizationFactor = boros_offchain_math_1.FixedX18.fromNumber(365 / daysToMaturity);
|
|
30
30
|
const two = boros_offchain_math_1.FixedX18.fromNumber(2);
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const totalFees =
|
|
34
|
-
const
|
|
35
|
-
const netReturn = impliedAprDiff.sub(annualizedFees);
|
|
31
|
+
const annualizedExchangeFees = exchangeFee1.add(exchangeFee2).mulDown(annualizationFactor);
|
|
32
|
+
const borosFees = borosSettlementFee.add(borosTradeFee).mulDown(two);
|
|
33
|
+
const totalFees = annualizedExchangeFees.add(borosFees);
|
|
34
|
+
const netReturn = impliedAprDiff.sub(totalFees);
|
|
36
35
|
const twoOverPerpLev = boros_offchain_math_1.FixedX18.fromNumber(2 / perpLeverage);
|
|
37
36
|
const denominator = twoOverPerpLev.add(borosMargin);
|
|
38
37
|
const leverageFactor = boros_offchain_math_1.FixedX18.ONE.divDown(denominator);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategyApr.js","sourceRoot":"","sources":["../../../src/entities/Calculator/strategyApr.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"strategyApr.js","sourceRoot":"","sources":["../../../src/entities/Calculator/strategyApr.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategyExecution.js","sourceRoot":"","sources":["../../../src/entities/Calculator/strategyExecution.ts"],"names":[],"mappings":";;AAoBA,
|
|
1
|
+
{"version":3,"file":"strategyExecution.js","sourceRoot":"","sources":["../../../src/entities/Calculator/strategyExecution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MarketResponse } from '../../backend/secrettune/BorosCoreSDK';
|
|
2
|
+
import type { GetStrategiesParams, GetStrategiesResult, Strategy } from './types';
|
|
2
3
|
export declare function findStrategies(params?: GetStrategiesParams): Promise<GetStrategiesResult>;
|
|
3
4
|
export declare function findStrategiesByAsset(params: GetStrategiesParams & {
|
|
4
5
|
asset: string;
|
|
@@ -9,3 +10,4 @@ export declare function findStrategiesByMaturity(params: GetStrategiesParams & {
|
|
|
9
10
|
export declare function findStrategiesByExchanges(params: GetStrategiesParams & {
|
|
10
11
|
exchanges: [string, string];
|
|
11
12
|
}): Promise<GetStrategiesResult>;
|
|
13
|
+
export declare function getStrategyByMarketIds(marketId1: number, marketId2: number, markets?: MarketResponse[]): Promise<Strategy | null>;
|
|
@@ -4,6 +4,7 @@ exports.findStrategies = findStrategies;
|
|
|
4
4
|
exports.findStrategiesByAsset = findStrategiesByAsset;
|
|
5
5
|
exports.findStrategiesByMaturity = findStrategiesByMaturity;
|
|
6
6
|
exports.findStrategiesByExchanges = findStrategiesByExchanges;
|
|
7
|
+
exports.getStrategyByMarketIds = getStrategyByMarketIds;
|
|
7
8
|
const module_1 = require("../../backend/secrettune/module");
|
|
8
9
|
const SECONDS_PER_DAY = 86400;
|
|
9
10
|
async function fetchMarkets() {
|
|
@@ -15,7 +16,7 @@ function toStrategyMarket(market) {
|
|
|
15
16
|
if (!market.metadata) {
|
|
16
17
|
return null;
|
|
17
18
|
}
|
|
18
|
-
const impliedApr = market.data?.
|
|
19
|
+
const impliedApr = market.data?.midApr ?? market.data?.markApr ?? market.data?.ammImpliedApr ?? 0;
|
|
19
20
|
return {
|
|
20
21
|
marketId: market.marketId,
|
|
21
22
|
address: market.address,
|
|
@@ -159,4 +160,60 @@ async function findStrategiesByExchanges(params) {
|
|
|
159
160
|
totalCount: filtered.length,
|
|
160
161
|
};
|
|
161
162
|
}
|
|
163
|
+
async function getStrategyByMarketIds(marketId1, marketId2, markets) {
|
|
164
|
+
const allMarkets = markets ?? (await fetchMarkets());
|
|
165
|
+
const market1 = allMarkets.find((m) => m.marketId === marketId1);
|
|
166
|
+
const market2 = allMarkets.find((m) => m.marketId === marketId2);
|
|
167
|
+
if (!market1 || !market2) {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
if (!market1.metadata?.assetSymbol || !market2.metadata?.assetSymbol) {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
if (!market1.metadata?.platformName || !market2.metadata?.platformName) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
if (market1.metadata.assetSymbol !== market2.metadata.assetSymbol) {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
if (market1.tokenId !== market2.tokenId) {
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
if (market1.imData.maturity !== market2.imData.maturity) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
const strategyMarket1 = toStrategyMarket(market1);
|
|
186
|
+
const strategyMarket2 = toStrategyMarket(market2);
|
|
187
|
+
if (!strategyMarket1 || !strategyMarket2) {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
let longMarket;
|
|
191
|
+
let shortMarket;
|
|
192
|
+
if (strategyMarket1.impliedApr >= strategyMarket2.impliedApr) {
|
|
193
|
+
longMarket = strategyMarket1;
|
|
194
|
+
shortMarket = strategyMarket2;
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
longMarket = strategyMarket2;
|
|
198
|
+
shortMarket = strategyMarket1;
|
|
199
|
+
}
|
|
200
|
+
const asset = market1.metadata.assetSymbol;
|
|
201
|
+
const collateralTokenId = market1.tokenId;
|
|
202
|
+
const maturity = market1.imData.maturity;
|
|
203
|
+
const timeToMaturity = market1.data?.timeToMaturity ?? (maturity - Math.floor(Date.now() / 1000));
|
|
204
|
+
const daysToMaturity = Math.max(0, Math.ceil(timeToMaturity / SECONDS_PER_DAY));
|
|
205
|
+
const impliedAprSpread = Math.abs(strategyMarket1.impliedApr - strategyMarket2.impliedApr);
|
|
206
|
+
return {
|
|
207
|
+
id: createStrategyId(asset, collateralTokenId, maturity, longMarket.exchange, shortMarket.exchange),
|
|
208
|
+
asset,
|
|
209
|
+
collateralTokenId,
|
|
210
|
+
maturity,
|
|
211
|
+
timeToMaturity,
|
|
212
|
+
daysToMaturity,
|
|
213
|
+
longMarket,
|
|
214
|
+
shortMarket,
|
|
215
|
+
impliedAprSpread,
|
|
216
|
+
maxPerpLeverage: Math.min(longMarket.maxLeverage, shortMarket.maxLeverage),
|
|
217
|
+
};
|
|
218
|
+
}
|
|
162
219
|
//# sourceMappingURL=strategyFinder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategyFinder.js","sourceRoot":"","sources":["../../../src/entities/Calculator/strategyFinder.ts"],"names":[],"mappings":";;AA2EA,wCAkHC;AAKD,sDAYC;AAKD,4DAYC;AAKD,8DAoBC;
|
|
1
|
+
{"version":3,"file":"strategyFinder.js","sourceRoot":"","sources":["../../../src/entities/Calculator/strategyFinder.ts"],"names":[],"mappings":"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"}
|