@lifi/perps-sdk 0.1.1-alpha.23 → 0.1.1-alpha.24
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/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/calculations.d.ts +7 -0
- package/dist/cjs/utils/calculations.d.ts.map +1 -1
- package/dist/cjs/utils/calculations.js +28 -0
- package/dist/cjs/utils/calculations.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/calculations.d.ts +33 -0
- package/dist/esm/utils/calculations.d.ts.map +1 -1
- package/dist/esm/utils/calculations.js +51 -0
- package/dist/esm/utils/calculations.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/utils/calculations.d.ts +33 -0
- package/dist/types/utils/calculations.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/index.ts +4 -0
- package/src/utils/calculations.ts +79 -0
- package/src/version.ts +1 -1
package/dist/cjs/index.d.ts
CHANGED
|
@@ -45,7 +45,8 @@ export type { SubmitOrderParams } from './services/submitOrder.js';
|
|
|
45
45
|
export { submitOrder } from './services/submitOrder.js';
|
|
46
46
|
export type { SubmitWithdrawalParams } from './services/submitWithdrawal.js';
|
|
47
47
|
export { submitWithdrawal } from './services/submitWithdrawal.js';
|
|
48
|
-
export {
|
|
48
|
+
export type { ExpectedPnl } from './utils/calculations.js';
|
|
49
|
+
export { applySlippage, calculateExpectedPnl, calculateNotionalValue, calculatePositionSize, calculateRequiredMargin, calculateRoe, calculateUnrealizedPnl, estimateFees, percentFromPrice, priceFromPercent, } from './utils/calculations.js';
|
|
49
50
|
export type { FillClassification } from './utils/orderClassification.js';
|
|
50
51
|
export { classifyFill, isStopLossOrder, isTakeProfitOrder, isTpSlOrder, } from './utils/orderClassification.js';
|
|
51
52
|
export { formatOrderPrice, formatOrderSize, getMaxPriceDecimals, } from './utils/orderFormatting.js';
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.version = exports.name = exports.signTypedData = exports.getMaxPriceDecimals = exports.formatOrderSize = exports.formatOrderPrice = exports.isTpSlOrder = exports.isTakeProfitOrder = exports.isStopLossOrder = exports.classifyFill = exports.estimateFees = exports.calculateUnrealizedPnl = exports.calculateRoe = exports.calculateRequiredMargin = exports.calculatePositionSize = exports.calculateNotionalValue = exports.applySlippage = exports.submitWithdrawal = exports.submitOrder = exports.submitAuthorization = exports.modifyOrder = exports.getPrices = exports.getOrderbook = exports.getOrder = exports.getOhlcv = exports.getMarkets = exports.getMarket = exports.getHistory = exports.getDexes = exports.getActivity = exports.getAccount = exports.createWithdrawal = exports.createOrder = exports.createAuthorization = exports.cancelOrder = exports.PerpsWsClient = exports.PerpsError = exports.PerpsErrorMessage = exports.PerpsClient = exports.DEFAULT_API_URL = exports.createPerpsClient = exports.localStorageAdapter = exports.createMemoryStorage = exports.AgentManager = void 0;
|
|
17
|
+
exports.version = exports.name = exports.signTypedData = exports.getMaxPriceDecimals = exports.formatOrderSize = exports.formatOrderPrice = exports.isTpSlOrder = exports.isTakeProfitOrder = exports.isStopLossOrder = exports.classifyFill = exports.priceFromPercent = exports.percentFromPrice = exports.estimateFees = exports.calculateUnrealizedPnl = exports.calculateRoe = exports.calculateRequiredMargin = exports.calculatePositionSize = exports.calculateNotionalValue = exports.calculateExpectedPnl = exports.applySlippage = exports.submitWithdrawal = exports.submitOrder = exports.submitAuthorization = exports.modifyOrder = exports.getPrices = exports.getOrderbook = exports.getOrder = exports.getOhlcv = exports.getMarkets = exports.getMarket = exports.getHistory = exports.getDexes = exports.getActivity = exports.getAccount = exports.createWithdrawal = exports.createOrder = exports.createAuthorization = exports.cancelOrder = exports.PerpsWsClient = exports.PerpsError = exports.PerpsErrorMessage = exports.PerpsClient = exports.DEFAULT_API_URL = exports.createPerpsClient = exports.localStorageAdapter = exports.createMemoryStorage = exports.AgentManager = void 0;
|
|
18
18
|
__exportStar(require("@lifi/perps-types"), exports);
|
|
19
19
|
var AgentManager_js_1 = require("./agent/AgentManager.js");
|
|
20
20
|
Object.defineProperty(exports, "AgentManager", { enumerable: true, get: function () { return AgentManager_js_1.AgentManager; } });
|
|
@@ -70,12 +70,15 @@ var submitWithdrawal_js_1 = require("./services/submitWithdrawal.js");
|
|
|
70
70
|
Object.defineProperty(exports, "submitWithdrawal", { enumerable: true, get: function () { return submitWithdrawal_js_1.submitWithdrawal; } });
|
|
71
71
|
var calculations_js_1 = require("./utils/calculations.js");
|
|
72
72
|
Object.defineProperty(exports, "applySlippage", { enumerable: true, get: function () { return calculations_js_1.applySlippage; } });
|
|
73
|
+
Object.defineProperty(exports, "calculateExpectedPnl", { enumerable: true, get: function () { return calculations_js_1.calculateExpectedPnl; } });
|
|
73
74
|
Object.defineProperty(exports, "calculateNotionalValue", { enumerable: true, get: function () { return calculations_js_1.calculateNotionalValue; } });
|
|
74
75
|
Object.defineProperty(exports, "calculatePositionSize", { enumerable: true, get: function () { return calculations_js_1.calculatePositionSize; } });
|
|
75
76
|
Object.defineProperty(exports, "calculateRequiredMargin", { enumerable: true, get: function () { return calculations_js_1.calculateRequiredMargin; } });
|
|
76
77
|
Object.defineProperty(exports, "calculateRoe", { enumerable: true, get: function () { return calculations_js_1.calculateRoe; } });
|
|
77
78
|
Object.defineProperty(exports, "calculateUnrealizedPnl", { enumerable: true, get: function () { return calculations_js_1.calculateUnrealizedPnl; } });
|
|
78
79
|
Object.defineProperty(exports, "estimateFees", { enumerable: true, get: function () { return calculations_js_1.estimateFees; } });
|
|
80
|
+
Object.defineProperty(exports, "percentFromPrice", { enumerable: true, get: function () { return calculations_js_1.percentFromPrice; } });
|
|
81
|
+
Object.defineProperty(exports, "priceFromPercent", { enumerable: true, get: function () { return calculations_js_1.priceFromPercent; } });
|
|
79
82
|
var orderClassification_js_1 = require("./utils/orderClassification.js");
|
|
80
83
|
Object.defineProperty(exports, "classifyFill", { enumerable: true, get: function () { return orderClassification_js_1.classifyFill; } });
|
|
81
84
|
Object.defineProperty(exports, "isStopLossOrder", { enumerable: true, get: function () { return orderClassification_js_1.isStopLossOrder; } });
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,oDAAiC;AAEjC,2DAAsD;AAA7C,+GAAA,YAAY,OAAA;AACrB,iDAA6E;AAApE,iHAAA,mBAAmB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AASjD,sEAGsC;AAFpC,yHAAA,iBAAiB,OAAA;AACjB,uHAAA,eAAe,OAAA;AAEjB,0DAAqD;AAA5C,6GAAA,WAAW,OAAA;AAgBpB,sDAAyD;AAAhD,iHAAA,iBAAiB,OAAA;AAC1B,wDAAmD;AAA1C,2GAAA,UAAU,OAAA;AAEnB,gEAA2D;AAAlD,iHAAA,aAAa,OAAA;AAItB,4DAAuD;AAA9C,6GAAA,WAAW,OAAA;AAEpB,4EAAuE;AAA9D,6HAAA,mBAAmB,OAAA;AAE5B,4DAAuD;AAA9C,6GAAA,WAAW,OAAA;AAEpB,sEAAiE;AAAxD,uHAAA,gBAAgB,OAAA;AAEzB,0DAAqD;AAA5C,2GAAA,UAAU,OAAA;AAEnB,4DAAuD;AAA9C,6GAAA,WAAW,OAAA;AACpB,sDAAiD;AAAxC,uGAAA,QAAQ,OAAA;AAEjB,0DAAqD;AAA5C,2GAAA,UAAU,OAAA;AAEnB,wDAAmD;AAA1C,yGAAA,SAAS,OAAA;AAElB,0DAAqD;AAA5C,2GAAA,UAAU,OAAA;AAEnB,sDAAiD;AAAxC,uGAAA,QAAQ,OAAA;AAEjB,sDAAiD;AAAxC,uGAAA,QAAQ,OAAA;AAEjB,8DAAyD;AAAhD,+GAAA,YAAY,OAAA;AAErB,wDAAmD;AAA1C,yGAAA,SAAS,OAAA;AAElB,4DAAuD;AAA9C,6GAAA,WAAW,OAAA;AAEpB,4EAAuE;AAA9D,6HAAA,mBAAmB,OAAA;AAE5B,4DAAuD;AAA9C,6GAAA,WAAW,OAAA;AAEpB,sEAAiE;AAAxD,uHAAA,gBAAgB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,oDAAiC;AAEjC,2DAAsD;AAA7C,+GAAA,YAAY,OAAA;AACrB,iDAA6E;AAApE,iHAAA,mBAAmB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AASjD,sEAGsC;AAFpC,yHAAA,iBAAiB,OAAA;AACjB,uHAAA,eAAe,OAAA;AAEjB,0DAAqD;AAA5C,6GAAA,WAAW,OAAA;AAgBpB,sDAAyD;AAAhD,iHAAA,iBAAiB,OAAA;AAC1B,wDAAmD;AAA1C,2GAAA,UAAU,OAAA;AAEnB,gEAA2D;AAAlD,iHAAA,aAAa,OAAA;AAItB,4DAAuD;AAA9C,6GAAA,WAAW,OAAA;AAEpB,4EAAuE;AAA9D,6HAAA,mBAAmB,OAAA;AAE5B,4DAAuD;AAA9C,6GAAA,WAAW,OAAA;AAEpB,sEAAiE;AAAxD,uHAAA,gBAAgB,OAAA;AAEzB,0DAAqD;AAA5C,2GAAA,UAAU,OAAA;AAEnB,4DAAuD;AAA9C,6GAAA,WAAW,OAAA;AACpB,sDAAiD;AAAxC,uGAAA,QAAQ,OAAA;AAEjB,0DAAqD;AAA5C,2GAAA,UAAU,OAAA;AAEnB,wDAAmD;AAA1C,yGAAA,SAAS,OAAA;AAElB,0DAAqD;AAA5C,2GAAA,UAAU,OAAA;AAEnB,sDAAiD;AAAxC,uGAAA,QAAQ,OAAA;AAEjB,sDAAiD;AAAxC,uGAAA,QAAQ,OAAA;AAEjB,8DAAyD;AAAhD,+GAAA,YAAY,OAAA;AAErB,wDAAmD;AAA1C,yGAAA,SAAS,OAAA;AAElB,4DAAuD;AAA9C,6GAAA,WAAW,OAAA;AAEpB,4EAAuE;AAA9D,6HAAA,mBAAmB,OAAA;AAE5B,4DAAuD;AAA9C,6GAAA,WAAW,OAAA;AAEpB,sEAAiE;AAAxD,uHAAA,gBAAgB,OAAA;AAIzB,2DAWgC;AAV9B,gHAAA,aAAa,OAAA;AACb,uHAAA,oBAAoB,OAAA;AACpB,yHAAA,sBAAsB,OAAA;AACtB,wHAAA,qBAAqB,OAAA;AACrB,0HAAA,uBAAuB,OAAA;AACvB,+GAAA,YAAY,OAAA;AACZ,yHAAA,sBAAsB,OAAA;AACtB,+GAAA,YAAY,OAAA;AACZ,mHAAA,gBAAgB,OAAA;AAChB,mHAAA,gBAAgB,OAAA;AAGlB,yEAKuC;AAJrC,sHAAA,YAAY,OAAA;AACZ,yHAAA,eAAe,OAAA;AACf,2HAAA,iBAAiB,OAAA;AACjB,qHAAA,WAAW,OAAA;AAEb,iEAImC;AAHjC,sHAAA,gBAAgB,OAAA;AAChB,qHAAA,eAAe,OAAA;AACf,yHAAA,mBAAmB,OAAA;AAErB,6DAAwD;AAA/C,iHAAA,aAAa,OAAA;AAGtB,2CAA4C;AAAnC,kGAAA,IAAI,OAAA;AAAE,qGAAA,OAAO,OAAA"}
|
|
@@ -5,4 +5,11 @@ export declare function calculateRoe(pnl: number, margin: number): number;
|
|
|
5
5
|
export declare function calculateRequiredMargin(notionalValue: number, leverage: number): number;
|
|
6
6
|
export declare function estimateFees(sizeUsd: number, feeRate: number): number;
|
|
7
7
|
export declare function applySlippage(price: number, slippagePercent: number, isBuy: boolean): number;
|
|
8
|
+
export interface ExpectedPnl {
|
|
9
|
+
amount: number;
|
|
10
|
+
percent: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function calculateExpectedPnl(triggerPrice: number, entryPrice: number, leverage: number, isLong: boolean, margin: number): ExpectedPnl | null;
|
|
13
|
+
export declare function priceFromPercent(percent: number, entryPrice: number, leverage: number, isLong: boolean): number;
|
|
14
|
+
export declare function percentFromPrice(price: number, entryPrice: number, leverage: number, isLong: boolean): number;
|
|
8
15
|
//# sourceMappingURL=calculations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"AAgBA,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AASD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1E;AAUD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AASD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAKhE;AASD,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AASD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AAUD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,OAAO,GACb,MAAM,CAGR"}
|
|
1
|
+
{"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"AAgBA,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AASD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1E;AAUD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AASD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAKhE;AASD,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AASD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AAUD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,OAAO,GACb,MAAM,CAGR;AAMD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAYD,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,GACb,WAAW,GAAG,IAAI,CAUpB;AAUD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,MAAM,CAMR;AAUD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,MAAM,CAMR"}
|
|
@@ -7,6 +7,9 @@ exports.calculateRoe = calculateRoe;
|
|
|
7
7
|
exports.calculateRequiredMargin = calculateRequiredMargin;
|
|
8
8
|
exports.estimateFees = estimateFees;
|
|
9
9
|
exports.applySlippage = applySlippage;
|
|
10
|
+
exports.calculateExpectedPnl = calculateExpectedPnl;
|
|
11
|
+
exports.priceFromPercent = priceFromPercent;
|
|
12
|
+
exports.percentFromPrice = percentFromPrice;
|
|
10
13
|
function calculatePositionSize(marginUsd, leverage, price) {
|
|
11
14
|
return (marginUsd * leverage) / price;
|
|
12
15
|
}
|
|
@@ -32,4 +35,29 @@ function applySlippage(price, slippagePercent, isBuy) {
|
|
|
32
35
|
const multiplier = 1 + slippagePercent / 100;
|
|
33
36
|
return isBuy ? price * multiplier : price / multiplier;
|
|
34
37
|
}
|
|
38
|
+
function calculateExpectedPnl(triggerPrice, entryPrice, leverage, isLong, margin) {
|
|
39
|
+
if (!triggerPrice || entryPrice === 0 || margin === 0) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const priceDiff = isLong
|
|
43
|
+
? triggerPrice - entryPrice
|
|
44
|
+
: entryPrice - triggerPrice;
|
|
45
|
+
const percent = (priceDiff / entryPrice) * leverage * 100;
|
|
46
|
+
const amount = margin * (percent / 100);
|
|
47
|
+
return { amount, percent };
|
|
48
|
+
}
|
|
49
|
+
function priceFromPercent(percent, entryPrice, leverage, isLong) {
|
|
50
|
+
if (entryPrice === 0 || leverage === 0) {
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
53
|
+
const priceDelta = (percent / 100 / leverage) * entryPrice;
|
|
54
|
+
return isLong ? entryPrice + priceDelta : entryPrice - priceDelta;
|
|
55
|
+
}
|
|
56
|
+
function percentFromPrice(price, entryPrice, leverage, isLong) {
|
|
57
|
+
if (entryPrice === 0 || leverage === 0) {
|
|
58
|
+
return 0;
|
|
59
|
+
}
|
|
60
|
+
const priceDiff = isLong ? price - entryPrice : entryPrice - price;
|
|
61
|
+
return (priceDiff / entryPrice) * leverage * 100;
|
|
62
|
+
}
|
|
35
63
|
//# sourceMappingURL=calculations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":";;AAgBA,sDAMC;AASD,wDAEC;AAUD,wDAMC;AASD,oCAKC;AASD,0DAKC;AASD,oCAEC;AAUD,sCAOC;
|
|
1
|
+
{"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/version.d.ts
CHANGED
package/dist/cjs/version.js
CHANGED
package/dist/esm/index.d.ts
CHANGED
|
@@ -45,7 +45,8 @@ export type { SubmitOrderParams } from './services/submitOrder.js';
|
|
|
45
45
|
export { submitOrder } from './services/submitOrder.js';
|
|
46
46
|
export type { SubmitWithdrawalParams } from './services/submitWithdrawal.js';
|
|
47
47
|
export { submitWithdrawal } from './services/submitWithdrawal.js';
|
|
48
|
-
export {
|
|
48
|
+
export type { ExpectedPnl } from './utils/calculations.js';
|
|
49
|
+
export { applySlippage, calculateExpectedPnl, calculateNotionalValue, calculatePositionSize, calculateRequiredMargin, calculateRoe, calculateUnrealizedPnl, estimateFees, percentFromPrice, priceFromPercent, } from './utils/calculations.js';
|
|
49
50
|
export type { FillClassification } from './utils/orderClassification.js';
|
|
50
51
|
export { classifyFill, isStopLossOrder, isTakeProfitOrder, isTpSlOrder, } from './utils/orderClassification.js';
|
|
51
52
|
export { formatOrderPrice, formatOrderSize, getMaxPriceDecimals, } from './utils/orderFormatting.js';
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -30,8 +30,7 @@ export { modifyOrder } from './services/modifyOrder.js';
|
|
|
30
30
|
export { submitAuthorization } from './services/submitAuthorization.js';
|
|
31
31
|
export { submitOrder } from './services/submitOrder.js';
|
|
32
32
|
export { submitWithdrawal } from './services/submitWithdrawal.js';
|
|
33
|
-
|
|
34
|
-
export { applySlippage, calculateNotionalValue, calculatePositionSize, calculateRequiredMargin, calculateRoe, calculateUnrealizedPnl, estimateFees, } from './utils/calculations.js';
|
|
33
|
+
export { applySlippage, calculateExpectedPnl, calculateNotionalValue, calculatePositionSize, calculateRequiredMargin, calculateRoe, calculateUnrealizedPnl, estimateFees, percentFromPrice, priceFromPercent, } from './utils/calculations.js';
|
|
35
34
|
export { classifyFill, isStopLossOrder, isTakeProfitOrder, isTpSlOrder, } from './utils/orderClassification.js';
|
|
36
35
|
export { formatOrderPrice, formatOrderSize, getMaxPriceDecimals, } from './utils/orderFormatting.js';
|
|
37
36
|
export { signTypedData } from './utils/signTypedData.js';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AAET,QAAQ;AACR,cAAc,mBAAmB,CAAA;AACjC,QAAQ;AACR,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAS7E,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAerD,SAAS;AACT,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAG3D,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AAET,QAAQ;AACR,cAAc,mBAAmB,CAAA;AACjC,QAAQ;AACR,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAS7E,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAerD,SAAS;AACT,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAG3D,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAIjE,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,WAAW,GACZ,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,UAAU;AACV,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -64,4 +64,37 @@ export declare function estimateFees(sizeUsd: number, feeRate: number): number;
|
|
|
64
64
|
* @returns Price adjusted for slippage
|
|
65
65
|
*/
|
|
66
66
|
export declare function applySlippage(price: number, slippagePercent: number, isBuy: boolean): number;
|
|
67
|
+
export interface ExpectedPnl {
|
|
68
|
+
amount: number;
|
|
69
|
+
percent: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Calculate expected gain/loss for a TP or SL trigger price.
|
|
73
|
+
* Returns signed values — positive means profit, negative means loss.
|
|
74
|
+
*
|
|
75
|
+
* @param triggerPrice - The TP or SL target price
|
|
76
|
+
* @param entryPrice - Position entry / current market price
|
|
77
|
+
* @param leverage - Position leverage multiplier
|
|
78
|
+
* @param isLong - True for long positions, false for short
|
|
79
|
+
* @param margin - Margin amount in USD
|
|
80
|
+
*/
|
|
81
|
+
export declare function calculateExpectedPnl(triggerPrice: number, entryPrice: number, leverage: number, isLong: boolean, margin: number): ExpectedPnl | null;
|
|
82
|
+
/**
|
|
83
|
+
* Convert a percentage gain/loss to a target price.
|
|
84
|
+
*
|
|
85
|
+
* @param percent - Target gain/loss percentage (positive = profitable direction)
|
|
86
|
+
* @param entryPrice - Position entry price
|
|
87
|
+
* @param leverage - Position leverage multiplier
|
|
88
|
+
* @param isLong - True for long positions, false for short
|
|
89
|
+
*/
|
|
90
|
+
export declare function priceFromPercent(percent: number, entryPrice: number, leverage: number, isLong: boolean): number;
|
|
91
|
+
/**
|
|
92
|
+
* Convert a target price to a percentage gain/loss.
|
|
93
|
+
*
|
|
94
|
+
* @param price - Target price
|
|
95
|
+
* @param entryPrice - Position entry price
|
|
96
|
+
* @param leverage - Position leverage multiplier
|
|
97
|
+
* @param isLong - True for long positions, false for short
|
|
98
|
+
*/
|
|
99
|
+
export declare function percentFromPrice(price: number, entryPrice: number, leverage: number, isLong: boolean): number;
|
|
67
100
|
//# sourceMappingURL=calculations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,OAAO,GACb,MAAM,CAGR"}
|
|
1
|
+
{"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,OAAO,GACb,MAAM,CAGR;AAMD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,GACb,WAAW,GAAG,IAAI,CAUpB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,MAAM,CAMR;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,MAAM,CAMR"}
|
|
@@ -82,4 +82,55 @@ export function applySlippage(price, slippagePercent, isBuy) {
|
|
|
82
82
|
const multiplier = 1 + slippagePercent / 100;
|
|
83
83
|
return isBuy ? price * multiplier : price / multiplier;
|
|
84
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Calculate expected gain/loss for a TP or SL trigger price.
|
|
87
|
+
* Returns signed values — positive means profit, negative means loss.
|
|
88
|
+
*
|
|
89
|
+
* @param triggerPrice - The TP or SL target price
|
|
90
|
+
* @param entryPrice - Position entry / current market price
|
|
91
|
+
* @param leverage - Position leverage multiplier
|
|
92
|
+
* @param isLong - True for long positions, false for short
|
|
93
|
+
* @param margin - Margin amount in USD
|
|
94
|
+
*/
|
|
95
|
+
export function calculateExpectedPnl(triggerPrice, entryPrice, leverage, isLong, margin) {
|
|
96
|
+
if (!triggerPrice || entryPrice === 0 || margin === 0) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
const priceDiff = isLong
|
|
100
|
+
? triggerPrice - entryPrice
|
|
101
|
+
: entryPrice - triggerPrice;
|
|
102
|
+
const percent = (priceDiff / entryPrice) * leverage * 100;
|
|
103
|
+
const amount = margin * (percent / 100);
|
|
104
|
+
return { amount, percent };
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Convert a percentage gain/loss to a target price.
|
|
108
|
+
*
|
|
109
|
+
* @param percent - Target gain/loss percentage (positive = profitable direction)
|
|
110
|
+
* @param entryPrice - Position entry price
|
|
111
|
+
* @param leverage - Position leverage multiplier
|
|
112
|
+
* @param isLong - True for long positions, false for short
|
|
113
|
+
*/
|
|
114
|
+
export function priceFromPercent(percent, entryPrice, leverage, isLong) {
|
|
115
|
+
if (entryPrice === 0 || leverage === 0) {
|
|
116
|
+
return 0;
|
|
117
|
+
}
|
|
118
|
+
const priceDelta = (percent / 100 / leverage) * entryPrice;
|
|
119
|
+
return isLong ? entryPrice + priceDelta : entryPrice - priceDelta;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Convert a target price to a percentage gain/loss.
|
|
123
|
+
*
|
|
124
|
+
* @param price - Target price
|
|
125
|
+
* @param entryPrice - Position entry price
|
|
126
|
+
* @param leverage - Position leverage multiplier
|
|
127
|
+
* @param isLong - True for long positions, false for short
|
|
128
|
+
*/
|
|
129
|
+
export function percentFromPrice(price, entryPrice, leverage, isLong) {
|
|
130
|
+
if (entryPrice === 0 || leverage === 0) {
|
|
131
|
+
return 0;
|
|
132
|
+
}
|
|
133
|
+
const priceDiff = isLong ? price - entryPrice : entryPrice - price;
|
|
134
|
+
return (priceDiff / entryPrice) * leverage * 100;
|
|
135
|
+
}
|
|
85
136
|
//# sourceMappingURL=calculations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAiB,EACjB,QAAgB,EAChB,KAAa;IAEb,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,KAAK,CAAA;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,KAAa;IAChE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;AAC/B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,YAAoB,EACpB,IAAY;IAEZ,OAAO,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,IAAI,CAAA;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,MAAc;IACtD,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,CAAA;IACV,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,CAAA;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,aAAqB,EACrB,QAAgB;IAEhB,OAAO,aAAa,GAAG,QAAQ,CAAA;AACjC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,OAAe;IAC3D,OAAO,OAAO,GAAG,OAAO,CAAA;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,eAAuB,EACvB,KAAc;IAEd,MAAM,UAAU,GAAG,CAAC,GAAG,eAAe,GAAG,GAAG,CAAA;IAC5C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAA;AACxD,CAAC"}
|
|
1
|
+
{"version":3,"file":"calculations.js","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/version.d.ts
CHANGED
package/dist/esm/version.js
CHANGED
package/dist/types/index.d.ts
CHANGED
|
@@ -45,7 +45,8 @@ export type { SubmitOrderParams } from './services/submitOrder.js';
|
|
|
45
45
|
export { submitOrder } from './services/submitOrder.js';
|
|
46
46
|
export type { SubmitWithdrawalParams } from './services/submitWithdrawal.js';
|
|
47
47
|
export { submitWithdrawal } from './services/submitWithdrawal.js';
|
|
48
|
-
export {
|
|
48
|
+
export type { ExpectedPnl } from './utils/calculations.js';
|
|
49
|
+
export { applySlippage, calculateExpectedPnl, calculateNotionalValue, calculatePositionSize, calculateRequiredMargin, calculateRoe, calculateUnrealizedPnl, estimateFees, percentFromPrice, priceFromPercent, } from './utils/calculations.js';
|
|
49
50
|
export type { FillClassification } from './utils/orderClassification.js';
|
|
50
51
|
export { classifyFill, isStopLossOrder, isTakeProfitOrder, isTpSlOrder, } from './utils/orderClassification.js';
|
|
51
52
|
export { formatOrderPrice, formatOrderSize, getMaxPriceDecimals, } from './utils/orderFormatting.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,4 +64,37 @@ export declare function estimateFees(sizeUsd: number, feeRate: number): number;
|
|
|
64
64
|
* @returns Price adjusted for slippage
|
|
65
65
|
*/
|
|
66
66
|
export declare function applySlippage(price: number, slippagePercent: number, isBuy: boolean): number;
|
|
67
|
+
export interface ExpectedPnl {
|
|
68
|
+
amount: number;
|
|
69
|
+
percent: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Calculate expected gain/loss for a TP or SL trigger price.
|
|
73
|
+
* Returns signed values — positive means profit, negative means loss.
|
|
74
|
+
*
|
|
75
|
+
* @param triggerPrice - The TP or SL target price
|
|
76
|
+
* @param entryPrice - Position entry / current market price
|
|
77
|
+
* @param leverage - Position leverage multiplier
|
|
78
|
+
* @param isLong - True for long positions, false for short
|
|
79
|
+
* @param margin - Margin amount in USD
|
|
80
|
+
*/
|
|
81
|
+
export declare function calculateExpectedPnl(triggerPrice: number, entryPrice: number, leverage: number, isLong: boolean, margin: number): ExpectedPnl | null;
|
|
82
|
+
/**
|
|
83
|
+
* Convert a percentage gain/loss to a target price.
|
|
84
|
+
*
|
|
85
|
+
* @param percent - Target gain/loss percentage (positive = profitable direction)
|
|
86
|
+
* @param entryPrice - Position entry price
|
|
87
|
+
* @param leverage - Position leverage multiplier
|
|
88
|
+
* @param isLong - True for long positions, false for short
|
|
89
|
+
*/
|
|
90
|
+
export declare function priceFromPercent(percent: number, entryPrice: number, leverage: number, isLong: boolean): number;
|
|
91
|
+
/**
|
|
92
|
+
* Convert a target price to a percentage gain/loss.
|
|
93
|
+
*
|
|
94
|
+
* @param price - Target price
|
|
95
|
+
* @param entryPrice - Position entry price
|
|
96
|
+
* @param leverage - Position leverage multiplier
|
|
97
|
+
* @param isLong - True for long positions, false for short
|
|
98
|
+
*/
|
|
99
|
+
export declare function percentFromPrice(price: number, entryPrice: number, leverage: number, isLong: boolean): number;
|
|
67
100
|
//# sourceMappingURL=calculations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,OAAO,GACb,MAAM,CAGR"}
|
|
1
|
+
{"version":3,"file":"calculations.d.ts","sourceRoot":"","sources":["../../../src/utils/calculations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,OAAO,GACb,MAAM,CAGR;AAMD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,GACb,WAAW,GAAG,IAAI,CAUpB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,MAAM,CAMR;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,MAAM,CAMR"}
|
package/dist/types/version.d.ts
CHANGED
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -76,14 +76,18 @@ export type { SubmitWithdrawalParams } from './services/submitWithdrawal.js'
|
|
|
76
76
|
export { submitWithdrawal } from './services/submitWithdrawal.js'
|
|
77
77
|
|
|
78
78
|
// Utils
|
|
79
|
+
export type { ExpectedPnl } from './utils/calculations.js'
|
|
79
80
|
export {
|
|
80
81
|
applySlippage,
|
|
82
|
+
calculateExpectedPnl,
|
|
81
83
|
calculateNotionalValue,
|
|
82
84
|
calculatePositionSize,
|
|
83
85
|
calculateRequiredMargin,
|
|
84
86
|
calculateRoe,
|
|
85
87
|
calculateUnrealizedPnl,
|
|
86
88
|
estimateFees,
|
|
89
|
+
percentFromPrice,
|
|
90
|
+
priceFromPercent,
|
|
87
91
|
} from './utils/calculations.js'
|
|
88
92
|
export type { FillClassification } from './utils/orderClassification.js'
|
|
89
93
|
export {
|
|
@@ -104,3 +104,82 @@ export function applySlippage(
|
|
|
104
104
|
const multiplier = 1 + slippagePercent / 100
|
|
105
105
|
return isBuy ? price * multiplier : price / multiplier
|
|
106
106
|
}
|
|
107
|
+
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
// TP/SL expected P&L calculations
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
|
|
112
|
+
export interface ExpectedPnl {
|
|
113
|
+
amount: number
|
|
114
|
+
percent: number
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Calculate expected gain/loss for a TP or SL trigger price.
|
|
119
|
+
* Returns signed values — positive means profit, negative means loss.
|
|
120
|
+
*
|
|
121
|
+
* @param triggerPrice - The TP or SL target price
|
|
122
|
+
* @param entryPrice - Position entry / current market price
|
|
123
|
+
* @param leverage - Position leverage multiplier
|
|
124
|
+
* @param isLong - True for long positions, false for short
|
|
125
|
+
* @param margin - Margin amount in USD
|
|
126
|
+
*/
|
|
127
|
+
export function calculateExpectedPnl(
|
|
128
|
+
triggerPrice: number,
|
|
129
|
+
entryPrice: number,
|
|
130
|
+
leverage: number,
|
|
131
|
+
isLong: boolean,
|
|
132
|
+
margin: number
|
|
133
|
+
): ExpectedPnl | null {
|
|
134
|
+
if (!triggerPrice || entryPrice === 0 || margin === 0) {
|
|
135
|
+
return null
|
|
136
|
+
}
|
|
137
|
+
const priceDiff = isLong
|
|
138
|
+
? triggerPrice - entryPrice
|
|
139
|
+
: entryPrice - triggerPrice
|
|
140
|
+
const percent = (priceDiff / entryPrice) * leverage * 100
|
|
141
|
+
const amount = margin * (percent / 100)
|
|
142
|
+
return { amount, percent }
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Convert a percentage gain/loss to a target price.
|
|
147
|
+
*
|
|
148
|
+
* @param percent - Target gain/loss percentage (positive = profitable direction)
|
|
149
|
+
* @param entryPrice - Position entry price
|
|
150
|
+
* @param leverage - Position leverage multiplier
|
|
151
|
+
* @param isLong - True for long positions, false for short
|
|
152
|
+
*/
|
|
153
|
+
export function priceFromPercent(
|
|
154
|
+
percent: number,
|
|
155
|
+
entryPrice: number,
|
|
156
|
+
leverage: number,
|
|
157
|
+
isLong: boolean
|
|
158
|
+
): number {
|
|
159
|
+
if (entryPrice === 0 || leverage === 0) {
|
|
160
|
+
return 0
|
|
161
|
+
}
|
|
162
|
+
const priceDelta = (percent / 100 / leverage) * entryPrice
|
|
163
|
+
return isLong ? entryPrice + priceDelta : entryPrice - priceDelta
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Convert a target price to a percentage gain/loss.
|
|
168
|
+
*
|
|
169
|
+
* @param price - Target price
|
|
170
|
+
* @param entryPrice - Position entry price
|
|
171
|
+
* @param leverage - Position leverage multiplier
|
|
172
|
+
* @param isLong - True for long positions, false for short
|
|
173
|
+
*/
|
|
174
|
+
export function percentFromPrice(
|
|
175
|
+
price: number,
|
|
176
|
+
entryPrice: number,
|
|
177
|
+
leverage: number,
|
|
178
|
+
isLong: boolean
|
|
179
|
+
): number {
|
|
180
|
+
if (entryPrice === 0 || leverage === 0) {
|
|
181
|
+
return 0
|
|
182
|
+
}
|
|
183
|
+
const priceDiff = isLong ? price - entryPrice : entryPrice - price
|
|
184
|
+
return (priceDiff / entryPrice) * leverage * 100
|
|
185
|
+
}
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export const name = '@lifi/perps-sdk'
|
|
2
|
-
export const version = '0.1.1-alpha.
|
|
2
|
+
export const version = '0.1.1-alpha.24'
|