Description
Retrieves range-aware pool yield/ROI predictions for concentrated liquidity (CLAMM) positions across fixed horizons (1D, 3D, 7D, 14D, 30D, 90D, 365D). Each record is anchored to an as-of block/log position and includes range parameters (tick bounds, range_bps) plus aligned arrays for pool tokens, reserves, position amounts, volumes, fees, and ROI predictions.
Use this endpoint to:
- Optimize concentrated liquidity positions by comparing yields across range widths
- Build position allocation screens with range-specific APR/ROI signals
- Analyze the trade-off between narrow ranges (higher fees, more IL risk) and wide ranges
Parameters
Target EVM network. See the Chain enumeration for supported values.
Range Filters (mutually exclusive)
Starting block number (inclusive) for the query. Use with to_block.
Ending block number (inclusive) for the query. Use with from_block.
Starting timestamp (ISO-8601). If it falls between blocks, the next block after this timestamp is used. Use with to_timestamp.
Ending timestamp (ISO-8601). If it falls between blocks, the last block before this timestamp is used. Use with from_timestamp.
Validation rule:
You must provide either a block range, a time range, or at least one direct selector.
Providing more than one option results in HTTP 400.
Providing none results in HTTP 400.
Pool Selectors
Filter pools by exchange IDs. See the DigitalExchange enumeration for supported values.
Filter by BlockDB pool identifiers (uid from /evm/pools).
Filter by pool contract addresses (hex string, 20 bytes, no 0x prefix).
Filter by AMM archetype. See the PoolType enumeration for supported values.
Horizon, Range & Token Filters
Target horizon in days. Allowed values: 1, 3, 7, 14, 30, 90, 365.
Standard range in basis points. Allowed values: 0 (full-range), 100 (±1%), 500 (±5%), 1000 (±10%), 2000 (±20%).
Restrict to pools that contain at least one of these tokens (hex string, 20 bytes, no 0x prefix).
If true, returns only rows where observed_period_days == target_period_days (no extrapolation).
Recommended default 250; maximum 1000 to stay under ~10 MB responses.
Pagination cursor from a prior call.
Response Fields
Echo of request metadata applied to the response.
EVM chain ID echoed from the request.
Block/timestamp bounds derived from the request.
Filters echoed from the request (selectors, horizon/range filters, pagination state, etc.).
Data
Array of range-aware yield/ROI prediction records matching the request.
Chain ID for the yield record.
Stable identifier for the yield record.
BlockDB pool identifier (uid from /evm/pools).
Block height of the as-of snapshot anchor.
UTC timestamp of the as-of snapshot anchor.
Zero-based transaction index within the block.
Zero-based log index within the transaction.
Target horizon in days (1, 3, 7, 14, 30, 90, 365).
data.observed_period_days
Observed history actually used to produce the prediction.
true when observed_period_days == target_period_days.
true when the row is scaled from shorter history.
Scaling factor applied when extrapolating. Returned as a string to preserve precision.
Start time of the observed window used for aggregation.
End time of the observed window used for aggregation.
Standard range in basis points (0=full-range, 100=±1%, 500=±5%, 1000=±10%, 2000=±20%).
Lower tick bound for the range (null for full-range).
Upper tick bound for the range (null for full-range).
Pool token addresses. All array-valued metrics are aligned to this order.
Current reserves per token (decimals-adjusted). Returned as strings to preserve precision.
Position token amounts assumed for ROI denominator (aligned to tokens).
Observed traded volume per token in the observed window.
Predicted traded volume per token for the target horizon.
Observed user/LP fee amounts per token in the observed window.
Predicted user/LP fee amounts per token for the target horizon.
Predicted ROI fractions per token for the target horizon.
Row-level lineage hash (hex string, no 0x prefix).
Lineage references of immediate parents.
Record creation timestamp (ISO-8601).
Last update timestamp (ISO-8601).
Envelope Fields
Cursor token for pagination.
Number of records returned in data.
curl -X POST "https://api.blockdb.io/v1/evm/yields/ranges" \
-H "Authorization: Bearer $BLOCKDB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"chain_id": 1,
"target_period_days": 30,
"range_bps": 1000,
"pool_uids": [
"88e6a0c2ddd26feeb64f039a2c41296fcb3f5640000000000000000000000000"
],
"from_timestamp": "2025-12-01T00:00:00Z",
"to_timestamp": "2025-12-20T00:00:00Z",
"limit": 250
}'
{
"meta": {
"chain_id": 1,
"request_window": {
"from_timestamp": "2025-12-01T00:00:00Z",
"to_timestamp": "2025-12-20T00:00:00Z"
},
"filters": {
"pool_uids": [
"88e6a0c2ddd26feeb64f039a2c41296fcb3f5640000000000000000000000000"
],
"target_period_days": 30,
"range_bps": 1000,
"limit": 250,
"cursor": null
}
},
"data": [
{
"chain_id": 1,
"id": 987654321,
"pool_uid": "88e6a0c2ddd26feeb64f039a2c41296fcb3f5640000000000000000000000000",
"block_number": 19001234,
"block_time": "2025-12-20T12:34:56Z",
"tx_index": 7,
"log_index": 12,
"target_period_days": 30,
"observed_period_days": 30,
"is_full_period": true,
"is_extrapolated": false,
"extrapolation_factor": "1.000000",
"window_start_time": "2025-11-20T12:34:56Z",
"window_end_time": "2025-12-20T12:34:56Z",
"range_bps": 1000,
"lower_tick": -887220,
"upper_tick": 887220,
"tokens": [
"c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
],
"current_reserves": [
"1250.000000000000000000",
"3950000.000000000000000000"
],
"position_amounts": [
"100.000000000000000000",
"316000.000000000000000000"
],
"volume_observed": [
"12000.000000000000000000",
"0.000000000000000000"
],
"volume_predicted": [
"12000.000000000000000000",
"0.000000000000000000"
],
"user_fees_observed": [
"36.000000000000000000",
"0.000000000000000000"
],
"user_fees_predicted": [
"36.000000000000000000",
"0.000000000000000000"
],
"roi_predicted": [
"0.360000000000000000",
"0.000000000000000000"
],
"_tracing_id": "0412c0ffee000000000000000000000000000000000000000000000000000001",
"_parent_tracing_ids": [
"0303c0ffee000000000000000000000000000000000000000000000000000001",
"0301c0ffee000000000000000000000000000000000000000000000000000001"
],
"_created_at": "2025-12-20T12:35:01Z",
"_updated_at": "2025-12-20T12:35:01Z"
}
],
"cursor": null,
"count": 1
}