Commit Graph

135 Commits

Author SHA1 Message Date
Geoff Taylor c11aececd9 Fixed Serum cranking to be more complete. 2021-07-21 14:31:04 +01:00
Geoff Taylor 0166b5e371 MarketMaker now takes an optional OrderType parameter. 2021-07-20 10:24:05 +01:00
Geoff Taylor be1ba45921 Fixed problem with marketmaker raising an exception when it didn't recognise an order. Now it should just log a warning and move on. 2021-07-19 18:38:55 +01:00
Geoff Taylor dfa9369f87 Trying to stop solanaweb from polluting error notifications. 2021-07-19 18:36:08 +01:00
Geoff Taylor 9c824f502f Fixed linting problem. 2021-07-19 16:43:06 +01:00
Geoff Taylor 605f3bd1e2 Perp market maker no longer tries to run Consume Events. 2021-07-19 16:40:47 +01:00
Geoff Taylor c5cd5ca095 MarketMaker now exits cleanly on Control-C (SIG_TERM). 2021-07-19 15:14:00 +01:00
Geoff Taylor 94df52003b Changes for devnet group v3.8.
* Some struct/layout changes
* Big changes to OpenOrders handling in MarketMaker
* Serum and Spot settlement should now work as expected
2021-07-19 15:04:53 +01:00
Geoff Taylor bbea9594d1 Fixed failing test. 2021-07-17 14:06:18 +01:00
Geoff Taylor 5a4022b236 Wrapping SOL now creates a proper Associated Token Account if no Wrapped SOL accounts are available. 2021-07-16 18:59:19 +01:00
Geoff Taylor 30d4b01a37 Moved SimpleMarketMaker to its own directory+package. 2021-07-16 17:29:48 +01:00
Geoff Taylor 040eadcb90 Made marketmaker a bit more configurable, and it now publishes pulse completion and errors. 2021-07-16 14:26:42 +01:00
Geoff Taylor 3ca1d7b706 Updated to new ids.json. Added deposit instruction+command. 2021-07-16 13:32:30 +01:00
Geoff Taylor 436237a949 Fixed linting problems. 2021-07-16 11:54:13 +01:00
Geoff Taylor 7db8326a7c More realistic market-maker is now available. 2021-07-15 21:03:22 +01:00
Geoff Taylor 9960713d7d Fixed use of backslash in regular expressions. 2021-07-14 18:28:48 +01:00
Geoff Taylor bbcf3d35ce Changed the way SimpleMarketMaker calculates position sizes to be in line with what it has on each side instead of the total. 2021-07-14 18:22:36 +01:00
Geoff Taylor ec051037d4 Fixed Serum oracle to work better with Serum prices when the code itself is not on mainnet. 2021-07-14 16:34:10 +01:00
Geoff Taylor 9ae3e8a327 Fixed oracles for perp market symbols. 2021-07-14 15:51:32 +01:00
Geoff Taylor fd7c045d37 Updated health check pings to use the prefix /var/tmp/mango_healthcheck_ 2021-07-14 14:17:14 +01:00
Geoff Taylor 9f99ecf650 Updated SimpleMarketMaker so it could run well against pure Serum markets. 2021-07-14 14:03:51 +01:00
Geoff Taylor 2f01d8adf0 Added crank and settle calls when cancelling Serum orders. 2021-07-13 20:47:37 +01:00
Geoff Taylor caf4947a5e Removed extraneous print statements. 2021-07-13 20:27:35 +01:00
Geoff Taylor 19e4d948d3 Updates to allow some market making on Serum. 2021-07-13 20:01:32 +01:00
Geoff Taylor 33c2c421db Fixed problem with simple market maker creating too many orders. 2021-07-13 15:16:39 +01:00
Geoff Taylor bcd56301c9 Brought changes to structs and instructions across for new group/code v3.4. 2021-07-13 12:43:50 +01:00
Geoff Taylor 82405cfec1 Updated Serum and Spot instructions builders to properly crank and settle. 2021-07-12 20:29:41 +01:00
Geoff Taylor a00738a67c Added DesiredOrdersBuilder and a couple of basic implementations. 2021-07-12 20:09:36 +01:00
Geoff Taylor 80886c106c All MarketOperations now properly use their equivalent MarketInstructionBuilder for building instructions. 2021-07-12 18:26:35 +01:00
Geoff Taylor 6a15c81fa3 New approach to transactions allowing them to be split up.
* CombinableTransactions now separated out.
* CombinableTransactions are now size-aware when being executed, and will automatically split into batches for execution if they are too big.
* New MarketInstructionBuilder approach - each market type can now have its own way of building instructions for common operations.
2021-07-12 17:18:56 +01:00
Geoff Taylor faf514cde1 Brought up to date for new Group structures. New websocket approach. 2021-07-12 10:57:05 +01:00
Geoff Taylor fa28fe4209 Fixed problem fetching transactions for report. Reversed order of output of transactions so it appears better in notifications. 2021-07-07 19:59:27 +01:00
Geoff Taylor 79a13f0e06 Report transactions now insists on a report.state file, and reads from it now instead of taking a separate parameter. 2021-07-07 15:06:24 +01:00
Geoff Taylor 12c07cab7e Added target address to transaction report output. 2021-07-07 12:28:50 +01:00
Geoff Taylor 9e706c1d91 (Temporarily?) removed Settle from Spot order placement because it stopped working. 2021-07-01 22:10:52 +01:00
Geoff Taylor bf675122ac Updated ids.json for new group. Updated Group with new structure.
* Extended mechanism for combining instructions.
* Fixed Account's calculations of deposits and borrows.
* Added net_assets to Account.
* Groups now maintain loaded RootBanks, not just PublicKeys of them.
* Fixed simple market-maker's calculation of position sizes.
2021-07-01 21:24:08 +01:00
Geoff Taylor 8860263346 Fixed problem placing spot orders. 2021-06-30 16:16:02 +01:00
Geoff Taylor b5c8f69ae1 Fixed Withdraw command. 2021-06-30 15:06:10 +01:00
Geoff Taylor 3e4ba1052c Initial work on placing/cancelling spot market orders. 2021-06-30 14:08:37 +01:00
Geoff Taylor e16ac9cdc2 Added proper group-name lookup when fetching groups. 2021-06-28 09:48:16 +01:00
Geoff Taylor 888994424d Improved reporting of TokenValue and BalanceSheet, in line with V2 changes. 2021-06-26 18:24:07 +01:00
Geoff Taylor 42181c10d5 Shifted error handling in SimpleMarketMaker. 2021-06-25 17:58:27 +01:00
Geoff Taylor 857d033572 Added compound instruction builder for placing Serum orders, cranking and settling all in one go. 2021-06-25 17:52:22 +01:00
Geoff Taylor e61a3806ba Removed all InstructionBuilders. Instead we'll use simpler functions that return an array of instructions (allowing for compound instructions etc.) 2021-06-25 17:21:53 +01:00
Geoff Taylor 5b71ffbd18 Big Rename - removal of old Group and MarginAccount, deletion of a lot of code that is no longer relevant.
* Added some TODO comments where work needs to be done but pieces are currently missing.
2021-06-25 15:50:37 +01:00
Geoff Taylor b8dc12a3e6 Separated out token and market lookups. 2021-06-25 11:10:41 +01:00
Geoff Taylor cd46c1c98b First cut at a lot of V3 code. 2021-06-25 10:33:40 +01:00
Geoff Taylor 852abdff00 Made all send_transaction() calls consistent in use of preflight commitment. 2021-06-24 11:59:57 +01:00
Geoff Taylor f4e034a943 Added 'processed' commitment to client calls where it was missing. 2021-06-23 11:36:35 +01:00
Geoff Taylor 206a95e39a Added type annotation for token lookups. 2021-06-23 09:44:55 +01:00
Geoff Taylor 9e5b54b6bd Shift representation of max input amount. 2021-06-23 09:14:04 +01:00
Geoff Taylor 3d3577023c Continue liquidating accounts that are liquidatable even if they're above maint_coll_ratio. 2021-06-22 20:36:31 +01:00
Geoff Taylor 72a64a322e Updated failed liquidation message to include liquidator name. 2021-06-22 10:25:06 +01:00
Geoff Taylor f7bd67308e Improved AccountInfo.load_multiple and made better use of it fetching updated prices. 2021-06-22 09:43:31 +01:00
Geoff Taylor 5fc7aa7868 Added better health management of LiquidationProcessor. 2021-06-21 11:06:26 +01:00
Geoff Taylor 858cee248b Now uses ReportingAccountLiquidator even when using NullAccountLiquidator. 2021-06-19 19:55:23 +01:00
Geoff Taylor fab659c244 Improved access to market lookup data.
* Abstracted MarketLookup from SpotMarketLookup, because not all markets need be 'spot'.
* Made MarketLookup accessible from Context.
2021-06-18 13:50:33 +01:00
Geoff Taylor aac32ba716 Wallet can now be loaded from environment.
* Centralised configuration of Wallet from command-line
* Added loading Wallet from environment variables
* Improved command-line handling of many commands
2021-06-17 12:06:39 +01:00
Geoff Taylor 7078ef4722 Removed default context objects - now have static method on Context object: Context.default(). 2021-06-17 11:18:35 +01:00
Geoff Taylor 198054ad09 Changed message that appears on liquidation filtering. 2021-06-16 20:54:11 +01:00
Geoff Taylor 31a476cbb1 Fixed some lint problems. 2021-06-16 20:50:25 +01:00
Geoff Taylor 90d6c54552 Fixed problem switching cluster on command line using just cluster name. 2021-06-16 20:38:00 +01:00
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 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