Christian Kamm
5a05e9cb2e
Update anchor to v0.27.0, stop using submodule ( #582 )
2023-05-12 13:54:53 +02:00
Christian Kamm
d20ae0abcb
Perp: Exit matching loop when no more base lots can be filled ( #576 )
2023-05-08 06:40:38 +02:00
Nicholas Clarke
c0ea9970b6
Clarkeni/oracle confidence ( #568 )
...
* Add oracle confidence and oracle type to update funding logs.
* Return price and OracleState struct from oracle_price_and_state.
2023-05-05 23:44:14 -07:00
Nicholas Clarke
2dce1398d3
Fix to seq num logging. Seq num was incremented between event and logging ( #556 )
2023-04-25 13:38:31 +02:00
Christian Kamm
507cb500e9
Fix settle limit accounting for positive pnl takeover ( #562 )
2023-04-25 13:37:34 +02:00
microwavedcola1
3741f78da5
insurance fund withdraw ix ( #561 )
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-04-25 09:20:44 +02:00
microwavedcola1
497012042c
Force close for serum3 market ( #551 )
...
* force close for serum3 market
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* always require admin
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* format
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* update client
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-04-20 10:19:23 +02:00
microwavedcola1
6ac9f19287
Perp force close positions in a market ( #525 )
...
* force close tokens
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* add test
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* reset
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* force close perp market
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* rename
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* test
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* update
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* add back staleness slot check
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-04-19 17:42:01 +02:00
Nicholas Clarke
37ae7549fb
Clarkeni/perp trade logging ( #535 )
...
* Emit the slot corresponding to the oracle price to PerpUpdateFundingLog.
* Emit a new FilledPerpOrderLog consisting of just the group, perp market and seq num. This will be used to correlate perp fills to the transactions they were matched (not consumed).
2023-04-13 10:50:39 -07:00
microwavedcola1
b07857c696
force close tokens program part ( #518 )
...
* force close tokens
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* add test
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* reset
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-04-13 12:44:12 +02:00
Christian Kamm
da2a7f4e0c
Net borrow limit: Separate out tracking and checking ( #534 )
...
That way it's easier to be specific about where the limit should be
checked.
2023-04-13 08:56:33 +02:00
Nicholas Clarke
0ba41e3471
Emit perp fees settled on update_funding. Required to have a full picture of total perp market fees. ( #530 )
2023-04-06 22:09:50 -07:00
Christian Kamm
762608ecce
Limit funding and interest accrual during downtimes ( #529 )
...
Previously, if the funding or interest updating instruction wasn't
called for a long time (like for a solana downtime or the security
council halting the program), the next update would apply funding or
interest for the whole time interval since the last update.
This could lead to a bad downtime situation becoming worse. Instead,
limit the maximum funding and interest time interval to one hour.
2023-03-31 12:48:34 +02:00
Christian Kamm
8559d3ef07
Perp funding: Fix logging in update funding + deactivate pos ( #528 )
2023-03-31 10:58:04 +02:00
Christian Kamm
312a60fe4f
Net borrow limits: Use correct price for check ( #527 )
2023-03-30 17:25:29 +02:00
microwavedcola1
258d95d035
Fix bug: only account for borrows we are offsetting ( #513 )
...
* Fix bug: only account for borrows we are offsetting
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* Bank: Unittest for net borrow limits
---------
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Co-authored-by: Christian Kamm <mail@ckamm.de>
2023-03-22 09:58:31 +01:00
Christian Kamm
d1e3da2b75
IxGateSet: Log AccountBuybackFeesWithMngo state
2023-03-20 14:02:03 +01:00
Christian Kamm
b7dd8e0663
Fee buyback: Respect USDC oracle ( #504 )
2023-03-20 11:18:11 +01:00
Christian Kamm
b6bfb01879
token_liq_bankruptcy: Use oracle for valuing insurance fund tokens ( #503 )
...
Previously a token from the insurance fund was valued at 1 USD. Now it
uses the oracle associated with it (USDC oracle).
2023-03-16 11:23:45 +01:00
Christian Kamm
0349ace3b6
Downgrade the `fixed` crate to v1.11.0 ( #500 )
2023-03-12 08:50:42 +01:00
Christian Kamm
6ee3cb1e19
Perp: More comments on fields and funding computation ( #497 )
2023-03-07 20:53:07 +01:00
Christian Kamm
f29fffd331
Perp: User-selected reduce-only behaves more intuitively ( #483 )
...
The previous strict behavior of taking existing open orders into account
is only used when the perp market itself is also flagged as reduce-only.
2023-03-03 09:53:27 +01:00
Christian Kamm
9a13c1366a
Fee buyback: Credit only perp fees that go to the dao ( #479 )
2023-02-27 19:51:09 +01:00
Christian Kamm
e4d46c3c5b
Buyback fees: Add staggered expiry ( #478 )
2023-02-27 16:36:27 +01:00
microwavedcola1
d88d44b34a
buyback perp fees with mngo at a discount ( #464 )
...
buyback perp fees with mngo
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-02-25 20:34:16 +01:00
Christian Kamm
5c7a2e3e10
Use the overflow-checks=true equivalent with the fixed crate ( #476 )
...
* Vendor `fixed` crate to have checked math in release mode
* remove all cm!()
* drop superfluous parens
* drop use of checked_math crate
* manual removal of redundant checked_* functions
2023-02-24 11:56:33 +01:00
Christian Kamm
f75e3ee656
Serum: Track referrer rebates as Mango platform fees ( #469 )
...
And start sharing code between serum3 settle and force cancel
2023-02-22 12:04:21 +01:00
Christian Kamm
8f9700ed2d
Settle pnl: Always grant the fractional fee on low health
2023-02-15 15:11:58 +01:00
Christian Kamm
a3a6d9d636
Settle pnl: Move fee-computation to PerpMarket
...
So it can be used in client code to decide what accounts to settle.
2023-02-15 15:11:58 +01:00
Christian Kamm
f6abd9579d
Perp cancel all: Don't error when orders are filled/expired ( #453 )
2023-02-14 10:44:51 +01:00
Christian Kamm
1f66bef88f
Change liquidation end target to a new, third health type ( #447 )
...
Due to the safety features in v4, the init health can differ from maint
health a lot more than it used to in v3. This is because of stable-price
adjusted oracle prices used in init health, and the weight scaling based
on total deposits and borrows used in init health.
The effect is that once an account becomes liquidatable, it could be
liquidated a lot until it reaches init>=0.
The original idea of liquidating until init>=0 was just to provide some
buffer, such that liquidated accounts wouldn't immediately become
liquidatable again.
This patch decouples the buffer idea explicit from init health by
creating a new LiquidationEnd health type. Liquidation proceeds until
the LiquidationEnd health becomes positive.
Co-authored-by: microwavedcola1 <89031858+microwavedcola1@users.noreply.github.com>
2023-02-10 09:00:36 +01:00
Christian Kamm
5328003183
Perp: Reorganize fill events, add client order id to LeafNodes ( #426 )
...
- don't store internal order ids: unneeded
- provide the maker client order id for user correlation
- store fees as f32 to waste fewer bytes
- new FillLogV2
2023-02-02 09:15:06 +01:00
Christian Kamm
a91a9ae998
Perp: Fix liq instructions ( #424 )
...
- Rename to perp_liq_base_or_positive_pnl and perp_liq_negative_pnl_or_bankruptcy
- Deal with situations where overall asset weight is zero and base position reduction
would not improve liqee health
- Add ability for liqors to take over positive unsettled pnl if that improves liqee health
2023-02-02 09:00:37 +01:00
Christian Kamm
50c820ddce
Perps: Rename pnl_asset_weight -> overall_asset_weight ( #428 )
...
Calling it "pnl" was confusing, because the thing that is weighted isn't
the pnl, but `(weighted base value + quote position)`.
2023-02-01 16:15:45 +01:00
microwavedcola1
0012907ee3
Mc/ix toggler ( #419 )
...
* add gating to individual ixs
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-26 20:27:39 +01:00
microwavedcola1
0192728efc
return order id from a perp place order ix ( #417 )
...
* return order id from a perp place order ix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-25 09:03:35 +01:00
microwavedcola1
64dda20cb5
group level token deposit limit ( #415 )
...
* group level token deposit limit
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fix
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-23 14:58:03 +01:00
Christian Kamm
b3aabfadfc
Perp: Clarify has_open_orders use during liquidation ( #412 )
2023-01-23 10:45:45 +01:00
Christian Kamm
8b4a4c82fb
Perp: move Book::new_order() code around
2023-01-20 14:42:35 +01:00
Christian Kamm
be37f33946
Perp: Add PerpOpenOrder::is_active_for_market()
2023-01-20 14:42:35 +01:00
Christian Kamm
30ebf173ee
Perp: documentation in bookside_iterator.rs
2023-01-20 14:42:35 +01:00
Christian Kamm
d65e0794f4
Perp: Documentation in nodes.rs
2023-01-20 14:42:35 +01:00
Christian Kamm
549d9a8108
Perp: Remove EventQueue::empty() - is_empty() exists as well
2023-01-20 14:42:35 +01:00
Christian Kamm
1b4140c078
Perp: Don't allow orders with effective price_lots<1
2023-01-20 14:42:35 +01:00
microwavedcola1
44f599ca62
dont process orders which have 0 lots; dont return early, we still want to apply ioc penalty ( #404 )
...
* skip iteration if the incoming order has no lots to process
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
* fixes from review
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-19 11:29:00 +01:00
Christian Kamm
f16f1a6c92
Perp market field documentation pass
2023-01-19 09:31:59 +01:00
Christian Kamm
0a86257309
Perp: Move best_price/impact_price from Orderbook to BookSide
2023-01-19 09:31:59 +01:00
Christian Kamm
ff90c85874
Liquidator: reduce perp base pos if possible ( #398 )
...
- send reduce-only ioc order if possible
- settle pnl if needed
- deactivate position
2023-01-18 10:50:23 +01:00
microwavedcola1
be15f54225
agg pub slot was recent even if price was not updated, switch to last slot which seems more relevant ( #393 )
...
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-17 14:48:06 +01:00
Christian Kamm
9346c8e546
Perps: track overall realized pnl relating to a position ( #392 )
...
This includes trade pnl, funding and fees. Tracking this makes it easier
for uis to display a consistent position overall pnl value that doesn't
decrease by settling.
Co-authored-by: microwavedcola1 <microwavedcola@gmail.com>
2023-01-17 14:07:58 +01:00