Price Calculation Methodology
Overview
CoinPaprika aggregates live pricing data from hundreds of cryptocurrency exchanges to produce a single, reliable reference price for each digital asset. The methodology is designed to be:
Responsive
Prices reflect current market conditions without dependency on historical price chains.
Every pipeline run starts from zero — no stale data inherited.
Robust
Outlier detection and trust-based weighting minimize the impact of erroneous or manipulated data.
Statistical bounds tighten automatically for high-liquidity assets.
Transparent
Every step of the pipeline is documented and auditable.
This page is the single source of truth for how prices are formed.
1. Data Sources
2.1 Exchange Integration
CoinPaprika integrates with cryptocurrency exchanges via their public APIs. Each exchange must provide market pair identifiers (e.g., BTC/USD, ETH/BTC), last traded price for each market pair, and 24-hour trading volume for each market pair.
2.2 Scope
Only spot markets are included in the price calculation pipeline. Derivative markets (futures, perpetual swaps, options) are excluded, as their prices can diverge significantly from the underlying spot price due to funding rates, expiry mechanics, and leverage dynamics.
2.3 External Reference Data
Fiat exchange rates are sourced from Open Exchange Rates to convert between fiat currencies (EUR, GBP, JPY, etc.) and USD. Stablecoin peg rates — USDT, USDC, and other major stablecoins — are converted to USD using a volume-weighted index derived from their USD on-ramp markets.
2. Price Calculation Pipeline
The algorithm is designed to calculate prices based solely on the current state of the market, with no dependency on prices from previous algorithm runs. Each execution starts from scratch, bootstrapping its own conversion rates from live market data, and converges on accurate prices through multiple iterations. The entire pipeline executes every 60 seconds.
Data Collection
From every integrated exchange, CoinPaprika fetches all available spot markets. Each market provides: market pair name (e.g., BTC/USD), last traded price in the quote currency, and 24-hour trading volume in the quote currency.
Establish BTC/USD Reference Rate
The algorithm starts with zero assumed prices. The first calculation is the BTC/USD weighted average price, derived directly from all BTC/USD spot markets. Bitcoin is chosen because BTC markets are typically the most liquid across exchanges.
BTC_USD = Σ(Price_i × Volume_i) / Σ(Volume_i) where i = each BTC/USD market across all exchangesFirst Pass: BTC and Fiat Markets Only
Using the BTC/USD rate, the algorithm processes markets where one side of the pair is either BTC or a fiat currency. BTC-denominated markets (e.g., ETH/BTC, SOL/BTC):
Price_USD = Price_BTC × BTC_USDFiat-denominated markets (e.g., ETH/EUR, BTC/JPY):
Price_BTC = Price_USD / BTC_USDSubsequent Passes: Incorporate All Markets
Many cryptocurrencies also trade against other cryptocurrencies. The algorithm uses conversion rates from the previous pass to resolve these markets iteratively.
Pass 1: BTC/USD markets → BTC_USD rate Pass 2: BTC + fiat markets → conversion rates for major coins Pass 3: All markets using Pass 2 rates → refined rates, more coins covered Pass N: Repeat until convergence → all reachable coins have pricesOutlier Detection and Removal
Before final aggregation, anomalous market prices are identified and excluded. Markets excluded upfront include those with zero trading fees, transaction mining incentives, stale data (>30 min), and blacklisted pairs. Statistical outlier detection uses median-based bounds adjusted for liquidity depth.
Final Price: Volume-Weighted Average
After outlier removal, the final price is the volume-weighted average of all remaining valid markets:
Price_USD = Σ(Price_i_USD × Volume_i_USD) / Σ(Volume_i_USD)Higher-liquidity markets naturally carry more weight, ensuring the aggregated price reflects where the majority of real trading activity occurs.
3. Trading Volume Calculation
4.1 Per-Exchange Volume
The 24-hour trading volume for each exchange is the sum of USD-converted volumes across all its active, non-blacklisted trading pairs. Pairs that have not updated within 30 minutes are excluded.
Exchange_Volume = Σ(Volume_pair_i × Price_pair_i_USD)4.2 Per-Asset Volume
The 24-hour trading volume for an individual asset is the sum of volumes across all its valid market pairs on all integrated exchanges.
4.3 Global Volume
The global cryptocurrency trading volume is the sum of all per-exchange volumes.
4. Exchange Confidence Score
Each exchange receives a Confidence Score on a 0–100 scale, reflecting the reliability and quality of its reported data. The Confidence Score influences how the exchange's data is weighted and filtered in the price calculation pipeline.
5.1 Evaluation Criteria
| Criterion | Description |
|---|---|
| Liquidity | Overall orderbook depth and spread across markets |
| API Quality & Coverage | Completeness, reliability, and uptime of the exchange's public API |
| Web Traffic | Independent traffic analysis (e.g., SimilarWeb) to validate claimed user activity |
| Team Transparency | Publicly identifiable team members and clear corporate entity information |
| Regulatory Compliance | Registration with relevant financial authorities and adherence to applicable regulations |
| Incident History | Track record of outages, hacks, withdrawal freezes, or regulatory actions |
| Proof of Reserves | Independently verifiable on-chain proof of asset holdings Coming soon |
5.2 Confidence Score Application
- Exchanges under review are excluded entirely from price and volume calculations.
- Confidence Scores are reviewed and updated periodically, and may change immediately in response to significant events (hacks, regulatory action, prolonged API outages, etc.).
- Exchange data is subject to additional scrutiny through the Market Pair Liquidity Indicator (see Section 5).
5.3 Estimated Real Volume (ERV)
Estimated Real Volume is a measure introduced in 2019 to combat fake volume and wash trading. ERV is derived from the Liquidity Indicators of all markets on a given exchange. Each market's reported 24-hour volume is adjusted using weights assigned to its liquidity indicator category (Good, Average, or Bad).
5. Market Pair Liquidity Indicator (Dots)
Individual market pairs receive a real-time liquidity assessment based on orderbook spread (percentage difference between best bid and ask), orderbook depth (value within ±1% and ±10% of mid-price), volume consistency, and outlier checks.
6.1 Indicator Categories
- Good — Strong liquidity and normal market conditions.
- Average — Constrained or fluctuating market conditions; liquidity is lower than the reported volume suggests.
- Bad — Inadequate liquidity relative to reported volume, or severely unbalanced market conditions.
Market pairs that fail liquidity checks are down-weighted in the VWAP calculation. If no other source exists to calculate an asset's price and volume, the pair is still used — with a clear indication that liquidity could not be verified.
6. Circulating Supply
7.1 Proof-of-Work Coins
For PoW-based cryptocurrencies (e.g., Bitcoin, Litecoin), circulating supply is queried directly from block explorer APIs. Values are verified against multiple independent block explorers and updated automatically as new blocks are mined.
7.2 Tokens (Smart Contract-Based)
For ERC-20 and similar tokens, circulating supply is calculated as:
Circulating Supply = Total Supply - Locked Tokens
Locked Tokens includes:
- Team/founder vesting wallets
- Treasury or reserve wallets
- Burn addresses
- Locked staking contracts7.3 Verification
Circulating supply figures are cross-referenced with data disclosed by project teams and updated when unlock events, token burns, or other supply-affecting events occur. Specific thresholds are intentionally withheld to prevent gaming.
7. Derived Metrics
8.1 Market Capitalization
Per-asset: Market Cap = Current Price (USD) × Circulating Supply
Global: Global Market Cap = Σ(Market Cap of all tracked assets)8.2 All-Time High (ATH)
For each asset, CoinPaprika tracks the highest aggregated price ever recorded, the date it occurred, and the current distance from ATH:
ATH Distance (%) = (ATH Price − Current Price) / ATH Price × 100%8. Listing Criteria
9.1 Cryptocurrency Assets
To be listed on CoinPaprika, a cryptocurrency must meet the following requirements:
- A functional, project-owned website with clear project information
- A working block explorer with verifiable on-chain data
- Active trading on at least one CoinPaprika-integrated exchange
- Transparent communication — the project maintains public channels (X/Twitter, Telegram, Discord) with timely updates and responsiveness to community issues
9.2 Exchanges
To be integrated as a data source, an exchange must:
- Operate a functional website with verifiable trading activity
- Provide a public REST API that meets CoinPaprika's data standards (market pairs, prices, volumes)
- Maintain up-to-date API documentation
- Provide a dedicated point of contact for data quality issues
9. Update Frequency
| Price & Volume data | Every 60 seconds (real-time) |
| Circulating Supply | Periodically + on significant supply events |
| Exchange Confidence Scores | Continuous evaluation; formal periodic review |
| Market Pair Liquidity Indicators | Continuously (real-time) |
| Fiat Exchange Rates | Multiple times per day (Open Exchange Rates) |