From b5c2d6ce9ea4a329eb07c76ba7be9f64b676d1ee Mon Sep 17 00:00:00 2001 From: nym21 Date: Thu, 5 Feb 2026 00:34:56 +0100 Subject: [PATCH] changelog: updated --- docs/CHANGELOG.md | 118 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 5b24d9c12..75224c0f4 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -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` 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` ([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