Skip to main content
Version: V2.2

Get Price From Bin Id

In v2.2 each bin holds the liquidity of the pair for a specific price range. Thus, it is possible to link a certain bin to a price by using the id of the underlying bin. We provide examples to get the price from a binId.

Conversion Functions

In order to link a binId to a price it is necessary to know the binStep of the underlying pair. Here is the conversion logic.

def getPriceFromId(binId: int, binStep: int) -> float:
"""
Convert a binId to the underlying price.

:param binId: Bin Id.
:param binStep: BinStep of the pair.
:return: Price of the bin.
"""

return (1 + binStep / 10_000) ** (binId - 8388608)

Example

Here is an example to illustrate the conversion function with the sAVAX/AVAX pair which has a binStep of 5. We choose here a binId equal to 8388755. Price returned doesn't need to be adjusted, as both tokens have 18 decimals.

getPriceFromId(8388755, 5)
>>> 1.0762487670087693

For second example, let's take BTC.b/USDC pair which has a binStep of 10. We choose binId equal to 8394314.

getPriceFromId(8394314, 10)
>>> 299.80998797504674
priceAdjusted=price10(decimalsXdecimalsY)priceAdjusted = price\cdot 10^{(\text{decimalsX} - \text{decimalsY})}
priceAdjusted=299.8010(86)=29800priceAdjusted = 299.80 \cdot 10^{(\text{8} - \text{6})} = 29800