prices.hour
Overview
Theprices.hour table provides hourly token prices using the same hybrid approach as all other price tables:
- Coinpaprika prices for tokens where we have reliable external data (~2,000 major tokens)
- DEX-derived prices for the long tail of tokens not covered by coinpaprika
Table Schema
| Column | Type | Description |
|---|---|---|
| blockchain | varchar | Blockchain identifier (e.g., ‘ethereum’, ‘arbitrum’) |
| contract_address | varbinary | Token contract address (fixed address for native tokens) |
| symbol | varchar | Token symbol (e.g., ‘ETH’, ‘USDC’) |
| timestamp | timestamp | Hour timestamp (00:00, 01:00, etc. UTC of each hour) |
| price | double | Token price in USD (volume-weighted average) |
| decimals | int | Token decimals |
| volume | double | Trading volume in USD (from price source) |
| source | varchar | Data source (‘coinpaprika’ or ‘dex.trades’) |
Implementation Details
The hourly prices are built through these steps:- Source prioritization: Coinpaprika prices for ~2,000 major tokens, DEX-derived prices for long tail tokens
- Data aggregation: Group by hour, calculating volume-weighted average price per hour
- Forward filling: Fill missing hours with the previous hour’s price (forward filling)
- Expiration: Set a 7-day (168 hour) expiration for forward filling to avoid stale data
Source-Specific Variants
prices_external.hour
For purely coinpaprika-based hourly prices:
- Coverage: Only tokens with Coinpaprika listings (~2,000 tokens)
- Source: External exchange-aggregated hourly pricing
- Use case: When you need stable, externally-validated hourly pricing
- Schema: Same as
prices.hourbutsourceis always ‘coinpaprika’
prices_dex.hour
For purely DEX-derived hourly prices:
- Coverage: All tokens with sufficient DEX trading volume
- Source: On-chain DEX trading activity only
- Use case: When you need pricing that reflects actual on-chain liquidity
- Schema: Same as
prices.hourbutsourceis always ‘dex.trades’
Usage
This table is useful for intraday analysis and tracking price movements with higher granularity than daily data. It’s suitable for examining price patterns within a day or across multiple days. Note: The underlying data sources are aligned to 5-minute intervals for consistency and improved data quality.Latency and Update Frequency
Theprices.hour table is updated hourly based on the upstream data pipeline. As a result, prices typically have a latency of approximately 1 hour from real-time.
Usage Examples
Here are some examples of how to use the prices tables.Get hourly ETH prices for the last day:
Calculate volatility by hour of day:
Data Quality Notes
- Prices older than 7 days (168 hours) will not be forward-filled to avoid using stale data
- Native tokens (like ETH, BNB) are assigned fixed addresses for consistency
- Hourly data is useful for analyzing intraday patterns and short-term price movements
- Always use
contract_addressandblockchainfor precise token identification, never usesymbolfor joins or filters - Prices are calculated using volume-weighted averages for more accurate representation
- Quality Filtering: The system includes filtering mechanisms to reduce the impact of anomalous trades
- DEX-derived limitations: DEX-derived prices can contain errors due to low liquidity, market manipulation, or anomalous trades
- Fallback option: For critical applications, consider using
prices_external.hourfor more reliable pricing where available - Data validation: Always validate prices for critical applications, especially for lesser-known tokens