Current Pools Strategy
A description of the current in-house strategy used in Rubicon Pools
At a high level, Rubicon Pools acts as an open order book market maker on Rubicon. This involves a strategist bidding and asking at some "spread" to an asset's true rate in order to earn yield for liquidity providers and settle trades for users.
This page details the current strategy employed by Rubicon Pools. Importantly, the Rubicon team is acting as the sole strategist right now. Over time, Rubicon Pools will be opened up to more strategists in an effort to decentralize the protocol. These coming phases of evolution for the strategist role are as follows: next, permissioned strategists will be onboarded via a mechanism in which they bond bathTokens (align interests will Pools) in order to market-make with Pools liquidity; and, finally, the strategist role will be permissionless for anyone to market-make while protecting user liquidity and hedging (with code on the smart contracts and sound game theory) against bad actors. More details will be released as we progress through this strategist roadmap.

New Approach (Live post-OVM 2.0 on 11/11)

Rubicon recently learned some hard lessons from our initial v0 strategy after it was exploited, more details on that here. Importantly, the rebalance() function on BathPair.sol coupled with our naive strategist bot behavior enabled the exploit. This is mentioned here because the new strategist approach is an important iteration that learns from past mistakes to ensure said exploit is no longer possible, user funds are protected, and Pools performance is improved.
There are a number of key elements to the new Pools strategy, please see them broken down as follows:

1. Reworking the rebalance() function

The new rebalance function will implement two new features to the old function. Firstly, rebalance will allow the strategist to work with the "buffer" or queue of fills to move filled assets between liquidity pools more easily. For example, when USDC bids on the ETH/USDC pair settle trades (for yield at some spread), there is then ETH sitting on the USDC pool (referring to this as the buffer). Prevously, we were naively moving all fills from this buffer to their respective pool (this allowed for manipulation in our v0 exploit).
The new approach will allow the strategist to choose the quanitity of each asset from a pair's "buffer" of fills to rebalance. This ensures that a bad actor cannot dump on a pair and then manipulate the virtual price of a pool (e.g. dumping ETH on the ETH/USDC bids and joining the ETH pool to wait for the massive inbound ETH rebalance as was done in the exploit). Moreover, this new approach will allow the strategist to rebalance when fills are matched on either side of the pair (this is how the strategy will work!), ensuring that dramatic pool manipulation is not possible and both pools in a pair are recovering their assets and rebalancing at the same time.

2. Adding network-aware inventory management logic

Another aspect to the new strategist approach is the ability to tail off inventory risk on other trading venues within the same network (L2 or blockchain). For example, should a market being made by Rubicon Pools receive a fill at a premium to the price readily available on another venue (e.g. an AMM) the strategist will tail off that asset risk and return profits to the pool.
Here is an example of how this would work. Assume the ETH/USDC pair gets a USDC bid filled at $4500 for ETH at a spread (premium) to the market rate (assume $5000 for the sake of argument though spreads will not be this wide) present on an AMM within the same network. As soon as the strategist recognizes this action, that ETH (which the strategist swapped USDC for by market-making USDC bids from that pool) would be sold on the hypothetical AMM for USDC at market rate ($5000) which is then passed back to the USDC pool. This allows for the USDC pool to win the market-making premium while not incurring any impermenant loss or inventory risk.

3. Employing a more optimal liquidity curve

A key shortcoming of our initial approach was the linear positioning of liquidity in the order book. Importantly, AMMs and innovators in our space like Uniswap (pioneer of constant product market-making in an AMM) have shown that a non-linear positioning of liquidity is necessary to make markets and protect LPs. Read more about these curves and constant-product market-making here.
The new strategy will not use a constant product but adopt an exponential liquidity curve to help naturally balance fills on either side of a pair and protect LPs. For example, in the ETH/USDC pair, should a massive sell of ETH occur, the seller will incur slippage as the price of bids scales downward exponentially. This protects USDC LPs in this scenario while forcing a large seller to pay an increasing premium (yield for LPs) for taking a large amount of USDC off of the book (discourages behavior that would cause inventory shifts in Pools). This would then lead to that ETH being in the fill buffer awaiting rebalancing (once fills are equal - according to current market rate - on both sides of the pair within the buffer) in which it will be swapped for USDC also in the buffer (once this occurs) ensuring that both liquidity pools can reliably earn yield and not be manipulated.
Please note, the above strategy is still in development and we aim to ship it shortly after the release of OVM 2.0 on 11/11. As soon as it is deployed, the public repo will be updated with the new logic found here.
We feel these new elements will provide a large boost and meaningful iteration to the system. Importantly, we will continue to iterate and improve our strategy, along with Rubicon Pools, into perpetuity as we pursue the goal of making Rubicon Pools a staple and secure money lego. To this end, we are in the process of hiring a dedicated quantitative finance engineer to assume our in-house strategist responsibilities and further improve our approach.

Future Improvements (WIP)

  • Implementing HFT market impact models for optimal bidding and asking on the books. This will further improve the liquidity curve described above (reactive to CLOB and ecosystem conditions)
  • Cross-network (L2s), Layer 1 Ethereum, and non-metaverse venue awareness. This will enable a broader scope of venues for inventory management and strategy performance.
  • Improved liquidity pool risk-return profiles for asset-specific, idiosyncratic ("Up Only"), and reliable performance
  • The strategy will always adapt with the current version of the protocol and iterate alongside core smart contracts (also will be improved into perpetuity of course)