Tutorials

How to use DEXBot with Staggered Orders strategy

Staggered Orders

Places a large amount of buy and sell orders at certain intervals, covering the orderbook from very low prices to very high prices. The range is supposed to cover all conceivable prices for as long as the user intends to run the strategy. That could be from -100x to +100x (-99% to +10000%). Profits will be made from price movements, and the strategy introduces friction to such movements. It gives markets depth, and makes them look better. It never “sells at a loss”, but always at a profit.

This strategy works well on laptops and computers that aren’t on(line) all the time. It works perfectly well if you run it a few times a day, once a week or once a month. More profits will likely be made if it’s online all the time, but even that is not sure. It depends on market conditions.

Parameters and Configuration

  • Amount: Order size closest to market price (Base)
  • Spread: How much higher price will any bought assets be sold for (%). Minimum spread between your highest bid and lowest ask.
  • Increment: At which increments will orders be placed (%)
  • Lower bound: How low do you expect the price to ever go? Buy orders will be placed from center price down to this price (exceeded by 1 order). Price of Quote asset as measured in Base asset.
  • Upper bound: How high do you expect price to ever reach? Sell orders will be placed from center price up to this price, and exceeded by 1 order. Price of Quote asset as measured in Base asset.
  • Required Base: This shows you how much Base asset the account requires with the current parameters.
  • Required Quote: shows you how much Quote assets the account requires with the current parameters.

Logic

Initialization

Buy orders are placed (allocating base asset) starting from about center price - ( spread + increment ) /2 at every increment until lower bound is exceeded. Order size decreases every increment (as measured in base asset) by sqrt( 1 + increment ) and increases as measured in quote asset by sqrt( 1 + increment ). This may be hard to understand, but it is a very neutral way to allocate the funds.

Sell orders are place similarly on the opposite side of center price. Order price as measured in Quote asset (the asset to be allocated in orders) will decrease by every increment, and increase as measured in Base asset.

Maintenance logic

Whenever the bot notices that a buy order fills partially or fully, it places the acquired funds for sale at filled_price * ( 1 + spread ), which will be 1 increment below the previously lowest sell order. Whenever a sell order fills either partially or fully, the bot uses the acquired funds to place a buy order at filled_price / ( 1 + spread ).

How profits are made

The bot makes orders to buy back more of what it sold for the same total price, and to sell back all of what it bought for a bigger price. This way every time the price moves in an opposite direction, profits are realized. As the price moves back and forth, a little or much, small profits are made and immediately reinvested to increase future profits. This can continue as long as the price ever moves anywhere, and the price stays within assigned range.

Considerations

The most important thing is to make the range (upper and lower bounds) wide enough. Since order size decreases as the range is extended, it costs very little more to increase the range. For example to increase range from +10x to +100x costs not 10x more, but just some 20% more. The only reason not to extend ones range to infinity is that there are fee’s for each order creation.

The smaller the increments the more often orders will be filled, but the smaller the profit per order. (With same amount of funds).

The smaller the spread the more orders will fill, but the smaller the profit also. There is likely a sweet spot somewhere. You can also use a massive spread like 10,000% if you like, but it is questionable whether you need a bot for that, as an order might fill once per year or so.

If you intend to run the strategy on an always-on computer, then smaller spreads and increments might make sense. If you expect to run the bot once a day, try the default spread (6%) and increment (4%). If you intend to run the bot once a week, sane values might be 20% spread and 10% increment.