The BTCADP (Bitcoin Average Daily Price) establishes a universal reference point for Bitcoin's daily value. It aims to provide an answer that satisfies four core principles:
Fairness. The price reflects actual market activity without favoring any particular exchange, geography, or participant.
Reproducibility. Any competent individual with access to the same trade data and this specification should independently arrive at the same number, to within a trivial margin.
Manipulation Resistance. The methodology is designed so that no single exchange, trader, or entity can materially distort the published price through wash trading, spoofing, or other manipulation.
Institutional Independence. The BTCADP does not depend on any organization for its legitimacy. If the original publisher ceases to exist, any party can continue computing the BTCADP using this specification.
Every design decision in this specification flows from these four principles. Where trade-offs arise, they are documented and justified.
The BTCADP is denominated in United States Dollars (USD). This is a pragmatic decision grounded in historical reality: the BTC/USD trading pair has consistently maintained the deepest liquidity throughout Bitcoin’s entire market history. The US dollar has served as the world’s reserve currency for the full duration of Bitcoin’s existence, making it the natural unit of account for a universal price.
The BTCADP is expressly defined for the BTC/USD pair. Exchanges trading BTC against other fiat currencies (EUR, JPY, GBP, etc.) are excluded from the calculation to avoid introducing a dependency on foreign exchange rates, which would add complexity and an additional vector for error.
Converting the published BTCADP to other currencies is straightforward: multiply by the relevant day’s USD exchange rate from any reputable forex source. A future extension of this specification may define BTCADP variants for other major fiat pairs using an equivalent methodology applied independently.
A single BTCADP value is computed for each calendar day. The day is defined as the 24-hour period from 00:00:00.000 UTC through 23:59:59.999 UTC. Coordinated Universal Time (UTC) is the only defensible choice: it is the international scientific standard for timekeeping and does not privilege any geographic region.
All trade timestamps must be normalized to UTC before processing. A trade is assigned to the day on which its UTC timestamp falls. Trades occurring at exactly 00:00:00.000 UTC belong to the new day.
Precision: Timestamps should be recorded to millisecond precision where available. Sub-millisecond precision is not required.
The foundational building block of the BTCADP is the Volume-Weighted Average Price. For a set of N trades executed during a daily window, each with price Pᵢ and volume Vᵢ, the VWAP is defined as:
This is calculated independently for each qualifying exchange on each day, producing a set of exchange-level VWAPs. The VWAP answers the question: “At what average price did Bitcoin actually change hands on this exchange today?” weighted by economic activity.
Given a set of exchange-level VWAPs for a given day, the BTCADP is computed as a trimmed mean. The procedure is as follows:
Step 1. Collect the VWAP from each qualifying exchange for the day, producing an ordered set {VWAP₁, VWAP₂, …, VWAPₙ}.
Step 2. Sort the values in ascending order.
Step 3. Remove the lowest k% and the highest k% of values, where k = 25. If the number of values to remove is not an integer, round down (i.e., use floor). This means the trimming is conservative, preferring to include more data.
Step 4. Compute the arithmetic mean of the remaining values. This is the BTCADP for that day.
The trimmed mean at k = 25% removes the top and bottom quartiles, making the result robust against outlier exchanges. Even if up to 25% of qualifying exchanges report fraudulent data, the BTCADP remains accurate, provided the majority report honestly.
Rationale: The trimmed mean was chosen over the median because it uses more of the available data while still being highly robust. With 20 exchanges, a median uses only 1–2 data points; a 25% trimmed mean uses 10.
Each qualifying exchange contributes exactly one VWAP to the trimmed mean, regardless of its volume. This is a deliberate design choice. Volume-weighting across exchanges would reintroduce the manipulation vector that the methodology is designed to eliminate: an exchange that fabricates volume would gain proportional influence over the final price. Equal weighting ensures that no single exchange, regardless of its reported size, can dominate the result.
The trade-off is that a small exchange with $2 million in daily volume receives the same weight as a large exchange with $500 million. This is acceptable because the trimmed mean already discards the most extreme values. If a small exchange’s VWAP is an outlier, it is trimmed. If it falls within the middle 50%, its price is broadly consistent with the market and deserves inclusion.
Known attack vector: An adversary could theoretically create multiple small exchanges that each barely meet the qualification threshold, attempting to shift the trimmed mean. However, with 20+ legitimate qualifying exchanges in the modern era, an attacker would need to introduce and sustain more than 7 fraudulent exchanges to influence the result — each meeting all qualification criteria including price coherence. The cost and complexity of this attack is substantial, and the transparency record (Section 9) makes it detectable.
The final BTCADP value is rounded to two decimal places (cents) using the IEEE 754 round-half-to-even rule (banker’s rounding). This eliminates rounding bias and is the standard in financial computation.
Intermediate calculations (VWAP computation, trimmed mean) should use at minimum 64-bit double-precision floating-point arithmetic (IEEE 754 binary64), which provides approximately 15–17 significant decimal digits. This is more than sufficient for Bitcoin price calculations. Two conforming implementations given identical trade data as input must produce BTCADP values that agree after rounding to two decimal places. In the unlikely event of a one-cent discrepancy due to floating-point ordering differences, neither value is considered incorrect.
The trimmed mean requires a minimum number of inputs to be statistically meaningful. The minimum qualifying exchange count is defined as follows:
| Exchanges (n) | Method | Confidence Flag |
|---|---|---|
| n ≥ 5 | Full trimmed mean (k = 25%) | Full confidence |
| n = 3 or 4 | Median only (trimming not meaningful) | Reduced confidence |
| n = 2 | Simple mean of two VWAPs | Low confidence |
| n = 1 | Single exchange VWAP | Single-source — flagged |
| n = 0 | BTCADP is undefined for this day | No data |
The confidence flag is published alongside the BTCADP value for full transparency. It does not change the number itself — it communicates the degree of statistical robustness behind it.
An exchange qualifies for inclusion in the BTCADP calculation for a given day if and only if it meets the following criteria. These criteria are purely algorithmic — no subjective judgment or editorial discretion is involved.
The criteria are applied in a specific order. This order matters for reproducibility and is considered part of the specification:
The calculation begins with a list of known exchanges to evaluate. This is the one input to the BTCADP that requires human curation, and this specification acknowledges it directly. Any exchange that offers a BTC/USD trading pair and publishes publicly accessible trade-level data (via API or data feed) is a candidate for inclusion. The list should be as comprehensive as reasonably possible.
The transparency record (Section 9) must publish the full list of exchanges evaluated for each day, including those that were evaluated and excluded. This allows any observer to propose additions. If an exchange meets all algorithmic criteria below but was not included in the evaluated set, the BTCADP publisher should add it to subsequent calculations. Over time, the exchange list converges toward completeness through public scrutiny.
Principle: The exchange list is intentionally permissive. The algorithmic filters below are what protect the BTCADP from bad data — not the curation of the list. When in doubt, include an exchange and let the math decide.
The exchange must publish historical trade-level data for the BTC/USD pair, including at minimum: trade timestamp (UTC or convertible to UTC), trade price (USD), and trade volume (BTC). Exchanges that do not provide this data at the required granularity are excluded.
The exchange must have recorded at least 1,000 individual trades in the BTC/USD pair during the 24-hour UTC window. This threshold filters out exchanges with negligible activity while being low enough to include any exchange with meaningful market participation.
Calibration note: The threshold of 1,000 trades was selected to exclude dead or near-dead venues while including any exchange with genuine retail or institutional activity. This parameter may be adjusted in future versions based on empirical analysis.
The exchange must have recorded at least one trade in a minimum of 16 out of the 24 hourly UTC periods in the day (i.e., trades must span at least 16 distinct hours). This ensures that an exchange’s VWAP reflects the full trading day rather than being skewed by activity during a narrow time window. An exchange that was online for only 4 hours during a price spike would produce a VWAP unrepresentative of the day as a whole.
Rationale: The 16-hour threshold is deliberately lenient. It accommodates scheduled maintenance windows while excluding exchanges that were substantively offline. An exchange active for 16+ hours captures the vast majority of daily price action.
Where order book data is available for an exchange, the exchange’s volume-weighted average bid-ask spread for the day must not exceed 1.0% of the mid-price. Exchanges with abnormally wide spreads are either illiquid or operating abnormally and should not influence the reference price.
This criterion is applied only when order book data is available. Many exchanges do not publish historical order book data, and requiring it would exclude otherwise legitimate venues. The trade count threshold and price coherence filter (below) provide sufficient quality assurance for exchanges without order book data. The spread threshold is an additional safeguard, not a prerequisite.
After all exchanges have passed the above filters and their VWAPs have been computed, the price coherence check is applied. An exchange’s daily VWAP must fall within 5% of the median VWAP across all other exchanges that passed Filters 1–4. This is a sanity check that identifies exchanges whose prices have decoupled from the global market due to technical issues, capital controls, or fraud.
The price coherence check is applied iteratively: after removing outlier exchanges, the median is recalculated, and any newly-outlying exchanges are also removed, until the set stabilizes or a maximum of 5 iterations have been performed. In practice, this rarely requires more than one pass.
Order of operations: The explicit ordering — data availability, then trade count, then time coverage, then spread (where available), then price coherence — is essential for reproducibility. Two implementations must apply these filters in the same sequence to arrive at the same qualifying set.
Bitcoin’s data landscape has evolved dramatically since its inception. A single methodology applied uniformly to all eras would produce either false precision (in early years) or unnecessary imprecision (in recent years). The BTCADP specification therefore defines distinct historical eras, each with an appropriate methodology. This is not a weakness — it is intellectual honesty formalized as policy.
BTCADP value: $0.00 for all days.
The BTCADP timeline begins on January 3, 2009, the date the Bitcoin genesis block was mined and the first bitcoin came into existence. No organized exchange existed during this period. The only data points are a handful of peer-to-peer transactions (most famously, the 10,000 BTC pizza purchase of May 22, 2010, implying approximately $0.004 per BTC). While these isolated transactions demonstrate that some participants ascribed value to Bitcoin, there was no functioning market from which a daily price could be derived.
The BTCADP for this entire era is defined as $0.00. This is not a claim that Bitcoin was worthless — it is a recognition that no market-based price discovery mechanism existed. A daily reference price requires a market, and no market existed. The $0.00 value provides a clean, unambiguous baseline from which Bitcoin’s price history begins.
Note: Researchers investigating this era may produce more granular valuations based on documented peer-to-peer transactions, mining costs, or other methodologies. Such work is encouraged under Section 7 and may inform future revisions, but the default BTCADP for Era 0 remains $0.00.
BTCADP status: Single-source, flagged.
Mt. Gox launched on July 18, 2010, and rapidly became the dominant exchange, handling over 70% of global Bitcoin volume for much of this period. While other exchanges existed (TradeHill, Bitcoinica, BTC-e, Bitstamp), their volumes were insufficient to form a statistically meaningful set for trimmed-mean aggregation.
The BTCADP for this era is defined as the Mt. Gox daily VWAP for the BTC/USD pair. Every value in this era carries a single-source confidence flag. For dates where other exchanges (particularly Bitstamp, from 2012 onward) have sufficient data to compute a VWAP, these values are published in the transparency record as secondary references for cross-validation, but do not alter the primary BTCADP value.
Known issue: It is now established that Mt. Gox was insolvent for much of 2013 and that automated trading bots (notably the “Willy Bot”) generated fraudulent volume. The BTCADP values from late 2013 should be treated with appropriate skepticism. This is an inherent limitation of the historical record, not a methodological failure — no methodology can produce trustworthy prices from untrustworthy data.
BTCADP status: Multi-exchange, reduced confidence initially, improving over time.
Following the Mt. Gox collapse in February 2014, the market fragmented across multiple exchanges including Bitstamp, Bitfinex, BTC-e, Coinbase (GDAX), Kraken, and others. The full BTCADP methodology applies beginning on this date, but with the caveat that the exchange count is smaller (typically 5–10 qualifying venues) and the trimmed mean therefore has fewer inputs.
The confidence flag for each day in this era is determined by the actual number of qualifying exchanges on that day, per the thresholds in Section 4.5. Early days in this era may carry “Reduced confidence” or even “Low confidence” flags. By the 2017 bull run, the exchange ecosystem had matured substantially, with 15–30 qualifying venues on most days, providing the statistical depth needed for full-confidence BTCADP values.
BTCADP status: Full methodology, full confidence.
The modern era features abundant, high-quality data from regulated exchanges (Coinbase, Kraken, Gemini, Bitstamp), institutional reference rates (CME BRR), and spot Bitcoin ETFs (from January 2024 onward). The full BTCADP methodology applies with a robust set of qualifying exchanges, typically 15–40 per day.
This era serves as the benchmark for validation: BTCADP values can be compared against institutional reference rates to confirm methodological soundness. Convergence with independently-calculated prices from CME, Bloomberg, and ETF NAV calculations provides external validation.
| Era | Date Range | Method | Confidence |
|---|---|---|---|
| 0 | Jan 3, 2009 – Jul 17, 2010 | $0.00 (no market) | Defined by specification |
| 1 | Jul 18, 2010 – Feb 24, 2014 | Mt. Gox VWAP | Single-source |
| 2 | Feb 25, 2014 – Dec 31, 2017 | Trimmed mean of VWAPs | Reduced → Full |
| 3 | Jan 1, 2018 – Present | Trimmed mean of VWAPs | Full |
The BTCADP specification is designed not as a finished product but as a living standard that improves through community participation. While the methodology described in this document is fully operational for Era 3 (2018–present), the historical eras present research challenges that no single organization should attempt to solve in isolation. This section formalizes the role of independent researchers in strengthening the BTCADP.
For Eras 0, 1, and 2, the initial BTCADP publication uses provisional values: $0.00 for Era 0, Mt. Gox VWAP data for Era 1, and aggregated market data from available sources for Era 2. These values are directionally accurate but were not computed using the full methodology specified in Section 4, because the required trade-level data is either incomplete, difficult to obtain, or housed in sources of uncertain provenance.
Every provisional value is clearly marked as such. Provisional status is not a deficiency — it is an honest acknowledgment that rigorous historical computation requires dedicated research effort, and an explicit invitation for that effort to be undertaken.
The research community is encouraged to produce definitive BTCADP values for these historical eras using trade-level data and the methodology described herein. When published, these values supersede the provisional figures and become the accepted historical record.
The BTCADP methodology was designed for the modern exchange ecosystem. Researchers working with early historical data may encounter conditions where strict application of every filter and threshold is impractical or produces misleading results. For example, the minimum trade count of 1,000 (Section 5.3) may exclude the only active exchange on a given day in 2011, and the 16-hour time coverage requirement (Section 5.4) may be incompatible with the operating patterns of early venues.
In such cases, researchers are encouraged to adapt the methodology to fit the available data, provided they adhere to the four core principles established in Section 1: fairness, reproducibility, manipulation resistance, and institutional independence. The specification defines what correct looks like; researchers determine how to get there given the constraints of the historical record.
To ensure that community research contributions are verifiable and useful, any published refinement of historical BTCADP values should include the following:
Data sources. A complete description of the trade-level data used, including its origin, format, and any known limitations or gaps. Where data was obtained from archived, leaked, or reconstructed sources, the provenance should be documented with sufficient detail for others to locate and evaluate the same data.
Methodology. A precise description of the calculation performed, including any deviations from the standard BTCADP methodology and the rationale for each deviation. This should be detailed enough for independent replication.
Transparency records. The same transparency data described in Section 9, adapted as necessary for the era in question. At minimum: the exchanges evaluated, the qualifying exchanges and their individual VWAPs, and any exchanges excluded with the reason for exclusion.
Reproducible results. The computed BTCADP values, along with code or sufficiently detailed procedures to allow independent verification.
These standards align with established academic publishing norms and ensure that research contributions can be peer-reviewed, challenged, and improved upon.
Research contributions serve a dual purpose. First, they produce better historical BTCADP values. Second, and equally important, they stress-test the specification itself. When a researcher finds that a particular filter does not work well for a specific era or dataset, that finding informs future versions of the specification. A methodology that survives independent scrutiny across diverse data conditions is more trustworthy than one that has only been applied by its authors.
Researchers who identify ambiguities, edge cases, or limitations in this specification are encouraged to document them alongside their findings. Such feedback is the mechanism by which the BTCADP evolves from a proposal into a robust, community-validated standard.
Principle: The BTCADP belongs to no one and benefits everyone. Its credibility is established through transparent methodology, open data, and the collective rigor of independent researchers who test, refine, and ultimately validate the standard.
If an exchange is offline or not reporting data for part of a day but meets the minimum trade count and time coverage thresholds (Sections 5.3 and 5.4) for the portion of the day it was active, its VWAP is included. If it fails either threshold, it is simply excluded for that day. No interpolation or estimation is performed for missing data.
When Bitcoin undergoes a chain split (as occurred with Bitcoin Cash on August 1, 2017), the BTCADP continues to track the chain that retains the BTC ticker on the majority of qualifying exchanges. The forked asset is a separate instrument and is not included. No retroactive adjustments are made to pre-fork BTCADP values.
BTC/USDT, BTC/USDC, and other stablecoin pairs are excluded from the BTCADP. While these pairs are highly liquid, they introduce a dependency on the stablecoin’s peg to the US dollar, which is an additional assumption. The BTCADP is computed exclusively from BTC/USD fiat pairs where the USD side represents actual US dollars.
The BTCADP makes no special accommodation for flash crashes, exchange-specific anomalies, or extraordinary volatility. The qualification criteria and trimmed mean are designed to be robust against such events. If multiple exchanges experience simultaneous extreme price moves, this is genuine market activity and should be reflected in the BTCADP.
Each daily BTCADP publication should be accompanied by a transparency record containing the following data, enabling full independent verification:
Date: The UTC calendar date.
BTCADP Value: The computed price, rounded to two decimal places.
Confidence Flag: Full, Reduced, Low, Single-source, or No data.
Exchanges Evaluated: The complete list of exchanges that were considered, enabling observers to identify any exchanges that should have been included but were not.
Qualifying Exchanges: Each exchange that passed all filters, along with its individual VWAP, trade count, time coverage (hours active), and whether its VWAP was trimmed or included in the final mean.
Excluded Exchanges: Any exchanges that were evaluated but failed qualification, with the specific filter they failed (trade count, time coverage, spread, or price coherence).
Specification Version: The version of the BTCADP specification used.
This transparency record allows anyone to audit not just the final number but every input that contributed to it. It also enables detection of systematic changes in exchange qualification over time, and ensures that the exchange evaluation list can grow through public feedback without requiring changes to the specification itself.
This document is version 1.0 of the BTCADP specification. Future versions may adjust parameters (trim percentage, minimum trade count, time coverage threshold, spread threshold) based on empirical analysis, or may introduce enhancements such as additional currency pairs.
Any changes to the specification will be versioned and documented. Retroactive recalculation using a new version is permitted and encouraged, but previously published values under prior versions remain valid under their respective versions. Both the value and the specification version under which it was computed should always be cited together.
The goal is that version changes are rare and justified by significant changes in the data landscape, not by editorial preference.
A reference implementation in Python (or equivalent open-source language) should accompany this specification. The reference implementation serves two purposes: it resolves any ambiguity in the written specification by providing an executable definition, and it allows independent parties to compute BTCADP values directly.
The pseudocode for the core calculation is as follows:
Two independent implementations of this pseudocode, given identical trade data as input, must produce BTCADP values that agree after rounding to two decimal places. If they do not, the specification contains an ambiguity that must be resolved.
The BTCADP is designed to be the simplest number that can honestly and fairly answer the question of what Bitcoin was worth on any given day. It makes no claim to perfection in the early years of Bitcoin’s history, where data is sparse and unreliable. It makes a strong claim to accuracy and robustness from 2018 onward, where the methodology can be fully applied.
The strength of the BTCADP lies not in the authority of its publisher but in the transparency of its methodology. Anyone can verify it. Anyone can reproduce it. Trust comes from the math, not an individual publisher or institution.