For AI agents: the complete documentation index is at llms.txt. Every page is also available as markdown by appending .md to its URL, or by sending an Accept: text/markdown request header.

Aggressor volume imbalance

Calculate the imbalance between buy and sell aggressor volume to analyze order flow. The aggressor is the party that initiated the trade by crossing the spread.

Problem: Measure order flow imbalance

You have trade data with a side column indicating the aggressor (buyer or seller), and want to measure the imbalance between buying and selling pressure.

Solution: Aggregate by side and calculate ratios

Aggressor volume imbalance per symbolDemo this query
WITH volumes AS (
SELECT
symbol,
SUM(CASE WHEN side = 'buy' THEN amount ELSE 0 END) AS buy_volume,
SUM(CASE WHEN side = 'sell' THEN amount ELSE 0 END) AS sell_volume
FROM trades
WHERE timestamp IN '$yesterday'
AND symbol IN ('ETH-USDT', 'BTC-USDT', 'ETH-BTC')
)
SELECT
symbol,
buy_volume,
sell_volume,
((buy_volume - sell_volume)::double / (buy_volume + sell_volume)) * 100 AS imbalance
FROM volumes;

The imbalance ranges from -100% (all sell) to +100% (all buy), with 0% indicating balanced flow.