~~Smart~~ Order Routing

Definition. (Fill function) A fill function $f$ specifies how much of a desired asset we can maximally get for a given amount of the provided asset.

Lemma. (Monotonicity) Fill functions are monotonic. If a fill function provided more of the desired asset for fewer of the provided, we can simply provide it fewer.

Problem. Given a maker asset amount $x$ and a set of fill functions $f_i$, we want to partition $x$ into $x_i$ to maximize.

$$ g(x) = \max_{\vec x} \, \sum_i f_i(x_i) \text{ subject to } \sum_i x_i \le x \text{ and } x_i \ge 0 $$

Dynamic programming: The resulting function $g$ is also a fill function. Given two fill functions, we can compute their combined function. So we only need to solve the case for two functions, and can then use this recursively.


If the fillable function is concave, the optimization problem is a Convex Programming problem. In particular this means any local minimum is a global minimum and we can use any way to minimize (for example grandient descent).

Usually fillable functions are concave, with the notable exception of Kyber.

Question. If two fillable functions are concave, is their combination also concave?

If the fillable functions are note concave, the problem is

1-hop routing

Now we have more than two assets and multiple fill functions between two assets.

First, for each pair of tokens $(i,j)$ we compute the optimal fill function $f_{ij}$ using the above two-asset solution.

Define $f_{ii}$ to be the identity function.

Now the optimal $\{0,1\}$-hop routes are

$$ f'_{ij}(x) = \max_{\vec x} \, \sum_k f_{kj}(f_{ik}(x_k)) \,\,\text{ subject to }\,\, \sum_k x_k \le x $$

Similarly, we can define 3-hop routes $f''_{ij}$ by itterating this procedure on $f'$, and 7-hop, 15-hop and so on, doubling the number of hops each time.

∞-hop routing

The optimal unlimited hop solutions $f^∞_{ij}$ should be invariant under adding one more hop, so it should satisfy

$$ f^∞_{ij}(x) = \max_{\vec x} \, \sum_k f^∞_{ik}(f^∞_{kj}(x_k)) \,\,\text{ subject to }\,\, \sum_k x_k \le x $$

Remco Bloemen
Math & Engineering