While traditional financial institutions try to come up with always faster trading times to allow something as continuous time. There are good reasons to stop this very costly real time race which doesn’t add overall utility to the trading process but what is instead a zero sum game where the “fastest” profit from others at very high unnecessary costs.
Especially with a blockchain with discrete status updates (every block) it is worth to see time as something discrete. The consequence for trading algorithms is that we should use batch auctions. This means instead of handling orders sequentially (as they come in in real time), orders would be aggregated in one batch (block) and a algorithm would determine a single clearing price.
There has been research on such a concept and there are solutions that find a price while trying to maximize the trading volume. However - additional research needs to be done when automated market makers are also participants and if multiple assets are traded that have connected price constraints.
Lets create an example:
We want to do a market on a soccer match. We distinguish 28 atomic outcomes:
0:0, 1:0, 2:0, 3:0, 4:0, 0:1, 1:1, 2:1, 3:1, 4:1, 0:2, 1:2, 2:2, 3:2, 4:2, 0:3, 1:3, 2:3, 3:3, 4:3, 0:4, 1:4, 2:4, 3:4, 4:4, other win A, other draw, other win B.
Now we could have an (LMSR)-AMM with this 28 outcomes. The naive initial price for each outcomes would be 1/28 ≈ 0.0357. Now for example every buy order for one share that has a higher price than 0.0357 should be matched. However - that would increase the price of this outcome and therefore lower the prices of the other outcomes. This means that a buy of one share could cause a match another (lower) buy order of another share.
In addition user would like to buy bundles of outcomes in a atomic order. For this specific market people would like to bet on Team A wins, draw, team B. All those three can be expressed as a combination of the atomic outcomes. Another popular bet would be >2.5 goals, vs. < 2.5 goals.
So the goal needs to be to develop a batch auction algorithm that: a) can deal with the constraints from the AMM (optimally any AMM), b) constraints from bundle trades c) maximize trade volume and d) (to have an unambiguous result) given the same trade volume the second optimization criteria should be - minimizing price movement from the last round.
The final requirement would be that this result is (reasonable cheap) verifiable on the blockchain. Or in other words - the default process would be that someone submits a result but this can be “challenged” and replaced by a better on (higher volume or same volume and smaller price movement) Every time a solution is submitted a) and b) needs to be checked.