@drift-labs/sdk 0.1.30-master.0 → 0.1.30-master.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.
Files changed (46) hide show
  1. package/lib/accounts/bulkAccountLoader.d.ts +2 -2
  2. package/lib/accounts/bulkAccountLoader.js +20 -23
  3. package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +15 -0
  4. package/lib/accounts/pollingClearingHouseAccountSubscriber.js +50 -23
  5. package/lib/clearingHouse.d.ts +0 -1
  6. package/lib/clearingHouse.js +0 -14
  7. package/lib/constants/accounts.d.ts +15 -0
  8. package/lib/constants/accounts.js +18 -0
  9. package/lib/factory/clearingHouse.d.ts +14 -4
  10. package/lib/factory/clearingHouse.js +23 -6
  11. package/lib/idl/clearing_house.json +2 -33
  12. package/lib/index.d.ts +0 -1
  13. package/lib/index.js +0 -1
  14. package/lib/math/amm.d.ts +20 -0
  15. package/lib/math/amm.js +151 -1
  16. package/lib/util/promiseTimeout.d.ts +1 -0
  17. package/lib/util/promiseTimeout.js +14 -0
  18. package/package.json +1 -1
  19. package/src/accounts/bulkAccountLoader.ts +21 -31
  20. package/src/accounts/pollingClearingHouseAccountSubscriber.ts +73 -30
  21. package/src/clearingHouse.ts +0 -13
  22. package/src/constants/accounts.ts +26 -0
  23. package/src/factory/clearingHouse.ts +47 -7
  24. package/src/idl/clearing_house.json +2 -33
  25. package/src/index.ts +0 -1
  26. package/src/math/amm.ts +212 -1
  27. package/src/util/promiseTimeout.ts +14 -0
  28. package/lib/math/repeg.d.ts +0 -32
  29. package/lib/math/repeg.js +0 -178
  30. package/src/accounts/pollingClearingHouseAccountSubscriber.js +0 -210
  31. package/src/accounts/pollingClearingHouseAccountSubscriber.js.map +0 -1
  32. package/src/accounts/pollingOracleSubscriber.js +0 -65
  33. package/src/accounts/pollingOracleSubscriber.js.map +0 -1
  34. package/src/accounts/pollingTokenAccountSubscriber.js +0 -65
  35. package/src/accounts/pollingTokenAccountSubscriber.js.map +0 -1
  36. package/src/accounts/utils.js +0 -8
  37. package/src/accounts/utils.js.map +0 -1
  38. package/src/accounts/webSocketAccountSubscriber.js +0 -64
  39. package/src/accounts/webSocketAccountSubscriber.js.map +0 -1
  40. package/src/accounts/webSocketClearingHouseAccountSubscriber.js +0 -212
  41. package/src/accounts/webSocketClearingHouseAccountSubscriber.js.map +0 -1
  42. package/src/constants/markets.js +0 -167
  43. package/src/constants/markets.js.map +0 -1
  44. package/src/constants/numericConstants.js +0 -22
  45. package/src/constants/numericConstants.js.map +0 -1
  46. package/src/math/repeg.ts +0 -253
@@ -1 +0,0 @@
1
- {"version":3,"file":"webSocketClearingHouseAccountSubscriber.js","sourceRoot":"","sources":["webSocketClearingHouseAccountSubscriber.ts"],"names":[],"mappings":"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"}
@@ -1,167 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Markets = void 0;
4
- const __1 = require("../");
5
- exports.Markets = [
6
- {
7
- fullName: 'Solana',
8
- category: ['L1', 'Infra'],
9
- symbol: 'SOL-PERP',
10
- baseAssetSymbol: 'SOL',
11
- marketIndex: new __1.BN(0),
12
- devnetPublicKey: 'J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix',
13
- mainnetPublicKey: 'H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG',
14
- launchTs: 1635209696886,
15
- oracleSource: __1.OracleSource.PYTH,
16
- },
17
- {
18
- fullName: 'Bitcoin',
19
- category: ['L1', 'Payment'],
20
- symbol: 'BTC-PERP',
21
- baseAssetSymbol: 'BTC',
22
- marketIndex: new __1.BN(1),
23
- devnetPublicKey: 'HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J',
24
- mainnetPublicKey: 'GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU',
25
- launchTs: 1637691088868,
26
- oracleSource: __1.OracleSource.PYTH,
27
- },
28
- {
29
- fullName: 'Ethereum',
30
- category: ['L1', 'Infra'],
31
- symbol: 'ETH-PERP',
32
- baseAssetSymbol: 'ETH',
33
- marketIndex: new __1.BN(2),
34
- devnetPublicKey: 'EdVCmQ9FSPcVe5YySXDPCRmc8aDQLKJ9xvYBMZPie1Vw',
35
- mainnetPublicKey: 'JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB',
36
- launchTs: 1637691133472,
37
- oracleSource: __1.OracleSource.PYTH,
38
- },
39
- {
40
- fullName: 'Terra',
41
- category: ['L1', 'Infra'],
42
- symbol: 'LUNA-PERP',
43
- baseAssetSymbol: 'LUNA',
44
- marketIndex: new __1.BN(3),
45
- devnetPublicKey: '8PugCXTAHLM9kfLSQWe2njE5pzAgUdpPk3Nx5zSm7BD3',
46
- mainnetPublicKey: '5bmWuR1dgP4avtGYMNKLuxumZTVKGgoN2BCMXWDNL9nY',
47
- launchTs: 1638821738525,
48
- oracleSource: __1.OracleSource.PYTH,
49
- },
50
- {
51
- symbol: 'AVAX-PERP',
52
- category: ['L1', 'Infra'],
53
- baseAssetSymbol: 'AVAX',
54
- marketIndex: new __1.BN(4),
55
- devnetPublicKey: 'FVb5h1VmHPfVb1RfqZckchq18GxRv4iKt8T4eVTQAqdz',
56
- mainnetPublicKey: 'Ax9ujW5B9oqcv59N8m6f1BpTBq2rGeGaBcpKjC5UYsXU',
57
- launchTs: 1639092501080,
58
- oracleSource: __1.OracleSource.PYTH,
59
- },
60
- {
61
- fullName: 'Binance Coin',
62
- symbol: 'BNB-PERP',
63
- category: ['L1', 'Exchange'],
64
- baseAssetSymbol: 'BNB',
65
- marketIndex: new __1.BN(5),
66
- devnetPublicKey: 'GwzBgrXb4PG59zjce24SF2b9JXbLEjJJTBkmytuEZj1b',
67
- mainnetPublicKey: '4CkQJBxhU8EZ2UjhigbtdaPbpTe6mqf811fipYBFbSYN',
68
- launchTs: 1639523193012,
69
- oracleSource: __1.OracleSource.PYTH,
70
- },
71
- {
72
- fullName: 'Polygon',
73
- category: ['L1', 'Infra'],
74
- symbol: 'MATIC-PERP',
75
- baseAssetSymbol: 'MATIC',
76
- marketIndex: new __1.BN(6),
77
- devnetPublicKey: 'FBirwuDFuRAu4iSGc7RGxN5koHB7EJM1wbCmyPuQoGur',
78
- mainnetPublicKey: '7KVswB9vkCgeM3SHP7aGDijvdRAHK8P5wi9JXViCrtYh',
79
- launchTs: 1641488603564,
80
- oracleSource: __1.OracleSource.PYTH,
81
- },
82
- {
83
- fullName: 'Cosmos',
84
- category: ['L1', 'Infra'],
85
- symbol: 'ATOM-PERP',
86
- baseAssetSymbol: 'ATOM',
87
- marketIndex: new __1.BN(7),
88
- devnetPublicKey: '7YAze8qFUMkBnyLVdKT4TFUUFui99EwS5gfRArMcrvFk',
89
- mainnetPublicKey: 'CrCpTerNqtZvqLcKqz1k13oVeXV9WkMD2zA9hBKXrsbN',
90
- launchTs: 1641920238195,
91
- oracleSource: __1.OracleSource.PYTH,
92
- },
93
- {
94
- fullName: 'Polkadot',
95
- symbol: 'DOT-PERP',
96
- baseAssetSymbol: 'DOT',
97
- marketIndex: new __1.BN(8),
98
- devnetPublicKey: '4dqq5VBpN4EwYb7wyywjjfknvMKu7m78j9mKZRXTj462',
99
- mainnetPublicKey: 'EcV1X1gY2yb4KXxjVQtTHTbioum2gvmPnFk4zYAt7zne',
100
- launchTs: 1642629253786,
101
- oracleSource: __1.OracleSource.PYTH,
102
- },
103
- {
104
- fullName: 'Cardano',
105
- category: ['L1', 'Infra'],
106
- symbol: 'ADA-PERP',
107
- baseAssetSymbol: 'ADA',
108
- marketIndex: new __1.BN(9),
109
- devnetPublicKey: '8oGTURNmSQkrBS1AQ5NjB2p8qY34UVmMA9ojrw8vnHus',
110
- mainnetPublicKey: '3pyn4svBbxJ9Wnn3RVeafyLWfzie6yC5eTig2S62v9SC',
111
- launchTs: 1643084413000,
112
- oracleSource: __1.OracleSource.PYTH,
113
- },
114
- {
115
- fullName: 'Algorand',
116
- category: ['L1', 'Infra'],
117
- symbol: 'ALGO-PERP',
118
- baseAssetSymbol: 'ALGO',
119
- marketIndex: new __1.BN(10),
120
- devnetPublicKey: 'c1A946dY5NHuVda77C8XXtXytyR3wK1SCP3eA9VRfC3',
121
- mainnetPublicKey: 'HqFyq1wh1xKvL7KDqqT7NJeSPdAqsDqnmBisUC2XdXAX',
122
- launchTs: 1643686767000,
123
- oracleSource: __1.OracleSource.PYTH,
124
- },
125
- {
126
- fullName: 'FTX Coin',
127
- category: ['L1', 'Exchange'],
128
- symbol: 'FTT-PERP',
129
- baseAssetSymbol: 'FTT',
130
- marketIndex: new __1.BN(11),
131
- devnetPublicKey: '6vivTRs5ZPeeXbjo7dfburfaYDWoXjBtdtuYgQRuGfu',
132
- mainnetPublicKey: '8JPJJkmDScpcNmBRKGZuPuG2GYAveQgP3t5gFuMymwvF',
133
- launchTs: 1644382122000,
134
- oracleSource: __1.OracleSource.PYTH,
135
- },
136
- {
137
- fullName: 'Litecoin',
138
- category: ['L1', 'Payments'],
139
- symbol: 'LTC-PERP',
140
- baseAssetSymbol: 'LTC',
141
- marketIndex: new __1.BN(12),
142
- devnetPublicKey: 'BLArYBCUYhdWiY8PCUTpvFE21iaJq85dvxLk9bYMobcU',
143
- mainnetPublicKey: '8RMnV1eD55iqUFJLMguPkYBkq8DCtx81XcmAja93LvRR',
144
- launchTs: 1645027429000,
145
- oracleSource: __1.OracleSource.PYTH,
146
- },
147
- {
148
- fullName: 'Ripple',
149
- category: ['L1', 'Payments'],
150
- symbol: 'XRP-PERP',
151
- baseAssetSymbol: 'XRP',
152
- marketIndex: new __1.BN(13),
153
- devnetPublicKey: 'WMW5xc3HypXwTnPesyUT49uLsyHwNURsWAEk39onKuk',
154
- mainnetPublicKey: 'WMW5xc3HypXwTnPesyUT49uLsyHwNURsWAEk39onKuk',
155
- launchTs: 1647543166000,
156
- oracleSource: __1.OracleSource.SWITCHBOARD,
157
- },
158
- // {
159
- // symbol: 'mSOL-PERP',
160
- // baseAssetSymbol: 'mSOL',
161
- // marketIndex: new BN(11), //todo
162
- // devnetPythOracle: '9a6RNx3tCu1TSs6TBSfV2XRXEPEZXQ6WB7jRojZRvyeZ',
163
- // mainnetPythOracle: 'E4v1BBgoso9s64TQvmyownAVJbhbEPGyzA3qn4n46qj9',
164
- // launchTs: 1643346125000,
165
- // },
166
- ];
167
- //# sourceMappingURL=markets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markets.js","sourceRoot":"","sources":["markets.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MARGIN_PRECISION = exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.PRICE_TO_QUOTE_PRECISION = exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION = exports.PEG_PRECISION = exports.FUNDING_PAYMENT_PRECISION = exports.MARK_PRICE_PRECISION = exports.QUOTE_PRECISION = exports.MAX_LEVERAGE = exports.BN_MAX = exports.TEN_THOUSAND = exports.TEN = exports.TWO = exports.ONE = exports.ZERO = void 0;
4
- const __1 = require("../");
5
- exports.ZERO = new __1.BN(0);
6
- exports.ONE = new __1.BN(1);
7
- exports.TWO = new __1.BN(2);
8
- exports.TEN = new __1.BN(10);
9
- exports.TEN_THOUSAND = new __1.BN(10000);
10
- exports.BN_MAX = new __1.BN(Number.MAX_SAFE_INTEGER);
11
- exports.MAX_LEVERAGE = new __1.BN(5);
12
- exports.QUOTE_PRECISION = new __1.BN(10 ** 6);
13
- exports.MARK_PRICE_PRECISION = new __1.BN(10 ** 10);
14
- exports.FUNDING_PAYMENT_PRECISION = new __1.BN(10000);
15
- exports.PEG_PRECISION = new __1.BN(1000);
16
- exports.AMM_RESERVE_PRECISION = new __1.BN(10 ** 13);
17
- exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION;
18
- exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.div(exports.QUOTE_PRECISION); // 10^7
19
- exports.PRICE_TO_QUOTE_PRECISION = exports.MARK_PRICE_PRECISION.div(exports.QUOTE_PRECISION);
20
- exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.mul(exports.PEG_PRECISION).div(exports.QUOTE_PRECISION); // 10^10
21
- exports.MARGIN_PRECISION = exports.TEN_THOUSAND;
22
- //# sourceMappingURL=numericConstants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"numericConstants.js","sourceRoot":"","sources":["numericConstants.ts"],"names":[],"mappings":";;;AAAA,2BAAyB;AAEZ,QAAA,IAAI,GAAG,IAAI,MAAE,CAAC,CAAC,CAAC,CAAC;AACjB,QAAA,GAAG,GAAG,IAAI,MAAE,CAAC,CAAC,CAAC,CAAC;AAChB,QAAA,GAAG,GAAG,IAAI,MAAE,CAAC,CAAC,CAAC,CAAC;AAChB,QAAA,GAAG,GAAG,IAAI,MAAE,CAAC,EAAE,CAAC,CAAC;AACjB,QAAA,YAAY,GAAG,IAAI,MAAE,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,MAAM,GAAG,IAAI,MAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEzC,QAAA,YAAY,GAAG,IAAI,MAAE,CAAC,CAAC,CAAC,CAAC;AAEzB,QAAA,eAAe,GAAG,IAAI,MAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAClC,QAAA,oBAAoB,GAAG,IAAI,MAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACxC,QAAA,yBAAyB,GAAG,IAAI,MAAE,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,aAAa,GAAG,IAAI,MAAE,CAAC,IAAI,CAAC,CAAC;AAE7B,QAAA,qBAAqB,GAAG,IAAI,MAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,QAAA,cAAc,GAAG,6BAAqB,CAAC;AACvC,QAAA,4BAA4B,GACxC,6BAAqB,CAAC,GAAG,CAAC,uBAAe,CAAC,CAAC,CAAC,OAAO;AACvC,QAAA,wBAAwB,GACpC,4BAAoB,CAAC,GAAG,CAAC,uBAAe,CAAC,CAAC;AAC9B,QAAA,sCAAsC,GAClD,6BAAqB,CAAC,GAAG,CAAC,qBAAa,CAAC,CAAC,GAAG,CAAC,uBAAe,CAAC,CAAC,CAAC,QAAQ;AAC3D,QAAA,gBAAgB,GAAG,oBAAY,CAAC"}
package/src/math/repeg.ts DELETED
@@ -1,253 +0,0 @@
1
- import { BN } from '@project-serum/anchor';
2
- import {
3
- MARK_PRICE_PRECISION,
4
- AMM_RESERVE_PRECISION,
5
- PEG_PRECISION,
6
- AMM_TO_QUOTE_PRECISION_RATIO,
7
- QUOTE_PRECISION,
8
- ZERO,
9
- } from '../constants/numericConstants';
10
- import { calculateBaseAssetValue } from './position';
11
- import { calculateTerminalPrice } from './amm';
12
-
13
- import { Market } from '../types';
14
- import { calculatePositionPNL, calculateMarkPrice, convertToNumber } from '..';
15
-
16
- /**
17
- * Helper function calculating adjust k cost
18
- * @param market
19
- * @param marketIndex
20
- * @param numerator
21
- * @param denomenator
22
- * @returns cost : Precision QUOTE_ASSET_PRECISION
23
- */
24
- export function calculateAdjustKCost(
25
- market: Market,
26
- marketIndex: BN,
27
- numerator: BN,
28
- denomenator: BN
29
- ): BN {
30
- const netUserPosition = {
31
- baseAssetAmount: market.baseAssetAmount,
32
- lastCumulativeFundingRate: market.amm.cumulativeFundingRate,
33
- marketIndex: new BN(marketIndex),
34
- quoteAssetAmount: ZERO,
35
- openOrders: ZERO,
36
- };
37
-
38
- const currentValue = calculateBaseAssetValue(market, netUserPosition);
39
-
40
- const marketNewK = Object.assign({}, market);
41
- marketNewK.amm = Object.assign({}, market.amm);
42
-
43
- marketNewK.amm.baseAssetReserve = market.amm.baseAssetReserve
44
- .mul(numerator)
45
- .div(denomenator);
46
- marketNewK.amm.quoteAssetReserve = market.amm.quoteAssetReserve
47
- .mul(numerator)
48
- .div(denomenator);
49
- marketNewK.amm.sqrtK = market.amm.sqrtK.mul(numerator).div(denomenator);
50
-
51
- netUserPosition.quoteAssetAmount = currentValue;
52
-
53
- const cost = calculatePositionPNL(marketNewK, netUserPosition);
54
-
55
- return cost;
56
- }
57
-
58
- /**
59
- * Helper function calculating adjust pegMultiplier (repeg) cost
60
- *
61
- * @param market
62
- * @param marketIndex
63
- * @param newPeg
64
- * @returns cost : Precision QUOTE_ASSET_PRECISION
65
- */
66
- export function calculateRepegCost(
67
- market: Market,
68
- marketIndex: BN,
69
- newPeg: BN
70
- ): BN {
71
- const netUserPosition = {
72
- baseAssetAmount: market.baseAssetAmount,
73
- lastCumulativeFundingRate: market.amm.cumulativeFundingRate,
74
- marketIndex: new BN(marketIndex),
75
- quoteAssetAmount: new BN(0),
76
- openOrders: ZERO,
77
- };
78
-
79
- const currentValue = calculateBaseAssetValue(market, netUserPosition);
80
- netUserPosition.quoteAssetAmount = currentValue;
81
- const prevMarketPrice = calculateMarkPrice(market);
82
- const marketNewPeg = Object.assign({}, market);
83
- marketNewPeg.amm = Object.assign({}, market.amm);
84
-
85
- // const marketNewPeg = JSON.parse(JSON.stringify(market));
86
- marketNewPeg.amm.pegMultiplier = newPeg;
87
-
88
- console.log(
89
- 'Price moves from',
90
- convertToNumber(prevMarketPrice),
91
- 'to',
92
- convertToNumber(calculateMarkPrice(marketNewPeg))
93
- );
94
-
95
- const cost = calculatePositionPNL(marketNewPeg, netUserPosition);
96
-
97
- return cost;
98
- }
99
-
100
- /**
101
- * Helper function calculating adjust pegMultiplier (repeg) cost
102
- *
103
- * @param market
104
- * @param marketIndex
105
- * @param newPeg
106
- * @returns cost : Precision QUOTE_ASSET_PRECISION
107
- */
108
- export function calculateReserveRebalanceCost(
109
- market: Market,
110
- marketIndex: BN
111
- ): BN {
112
- const netUserPosition = {
113
- baseAssetAmount: market.baseAssetAmount,
114
- lastCumulativeFundingRate: market.amm.cumulativeFundingRate,
115
- marketIndex: new BN(marketIndex),
116
- quoteAssetAmount: new BN(0),
117
- openOrders: ZERO,
118
- };
119
-
120
- const currentValue = calculateBaseAssetValue(market, netUserPosition);
121
- netUserPosition.quoteAssetAmount = currentValue;
122
- const prevMarketPrice = calculateMarkPrice(market);
123
- const marketNewPeg = Object.assign({}, market);
124
- marketNewPeg.amm = Object.assign({}, market.amm);
125
-
126
- // const marketNewPeg = JSON.parse(JSON.stringify(market));
127
- const newPeg = calculateTerminalPrice(market)
128
- .mul(PEG_PRECISION)
129
- .div(MARK_PRICE_PRECISION);
130
- // const newPeg = prevMarketPrice.mul(PEG_PRECISION).div(MARK_PRICE_PRECISION);
131
-
132
- const newBaseReserve = market.amm.baseAssetReserve.add(
133
- market.baseAssetAmount
134
- );
135
- const newQuoteReserve = market.amm.sqrtK
136
- .mul(market.amm.sqrtK)
137
- .div(newBaseReserve);
138
- console.log(
139
- 'current reserves on close, quote:',
140
- convertToNumber(newQuoteReserve, AMM_RESERVE_PRECISION),
141
- 'base:',
142
- convertToNumber(newBaseReserve, AMM_RESERVE_PRECISION)
143
- );
144
-
145
- let newSqrtK;
146
- if (newPeg.lt(market.amm.pegMultiplier)) {
147
- newSqrtK = newBaseReserve;
148
- } else {
149
- newSqrtK = newQuoteReserve;
150
- }
151
-
152
- marketNewPeg.amm.baseAssetReserve = newSqrtK.sub(market.baseAssetAmount); // newSqrtK.sub(market.baseAssetAmount);
153
- marketNewPeg.amm.quoteAssetReserve = newSqrtK
154
- .mul(newSqrtK)
155
- .div(marketNewPeg.amm.baseAssetReserve);
156
- marketNewPeg.amm.sqrtK = newSqrtK;
157
- marketNewPeg.amm.pegMultiplier = newPeg;
158
-
159
- console.log(
160
- 'Price moves from',
161
- convertToNumber(prevMarketPrice),
162
- 'to',
163
- convertToNumber(calculateMarkPrice(marketNewPeg))
164
- );
165
-
166
- const cost = calculatePositionPNL(marketNewPeg, netUserPosition);
167
-
168
- return cost;
169
- }
170
-
171
- export function calculateBudgetedK(market: Market, cost: BN): [BN, BN] {
172
- // wolframalpha.com
173
- // (1/(x+d) - p/(x*p+d))*y*d*Q = C solve for p
174
- // p = (d(y*d*Q - C(x+d))) / (C*x(x+d) + y*y*d*Q)
175
-
176
- // todo: assumes k = x * y
177
- // otherwise use: (y(1-p) + (kp^2/(x*p+d)) - k/(x+d)) * Q = C solve for p
178
-
179
- // const k = market.amm.sqrtK.mul(market.amm.sqrtK);
180
- const x = market.amm.baseAssetReserve;
181
- const y = market.amm.quoteAssetReserve;
182
-
183
- const d = market.baseAssetAmount;
184
- const Q = market.amm.pegMultiplier;
185
-
186
- const C = cost.mul(new BN(-1));
187
-
188
- const numer1 = y.mul(d).mul(Q).div(AMM_RESERVE_PRECISION).div(PEG_PRECISION);
189
- const numer2 = C.mul(x.add(d)).div(QUOTE_PRECISION);
190
- const denom1 = C.mul(x)
191
- .mul(x.add(d))
192
- .div(AMM_RESERVE_PRECISION)
193
- .div(QUOTE_PRECISION);
194
- const denom2 = y
195
- .mul(d)
196
- .mul(d)
197
- .mul(Q)
198
- .div(AMM_RESERVE_PRECISION)
199
- .div(AMM_RESERVE_PRECISION)
200
- .div(PEG_PRECISION);
201
-
202
- const numerator = d
203
- .mul(numer1.add(numer2))
204
- .div(AMM_RESERVE_PRECISION)
205
- .div(AMM_RESERVE_PRECISION)
206
- .div(AMM_TO_QUOTE_PRECISION_RATIO);
207
- const denominator = denom1
208
- .add(denom2)
209
- .div(AMM_RESERVE_PRECISION)
210
- .div(AMM_TO_QUOTE_PRECISION_RATIO);
211
- console.log(numerator, denominator);
212
- // const p = (numerator).div(denominator);
213
-
214
- // const formulaCost = (numer21.sub(numer20).sub(numer1)).mul(market.amm.pegMultiplier).div(AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO)
215
- // console.log(convertToNumber(formulaCost, QUOTE_PRECISION))
216
-
217
- return [numerator, denominator];
218
- }
219
-
220
- export function calculateBudgetedPeg(market: Market, cost: BN): BN {
221
- // wolframalpha.com
222
- // (1/(x+d) - p/(x*p+d))*y*d*Q = C solve for p
223
- // p = (d(y*d*Q - C(x+d))) / (C*x(x+d) + y*y*d*Q)
224
-
225
- // todo: assumes k = x * y
226
- // otherwise use: (y(1-p) + (kp^2/(x*p+d)) - k/(x+d)) * Q = C solve for p
227
-
228
- const k = market.amm.sqrtK.mul(market.amm.sqrtK);
229
- const x = market.amm.baseAssetReserve;
230
- const y = market.amm.quoteAssetReserve;
231
-
232
- const d = market.baseAssetAmount;
233
- const Q = market.amm.pegMultiplier;
234
-
235
- const C = cost.mul(new BN(-1));
236
-
237
- const deltaQuoteAssetReserves = y.sub(k.div(x.add(d)));
238
- const deltaPegMultiplier = C.mul(MARK_PRICE_PRECISION).div(
239
- deltaQuoteAssetReserves.div(AMM_TO_QUOTE_PRECISION_RATIO)
240
- );
241
- // .mul(PEG_PRECISION)
242
- // .div(QUOTE_PRECISION);
243
- console.log(
244
- Q.toNumber(),
245
- 'change by',
246
- deltaPegMultiplier.toNumber() / MARK_PRICE_PRECISION.toNumber()
247
- );
248
- const newPeg = Q.sub(
249
- deltaPegMultiplier.mul(PEG_PRECISION).div(MARK_PRICE_PRECISION)
250
- );
251
-
252
- return newPeg;
253
- }