From 581a80061268db254d33bf8e7161c4c30a636990 Mon Sep 17 00:00:00 2001 From: Brandon Collins Date: Wed, 21 Jan 2026 12:20:53 -0500 Subject: [PATCH] refactor: reduce verbosity and use vecdb cumulative function - Remove verbose inline comments from compute.rs - Update vecdb to 0.6.1 - Refactor HODL Bank to use compute_cumulative_transformed_binary --- Cargo.lock | 12 ++--- Cargo.toml | 3 +- .../src/cointime/reserve_risk/compute.rs | 50 ++++--------------- 3 files changed, 16 insertions(+), 49 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1deb7bc8d..f1b54d4de 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2482,9 +2482,9 @@ dependencies = [ [[package]] name = "rawdb" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd8290a282cf2ea860ee2e787b3229731db7dac73a16c9240c545e20e91b302" +checksum = "39ebb540a243e937d5ec268361bbf7b83e05e6c4ad8de21ac9ee64c4f72e9001" dependencies = [ "libc", "log", @@ -3365,9 +3365,9 @@ checksum = "8f54a172d0620933a27a4360d3db3e2ae0dd6cceae9730751a036bbf182c4b23" [[package]] name = "vecdb" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81910b96a48ea197d1871259164b957c05f3e94d94cd107c4b87cf24e7f2968f" +checksum = "d64486e34d56d63797295aa928288542226b6f28f96a3b58f661b1efd9f54cde" dependencies = [ "ctrlc", "log", @@ -3386,9 +3386,9 @@ dependencies = [ [[package]] name = "vecdb_derive" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab7250822f3caf8795728690804d39ab5c72c51f5558b90788a79bc99776d55" +checksum = "3c1f863f6687e9ff90962a51a0f6c9646a14dc0ccfd9ea2ea79e288d88187bef" dependencies = [ "quote", "syn", diff --git a/Cargo.toml b/Cargo.toml index 5234a4234..b58260bfe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -81,8 +81,7 @@ tokio = { version = "1.49.0", features = ["rt-multi-thread"] } tracing = { version = "0.1", default-features = false, features = ["std"] } tower-http = { version = "0.6.8", features = ["catch-panic", "compression-br", "compression-gzip", "compression-zstd", "cors", "normalize-path", "timeout", "trace"] } tower-layer = "0.3" -# vecdb = { version = "0.5.11", features = ["derive", "serde_json", "pco", "schemars"] } -vecdb = { path = "../anydb/crates/vecdb", features = ["derive", "serde_json", "pco", "schemars"] } +vecdb = { version = "0.6.1", features = ["derive", "serde_json", "pco", "schemars"] } [workspace.metadata.release] shared-version = true diff --git a/crates/brk_computer/src/cointime/reserve_risk/compute.rs b/crates/brk_computer/src/cointime/reserve_risk/compute.rs index 0a1acb594..cfe99d9e4 100644 --- a/crates/brk_computer/src/cointime/reserve_risk/compute.rs +++ b/crates/brk_computer/src/cointime/reserve_risk/compute.rs @@ -1,6 +1,6 @@ use brk_error::Result; -use brk_types::{DateIndex, StoredF64}; -use vecdb::{AnyStoredVec, AnyVec, Exit, GenericStoredVec, IterableVec, VecIndex}; +use brk_types::{Close, Dollars, StoredF64}; +use vecdb::Exit; use super::{super::value, Vecs}; use crate::{price, ComputeIndexes}; @@ -13,11 +13,8 @@ impl Vecs { value: &value::Vecs, exit: &Exit, ) -> Result<()> { - // Get VOCDD dateindex sum data (from cointime/value module) - // The dateindex.sum.0 contains daily VOCDD values as EagerVec let vocdd_dateindex_sum = &value.vocdd.dateindex.sum.0; - // Compute 365-day SMA of VOCDD self.vocdd_365d_sma.compute_sma( starting_indexes.dateindex, vocdd_dateindex_sum, @@ -27,43 +24,14 @@ impl Vecs { let price_close = &price.usd.split.close.dateindex; - // Compute HODL Bank = cumulative sum of (price - vocdd_sma) - // Start from where we left off and maintain cumulative state - let starting_dateindex = starting_indexes - .dateindex - .to_usize() - .min(self.hodl_bank.len()); - let target_len = price_close.len().min(self.vocdd_365d_sma.len()); + self.hodl_bank.compute_cumulative_transformed_binary( + starting_indexes.dateindex, + price_close, + &self.vocdd_365d_sma, + |price: Close, sma: StoredF64| StoredF64::from(f64::from(price) - f64::from(sma)), + exit, + )?; - if target_len > starting_dateindex { - let mut price_iter = price_close.iter(); - let mut vocdd_sma_iter = self.vocdd_365d_sma.iter(); - - // Get previous cumulative value, or start at 0 - let mut cumulative: f64 = if starting_dateindex > 0 { - let prev_dateindex = DateIndex::from(starting_dateindex - 1); - f64::from(*self.hodl_bank.iter().get_unwrap(prev_dateindex)) - } else { - 0.0 - }; - - for i in starting_dateindex..target_len { - let dateindex = DateIndex::from(i); - let price_val = f64::from(*price_iter.get_unwrap(dateindex)); - let vocdd_sma = f64::from(*vocdd_sma_iter.get_unwrap(dateindex)); - - // HODL Bank contribution: price - smoothed VOCDD - // Accumulate over time - cumulative += price_val - vocdd_sma; - self.hodl_bank - .truncate_push_at(i, StoredF64::from(cumulative))?; - } - - let _lock = exit.lock(); - self.hodl_bank.write()?; - } - - // Compute Reserve Risk = price / hodl_bank (if enabled) if let Some(reserve_risk) = self.reserve_risk.as_mut() { reserve_risk.compute_all(starting_indexes, exit, |v| { v.compute_divide(