@d8x/perpetuals-sdk 2.1.1-alpha2 → 2.1.3-alpha2
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/abi/BeaconProxy.json +71 -0
- package/dist/cjs/abi/IPerpetualManager.json +5 -0
- package/dist/cjs/abi/Maintainer.json +774 -0
- package/dist/cjs/abi/MockToken.json +347 -0
- package/dist/cjs/abi/UUPSUpgradeable.json +104 -0
- package/dist/cjs/abi/WeETH.json +310 -0
- package/dist/cjs/abi-zkevm/LimitOrderBook.json +910 -0
- package/dist/cjs/abi-zkevm/LimitOrderBookFactory.json +236 -0
- package/dist/cjs/brokerTool.js +1 -1
- package/dist/cjs/brokerTool.js.map +1 -1
- package/dist/cjs/contracts/BeaconProxy.d.ts +63 -0
- package/dist/cjs/contracts/BeaconProxy.js +3 -0
- package/dist/cjs/contracts/BeaconProxy.js.map +1 -0
- package/dist/cjs/contracts/IPerpetualManager.d.ts +5 -3
- package/dist/cjs/contracts/Maintainer.d.ts +799 -0
- package/dist/cjs/contracts/Maintainer.js +3 -0
- package/dist/cjs/contracts/Maintainer.js.map +1 -0
- package/dist/cjs/contracts/MockToken.d.ts +263 -0
- package/dist/cjs/contracts/MockToken.js +3 -0
- package/dist/cjs/contracts/MockToken.js.map +1 -0
- package/dist/cjs/contracts/UUPSUpgradeable.d.ts +118 -0
- package/dist/cjs/contracts/UUPSUpgradeable.js +3 -0
- package/dist/cjs/contracts/UUPSUpgradeable.js.map +1 -0
- package/dist/cjs/contracts/WeETH.d.ts +503 -0
- package/dist/cjs/contracts/WeETH.js +3 -0
- package/dist/cjs/contracts/WeETH.js.map +1 -0
- package/dist/cjs/contracts/factories/BeaconProxy__factory.d.ts +61 -0
- package/dist/cjs/contracts/factories/BeaconProxy__factory.js +89 -0
- package/dist/cjs/contracts/factories/BeaconProxy__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.d.ts +4 -0
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +5 -0
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/Maintainer__factory.d.ts +609 -0
- package/dist/cjs/contracts/factories/Maintainer__factory.js +792 -0
- package/dist/cjs/contracts/factories/Maintainer__factory.js.map +1 -0
- package/dist/{esm/contracts/factories/PerpStorage__factory.d.ts → cjs/contracts/factories/MockToken__factory.d.ts} +128 -115
- package/dist/cjs/contracts/factories/MockToken__factory.js +365 -0
- package/dist/cjs/contracts/factories/MockToken__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js +122 -0
- package/dist/cjs/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/WeETH__factory.d.ts +545 -0
- package/dist/cjs/contracts/factories/WeETH__factory.js +721 -0
- package/dist/cjs/contracts/factories/WeETH__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js +5324 -0
- package/dist/cjs/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js +254 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js +928 -0
- package/dist/cjs/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js +456 -0
- package/dist/cjs/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
- package/dist/cjs/contracts/factories/lean0/index.d.ts +4 -0
- package/dist/cjs/contracts/factories/lean0/index.js +15 -0
- package/dist/cjs/contracts/factories/lean0/index.js.map +1 -0
- package/dist/cjs/contracts/lean0/IPerpetualManager.d.ts +2821 -0
- package/dist/cjs/contracts/lean0/IPerpetualManager.js +3 -0
- package/dist/cjs/contracts/lean0/IPerpetualManager.js.map +1 -0
- package/dist/cjs/contracts/lean0/LimitOrderBook.d.ts +533 -0
- package/dist/cjs/contracts/lean0/LimitOrderBook.js +3 -0
- package/dist/cjs/contracts/lean0/LimitOrderBook.js.map +1 -0
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js +3 -0
- package/dist/cjs/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
- package/dist/cjs/contracts/lean0/ShareToken.d.ts +320 -0
- package/dist/cjs/contracts/lean0/ShareToken.js +3 -0
- package/dist/cjs/contracts/lean0/ShareToken.js.map +1 -0
- package/dist/cjs/contracts/lean0/index.d.ts +4 -0
- package/dist/cjs/contracts/lean0/index.js +3 -0
- package/dist/cjs/contracts/lean0/index.js.map +1 -0
- package/dist/cjs/d8XMath.d.ts +25 -1
- package/dist/cjs/d8XMath.js +160 -3
- package/dist/cjs/d8XMath.js.map +1 -1
- package/dist/cjs/marketData.d.ts +1 -1
- package/dist/cjs/marketData.js +7 -1
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/abi/BeaconProxy.json +71 -0
- package/dist/esm/abi/IPerpetualManager.json +5 -0
- package/dist/esm/abi/Maintainer.json +774 -0
- package/dist/esm/abi/MockToken.json +347 -0
- package/dist/esm/abi/UUPSUpgradeable.json +104 -0
- package/dist/esm/abi/WeETH.json +310 -0
- package/dist/esm/abi/lean0/IPerpetualManager.json +5306 -0
- package/dist/esm/abi/lean0/LimitOrderBook.json +910 -0
- package/dist/esm/abi/lean0/LimitOrderBookFactory.json +236 -0
- package/dist/esm/abi/lean0/ShareToken.json +438 -0
- package/dist/esm/abi-zkevm/LimitOrderBook.json +910 -0
- package/dist/esm/abi-zkevm/LimitOrderBookFactory.json +236 -0
- package/dist/esm/brokerTool.js +1 -1
- package/dist/esm/brokerTool.js.map +1 -1
- package/dist/esm/contracts/BeaconProxy.d.ts +63 -0
- package/dist/esm/contracts/BeaconProxy.js +2 -0
- package/dist/esm/contracts/BeaconProxy.js.map +1 -0
- package/dist/esm/contracts/IPerpetualManager.d.ts +5 -3
- package/dist/esm/contracts/Maintainer.d.ts +799 -0
- package/dist/esm/contracts/Maintainer.js +2 -0
- package/dist/esm/contracts/Maintainer.js.map +1 -0
- package/dist/esm/contracts/MockToken.d.ts +263 -0
- package/dist/esm/contracts/MockToken.js +2 -0
- package/dist/esm/contracts/MockToken.js.map +1 -0
- package/dist/esm/contracts/UUPSUpgradeable.d.ts +118 -0
- package/dist/esm/contracts/UUPSUpgradeable.js +2 -0
- package/dist/esm/contracts/UUPSUpgradeable.js.map +1 -0
- package/dist/esm/contracts/WeETH.d.ts +503 -0
- package/dist/esm/contracts/WeETH.js +2 -0
- package/dist/esm/contracts/WeETH.js.map +1 -0
- package/dist/esm/contracts/factories/BeaconProxy__factory.d.ts +61 -0
- package/dist/esm/contracts/factories/BeaconProxy__factory.js +85 -0
- package/dist/esm/contracts/factories/BeaconProxy__factory.js.map +1 -0
- package/dist/esm/contracts/factories/IPerpetualManager__factory.d.ts +4 -0
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js +5 -0
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/Maintainer__factory.d.ts +609 -0
- package/dist/esm/contracts/factories/Maintainer__factory.js +788 -0
- package/dist/esm/contracts/factories/Maintainer__factory.js.map +1 -0
- package/dist/esm/contracts/factories/MockToken__factory.d.ts +273 -0
- package/dist/esm/contracts/factories/{PerpStorage__factory.js → MockToken__factory.js} +139 -128
- package/dist/esm/contracts/factories/MockToken__factory.js.map +1 -0
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.d.ts +87 -0
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js +118 -0
- package/dist/esm/contracts/factories/UUPSUpgradeable__factory.js.map +1 -0
- package/dist/esm/contracts/factories/WeETH__factory.d.ts +545 -0
- package/dist/esm/contracts/factories/WeETH__factory.js +717 -0
- package/dist/esm/contracts/factories/WeETH__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.d.ts +4136 -0
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js +5320 -0
- package/dist/esm/contracts/factories/lean0/IPerpetualManager__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.d.ts +189 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js +250 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBookFactory__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.d.ts +715 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js +924 -0
- package/dist/esm/contracts/factories/lean0/LimitOrderBook__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.d.ts +344 -0
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js +452 -0
- package/dist/esm/contracts/factories/lean0/ShareToken__factory.js.map +1 -0
- package/dist/esm/contracts/factories/lean0/index.d.ts +4 -0
- package/dist/esm/contracts/factories/lean0/index.js +8 -0
- package/dist/esm/contracts/factories/lean0/index.js.map +1 -0
- package/dist/esm/contracts/lean0/IPerpetualManager.d.ts +2821 -0
- package/dist/esm/contracts/lean0/IPerpetualManager.js +2 -0
- package/dist/esm/contracts/lean0/IPerpetualManager.js.map +1 -0
- package/dist/esm/contracts/lean0/LimitOrderBook.d.ts +533 -0
- package/dist/esm/contracts/lean0/LimitOrderBook.js +2 -0
- package/dist/esm/contracts/lean0/LimitOrderBook.js.map +1 -0
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.d.ts +210 -0
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js +2 -0
- package/dist/esm/contracts/lean0/LimitOrderBookFactory.js.map +1 -0
- package/dist/esm/contracts/lean0/ShareToken.d.ts +320 -0
- package/dist/esm/contracts/lean0/ShareToken.js +2 -0
- package/dist/esm/contracts/lean0/ShareToken.js.map +1 -0
- package/dist/esm/contracts/lean0/index.d.ts +4 -0
- package/dist/esm/contracts/lean0/index.js +2 -0
- package/dist/esm/contracts/lean0/index.js.map +1 -0
- package/dist/esm/d8XMath.d.ts +25 -1
- package/dist/esm/d8XMath.js +158 -2
- package/dist/esm/d8XMath.js.map +1 -1
- package/dist/esm/marketData.d.ts +1 -1
- package/dist/esm/marketData.js +7 -1
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +1 -1
- package/src/abi/IPerpetualManager.json +5 -0
- package/src/brokerTool.ts +1 -1
- package/src/contracts/IPerpetualManager.ts +5 -3
- package/src/contracts/factories/IPerpetualManager__factory.ts +5 -0
- package/src/d8XMath.ts +235 -2
- package/src/marketData.ts +8 -0
- package/src/version.ts +1 -1
- package/dist/esm/contracts/factories/PerpStorage__factory.js.map +0 -1
package/src/d8XMath.ts
CHANGED
|
@@ -528,12 +528,13 @@ export function expectedLoss(
|
|
|
528
528
|
ds = Math.abs(tradeAmt);
|
|
529
529
|
}
|
|
530
530
|
const a = Math.max(0, dl + totLong - m * totShort - dsm);
|
|
531
|
-
const b = Math.max(0, ds + totShort - m * totLong
|
|
531
|
+
const b = Math.max(0, ds + totShort - m * totLong - dlm);
|
|
532
532
|
return p * (1 - p) * (a + b);
|
|
533
533
|
}
|
|
534
534
|
|
|
535
535
|
/**
|
|
536
536
|
* Exchange fee as a rate for prediction markets
|
|
537
|
+
* For opening trades only
|
|
537
538
|
* @param prob long probability
|
|
538
539
|
* @param m max maintenance margin rate (0.18)
|
|
539
540
|
* @param totShort
|
|
@@ -648,9 +649,241 @@ function excessMargin(
|
|
|
648
649
|
return b0 / S3 - thresh / S3 - fee_cc;
|
|
649
650
|
}
|
|
650
651
|
|
|
652
|
+
/**
|
|
653
|
+
* Internal function to find the deposit amount required
|
|
654
|
+
* for a given trade amount and target leverage
|
|
655
|
+
* @param tradeAmt
|
|
656
|
+
* @param targetLvg
|
|
657
|
+
* @param price
|
|
658
|
+
* @param S3
|
|
659
|
+
* @param S2Mark
|
|
660
|
+
* @returns
|
|
661
|
+
*/
|
|
662
|
+
function pmGetDepositAmtForLvgTrade(
|
|
663
|
+
tradeAmt: number,
|
|
664
|
+
targetLvg: number,
|
|
665
|
+
price: number,
|
|
666
|
+
S3: number,
|
|
667
|
+
S2Mark: number
|
|
668
|
+
): number {
|
|
669
|
+
const pnl = (tradeAmt * (S2Mark - price)) / S3;
|
|
670
|
+
let p = S2Mark - 1;
|
|
671
|
+
if (tradeAmt < 0) {
|
|
672
|
+
p = 1 - p;
|
|
673
|
+
}
|
|
674
|
+
const b = (Math.abs(tradeAmt) * p) / S3 / targetLvg;
|
|
675
|
+
const amt = -(pnl - b);
|
|
676
|
+
// check:
|
|
677
|
+
//bal = amt+pnl
|
|
678
|
+
//pos_val = (np.abs(trade_amt) * p) / S3
|
|
679
|
+
//lvg = pos_val/bal
|
|
680
|
+
//assert(np.abs(lvg-targetLvg)<0.1)
|
|
681
|
+
return amt;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
/**
|
|
685
|
+
* Internal function to calculate cash over initial margin rate
|
|
686
|
+
* after a trade of size tradeAmt in prediction markets
|
|
687
|
+
* @param tradeAmt
|
|
688
|
+
* @param lvg
|
|
689
|
+
* @param walletBalCC
|
|
690
|
+
* @param currentCashCC
|
|
691
|
+
* @param currentPosition
|
|
692
|
+
* @param currentLockedInValue
|
|
693
|
+
* @param slippage
|
|
694
|
+
* @param S2
|
|
695
|
+
* @param Sm
|
|
696
|
+
* @param S3
|
|
697
|
+
* @param totLong
|
|
698
|
+
* @param totShort
|
|
699
|
+
* @returns
|
|
700
|
+
*/
|
|
701
|
+
function pmExcessCashAtLvg(
|
|
702
|
+
tradeAmt: number,
|
|
703
|
+
lvg: number,
|
|
704
|
+
walletBalCC: number,
|
|
705
|
+
currentCashCC: number,
|
|
706
|
+
currentPosition: number,
|
|
707
|
+
currentLockedInValue: number,
|
|
708
|
+
slippage: number,
|
|
709
|
+
S2: number,
|
|
710
|
+
Sm: number,
|
|
711
|
+
S3: number,
|
|
712
|
+
totLong: number,
|
|
713
|
+
totShort: number
|
|
714
|
+
): number {
|
|
715
|
+
//determine deposit amount for given leverage
|
|
716
|
+
const limitPrice = S2 * (1 + Math.sign(tradeAmt) * slippage);
|
|
717
|
+
const depositFromWallet = pmGetDepositAmtForLvgTrade(tradeAmt, lvg, limitPrice, S3, Sm);
|
|
718
|
+
const m0 = 0.18;
|
|
719
|
+
//leverage fee
|
|
720
|
+
let p0 = Sm - 1;
|
|
721
|
+
if (tradeAmt < 0) {
|
|
722
|
+
p0 = 2 - Sm; //=1-(Sm-1)
|
|
723
|
+
}
|
|
724
|
+
const feeCc = pmExchangeFee(p0, m0, totShort, totLong, tradeAmt, 1 / lvg) / S3;
|
|
725
|
+
|
|
726
|
+
//excess cash
|
|
727
|
+
let exc = walletBalCC - depositFromWallet - feeCc;
|
|
728
|
+
|
|
729
|
+
// margin balance
|
|
730
|
+
let pos = currentPosition + tradeAmt;
|
|
731
|
+
let p = Sm - 1;
|
|
732
|
+
if (pos < 0) {
|
|
733
|
+
p = 2 - Sm;
|
|
734
|
+
}
|
|
735
|
+
const h = entropy(p);
|
|
736
|
+
const tau = m0 + (0.5 - m0) * h;
|
|
737
|
+
const thresh = Math.abs(pos) * p * tau;
|
|
738
|
+
const b0 =
|
|
739
|
+
depositFromWallet +
|
|
740
|
+
currentCashCC +
|
|
741
|
+
Math.abs(currentPosition) * Sm -
|
|
742
|
+
currentLockedInValue +
|
|
743
|
+
Math.max(0, tradeAmt * (Sm - limitPrice));
|
|
744
|
+
// b0 - fee > threshold
|
|
745
|
+
// b0 - fee - threshold > 0
|
|
746
|
+
// extra_cash = b0 - fee - threshold
|
|
747
|
+
// missing: referral rebate
|
|
748
|
+
const bal = b0 / S3 - thresh / S3 - feeCc;
|
|
749
|
+
exc = exc + bal;
|
|
750
|
+
return exc;
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
/**
|
|
754
|
+
* Find maximal trade size (short dir=-1 or long dir=1) for prediction
|
|
755
|
+
* markets at provided leverage and incorporating the current position
|
|
756
|
+
* and wallet balance.
|
|
757
|
+
* Factors in lot size and global max short/long
|
|
758
|
+
* @param dir
|
|
759
|
+
* @param lvg
|
|
760
|
+
* @param walletBalCC
|
|
761
|
+
* @param slippage slippage percent
|
|
762
|
+
* @param currentPosition
|
|
763
|
+
* @param currentCashCC
|
|
764
|
+
* @param currentLockedInValue
|
|
765
|
+
* @param S2
|
|
766
|
+
* @param Sm
|
|
767
|
+
* @param S3
|
|
768
|
+
* @param totLong
|
|
769
|
+
* @param totShort
|
|
770
|
+
* @param maxShort
|
|
771
|
+
* @param maxLong
|
|
772
|
+
* @returns
|
|
773
|
+
*/
|
|
774
|
+
export function pmFindMaxPersonalTradeSizeAtLeverage(
|
|
775
|
+
dir: number,
|
|
776
|
+
lvg: number,
|
|
777
|
+
walletBalCC: number,
|
|
778
|
+
slippage: number,
|
|
779
|
+
currentPosition: number,
|
|
780
|
+
currentCashCC: number,
|
|
781
|
+
currentLockedInValue: number,
|
|
782
|
+
S2: number,
|
|
783
|
+
Sm: number,
|
|
784
|
+
S3: number,
|
|
785
|
+
totLong: number,
|
|
786
|
+
totShort: number,
|
|
787
|
+
maxShort: number,
|
|
788
|
+
maxLong: number
|
|
789
|
+
): number {
|
|
790
|
+
if (dir < 0) {
|
|
791
|
+
dir = -1;
|
|
792
|
+
} else {
|
|
793
|
+
dir = 1;
|
|
794
|
+
}
|
|
795
|
+
const lot = 10;
|
|
796
|
+
const deltaS = 1; //for derivative
|
|
797
|
+
const f0 = pmExcessCashAtLvg(
|
|
798
|
+
dir * deltaS,
|
|
799
|
+
lvg,
|
|
800
|
+
walletBalCC,
|
|
801
|
+
currentCashCC,
|
|
802
|
+
currentPosition,
|
|
803
|
+
currentLockedInValue,
|
|
804
|
+
slippage,
|
|
805
|
+
S2,
|
|
806
|
+
Sm,
|
|
807
|
+
S3,
|
|
808
|
+
totLong,
|
|
809
|
+
totShort
|
|
810
|
+
);
|
|
811
|
+
if (f0 < lot) {
|
|
812
|
+
// no trade possible
|
|
813
|
+
return 0;
|
|
814
|
+
}
|
|
815
|
+
// numerically find maximal trade size
|
|
816
|
+
let sNew = dir * lot * 10;
|
|
817
|
+
let s = 2 * sNew;
|
|
818
|
+
while (true) {
|
|
819
|
+
let count = 0;
|
|
820
|
+
while (Math.abs(sNew - s) > 1 && count < 100) {
|
|
821
|
+
s = sNew;
|
|
822
|
+
const f =
|
|
823
|
+
pmExcessCashAtLvg(
|
|
824
|
+
s,
|
|
825
|
+
lvg,
|
|
826
|
+
walletBalCC,
|
|
827
|
+
currentCashCC,
|
|
828
|
+
currentPosition,
|
|
829
|
+
currentLockedInValue,
|
|
830
|
+
slippage,
|
|
831
|
+
S2,
|
|
832
|
+
Sm,
|
|
833
|
+
S3,
|
|
834
|
+
totLong,
|
|
835
|
+
totShort
|
|
836
|
+
) ** 2;
|
|
837
|
+
const f2 =
|
|
838
|
+
pmExcessCashAtLvg(
|
|
839
|
+
s + deltaS,
|
|
840
|
+
lvg,
|
|
841
|
+
walletBalCC,
|
|
842
|
+
currentCashCC,
|
|
843
|
+
currentPosition,
|
|
844
|
+
currentLockedInValue,
|
|
845
|
+
slippage,
|
|
846
|
+
S2,
|
|
847
|
+
Sm,
|
|
848
|
+
S3,
|
|
849
|
+
totLong,
|
|
850
|
+
totShort
|
|
851
|
+
) ** 2;
|
|
852
|
+
let ds = (f2 - f) / deltaS;
|
|
853
|
+
if (ds == 0) {
|
|
854
|
+
sNew = s + Math.random() * ds - ds / 2;
|
|
855
|
+
} else {
|
|
856
|
+
sNew = s - f / ds;
|
|
857
|
+
}
|
|
858
|
+
count += 1;
|
|
859
|
+
}
|
|
860
|
+
if (count < 100) {
|
|
861
|
+
break;
|
|
862
|
+
}
|
|
863
|
+
// Newton algorithm failed,
|
|
864
|
+
// choose new starting value
|
|
865
|
+
if (dir > 0) {
|
|
866
|
+
sNew = Math.random() * (maxLong - currentPosition);
|
|
867
|
+
} else {
|
|
868
|
+
sNew = -Math.random() * (Math.abs(maxShort) + currentPosition);
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
// ensure trade maximal trade sNew does not exceed
|
|
872
|
+
// the contract limits
|
|
873
|
+
if (currentPosition + sNew < maxShort) {
|
|
874
|
+
sNew = maxShort - currentPosition;
|
|
875
|
+
} else if (currentPosition + sNew > maxLong) {
|
|
876
|
+
sNew = maxLong - currentPosition;
|
|
877
|
+
}
|
|
878
|
+
// round trade size down to lot
|
|
879
|
+
sNew = Math.sign(sNew) * Math.floor(Math.abs(sNew) / lot) * lot;
|
|
880
|
+
return sNew;
|
|
881
|
+
}
|
|
882
|
+
|
|
651
883
|
/**
|
|
652
884
|
* Find maximal trade size (short dir=-1 or long dir=1) for prediction
|
|
653
|
-
* markets.
|
|
885
|
+
* markets at maximal leverage and incorporating the current position.
|
|
886
|
+
* Agnostic about wallet balance.
|
|
654
887
|
* @param dir
|
|
655
888
|
* @param currentPosition
|
|
656
889
|
* @param currentCashCC
|
package/src/marketData.ts
CHANGED
|
@@ -813,8 +813,16 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
813
813
|
maxMaintMgnRate: number,
|
|
814
814
|
Sm: number,
|
|
815
815
|
tradeAmtBC: number,
|
|
816
|
+
traderPosBC: number,
|
|
816
817
|
tradeMgnRate: number
|
|
817
818
|
): number {
|
|
819
|
+
const isClose = Math.sign(traderPosBC) != Math.sign(tradeAmtBC);
|
|
820
|
+
const isFlip =
|
|
821
|
+
Math.abs(traderPosBC + tradeAmtBC) > 0.01 && Math.sign(traderPosBC + tradeAmtBC) != Math.sign(traderPosBC);
|
|
822
|
+
if (isClose && !isFlip) {
|
|
823
|
+
// 0.1cents if is close
|
|
824
|
+
return 0.001;
|
|
825
|
+
}
|
|
818
826
|
return pmExchangeFee(Sm - 1, maxMaintMgnRate, state.shortBC, state.longBC, tradeAmtBC, tradeMgnRate);
|
|
819
827
|
}
|
|
820
828
|
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const D8X_SDK_VERSION = "2.1.
|
|
1
|
+
export const D8X_SDK_VERSION = "2.1.3-alpha2";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PerpStorage__factory.js","sourceRoot":"","sources":["../../../../src/contracts/factories/PerpStorage__factory.ts"],"names":[],"mappings":"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"}
|