Commit Graph

380 Commits

Author SHA1 Message Date
Geoff Taylor d0595b8673 Updated SimpleMarketMaker based on suggestions from Brian.
* Cleans up existing orders on startup, in case recovering from a previous crash.
* Can now leave existing orders in place (instead of cancelling and creating fresh) if price and size are within tolerance.
2021-06-16 12:06:12 +01:00
Geoff Taylor 81f386f114 Introduced a SimpleMarketMaker. 2021-06-15 23:30:11 +01:00
Geoff Taylor 68d0941130 Updated tests for new default group. 2021-06-15 21:51:18 +01:00
Geoff Taylor c4c92f2851 Changed default group name from BTC_ETH_USDT to BTC_ETH_SOL_SRM_USDC. 2021-06-15 17:32:26 +01:00
Geoff Taylor 0fae7679f7 Separated out logic to determine liquidatability of margin account into a more testable setup. 2021-06-15 17:30:25 +01:00
Geoff Taylor ceaae48ddf Moved Pyth Network oracle code to V2 now that they're providing prices there. 2021-06-15 11:57:28 +01:00
Geoff Taylor 23aed252d4 Fixed problem where margin account balances had index applied twice. 2021-06-13 22:54:21 +01:00
Geoff Taylor 36446c2567 Fixed problem passing empty OpenOrders accounts in instructions. 2021-06-13 22:02:02 +01:00
Geoff Taylor 5bbac07d0c Updated LiquidationProcessor to take referrer_rebate_accrued into account.
* Added referrer_rebate_accrued to assets in calculations.
* Added some unit tests on liquidation calculations.
2021-06-13 20:34:17 +01:00
Geoff Taylor a491d1d851 Added to_streaming_observable() method to OracleProviders. Added polling observable to Pyth and Serum providers, and websocket observable to FTX provider. 2021-06-13 16:01:36 +01:00
Geoff Taylor 6b4ea5925d Added FTX price oracle. 2021-06-12 14:21:07 +01:00
Geoff Taylor c3ac807fce Moved oracles to their own packages. 2021-06-11 16:51:41 +01:00
Geoff Taylor b47bd6f6f3 Added Serum oracle. 2021-06-11 12:43:47 +01:00
Geoff Taylor 83d1702691 Added code to fetch prices from the Pyth Network. 2021-06-10 21:28:29 +01:00
Geoff Taylor 8e470ad94e Now applies serum fee discount address to Serum orders, if an SRM token account is available. 2021-06-09 15:20:13 +01:00
Geoff Taylor 4294fbebe7 Fixed problem using Wrapped SOL with Serum.
* Fixes problems with liquidator re-balancing.
* Fixes problems with group-balance-wallet, group-settle, serum-buy and serum-sell commands.
* Greatly increases the speed of buying and selling on Serum - the IOC order is now placed, cranked and settled in one transaction.
* Associated token accounts and OpenOrders accounts are automatically created as-needed.
2021-06-09 00:47:15 +01:00
Geoff Taylor a637f79feb Fixed problem switching context from 3-token group to 5-token group. 2021-06-08 16:27:04 +01:00
Geoff Taylor 032c91c66e Fixed bug in group-settle, where market metadata was provided instead of a spot market. 2021-06-08 15:12:43 +01:00
Geoff Taylor 16cb68ad4c Fixed bug in balancing wallet.
* Mixed use of 'symbol' in different contexts.
2021-06-08 14:38:28 +01:00
Geoff Taylor e3e44a14ef Added documentation on Wrapped SOL, how to wrap/unwrap. Cleaned up those commands, centralised some Instructions. 2021-06-08 14:05:00 +01:00
Geoff Taylor 616d929e90 Removed context from Group, added name. Price lookups must now pass the context they want to use. 2021-06-08 08:17:37 +01:00
Geoff Taylor d92a28f635 LiquidationProcessor now records timestamp of last price and margin accounts updates.
* Will log warning if margin accounts are over 5 minutes out of date
* Will log error if margin accounts are over 10 minutes out of date
2021-06-07 20:35:26 +01:00
Geoff Taylor c0d7621e53 Added show-group and show-margin-account commands.
* Improved string output
* Strongly typed Group TokenValues, e.g. total deposits/borrows, indexes.
2021-06-07 19:38:43 +01:00
Geoff Taylor 5e59d8a7e3 Moved library code to .py files instead of notebooks.
* This is a big change that touched most files in the project.
* Library code is now an actual package, in /mango.
* Pure .py files used for shared code - easier to edit/debug, and should ease move to installable package later.
* Removed many notebooks. The remaining notebooks are useful 'display'/'show' notebooks for investigating Mango objects.
* More tests! The test story is now much improved, but more unit tests are still needed.
* There's now a Makefile for project operations.
2021-06-07 15:10:18 +01:00
Geoff Taylor de0144f43a Tidied up command help for new commands. 2021-06-03 09:10:09 +01:00
Geoff Taylor 227e63a851 Fixed confirmation statement in wrap-sol. 2021-06-02 20:17:40 +01:00
Geoff Taylor cd7cdab540 Added commands to wrap and unwrap SOL. 2021-06-02 20:03:46 +01:00
Geoff Taylor e0c552ca55 Removed unused import. 2021-06-02 09:57:50 +01:00
Geoff Taylor 325aac3dab Some tweaks to improve 5-token group handling. 2021-06-02 09:54:48 +01:00
Geoff Taylor a239a27512 Fixed tests to use new Token constructor. 2021-06-01 19:26:33 +01:00
Geoff Taylor e3b0d65705 Extended use of Lookups - serum buys and sells no longer need a Group. 2021-06-01 19:16:59 +01:00
Geoff Taylor f73ee9ca19 Now use solana.tokenlist.json for token lookups. 2021-06-01 18:16:02 +01:00
Geoff Taylor cbd42d24ae Context can now decide to look up the group ID given a group name, instead of using the wrong default. 2021-06-01 14:08:54 +01:00
Geoff Taylor c01c33cd7f Fixed context for ShowGroup. 2021-06-01 12:34:53 +01:00
Geoff Taylor 9a54297842 Added warnings to FunctionObserver instead of propagating exceptions. 2021-06-01 12:08:24 +01:00
Geoff Taylor 40d5976b5f Tried improving loading of openorders accounts.
* Reduced default chunk size for AccountInfo.load_multiple() to 100 since that seems to be the limit on api.rpcpool.com.
* Added ability to pause between chunks because it really doesn't like a lot of calls in a row.
* Reverted loading of openorders for ripe margin accounts in V2 to the V1 method of fetching them all in one call, because doing it in chunks of 100 just takes too long.
2021-05-28 19:38:52 +01:00
Geoff Taylor 7bf7cff474 Retry pauses now uses kangda's 4,8,16,20,30 seconds pauses. 2021-05-28 17:20:07 +01:00
Geoff Taylor ba25e289af Better retry functionality with backoff pauses. 2021-05-28 17:16:53 +01:00
Geoff Taylor b6a595bb21 Updated to handle Groups with 5 tokens as well as Groups with 3 tokens. 2021-05-27 17:07:02 +01:00
Geoff Taylor 8b21f4c025 Fixed formatting of token balance in group-balances command. 2021-05-25 17:17:41 +01:00
Geoff Taylor fefb160858 Removed unused import. 2021-05-24 14:54:06 +01:00
Geoff Taylor 30543975ee Renamed commands to better reflect purpose. Updated Quickstart.
* group-buy-token to serum-buy
* group-sell-token to serum-sell
* group-send-token to send-token
2021-05-24 10:40:33 +01:00
Geoff Taylor 3b82383f1b Fixed reference to group name in LiquidationEvent. 2021-05-21 20:40:40 +01:00
Geoff Taylor 1ba1a12310 Updated to new, shared ids.json. 2021-05-21 20:14:57 +01:00
Geoff Taylor fcfe32d321 Fixed bug in ShowAllAccounts, refactored it to use new function to get all margin accounts. 2021-05-21 20:14:21 +01:00
Geoff Taylor 5c6abd0733 Added CsvFileNotificationTarget.
* Updated notifications to allow notifying on succeeded or failed (or both!) PartialLiquidate transactions.
* Added more information to LiquidationEvent to allow that to flow through to notifications.
2021-05-21 20:02:54 +01:00
Geoff Taylor 06b963e2cf Added Mailjet notification target. 2021-05-21 15:21:02 +01:00
Geoff Taylor 8b8afe1a0b Refactored PollingLiquidator into ReportingAccountLiquidator and LiquidationProcessor
* ReportingAccountLiquidator wraps an AccountLiquidator but provides before-and-after logging and reporting.
* Sped up fetch_token_prices() by reducing it to one network fetch
* Centralised loading of ripe mangoes by creating MarginAccount.load_all_ripe()
* Clearer, more consistent use of Observables
* Added RxPy Backpressure library
* Improved container building to allow for different tags
2021-05-21 14:28:42 +01:00
Geoff Taylor 6058468a99 Fixed incorrect logging.info() call in PollingLiquidator. 2021-05-21 14:25:02 +01:00
Geoff Taylor 85798a360b Changed Quickstart title to add 'Liquidator'. 2021-05-19 16:21:22 +01:00