What are the limitations of spot trading compared to futures trading?

On a typical trading setup, spot trading offers limited features comparing to futures trading. For example, you cannot submit both take-profit and stop-loss orders at the same time. Or that there's no concept of positions to see your entry price, PNL, etc. Not with Jesse though!.

Jesse tries its best to overcome these limitations; making spot trading experience as close to futures trading.

However, there are still some limitations that you need to know about:

Submitting exit orders

While Jesse does make it possible to submit both a take-profit and a stop-loss order at the same time, it's not possible to do it inside go_long() of your strategy as it is with futures trading. That is because the exact size of your position is not known until the position is opened. This is because in spot trading, fees are reduced from the asset itself.

So instead you need to do inside on_open_position(). Here's an example:

def on_open_position(self, order):
    self.stop_loss = self.position.qty, self.price - 10
    self.take_profit = self.position.qty, self.price + 10

Persistency support

The current persistency feature of Jesse depends on the data on the exchange to work. Since queue orders are only stored on Jesse's side, the persistency support for them doesn't work. That means if you have a queued order, it will be lost if you stop your running session and start it again.

Another thing about the persistency feature not being perfect for spot trading, is that when you start the session, and a position is already open (which means you have some of that coin in your wallet), because there's no position record on the exchange, the real entry-price of your position is lost. So Jesse does the next best thing which is to consider the current price (at the moment of starting the session) as the entry price.

Limited support for non-stablecoin quote pairs

There's no limit on which quote currency you can trade. However, so far, I have only tested against stable-coins only. So I'm not sure about how it would work with symbols such as ETH-BTC. I'm suspecting there will be some rounding issues with displaying various numbers in the dashboard. I will test it in the future.

Last updated: 2 years ago