> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dune.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Minute Prices

> Minute-by-minute token price data across 70+ blockchains - hybrid approach combining centralized exchange and decentralized exchange data for comprehensive coverage

export const TableSample = ({tableName, tableSchema}) => <>
    <div className="hidden dark:block">
      <iframe src={`https://dune.com/embeds/3419983/5785629?table_schema_t6f0df=${tableSchema}&table_name_t6f0df=${tableName}&darkMode=true`} style={{
  width: '100%',
  height: '500px',
  border: 'none',
  marginTop: '10px'
}} />
    </div>
    <div className="dark:hidden">
      <iframe src={`https://dune.com/embeds/3419983/5785629?table_schema_t6f0df=${tableSchema}&table_name_t6f0df=${tableName}`} style={{
  width: '100%',
  height: '500px',
  border: 'none',
  marginTop: '10px'
}} />
    </div>
  </>;

<Warning>
  `prices.minute` can produce unexpected results and high query costs for broad historical analysis. This table is interpolated from hourly anchor points (not direct minute-level trades), and DEX-derived rows can still contain outliers for low-liquidity tokens.

  For safer pricing in production or valuation-critical workflows, use `prices_external.minute` where coverage exists. For most historical analysis, prefer `prices.hour` (or `prices.day`) for better performance and stability.
</Warning>

The `prices.minute` table provides minute-level price data for tokens across multiple blockchains using the same **hybrid approach** as all other price tables:

1. **Coinpaprika prices** for tokens where we have reliable external data (\~2,000 major tokens)
2. **DEX-derived prices** for the long tail of tokens not covered by coinpaprika

Minute-level data uses interpolation from hourly anchor points to provide smooth, continuous pricing.

<Info>
  Minute-level data uses interpolation between hourly anchor points for smooth pricing. Forward-filling is applied for up to 48 hours when no trading activity exists.
</Info>

## 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 | Minute timestamp                                         |
| 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')              |

## Table Sample

<TableSample tableSchema="prices" tableName="minute" />

## Implementation Details

The minute prices are built using the hybrid approach with interpolation:

1. **Source prioritization**: Coinpaprika prices for \~2,000 major tokens, DEX-derived prices for long tail tokens
2. **Hourly interpolation**: Uses hourly data as anchor points for linear interpolation
3. **Linear interpolation**: Implements interpolation between hourly anchor points to create smooth minute-level data
4. **Noise reduction**: Reduces noise and outliers by using stable hourly data points as anchors
5. **Forward-filling**: The system forward-fills with the last available price for a maximum of 48 hours (2880 minutes) to avoid stale data
6. **Continuous time series**: Provides minute-by-minute data points for every minute between hourly anchors

### Source-Specific Variants

#### `prices_external.minute`

For purely coinpaprika-based minute prices:

* **Coverage**: Only tokens with Coinpaprika listings (\~2,000 tokens)
* **Source**: External exchange-aggregated minute pricing with interpolation
* **Use case**: When you need minute-level external price validation
* **Key role**: Serves as the underlying source for the `prices.usd` legacy view
* **Schema**: Same as `prices.minute` but `source` is always 'coinpaprika'

#### `prices_dex.minute`

For purely DEX-derived minute prices:

* **Coverage**: All tokens with sufficient DEX trading volume
* **Source**: On-chain DEX trading activity with interpolation
* **Use case**: When you need minute-level pricing that reflects on-chain activity
* **Schema**: Same as `prices.minute` but `source` is always 'dex.trades'

## Usage

This table is ideal for high-frequency analysis and examining short-term price movements. It's particularly useful for studying price impacts of specific events or transactions with high temporal precision.

**Important Notes**:

* The minute-level data is interpolated from hourly anchor points using the hybrid approach
* Provides comprehensive token coverage through coinpaprika and DEX-derived sources
* Provides smooth and consistent pricing while reducing the impact of noise and outliers

## Latency and Update Frequency

The `prices.minute` 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 minute-by-minute ETH prices during a specific event:

```sql theme={null}
SELECT
  timestamp,
  price
FROM prices.minute
WHERE
  blockchain = 'ethereum'
  AND contract_address = 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -- WETH
  AND timestamp >= NOW() - INTERVAL '2' HOUR
  AND timestamp <= NOW() - INTERVAL '1' HOUR
ORDER BY timestamp
```

### Analyze price volatility within short time frames:

```sql theme={null}
SELECT
  date_trunc('hour', timestamp) as hour,
  max(price) - min(price) as price_range,
  (max(price) - min(price)) / min(price) * 100 as volatility_pct
FROM prices.minute
WHERE
  blockchain = 'ethereum'
  AND contract_address = 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -- WETH
  AND timestamp >= NOW() - INTERVAL '1' DAY
GROUP BY 1
ORDER BY 1
```

## Data Quality Notes

* Due to its high granularity, queries on this table may be more resource-intensive
* Consider using `prices.hour` or `prices.day` for longer time ranges if minute-level precision is not required
* **Comprehensive coverage**: Includes both coinpaprika and DEX-derived tokens through hybrid approach
* Native tokens (like ETH, BNB) are assigned fixed addresses for consistency
* Always use `contract_address` and `blockchain` for precise token identification, never use `symbol` for joins or filters
* **Interpolated Pricing**: Minute-level data is interpolated from hourly anchor points using hybrid methodology
* **Reduced Noise**: The interpolation approach reduces the impact of noise and outliers
* **48-Hour Forward-Fill**: The system forward-fills with the last available price for a maximum of 48 hours (2880 minutes) to avoid stale data
* **External source reliability**: Coinpaprika data provides stable, exchange-aggregated pricing
* **DEX-derived limitations**: DEX-derived prices can contain errors due to low liquidity, market manipulation, or anomalous trades
* **Safe pricing recommendation**: For valuation-critical or safety-sensitive use cases, prefer `prices_external.minute` where coverage exists
* **Minute interpolation caveat**: Values are derived via interpolation between hourly anchor points, not direct minute-level market observations
* **Volume caveat**: The `volume` column may be sparse (including null values) in parts of the dataset, especially on less liquid DEX-derived coverage
* **Data validation**: Always validate prices for critical applications, especially for lesser-known tokens
