CayøLargo
← Back to siteAPI ReferencePricingChangelog
v1.0Swagger ↗

Positioning

Volume heatmap

Returns per-strike aggregated trading volume in USD, split by call and put. One row per strike per timestamp. Aggregated from all active options at each strike across all expirations. Use for volume concentration heatmaps, identifying strikes with unusual activity, and spotting where large orders are landing. Complements GEX strikes (which shows gamma exposure) with actual trading activity.

GET/v1/positioning/volumepro

Query Parameters

coinstringrequired

Underlying asset. Required.

e.g.BTCETHSOL
fromstringoptional

Start UTC (ISO 8601). Default: latest snapshot.

e.g.2026-03-08T00:00:00Z
tostringoptional

End UTC (ISO 8601). Default: now.

e.g.2026-03-09T00:00:00Z
limitintegeroptional

Max rows returned. Default 500, max 5000.

e.g.200

Response Schema

Fields marked pro require a Pro subscription. Fields marked alpha require Alpha.

FieldTypeTierDescription
timestampdatetimeproSnapshot time in UTC. Aligned to 10-minute boundary.
coinstringproUnderlying asset.
strikefloatproStrike price. All options at this strike (across all expirations) are aggregated.
underlying_pricefloatproSpot price at snapshot time.
total_volume_usdfloatproTotal volume (call + put) in USD at this strike.
call_volume_usdfloatproAggregated call trading volume in USD at this strike.
put_volume_usdfloatproAggregated put trading volume in USD at this strike.

Suggested Calculations

Not included in the API response. Compute these client-side from the fields above. Formulas and context provided.

FieldTypeInputsexpand all
volume_concentration_pctfloatclient-sideWhere is all the action? Find the hotspot strikes.expand

Where is all the action? Find the hotspot strikes.

Divide each strike's total_volume_usd by the sum across all strikes, multiply by 100. This gives you the percentage of total market activity at each price level. A single strike with > 20 pct of total volume is a hotspot. In crypto options, volume clusters around round numbers ($80K, $90K, $100K) and near the current spot price. Strikes far from spot with high concentration = someone is making a directional bet.

Inputstotal_volume_usd

Volume concentration per strike

concentration=total_volume_usd(K)jtotal_volume_usd(Kj)×100\text{concentration} = \frac{\text{total\_volume\_usd}(K)}{\sum_j \text{total\_volume\_usd}(K_j)} \times 100
Range0 to 100. Above 20 = hotspot.
strike_moneynessfloatclient-sideHow far is each strike from the current price?expand

How far is each strike from the current price?

Moneyness = (strike - underlying_price) / underlying_price * 100. Positive = above spot (out-of-the-money calls, in-the-money puts). Negative = below spot (out-of-the-money puts, in-the-money calls). Zero = at-the-money. This is the most basic options concept: how far from spot are people trading? Volume clustered near 0 pct = hedging. Volume at +20 pct = upside speculation. Volume at -20 pct = crash protection.

Inputsstrikeunderlying_price

Moneyness as percentage of spot

moneyness=strikespotspot×100\text{moneyness} = \frac{\text{strike} - \text{spot}}{\text{spot}} \times 100
Range-100 to +100+. 0 = at-the-money.
volume_skew_by_moneynessstringclient-sideIs the market positioning for upside or downside?expand

Is the market positioning for upside or downside?

Sum total_volume_usd for strikes above spot vs below spot. If above > below, the market is positioning for upside (bullish). If below > above, the market is buying downside protection (bearish or hedging). The ratio tells you where the money is going before price moves. This is a cruder but faster version of the put/call ratio: it works without needing the call/put split to see which side of spot is active.

Inputstotal_volume_usdstrikeunderlying_price
active_strikes_breadthintegerclient-sideIs activity spread across many strikes or concentrated in a few?expand

Is activity spread across many strikes or concentrated in a few?

Count the number of strikes where total_volume_usd > 0. High count = broad market participation, many expirations active. Low count = concentrated, few strikes dominate. If volume is in 3 strikes out of 40, the market is making a very specific bet. If it is spread across 25 strikes, activity is routine hedging. Combine with volume_concentration_pct: few active strikes + high concentration = conviction trade.

Inputstotal_volume_usd
call_put_volume_ratiofloatclient-sideDirectional volume sentiment at each strikeexpand

Directional volume sentiment at each strike

Call volume / put volume at a strike. Above 1 = more call activity (bullish flow). Below 1 = more put activity (bearish flow). Compare across strikes: call-heavy volume above spot + put-heavy volume below spot = classic bullish positioning (upside speculation + downside hedging). The reverse pattern = bearish setup.

Inputscall_volume_usdput_volume_usd

Call/put volume ratio

ratio=call_volume_usdput_volume_usd\text{ratio} = \frac{\text{call\_volume\_usd}}{\text{put\_volume\_usd}}
Range0 to unbounded. 1.0 = balanced.
put_wall_detectionstringclient-sideFind the put wall: where is the heaviest downside protection?expand

Find the put wall: where is the heaviest downside protection?

Sort strikes below spot by put_volume_usd descending. The strike with the highest put volume is the "put wall": the level where participants have the most downside protection. If spot approaches this strike, expect support (dealers hedging those puts buy the underlying). The put wall often aligns with the GEX magnetic strike.

Inputsput_volume_usdstrikeunderlying_price

Or use the pre-computed endpointalpha

Magnetic strike and put/call wall analysis at /v1/gex/pinning (Alpha).

volume_gex_overlaystringclient-sideOverlay volume concentration with GEX structureexpand

Overlay volume concentration with GEX structure

High volume at the GEX magnetic strike reinforces the pinning signal (active hedging). High volume at strikes outside the pinning zone suggests positioning for a breakout. The combination of "where is gamma?" (from /v1/gex/strikes) and "where is activity?" (from this endpoint) produces the most complete positioning picture.

Or use the pre-computed endpointalpha

GEX per strike at /v1/gex/strikes. Magnetic strike and pinning zones at /v1/gex/pinning.