mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-05-26 17:54:44 -07:00
changelog: updated
This commit is contained in:
@@ -4,6 +4,124 @@ All notable changes to the Bitcoin Research Kit (BRK) project will be documented
|
||||
|
||||
> *This changelog was generated by Claude Code*
|
||||
|
||||
## [v0.1.4](https://github.com/bitcoinresearchkit/brk/releases/tag/v0.1.4) - 2026-02-04
|
||||
|
||||
### Breaking Changes
|
||||
|
||||
#### `brk_computer`
|
||||
- Changed VOCDD (Value of Coin Days Destroyed) calculation to be supply-adjusted: `price × (CDD / circulating_supply)` instead of `price × CDD`, accounting for growing supply over time ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_computer/src/cointime/value/compute.rs))
|
||||
- Changed Reserve Risk calculation to use 365-day rolling median instead of 365-day SMA for VOCDD smoothing, providing more robust values resistant to outliers ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_computer/src/cointime/reserve_risk/vecs.rs))
|
||||
- Changed `net_sentiment` computation for aggregate cohorts to use capital-weighted average of component cohorts instead of simple greed - pain formula, producing values that properly represent the weighted contribution of each cohort ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_computer/src/distribution/metrics/mod.rs))
|
||||
- Changed drawdown computation formula from `(ath - current) / ath * -100` to `(current - ath) / ath * 100`, where positive values now indicate performance above ATH and negative values indicate drawdown below ATH ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_computer/src/traits/mod.rs))
|
||||
|
||||
### New Features
|
||||
|
||||
#### `brk_computer`
|
||||
- Added `hash_rate_ath` metric tracking the all-time high hash rate at each block ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_computer/src/blocks/mining/vecs.rs))
|
||||
- Added `hash_rate_drawdown` metric showing percentage drawdown from hash rate all-time high ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_computer/src/blocks/mining/compute.rs))
|
||||
- Added `_30d_change` metric for all address type counts (p2pkh, p2sh, p2wpkh, p2wsh, p2tr, p2pk33, p2pk65, p2a), tracking 30-day percentage change in address counts ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_computer/src/distribution/address/address_count.rs))
|
||||
- Added `utxo_count_30d_change` metric to OutputsMetrics tracking 30-day percentage change in UTXO count per cohort ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_computer/src/distribution/metrics/outputs.rs))
|
||||
|
||||
#### `brk_types`
|
||||
- Added `From<StoredU64>` conversion for `StoredF64` enabling direct u64 to f64 stored value conversion ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_types/src/stored_f64.rs))
|
||||
|
||||
### Internal Changes
|
||||
|
||||
#### `brk_computer`
|
||||
- Generalized `ComputeDrawdown` trait to work with any value types convertible to f64, not just `Close<Dollars>` ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_computer/src/traits/mod.rs))
|
||||
- Removed `NegRatio32` transform (no longer needed after drawdown formula change) ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_computer/src/internal/single/transform/mod.rs))
|
||||
- Separated net_sentiment computation into `compute_net_sentiment_height` for separate cohorts and `compute_net_sentiment_from_others` for aggregate cohorts ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_computer/src/distribution/metrics/unrealized.rs))
|
||||
- Added `AddrCountVecs` struct grouping address count with its 30d_change metric ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_computer/src/distribution/address/address_count.rs))
|
||||
- Refactored aggregate UTXO cohort computation with `for_each_aggregate` helper method for cleaner code organization
|
||||
- Added unit tests for HODL Bank and Reserve Risk formula verification ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_computer/src/cointime/reserve_risk/compute.rs))
|
||||
|
||||
#### `brk_indexer`
|
||||
- Removed debug logging from transaction metadata storage for cleaner logs ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.4/crates/brk_indexer/src/processor/tx.rs))
|
||||
|
||||
#### `website`
|
||||
- Reorganized chart options into new module structure with dedicated files for activity, profitability, cost-basis, holdings, prices, and valuation
|
||||
- Consolidated color utilities into `website/scripts/utils/colors.js` module
|
||||
|
||||
#### `clients`
|
||||
- Bumped JavaScript and Python client versions
|
||||
|
||||
[View changes](https://github.com/bitcoinresearchkit/brk/compare/v0.1.3...v0.1.4)
|
||||
|
||||
## [v0.1.3](https://github.com/bitcoinresearchkit/brk/releases/tag/v0.1.3) - 2026-02-03
|
||||
|
||||
### Breaking Changes
|
||||
|
||||
#### `brk_types`
|
||||
- Renamed `LoadedAddressIndex` to `FundedAddressIndex` throughout the codebase ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_types/src/fundedaddressindex.rs))
|
||||
- Renamed `LoadedAddressData` to `FundedAddressData` ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_types/src/fundedaddressdata.rs))
|
||||
- Renamed `OHLCCents` to `OHLCCentsUnsigned` for consistency with unsigned cents types ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_types/src/ohlc.rs))
|
||||
- Removed `Cents`, `CentsCompact`, and `CentsSignedCompact` types (consolidated into unsigned variants)
|
||||
|
||||
### New Features
|
||||
|
||||
#### `brk_types`
|
||||
- Added `SatsSigned` type (i64-based) for signed satoshi values used in changes, deltas, and profit/loss calculations ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_types/src/sats_signed.rs))
|
||||
- Added `CentsSats` type (u128-based) for price × sats calculations with widening multiplication to prevent overflow ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_types/src/cents_sats.rs))
|
||||
- Added `CentsSquaredSats` type (u128-based) for price² × sats calculations used in investor cap metrics ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_types/src/cents_squared_sats.rs))
|
||||
|
||||
#### `brk_computer`
|
||||
- Added `investor_price` metric - dollar-weighted average acquisition price with both USD and sats representations ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_computer/src/distribution/metrics/realized.rs))
|
||||
- Added `cap_raw` metric storing raw Σ(price × sats) for precise realized cap aggregation across cohorts
|
||||
- Added `investor_cap_raw` metric storing raw Σ(price² × sats) for precise investor_price aggregation
|
||||
- Added `realized_profit_7d_ema`, `realized_loss_7d_ema`, and `net_realized_pnl_7d_ema` metrics for smoothed realized PnL analysis
|
||||
- Added `profit_value_created` and `profit_value_destroyed` metrics splitting value flows by profit transactions
|
||||
- Added `loss_value_created` and `loss_value_destroyed` metrics splitting value flows by loss transactions
|
||||
- Added `capitulation_flow` as a lazy alias for loss_value_destroyed (coins sold at a loss)
|
||||
- Added `profit_flow` as a lazy alias for profit_value_created (coins sold at a profit)
|
||||
- Added `peak_regret` metric: Σ((peak - sell_price) × sats) measuring how much more could have been made by selling at peak ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_computer/src/distribution/metrics/realized.rs))
|
||||
- Added `peak_regret_rel_to_realized_cap` expressing peak regret as percentage of realized cap
|
||||
- Added `invested_capital_in_profit` and `invested_capital_in_loss` metrics tracking cost basis of UTXOs by profit/loss status ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_computer/src/distribution/metrics/unrealized.rs))
|
||||
- Added raw aggregation values for unrealized metrics: `invested_capital_in_profit_raw`, `invested_capital_in_loss_raw`, `investor_cap_in_profit_raw`, `investor_cap_in_loss_raw`
|
||||
- Added `pain_index` metric: investor_price_of_losers - spot, measuring average distance underwater weighted by USD invested
|
||||
- Added `greed_index` metric: spot - investor_price_of_winners, measuring average distance in profit weighted by USD invested
|
||||
- Added `net_sentiment` metric: greed_index - pain_index, positive values indicate greedy market, negative indicate painful market
|
||||
- Added `unrealized_peak_regret` metric for age-range UTXO cohorts
|
||||
- Added `invested_capital` percentiles providing USD-weighted cost basis distribution (complementing sat-weighted percentiles) ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_computer/src/distribution/metrics/cost_basis.rs))
|
||||
- Added `spot_cost_basis_percentile` metric showing what percentile of cost basis is below current spot price (sat-weighted)
|
||||
- Added `spot_invested_capital_percentile` metric showing what percentile of invested capital is below current spot price (USD-weighted)
|
||||
- Added `ValueChangeFromDate` module for computing N-day value changes stored as signed sats ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_computer/src/internal/multi/from_date/value_change.rs))
|
||||
- Added `LazyValueChangeDateDerived` module for lazy computation of bitcoin and dollar values from signed sats changes ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_computer/src/internal/multi/from_date/value_change_derived.rs))
|
||||
- Added `LazyPriceFromCents` module providing lazy price wrapper with both USD and sats representations from a cents base ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_computer/src/internal/multi/from_height/lazy_price_from_cents.rs))
|
||||
- Added `CentsUnsignedToDollars` transform for converting cents to dollars ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_computer/src/internal/single/transform/cents_unsigned_to_dollars.rs))
|
||||
- Added `CentsUnsignedToSatsFract` transform for converting cents to sats exchange rate ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_computer/src/internal/single/transform/cents_unsigned_to_sats_fract.rs))
|
||||
|
||||
#### `brk_cohort`
|
||||
- Added `compute_relative()` method to `Filter` that returns false for edge-case output types (Empty, P2MS, Unknown) which have insufficient volume for meaningful ratio analysis ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_cohort/src/filter.rs))
|
||||
|
||||
### Internal Changes
|
||||
|
||||
#### `brk_computer`
|
||||
- Replaced `PriceToAmount` struct with `CostBasisData` providing more efficient storage with raw cap and investor_cap values for precise aggregation ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_computer/src/distribution/state/cost_basis/cost_basis_data.rs))
|
||||
- Added `Percentiles` struct that computes both sat-weighted and USD-weighted percentiles in a single pass ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_computer/src/distribution/state/cost_basis/percentiles.rs))
|
||||
- Changed `UnrealizedState` to use `CentsUnsigned` instead of `Dollars` for unrealized profit/loss values
|
||||
- Changed `realized_cap` to derive from `realized_cap_cents` via lazy transform for consistent precision
|
||||
- Aggregate percentile computation now supports both sat-weighted and USD-weighted metrics with spot price parameter
|
||||
- Removed `ClosePriceTimesRatio` transform (functionality consolidated into other transforms)
|
||||
|
||||
#### `brk_bindgen`
|
||||
- Added pattern deduplication by name to prevent duplicate patterns when different signatures normalize to the same name ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_bindgen/src/analysis/patterns.rs))
|
||||
- Changed to BTreeMap/BTreeSet for deterministic pattern generation order
|
||||
- Changed pattern naming to generate stable names from first word of each field (deduped, sorted)
|
||||
|
||||
#### `brk_fetcher`
|
||||
- Changed return types from `OHLCCents` to `OHLCCentsUnsigned` for consistency ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_fetcher/src/lib.rs))
|
||||
|
||||
#### `brk_traversable`
|
||||
- Changed `TreeNode::Branch` internal storage from `BTreeMap` to `IndexMap` to preserve insertion order in API tree responses ([source](https://github.com/bitcoinresearchkit/brk/blob/v0.1.3/crates/brk_traversable/src/lib.rs))
|
||||
|
||||
#### `website`
|
||||
- Removed `website/scripts/options/market/` subdirectory structure (averages.js, bands.js, index.js, investing.js, momentum.js, onchain.js, performance.js, volatility.js)
|
||||
- Consolidated market options into top-level `market.js` and `investing.js` files
|
||||
- Added new `mining.js` and `network.js` option modules
|
||||
- Removed `chain.js` module
|
||||
|
||||
[View changes](https://github.com/bitcoinresearchkit/brk/compare/v0.1.2...v0.1.3)
|
||||
|
||||
## [v0.1.2](https://github.com/bitcoinresearchkit/brk/releases/tag/v0.1.2) - 2026-01-29
|
||||
|
||||
### New Features
|
||||
|
||||
Reference in New Issue
Block a user