@lifi/perps-sdk 20.1.0 → 21.0.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/README.md +81 -6
- package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/PerpsClient.js +4 -1
- package/dist/cjs/client/PerpsClient.js.map +1 -1
- package/dist/cjs/{utils/decimal.d.ts → decimal/big.d.ts} +1 -1
- package/dist/cjs/decimal/big.d.ts.map +1 -0
- package/dist/cjs/{utils/decimal.js → decimal/big.js} +1 -1
- package/dist/cjs/decimal/big.js.map +1 -0
- package/dist/cjs/decimal/convert.d.ts +11 -0
- package/dist/cjs/decimal/convert.d.ts.map +1 -0
- package/dist/cjs/decimal/convert.js +70 -0
- package/dist/cjs/decimal/convert.js.map +1 -0
- package/dist/cjs/decimal/format.d.ts.map +1 -0
- package/dist/cjs/decimal/format.js.map +1 -0
- package/dist/cjs/decimal/parse.d.ts +6 -0
- package/dist/cjs/decimal/parse.d.ts.map +1 -0
- package/dist/cjs/{utils → decimal}/parse.js +5 -4
- package/dist/cjs/decimal/parse.js.map +1 -0
- package/dist/cjs/index.d.ts +17 -15
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +75 -61
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/math/fills.d.ts +5 -0
- package/dist/cjs/math/fills.d.ts.map +1 -0
- package/dist/cjs/{utils/fillClassification.js → math/fills.js} +16 -1
- package/dist/cjs/math/fills.js.map +1 -0
- package/dist/cjs/math/order.d.ts +45 -0
- package/dist/cjs/math/order.d.ts.map +1 -0
- package/dist/cjs/math/order.js +256 -0
- package/dist/cjs/math/order.js.map +1 -0
- package/dist/cjs/math/position.d.ts +56 -0
- package/dist/cjs/math/position.d.ts.map +1 -0
- package/dist/cjs/math/position.js +160 -0
- package/dist/cjs/math/position.js.map +1 -0
- package/dist/cjs/services/resolveQuote.d.ts.map +1 -1
- package/dist/cjs/services/resolveQuote.js +2 -2
- package/dist/cjs/services/resolveQuote.js.map +1 -1
- package/dist/cjs/services/resolveSubscribeQuote.d.ts.map +1 -1
- package/dist/cjs/services/resolveSubscribeQuote.js +2 -2
- package/dist/cjs/services/resolveSubscribeQuote.js.map +1 -1
- package/dist/cjs/types/provider.d.ts +3 -3
- package/dist/cjs/types/provider.d.ts.map +1 -1
- package/dist/cjs/types/withdrawal.d.ts +7 -5
- package/dist/cjs/types/withdrawal.d.ts.map +1 -1
- package/dist/cjs/utils/orderClassification.d.ts +1 -3
- package/dist/cjs/utils/orderClassification.d.ts.map +1 -1
- package/dist/cjs/utils/orderClassification.js +1 -15
- package/dist/cjs/utils/orderClassification.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wire/orderAmounts.d.ts +18 -0
- package/dist/cjs/wire/orderAmounts.d.ts.map +1 -0
- package/dist/cjs/wire/orderAmounts.js +79 -0
- package/dist/cjs/wire/orderAmounts.js.map +1 -0
- package/dist/cjs/wire/refuel.d.ts +8 -0
- package/dist/cjs/wire/refuel.d.ts.map +1 -0
- package/dist/cjs/wire/refuel.js +23 -0
- package/dist/cjs/wire/refuel.js.map +1 -0
- package/dist/cjs/wire/requireDecimal.d.ts +4 -0
- package/dist/cjs/wire/requireDecimal.d.ts.map +1 -0
- package/dist/cjs/wire/requireDecimal.js +16 -0
- package/dist/cjs/wire/requireDecimal.js.map +1 -0
- package/dist/cjs/wire/snap.d.ts +5 -0
- package/dist/cjs/wire/snap.d.ts.map +1 -0
- package/dist/cjs/wire/snap.js +12 -0
- package/dist/cjs/wire/snap.js.map +1 -0
- package/dist/cjs/wire/transferable.d.ts +3 -0
- package/dist/cjs/wire/transferable.d.ts.map +1 -0
- package/dist/cjs/wire/transferable.js +13 -0
- package/dist/cjs/wire/transferable.js.map +1 -0
- package/dist/cjs/wire/withdraw.d.ts +4 -0
- package/dist/cjs/wire/withdraw.d.ts.map +1 -0
- package/dist/cjs/wire/withdraw.js +13 -0
- package/dist/cjs/wire/withdraw.js.map +1 -0
- package/dist/esm/client/PerpsClient.d.ts.map +1 -1
- package/dist/esm/client/PerpsClient.js +4 -1
- package/dist/esm/client/PerpsClient.js.map +1 -1
- package/dist/esm/{utils/decimal.d.ts → decimal/big.d.ts} +1 -1
- package/dist/esm/decimal/big.d.ts.map +1 -0
- package/dist/esm/{utils/decimal.js → decimal/big.js} +1 -1
- package/dist/esm/decimal/big.js.map +1 -0
- package/dist/esm/decimal/convert.d.ts +80 -0
- package/dist/esm/decimal/convert.d.ts.map +1 -0
- package/dist/esm/decimal/convert.js +118 -0
- package/dist/esm/decimal/convert.js.map +1 -0
- package/dist/esm/decimal/format.d.ts.map +1 -0
- package/dist/esm/decimal/format.js.map +1 -0
- package/dist/esm/decimal/parse.d.ts +29 -0
- package/dist/esm/decimal/parse.d.ts.map +1 -0
- package/dist/esm/{utils → decimal}/parse.js +9 -10
- package/dist/esm/decimal/parse.js.map +1 -0
- package/dist/esm/index.d.ts +17 -15
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +12 -12
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/math/fills.d.ts +26 -0
- package/dist/esm/math/fills.d.ts.map +1 -0
- package/dist/esm/{utils/fillClassification.js → math/fills.js} +26 -2
- package/dist/esm/math/fills.js.map +1 -0
- package/dist/esm/{utils/calculations.d.ts → math/order.d.ts} +70 -75
- package/dist/esm/math/order.d.ts.map +1 -0
- package/dist/esm/{utils/calculations.js → math/order.js} +155 -111
- package/dist/esm/math/order.js.map +1 -0
- package/dist/esm/math/position.d.ts +211 -0
- package/dist/esm/math/position.d.ts.map +1 -0
- package/dist/esm/math/position.js +299 -0
- package/dist/esm/math/position.js.map +1 -0
- package/dist/esm/services/resolveQuote.d.ts.map +1 -1
- package/dist/esm/services/resolveQuote.js +1 -1
- package/dist/esm/services/resolveQuote.js.map +1 -1
- package/dist/esm/services/resolveSubscribeQuote.d.ts.map +1 -1
- package/dist/esm/services/resolveSubscribeQuote.js +1 -1
- package/dist/esm/services/resolveSubscribeQuote.js.map +1 -1
- package/dist/esm/types/provider.d.ts +23 -11
- package/dist/esm/types/provider.d.ts.map +1 -1
- package/dist/esm/types/withdrawal.d.ts +17 -5
- package/dist/esm/types/withdrawal.d.ts.map +1 -1
- package/dist/esm/utils/orderClassification.d.ts +1 -14
- package/dist/esm/utils/orderClassification.d.ts.map +1 -1
- package/dist/esm/utils/orderClassification.js +1 -25
- package/dist/esm/utils/orderClassification.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/wire/orderAmounts.d.ts +55 -0
- package/dist/esm/wire/orderAmounts.d.ts.map +1 -0
- package/dist/esm/wire/orderAmounts.js +114 -0
- package/dist/esm/wire/orderAmounts.js.map +1 -0
- package/dist/esm/wire/refuel.d.ts +28 -0
- package/dist/esm/wire/refuel.d.ts.map +1 -0
- package/dist/esm/wire/refuel.js +36 -0
- package/dist/esm/wire/refuel.js.map +1 -0
- package/dist/esm/wire/requireDecimal.d.ts +11 -0
- package/dist/esm/wire/requireDecimal.d.ts.map +1 -0
- package/dist/esm/wire/requireDecimal.js +17 -0
- package/dist/esm/wire/requireDecimal.js.map +1 -0
- package/dist/esm/wire/snap.d.ts +24 -0
- package/dist/esm/wire/snap.d.ts.map +1 -0
- package/dist/esm/wire/snap.js +27 -0
- package/dist/esm/wire/snap.js.map +1 -0
- package/dist/esm/wire/transferable.d.ts +15 -0
- package/dist/esm/wire/transferable.d.ts.map +1 -0
- package/dist/esm/wire/transferable.js +22 -0
- package/dist/esm/wire/transferable.js.map +1 -0
- package/dist/esm/wire/withdraw.d.ts +14 -0
- package/dist/esm/wire/withdraw.d.ts.map +1 -0
- package/dist/esm/wire/withdraw.js +20 -0
- package/dist/esm/wire/withdraw.js.map +1 -0
- package/dist/types/client/PerpsClient.d.ts.map +1 -1
- package/dist/types/{utils/decimal.d.ts → decimal/big.d.ts} +1 -1
- package/dist/types/decimal/big.d.ts.map +1 -0
- package/dist/types/decimal/convert.d.ts +80 -0
- package/dist/types/decimal/convert.d.ts.map +1 -0
- package/dist/types/decimal/format.d.ts.map +1 -0
- package/dist/types/decimal/parse.d.ts +29 -0
- package/dist/types/decimal/parse.d.ts.map +1 -0
- package/dist/types/index.d.ts +17 -15
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/math/fills.d.ts +26 -0
- package/dist/types/math/fills.d.ts.map +1 -0
- package/dist/types/{utils/calculations.d.ts → math/order.d.ts} +70 -75
- package/dist/types/math/order.d.ts.map +1 -0
- package/dist/types/math/position.d.ts +211 -0
- package/dist/types/math/position.d.ts.map +1 -0
- package/dist/types/services/resolveQuote.d.ts.map +1 -1
- package/dist/types/services/resolveSubscribeQuote.d.ts.map +1 -1
- package/dist/types/types/provider.d.ts +23 -11
- package/dist/types/types/provider.d.ts.map +1 -1
- package/dist/types/types/withdrawal.d.ts +17 -5
- package/dist/types/types/withdrawal.d.ts.map +1 -1
- package/dist/types/utils/orderClassification.d.ts +1 -14
- package/dist/types/utils/orderClassification.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/wire/orderAmounts.d.ts +55 -0
- package/dist/types/wire/orderAmounts.d.ts.map +1 -0
- package/dist/types/wire/refuel.d.ts +28 -0
- package/dist/types/wire/refuel.d.ts.map +1 -0
- package/dist/types/wire/requireDecimal.d.ts +11 -0
- package/dist/types/wire/requireDecimal.d.ts.map +1 -0
- package/dist/types/wire/snap.d.ts +24 -0
- package/dist/types/wire/snap.d.ts.map +1 -0
- package/dist/types/wire/transferable.d.ts +15 -0
- package/dist/types/wire/transferable.d.ts.map +1 -0
- package/dist/types/wire/withdraw.d.ts +14 -0
- package/dist/types/wire/withdraw.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/client/PerpsClient.ts +4 -1
- package/src/decimal/convert.ts +164 -0
- package/src/{utils → decimal}/parse.ts +13 -11
- package/src/index.ts +80 -57
- package/src/{utils/fillClassification.ts → math/fills.ts} +30 -1
- package/src/{utils/calculations.ts → math/order.ts} +205 -127
- package/src/{utils/positionMath.ts → math/position.ts} +173 -21
- package/src/services/resolveQuote.ts +1 -1
- package/src/services/resolveSubscribeQuote.ts +1 -1
- package/src/types/provider.ts +23 -10
- package/src/types/withdrawal.ts +22 -5
- package/src/utils/orderClassification.ts +0 -30
- package/src/version.ts +1 -1
- package/src/wire/orderAmounts.ts +172 -0
- package/src/wire/refuel.ts +51 -0
- package/src/wire/requireDecimal.ts +24 -0
- package/src/wire/snap.ts +38 -0
- package/src/wire/transferable.ts +26 -0
- package/src/wire/withdraw.ts +29 -0
- package/dist/cjs/utils/calculations.d.ts +0 -47
- package/dist/cjs/utils/calculations.d.ts.map +0 -1
- package/dist/cjs/utils/calculations.js +0 -214
- package/dist/cjs/utils/calculations.js.map +0 -1
- package/dist/cjs/utils/decimal.d.ts.map +0 -1
- package/dist/cjs/utils/decimal.js.map +0 -1
- package/dist/cjs/utils/fillClassification.d.ts +0 -3
- package/dist/cjs/utils/fillClassification.d.ts.map +0 -1
- package/dist/cjs/utils/fillClassification.js.map +0 -1
- package/dist/cjs/utils/format.d.ts.map +0 -1
- package/dist/cjs/utils/format.js.map +0 -1
- package/dist/cjs/utils/math.d.ts +0 -4
- package/dist/cjs/utils/math.d.ts.map +0 -1
- package/dist/cjs/utils/math.js +0 -8
- package/dist/cjs/utils/math.js.map +0 -1
- package/dist/cjs/utils/orderEntry.d.ts +0 -6
- package/dist/cjs/utils/orderEntry.d.ts.map +0 -1
- package/dist/cjs/utils/orderEntry.js +0 -20
- package/dist/cjs/utils/orderEntry.js.map +0 -1
- package/dist/cjs/utils/orderMath.d.ts +0 -6
- package/dist/cjs/utils/orderMath.d.ts.map +0 -1
- package/dist/cjs/utils/orderMath.js +0 -85
- package/dist/cjs/utils/orderMath.js.map +0 -1
- package/dist/cjs/utils/parse.d.ts +0 -3
- package/dist/cjs/utils/parse.d.ts.map +0 -1
- package/dist/cjs/utils/parse.js.map +0 -1
- package/dist/cjs/utils/positionMath.d.ts +0 -37
- package/dist/cjs/utils/positionMath.d.ts.map +0 -1
- package/dist/cjs/utils/positionMath.js +0 -99
- package/dist/cjs/utils/positionMath.js.map +0 -1
- package/dist/cjs/utils/scaleToInteger.d.ts +0 -3
- package/dist/cjs/utils/scaleToInteger.d.ts.map +0 -1
- package/dist/cjs/utils/scaleToInteger.js +0 -30
- package/dist/cjs/utils/scaleToInteger.js.map +0 -1
- package/dist/cjs/utils/units.d.ts +0 -3
- package/dist/cjs/utils/units.d.ts.map +0 -1
- package/dist/cjs/utils/units.js +0 -18
- package/dist/cjs/utils/units.js.map +0 -1
- package/dist/cjs/utils/validation.d.ts +0 -2
- package/dist/cjs/utils/validation.d.ts.map +0 -1
- package/dist/cjs/utils/validation.js +0 -16
- package/dist/cjs/utils/validation.js.map +0 -1
- package/dist/esm/utils/calculations.d.ts.map +0 -1
- package/dist/esm/utils/calculations.js.map +0 -1
- package/dist/esm/utils/decimal.d.ts.map +0 -1
- package/dist/esm/utils/decimal.js.map +0 -1
- package/dist/esm/utils/fillClassification.d.ts +0 -13
- package/dist/esm/utils/fillClassification.d.ts.map +0 -1
- package/dist/esm/utils/fillClassification.js.map +0 -1
- package/dist/esm/utils/format.d.ts.map +0 -1
- package/dist/esm/utils/format.js.map +0 -1
- package/dist/esm/utils/math.d.ts +0 -6
- package/dist/esm/utils/math.d.ts.map +0 -1
- package/dist/esm/utils/math.js +0 -5
- package/dist/esm/utils/math.js.map +0 -1
- package/dist/esm/utils/orderEntry.d.ts +0 -26
- package/dist/esm/utils/orderEntry.d.ts.map +0 -1
- package/dist/esm/utils/orderEntry.js +0 -34
- package/dist/esm/utils/orderEntry.js.map +0 -1
- package/dist/esm/utils/orderMath.d.ts +0 -37
- package/dist/esm/utils/orderMath.d.ts.map +0 -1
- package/dist/esm/utils/orderMath.js +0 -113
- package/dist/esm/utils/orderMath.js.map +0 -1
- package/dist/esm/utils/parse.d.ts +0 -28
- package/dist/esm/utils/parse.d.ts.map +0 -1
- package/dist/esm/utils/parse.js.map +0 -1
- package/dist/esm/utils/positionMath.d.ts +0 -120
- package/dist/esm/utils/positionMath.d.ts.map +0 -1
- package/dist/esm/utils/positionMath.js +0 -173
- package/dist/esm/utils/positionMath.js.map +0 -1
- package/dist/esm/utils/scaleToInteger.d.ts +0 -22
- package/dist/esm/utils/scaleToInteger.d.ts.map +0 -1
- package/dist/esm/utils/scaleToInteger.js +0 -34
- package/dist/esm/utils/scaleToInteger.js.map +0 -1
- package/dist/esm/utils/units.d.ts +0 -27
- package/dist/esm/utils/units.d.ts.map +0 -1
- package/dist/esm/utils/units.js +0 -38
- package/dist/esm/utils/units.js.map +0 -1
- package/dist/esm/utils/validation.d.ts +0 -18
- package/dist/esm/utils/validation.d.ts.map +0 -1
- package/dist/esm/utils/validation.js +0 -29
- package/dist/esm/utils/validation.js.map +0 -1
- package/dist/types/utils/calculations.d.ts.map +0 -1
- package/dist/types/utils/decimal.d.ts.map +0 -1
- package/dist/types/utils/fillClassification.d.ts +0 -13
- package/dist/types/utils/fillClassification.d.ts.map +0 -1
- package/dist/types/utils/format.d.ts.map +0 -1
- package/dist/types/utils/math.d.ts +0 -6
- package/dist/types/utils/math.d.ts.map +0 -1
- package/dist/types/utils/orderEntry.d.ts +0 -26
- package/dist/types/utils/orderEntry.d.ts.map +0 -1
- package/dist/types/utils/orderMath.d.ts +0 -37
- package/dist/types/utils/orderMath.d.ts.map +0 -1
- package/dist/types/utils/parse.d.ts +0 -28
- package/dist/types/utils/parse.d.ts.map +0 -1
- package/dist/types/utils/positionMath.d.ts +0 -120
- package/dist/types/utils/positionMath.d.ts.map +0 -1
- package/dist/types/utils/scaleToInteger.d.ts +0 -22
- package/dist/types/utils/scaleToInteger.d.ts.map +0 -1
- package/dist/types/utils/units.d.ts +0 -27
- package/dist/types/utils/units.d.ts.map +0 -1
- package/dist/types/utils/validation.d.ts +0 -18
- package/dist/types/utils/validation.d.ts.map +0 -1
- package/src/utils/math.ts +0 -7
- package/src/utils/orderEntry.ts +0 -38
- package/src/utils/orderMath.ts +0 -152
- package/src/utils/scaleToInteger.ts +0 -56
- package/src/utils/units.ts +0 -39
- package/src/utils/validation.ts +0 -38
- /package/dist/cjs/{utils → decimal}/format.d.ts +0 -0
- /package/dist/cjs/{utils → decimal}/format.js +0 -0
- /package/dist/esm/{utils → decimal}/format.d.ts +0 -0
- /package/dist/esm/{utils → decimal}/format.js +0 -0
- /package/dist/types/{utils → decimal}/format.d.ts +0 -0
- /package/src/{utils/decimal.ts → decimal/big.ts} +0 -0
- /package/src/{utils → decimal}/format.ts +0 -0
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Pure functions for computing position-related values that any consumer
|
|
5
|
-
* of the perps SDK would need. All parameters are required — no default
|
|
6
|
-
* values for critical financial parameters.
|
|
2
|
+
* Display-tier order formulas. Every function takes and gives `number`;
|
|
3
|
+
* exact decimal arithmetic happens internally with `DivBig`.
|
|
7
4
|
*/
|
|
8
|
-
import { PerpsErrorCode, } from '@lifi/perps-types';
|
|
5
|
+
import { OrderSide, OrderStatus, PerpsErrorCode, PositionSide, } from '@lifi/perps-types';
|
|
6
|
+
import { areFinite, DivBig } from '../decimal/big.js';
|
|
9
7
|
import { PerpsError } from '../errors/PerpsError.js';
|
|
10
|
-
import {
|
|
8
|
+
import { isActiveOrderStatus, isRegularOrder, isTriggerOrder, } from '../utils/orderClassification.js';
|
|
9
|
+
import { calculateRealizedPnl } from './position.js';
|
|
11
10
|
/**
|
|
12
11
|
* Calculate position size in asset units from margin.
|
|
13
12
|
*
|
|
@@ -17,11 +16,11 @@ import { areFinite, DivBig } from './decimal.js';
|
|
|
17
16
|
* @returns Position size in asset units
|
|
18
17
|
* @example
|
|
19
18
|
* ```ts
|
|
20
|
-
*
|
|
19
|
+
* calculateSize(100, 10, 2000) // 0.5 (ETH at $2000)
|
|
21
20
|
* ```
|
|
22
21
|
* @public
|
|
23
22
|
*/
|
|
24
|
-
export function
|
|
23
|
+
export function calculateSize(marginUsd, leverage, price) {
|
|
25
24
|
if (price === 0) {
|
|
26
25
|
return (marginUsd * leverage) / price;
|
|
27
26
|
}
|
|
@@ -31,68 +30,9 @@ export function calculatePositionSize(marginUsd, leverage, price) {
|
|
|
31
30
|
return new DivBig(marginUsd).times(leverage).div(price).toNumber();
|
|
32
31
|
}
|
|
33
32
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* @param size - Position size in asset units
|
|
37
|
-
* @param price - Current asset price
|
|
38
|
-
* @returns Notional value in USD
|
|
39
|
-
* @public
|
|
33
|
+
* @deprecated Use `calculateSize`. Removed in the next major.
|
|
40
34
|
*/
|
|
41
|
-
export
|
|
42
|
-
if (!areFinite(size, price)) {
|
|
43
|
-
return Number.NaN;
|
|
44
|
-
}
|
|
45
|
-
return new DivBig(size).abs().times(price).toNumber();
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Calculate unrealized PnL.
|
|
49
|
-
*
|
|
50
|
-
* @param entryPrice - Position entry price
|
|
51
|
-
* @param currentPrice - Current market price
|
|
52
|
-
* @param size - Position size (positive for long, negative for short)
|
|
53
|
-
* @returns Unrealized PnL in USD
|
|
54
|
-
* @public
|
|
55
|
-
*/
|
|
56
|
-
export function calculateUnrealizedPnl(entryPrice, currentPrice, size) {
|
|
57
|
-
if (!areFinite(entryPrice, currentPrice, size)) {
|
|
58
|
-
return Number.NaN;
|
|
59
|
-
}
|
|
60
|
-
return new DivBig(currentPrice).minus(entryPrice).times(size).toNumber();
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Calculate return on equity (ROE) percentage.
|
|
64
|
-
*
|
|
65
|
-
* @param pnl - Profit/loss in USD
|
|
66
|
-
* @param margin - Initial margin in USD
|
|
67
|
-
* @returns ROE as percentage (e.g., 10 for 10%)
|
|
68
|
-
* @public
|
|
69
|
-
*/
|
|
70
|
-
export function calculateRoe(pnl, margin) {
|
|
71
|
-
if (margin === 0) {
|
|
72
|
-
return 0;
|
|
73
|
-
}
|
|
74
|
-
if (!areFinite(pnl, margin)) {
|
|
75
|
-
return Number.NaN;
|
|
76
|
-
}
|
|
77
|
-
return new DivBig(pnl).div(margin).times(100).toNumber();
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Calculate required margin for a position.
|
|
81
|
-
*
|
|
82
|
-
* @param notionalValue - Position notional value in USD
|
|
83
|
-
* @param leverage - Position leverage
|
|
84
|
-
* @returns Required margin in USD
|
|
85
|
-
* @public
|
|
86
|
-
*/
|
|
87
|
-
export function calculateRequiredMargin(notionalValue, leverage) {
|
|
88
|
-
if (leverage === 0) {
|
|
89
|
-
return notionalValue / leverage;
|
|
90
|
-
}
|
|
91
|
-
if (!areFinite(notionalValue, leverage)) {
|
|
92
|
-
return Number.NaN;
|
|
93
|
-
}
|
|
94
|
-
return new DivBig(notionalValue).div(leverage).toNumber();
|
|
95
|
-
}
|
|
35
|
+
export const calculatePositionSize = calculateSize;
|
|
96
36
|
/**
|
|
97
37
|
* Estimate trading fees.
|
|
98
38
|
*
|
|
@@ -129,42 +69,6 @@ export function applySlippage(price, slippagePercent, isBuy) {
|
|
|
129
69
|
}
|
|
130
70
|
return new DivBig(price).div(multiplier).toNumber();
|
|
131
71
|
}
|
|
132
|
-
/**
|
|
133
|
-
* Distance from the current price to the liquidation price, as a percentage of
|
|
134
|
-
* the current price.
|
|
135
|
-
*
|
|
136
|
-
* @param liquidationPrice - The position's liquidation price
|
|
137
|
-
* @param currentPrice - Current market price
|
|
138
|
-
* @returns Absolute distance as a percentage, or 0 when current price is zero
|
|
139
|
-
* @public
|
|
140
|
-
*/
|
|
141
|
-
export function liquidationDistancePercent(params) {
|
|
142
|
-
const { liquidationPrice, currentPrice } = params;
|
|
143
|
-
if (currentPrice === 0) {
|
|
144
|
-
return 0;
|
|
145
|
-
}
|
|
146
|
-
return Math.abs((liquidationPrice - currentPrice) / currentPrice) * 100;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Effective leverage of an open position.
|
|
150
|
-
*
|
|
151
|
-
* leverage = positionValueUsd / marginUsd
|
|
152
|
-
*
|
|
153
|
-
* @param positionValueUsd - Position notional value in USD
|
|
154
|
-
* @param marginUsd - Margin backing the position in USD
|
|
155
|
-
* @returns Effective leverage, or 0 when margin is zero
|
|
156
|
-
* @public
|
|
157
|
-
*/
|
|
158
|
-
export function effectiveLeverage(params) {
|
|
159
|
-
const { positionValueUsd, marginUsd } = params;
|
|
160
|
-
if (marginUsd === 0) {
|
|
161
|
-
return 0;
|
|
162
|
-
}
|
|
163
|
-
if (!areFinite(positionValueUsd, marginUsd)) {
|
|
164
|
-
return Number.NaN;
|
|
165
|
-
}
|
|
166
|
-
return new DivBig(positionValueUsd).div(marginUsd).toNumber();
|
|
167
|
-
}
|
|
168
72
|
/**
|
|
169
73
|
* Calculate expected gain/loss for a TP or SL trigger price.
|
|
170
74
|
* Returns signed values — positive means profit, negative means loss.
|
|
@@ -191,7 +95,7 @@ export function calculateExpectedPnl(triggerPrice, entryPrice, leverage, isLong,
|
|
|
191
95
|
return { amount: amount.toNumber(), percent: percent.toNumber() };
|
|
192
96
|
}
|
|
193
97
|
/**
|
|
194
|
-
*
|
|
98
|
+
* Calculate the trigger price that realises a percentage gain/loss.
|
|
195
99
|
*
|
|
196
100
|
* @param percent - Target gain/loss percentage (positive = profitable direction)
|
|
197
101
|
* @param entryPrice - Position entry price
|
|
@@ -199,7 +103,7 @@ export function calculateExpectedPnl(triggerPrice, entryPrice, leverage, isLong,
|
|
|
199
103
|
* @param isLong - True for long positions, false for short
|
|
200
104
|
* @public
|
|
201
105
|
*/
|
|
202
|
-
export function
|
|
106
|
+
export function calculateTriggerPrice(percent, entryPrice, leverage, isLong) {
|
|
203
107
|
if (entryPrice === 0 || leverage === 0) {
|
|
204
108
|
return 0;
|
|
205
109
|
}
|
|
@@ -213,7 +117,11 @@ export function priceFromPercent(percent, entryPrice, leverage, isLong) {
|
|
|
213
117
|
return (isLong ? entry.plus(priceDelta) : entry.minus(priceDelta)).toNumber();
|
|
214
118
|
}
|
|
215
119
|
/**
|
|
216
|
-
*
|
|
120
|
+
* @deprecated Use `calculateTriggerPrice`. Removed in the next major.
|
|
121
|
+
*/
|
|
122
|
+
export const priceFromPercent = calculateTriggerPrice;
|
|
123
|
+
/**
|
|
124
|
+
* Calculate the percentage gain/loss a trigger price realises.
|
|
217
125
|
*
|
|
218
126
|
* @param price - Target price
|
|
219
127
|
* @param entryPrice - Position entry price
|
|
@@ -221,7 +129,7 @@ export function priceFromPercent(percent, entryPrice, leverage, isLong) {
|
|
|
221
129
|
* @param isLong - True for long positions, false for short
|
|
222
130
|
* @public
|
|
223
131
|
*/
|
|
224
|
-
export function
|
|
132
|
+
export function calculateTriggerPercent(price, entryPrice, leverage, isLong) {
|
|
225
133
|
if (entryPrice === 0 || leverage === 0) {
|
|
226
134
|
return 0;
|
|
227
135
|
}
|
|
@@ -233,6 +141,10 @@ export function percentFromPrice(price, entryPrice, leverage, isLong) {
|
|
|
233
141
|
: new DivBig(entryPrice).minus(price);
|
|
234
142
|
return priceDiff.div(entryPrice).times(leverage).times(100).toNumber();
|
|
235
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* @deprecated Use `calculateTriggerPercent`. Removed in the next major.
|
|
146
|
+
*/
|
|
147
|
+
export const percentFromPrice = calculateTriggerPercent;
|
|
236
148
|
/**
|
|
237
149
|
* Calculate realized PnL as a percentage of position value at close.
|
|
238
150
|
*
|
|
@@ -345,4 +257,136 @@ export function buildQuote(input) {
|
|
|
345
257
|
timestamp: input.timestamp,
|
|
346
258
|
};
|
|
347
259
|
}
|
|
348
|
-
|
|
260
|
+
/**
|
|
261
|
+
* Pick the matching open position for an order's market, if any.
|
|
262
|
+
*
|
|
263
|
+
* @param marketId - The order's `market.id`.
|
|
264
|
+
* @param positions - Open positions list (any market).
|
|
265
|
+
* @public
|
|
266
|
+
*/
|
|
267
|
+
export function findMatchingPosition(marketId, positions) {
|
|
268
|
+
return positions.find((p) => p.market.id === marketId);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Resolve the close-size against a position, applying the spec's cap rules:
|
|
272
|
+
* - `orderSize === 0` is the Hyperliquid convention for "close entire
|
|
273
|
+
* position" → close the full position size.
|
|
274
|
+
* - Otherwise cap at the absolute position size; an order larger than the
|
|
275
|
+
* position can only close what's open.
|
|
276
|
+
*
|
|
277
|
+
* Inputs are non-negative magnitudes.
|
|
278
|
+
* @public
|
|
279
|
+
*/
|
|
280
|
+
export function resolveCloseSize(orderSize, positionSize) {
|
|
281
|
+
if (orderSize === 0) {
|
|
282
|
+
return positionSize;
|
|
283
|
+
}
|
|
284
|
+
return Math.min(orderSize, positionSize);
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Expected rPnL for a resting limit order against a matching position.
|
|
288
|
+
*
|
|
289
|
+
* Reducing requires opposite sides (long position + SELL, short position +
|
|
290
|
+
* BUY). Same-side orders add to the position and have no rPnL → `null`.
|
|
291
|
+
* Projects `remainingSize`, because an already-filled quantity has realised
|
|
292
|
+
* its PnL at the fill price rather than at this order's limit price. A
|
|
293
|
+
* `remainingSize` of zero leaves nothing to project.
|
|
294
|
+
*/
|
|
295
|
+
function regularOrderRealizedPnl(order, position) {
|
|
296
|
+
if (!position || !isActiveOrderStatus(order.status)) {
|
|
297
|
+
return null;
|
|
298
|
+
}
|
|
299
|
+
const isLong = position.side === PositionSide.LONG;
|
|
300
|
+
const reducesPosition = (isLong && order.side === OrderSide.SELL) ||
|
|
301
|
+
(!isLong && order.side === OrderSide.BUY);
|
|
302
|
+
if (!reducesPosition) {
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
const limitPrice = Number.parseFloat(order.price ?? '');
|
|
306
|
+
const entryPrice = Number.parseFloat(position.entryPrice);
|
|
307
|
+
const orderSize = Math.abs(Number.parseFloat(order.remainingSize));
|
|
308
|
+
const positionSize = Math.abs(Number.parseFloat(position.size));
|
|
309
|
+
if (!Number.isFinite(limitPrice) ||
|
|
310
|
+
!Number.isFinite(entryPrice) ||
|
|
311
|
+
!Number.isFinite(orderSize) ||
|
|
312
|
+
!Number.isFinite(positionSize) ||
|
|
313
|
+
positionSize <= 0) {
|
|
314
|
+
return null;
|
|
315
|
+
}
|
|
316
|
+
// `resolveCloseSize` reads a zero size as "close the whole position", a
|
|
317
|
+
// convention that belongs to an order's submitted size. `remainingSize` is
|
|
318
|
+
// the unfilled quantity, so zero means nothing is left to fill.
|
|
319
|
+
if (orderSize === 0) {
|
|
320
|
+
return null;
|
|
321
|
+
}
|
|
322
|
+
const closeSize = resolveCloseSize(orderSize, positionSize);
|
|
323
|
+
return calculateRealizedPnl({
|
|
324
|
+
entryPrice,
|
|
325
|
+
closePrice: limitPrice,
|
|
326
|
+
closeSize,
|
|
327
|
+
isLong,
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
/** Project the unfilled closing quantity of an active trigger at its trigger price. */
|
|
331
|
+
function triggerOrderRealizedPnl(order, position) {
|
|
332
|
+
if (!position ||
|
|
333
|
+
!isActiveOrderStatus(order.status) ||
|
|
334
|
+
order.status === OrderStatus.PENDING) {
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
337
|
+
const isLong = position.side === PositionSide.LONG;
|
|
338
|
+
if ((isLong && order.side !== OrderSide.SELL) ||
|
|
339
|
+
(!isLong && order.side !== OrderSide.BUY)) {
|
|
340
|
+
return null;
|
|
341
|
+
}
|
|
342
|
+
const triggerPrice = Number.parseFloat(order.triggerPrice);
|
|
343
|
+
const entryPrice = Number.parseFloat(position.entryPrice);
|
|
344
|
+
const orderSize = Math.abs(Number.parseFloat(order.remainingSize));
|
|
345
|
+
const positionSize = Math.abs(Number.parseFloat(position.size));
|
|
346
|
+
if (!Number.isFinite(triggerPrice) ||
|
|
347
|
+
!Number.isFinite(entryPrice) ||
|
|
348
|
+
!Number.isFinite(orderSize) ||
|
|
349
|
+
!Number.isFinite(positionSize) ||
|
|
350
|
+
positionSize <= 0) {
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
if (orderSize === 0 &&
|
|
354
|
+
(Number.parseFloat(order.originalSize) !== 0 || !order.reduceOnly)) {
|
|
355
|
+
return null;
|
|
356
|
+
}
|
|
357
|
+
const closeSize = resolveCloseSize(orderSize, positionSize);
|
|
358
|
+
return calculateRealizedPnl({
|
|
359
|
+
entryPrice,
|
|
360
|
+
closePrice: triggerPrice,
|
|
361
|
+
closeSize,
|
|
362
|
+
isLong,
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Expected rPnL an unfilled order would realise against a matching position:
|
|
367
|
+
* a resting limit order prices off its limit, an armed trigger off its trigger
|
|
368
|
+
* price. A TWAP parent carries no single execution price, so it projects
|
|
369
|
+
* nothing.
|
|
370
|
+
*
|
|
371
|
+
* @returns Realised PnL if the order would reduce the position, otherwise
|
|
372
|
+
* `null`.
|
|
373
|
+
* @public
|
|
374
|
+
*/
|
|
375
|
+
export function estimateRealizedPnl(order, position) {
|
|
376
|
+
if (isTriggerOrder(order)) {
|
|
377
|
+
return triggerOrderRealizedPnl(order, position);
|
|
378
|
+
}
|
|
379
|
+
if (isRegularOrder(order)) {
|
|
380
|
+
return regularOrderRealizedPnl(order, position);
|
|
381
|
+
}
|
|
382
|
+
return null;
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* @deprecated Use `estimateRealizedPnl`. Removed in the next major.
|
|
386
|
+
*/
|
|
387
|
+
export const expectedRealizedPnlForOpenOrder = regularOrderRealizedPnl;
|
|
388
|
+
/**
|
|
389
|
+
* @deprecated Use `estimateRealizedPnl`. Removed in the next major.
|
|
390
|
+
*/
|
|
391
|
+
export const expectedRealizedPnlForTriggerOrder = triggerOrderRealizedPnl;
|
|
392
|
+
//# sourceMappingURL=order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/math/order.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Display-tier position formulas. Every function takes and gives `number`;
|
|
3
|
+
* exact decimal arithmetic happens internally with `DivBig`.
|
|
4
|
+
*
|
|
5
|
+
* Sign convention: long = +1, short = -1. Sizes passed to the `estimate*`
|
|
6
|
+
* helpers are always non-negative magnitudes; direction is carried by
|
|
7
|
+
* `isLong`.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Direction sign for a position.
|
|
11
|
+
*
|
|
12
|
+
* @deprecated Inline `isLong ? 1 : -1`. Removed in the next major.
|
|
13
|
+
*/
|
|
14
|
+
export declare function directionSign(isLong: boolean): 1 | -1;
|
|
15
|
+
/**
|
|
16
|
+
* Calculate notional value of a position.
|
|
17
|
+
*
|
|
18
|
+
* @param size - Position size in asset units
|
|
19
|
+
* @param price - Current asset price
|
|
20
|
+
* @returns Notional value in USD
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
export declare function calculateNotionalValue(size: number, price: number): number;
|
|
24
|
+
/**
|
|
25
|
+
* Calculate unrealized PnL.
|
|
26
|
+
*
|
|
27
|
+
* @param entryPrice - Position entry price
|
|
28
|
+
* @param currentPrice - Current market price
|
|
29
|
+
* @param size - Position size (positive for long, negative for short)
|
|
30
|
+
* @returns Unrealized PnL in USD
|
|
31
|
+
* @public
|
|
32
|
+
*/
|
|
33
|
+
export declare function calculateUnrealizedPnl(entryPrice: number, currentPrice: number, size: number): number;
|
|
34
|
+
/**
|
|
35
|
+
* Calculate return on equity (ROE) percentage.
|
|
36
|
+
*
|
|
37
|
+
* @param pnl - Profit/loss in USD
|
|
38
|
+
* @param margin - Initial margin in USD
|
|
39
|
+
* @returns ROE as percentage (e.g., 10 for 10%)
|
|
40
|
+
* @public
|
|
41
|
+
*/
|
|
42
|
+
export declare function calculateRoe(pnl: number, margin: number): number;
|
|
43
|
+
/**
|
|
44
|
+
* Calculate required margin for a position.
|
|
45
|
+
*
|
|
46
|
+
* @param notionalValue - Position notional value in USD
|
|
47
|
+
* @param leverage - Position leverage
|
|
48
|
+
* @returns Required margin in USD
|
|
49
|
+
* @public
|
|
50
|
+
*/
|
|
51
|
+
export declare function calculateRequiredMargin(notionalValue: number, leverage: number): number;
|
|
52
|
+
/**
|
|
53
|
+
* Distance from the current price to the liquidation price, as a percentage of
|
|
54
|
+
* the current price.
|
|
55
|
+
*
|
|
56
|
+
* @param liquidationPrice - The position's liquidation price
|
|
57
|
+
* @param currentPrice - Current market price
|
|
58
|
+
* @returns Absolute distance as a percentage, or 0 when current price is zero
|
|
59
|
+
* @public
|
|
60
|
+
*/
|
|
61
|
+
export declare function calculateLiquidationDistance(params: {
|
|
62
|
+
liquidationPrice: number;
|
|
63
|
+
currentPrice: number;
|
|
64
|
+
}): number;
|
|
65
|
+
/**
|
|
66
|
+
* @deprecated Use `calculateLiquidationDistance`. Removed in the next major.
|
|
67
|
+
*/
|
|
68
|
+
export declare const liquidationDistancePercent: typeof calculateLiquidationDistance;
|
|
69
|
+
/**
|
|
70
|
+
* Effective leverage of an open position.
|
|
71
|
+
*
|
|
72
|
+
* leverage = positionValueUsd / marginUsd
|
|
73
|
+
*
|
|
74
|
+
* @param positionValueUsd - Position notional value in USD
|
|
75
|
+
* @param marginUsd - Margin backing the position in USD
|
|
76
|
+
* @returns Effective leverage, or 0 when margin is zero
|
|
77
|
+
* @public
|
|
78
|
+
*/
|
|
79
|
+
export declare function calculateEffectiveLeverage(params: {
|
|
80
|
+
positionValueUsd: number;
|
|
81
|
+
marginUsd: number;
|
|
82
|
+
}): number;
|
|
83
|
+
/**
|
|
84
|
+
* @deprecated Use `calculateEffectiveLeverage`. Removed in the next major.
|
|
85
|
+
*/
|
|
86
|
+
export declare const effectiveLeverage: typeof calculateEffectiveLeverage;
|
|
87
|
+
/**
|
|
88
|
+
* Estimated liquidation price for an isolated-margin position, parameterised
|
|
89
|
+
* by the venue's maintenance margin rate.
|
|
90
|
+
*
|
|
91
|
+
* Standard isolated-margin model (new position, no existing exposure):
|
|
92
|
+
* margin_per_unit = entryPrice / leverage
|
|
93
|
+
* maintenance_per_unit = entryPrice * mmr
|
|
94
|
+
* margin_available = margin_per_unit - maintenance_per_unit
|
|
95
|
+
* liq_price = entryPrice - side * margin_available / (1 - mmr * side)
|
|
96
|
+
*
|
|
97
|
+
* For existing positions, prefer `Position.liquidationPrice` from the venue.
|
|
98
|
+
*
|
|
99
|
+
* @param maintenanceMarginRate - Venue maintenance margin rate as a fraction
|
|
100
|
+
* (e.g. 0.01 = 1%).
|
|
101
|
+
* @returns Estimated liquidation price, or undefined if the inputs cannot
|
|
102
|
+
* produce one (zero leverage, degenerate denominator).
|
|
103
|
+
* @public
|
|
104
|
+
*/
|
|
105
|
+
export declare function estimateLiquidationPrice(params: {
|
|
106
|
+
entryPrice: number;
|
|
107
|
+
leverage: number;
|
|
108
|
+
isLong: boolean;
|
|
109
|
+
maintenanceMarginRate: number;
|
|
110
|
+
}): number | undefined;
|
|
111
|
+
/**
|
|
112
|
+
* @deprecated Use `estimateLiquidationPrice`. Removed in the next major.
|
|
113
|
+
*/
|
|
114
|
+
export declare const estimateIsolatedLiquidationPrice: typeof estimateLiquidationPrice;
|
|
115
|
+
/**
|
|
116
|
+
* Whether an isolated position with this liquidation price is already past
|
|
117
|
+
* liquidation at `currentPrice`: a long liquidates when the price falls to its
|
|
118
|
+
* liquidation level, a short when it rises to it. A non-positive price on
|
|
119
|
+
* either side counts as unknown, so the result is `false`.
|
|
120
|
+
*
|
|
121
|
+
* @public
|
|
122
|
+
*/
|
|
123
|
+
export declare function wouldImmediatelyLiquidate(params: {
|
|
124
|
+
liquidationPrice: number;
|
|
125
|
+
currentPrice: number;
|
|
126
|
+
isLong: boolean;
|
|
127
|
+
}): boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Estimated average entry price after adding to an existing position.
|
|
130
|
+
*
|
|
131
|
+
* Weighted average of the current entry and the new fill price, weighted by
|
|
132
|
+
* the size of each leg in coin units. Both legs assumed in the same direction
|
|
133
|
+
* (this helper is for adding to, not flipping, a position).
|
|
134
|
+
*
|
|
135
|
+
* @param currentSize - Existing position size in coin units (>= 0).
|
|
136
|
+
* @param currentEntry - Existing position's average entry price.
|
|
137
|
+
* @param addSize - Size being added in coin units (>= 0).
|
|
138
|
+
* @param fillPrice - Price the new size is expected to fill at (mid for
|
|
139
|
+
* market, limitPrice for limit orders).
|
|
140
|
+
* @returns The new weighted-average entry price, or undefined if the inputs
|
|
141
|
+
* cannot produce a valid average (zero combined size, non-finite values).
|
|
142
|
+
* @public
|
|
143
|
+
*/
|
|
144
|
+
export declare function estimateAverageEntryPrice(params: {
|
|
145
|
+
currentSize: number;
|
|
146
|
+
currentEntry: number;
|
|
147
|
+
addSize: number;
|
|
148
|
+
fillPrice: number;
|
|
149
|
+
}): number | undefined;
|
|
150
|
+
/**
|
|
151
|
+
* @deprecated Use `estimateAverageEntryPrice`. Removed in the next major.
|
|
152
|
+
*/
|
|
153
|
+
export declare const predictAverageEntryPrice: typeof estimateAverageEntryPrice;
|
|
154
|
+
/**
|
|
155
|
+
* Estimated effective leverage after adding margin and notional.
|
|
156
|
+
*
|
|
157
|
+
* leverage = totalNotional / totalMargin. The caller computes notional from
|
|
158
|
+
* size and price (`calculateNotionalValue`) and supplies the additional
|
|
159
|
+
* margin the user is about to put up.
|
|
160
|
+
*
|
|
161
|
+
* @returns The new effective leverage, or undefined if total margin is
|
|
162
|
+
* non-positive.
|
|
163
|
+
* @public
|
|
164
|
+
*/
|
|
165
|
+
export declare function estimateNewLeverage(params: {
|
|
166
|
+
currentNotional: number;
|
|
167
|
+
currentMargin: number;
|
|
168
|
+
addNotional: number;
|
|
169
|
+
addMargin: number;
|
|
170
|
+
}): number | undefined;
|
|
171
|
+
/**
|
|
172
|
+
* @deprecated Use `estimateNewLeverage`. Removed in the next major.
|
|
173
|
+
*/
|
|
174
|
+
export declare const predictNewLeverage: typeof estimateNewLeverage;
|
|
175
|
+
/**
|
|
176
|
+
* Estimated unrealised PnL at the current mark price.
|
|
177
|
+
*
|
|
178
|
+
* `pnl = (markPrice - entryPrice) * size * (isLong ? 1 : -1)`
|
|
179
|
+
*
|
|
180
|
+
* @param size - Position size as a non-negative magnitude.
|
|
181
|
+
* @public
|
|
182
|
+
*/
|
|
183
|
+
export declare function estimateUnrealizedPnl(params: {
|
|
184
|
+
entryPrice: number;
|
|
185
|
+
markPrice: number;
|
|
186
|
+
size: number;
|
|
187
|
+
isLong: boolean;
|
|
188
|
+
}): number;
|
|
189
|
+
/**
|
|
190
|
+
* @deprecated Use `estimateUnrealizedPnl`. Removed in the next major.
|
|
191
|
+
*/
|
|
192
|
+
export declare const predictUnrealizedPnl: typeof estimateUnrealizedPnl;
|
|
193
|
+
/**
|
|
194
|
+
* Realised PnL on the portion of a position being closed.
|
|
195
|
+
*
|
|
196
|
+
* `rPnl = (closePrice - entryPrice) * closeSize * (isLong ? 1 : -1)`
|
|
197
|
+
*
|
|
198
|
+
* @param closeSize - Size being closed as a non-negative magnitude.
|
|
199
|
+
* @public
|
|
200
|
+
*/
|
|
201
|
+
export declare function calculateRealizedPnl(params: {
|
|
202
|
+
entryPrice: number;
|
|
203
|
+
closePrice: number;
|
|
204
|
+
closeSize: number;
|
|
205
|
+
isLong: boolean;
|
|
206
|
+
}): number;
|
|
207
|
+
/**
|
|
208
|
+
* @deprecated Use `calculateRealizedPnl`. Removed in the next major.
|
|
209
|
+
*/
|
|
210
|
+
export declare const realizedPnlOnClose: typeof calculateRealizedPnl;
|
|
211
|
+
//# sourceMappingURL=position.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/math/position.ts"],"names":[],"mappings":"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"}
|