Quantums and Subticks
In dYdX, quantities and prices are represented in quantums (for quantities) and subticks (for prices), which need conversion for practical understanding.
Quantums
The smallest increment of position size. Determined from atomicResolution
.
atomicResolution - Determines the size of a quantum. For example, an atomicResolution
of -10 for BTC
, means that 1 quantum is 1e-10
BTC
.
Subticks
Human-readable units: USDC/<currency>
e.g. USDC/BTC
Units in V4 protocol: quote quantums/base quantums
e.g. (1e-14 USDC/1e-10 BTC
)
Determined by quantum_conversion_exponent
, this allows for flexibility in the case that an asset’s prices plummet, since prices are represent in subticks, decreasing subticks_per_tick
would allow for ticks to denote smaller increments between prices.
E.g. 1 subtick
= 1e-14 USDC/1e-10 BTC
and if BTC was at 20,000 USDC/BTC, a tick
being 100 USDC/BTC (subtick_per_tick
= 10000) may make sense.
If BTC drops to 200 USDC/BTC, a tick
being 100 USDC/BTC no longer makes sense, and we may want a tick
to be 1 USDC/BTC, which lets us set subtick_per_tick
to 100 to get to a tick
size of 1 USDC/BTC.
Interpreting block data
Buy or Sell
First, notice row I is negative. That means this trade is a sell by the taker account. If It was positive, it would be a buy.
Market determination
Next, look at row N. The perpetual_id is 7, which maps to AVAX-USD market. You can see all the mappings from this endpoint for the dYdX Chain deployment by dYdX Operations Services Ltd. https://indexer.dydx.trade/v4/perpetualMarkets where the clobPairId is the perpetual_id.
Quantity determination
Next, we need to get the decimals for this market. First, get the atomicResolution from that endpoint above which we see is -7. Now we can get the size of the trade. From row I and J, take this number -500000000 and multiply by 10^(AtomicResolution) and you get: -500000000 x 10^-7 = 50, so the quantity is 50.
Price determination
Next, look at row, E, F, G, H, I, and J
The price of the trade is either abs((G+E)/I)*10e(-6 - AtomicResolution)
, or abs((H+F)/J)*10e(-6 - AtomicResolution)
, either one is the same. Note that the ‘-6’ is because the AtomicResolution of USDC is -6.
abs((1479130125 + 369875)/-500000000)*10e(-6 + 7) = 29.59
abs((-1479337255 - 162745)/500000000)*10e(-6 +7) = 29.59
Conclusion
In conclusion, we have determined that this trade is SELL 50 AVAX-USD at price $29.59