Pricing Strategies

Our pricing system can be broken down into two major components:

  • Pricing Discovery (asynchronous process)
  • Price Fetching (real-time)

When a token that hasn't been priced before is requested via the API (that is, a token address for a particular chain that the system hasn't priced before), it gets put into a discovery queue.

The discovery algorithm will find the best pricing solution depending on the strategy requested by the client. If, for example, the strategy requested is dexHighestLiquidity, then the discovery algorithm will iterate through all known DEXes and liquidity pools in that chain, until it finds the liquidity pool that satisfies that criteria.

Once a solution has been found for a particular token, subsequent requests to price that token will be processed in real-time.

We currently support the following pricing strategies:

DEX Highest Liquidity (EVM)

This is the default strategy used if you don't pass one to the API, and it is the primary strategy supported on EVM chains. To request it explicitly, pass dexHighestLiquidity in the strategy parameter.

Note: when we say "highest liquidity", we mean so in USD terms.

For this strategy, we employ a recursive algorithm that will iterate through all pools where the token in question trades, and calculate the USD value of the total liquidity in that pool.

It is recursive because finding the USD price of the token in that pool might take multiple steps. For example:

Imagine that you're trying to price $MKR on Ethereum mainnet, and the highest liquidity pool happens to be MKR/ETH on Uniswap v3.

At that point, we can calculate the price of MKR in terms of ETH, but we still need to know the price of ETH in USD terms, to be able to report a final price in USD for MKR.

So we also find the highest liquidity pool of ETH (in this example) against a USD-pegged stablecoin, and also calculate that in the process.

In the end, you receive the price of MKR in USD terms.

Weighted Volume Average (SVM)

This is the default strategy supported on SVM chains, most notably Solana.

The strategy determines a token's USD price by taking into account the trading volumes across multiple liquidity pools.

In simplified terms, it:

  • Identifies all available pools where the token is actively traded.
  • Retrieves the recent trading volume from those pools, calculating the price of the token in terms of what it was swapped at.
  • Each pool’s token price is weighted according to its share of total trading volume across all pools.