mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-07-12 19:48:15 -07:00
45 lines
1.1 KiB
Rust
45 lines
1.1 KiB
Rust
use brk_error::Result;
|
|
use brk_indexer::Indexer;
|
|
use brk_types::StoredF64;
|
|
use vecdb::Exit;
|
|
|
|
use super::{super::value, Vecs};
|
|
use crate::{blocks, internal::algo::ComputeRollingMedianFromStarts, price};
|
|
|
|
impl Vecs {
|
|
pub(crate) fn compute(
|
|
&mut self,
|
|
indexer: &Indexer,
|
|
blocks: &blocks::Vecs,
|
|
prices: &price::Vecs,
|
|
value: &value::Vecs,
|
|
exit: &Exit,
|
|
) -> Result<()> {
|
|
let starting_height = indexer.safe_lengths().height;
|
|
|
|
self.vocdd_median_1y.compute_rolling_median_from_starts(
|
|
starting_height,
|
|
&blocks.lookback._1y,
|
|
&value.vocdd.block,
|
|
exit,
|
|
)?;
|
|
|
|
self.hodl_bank.compute_cumulative_transformed_binary(
|
|
starting_height,
|
|
&prices.spot.usd.height,
|
|
&self.vocdd_median_1y,
|
|
|price, median| StoredF64::from(f64::from(price) - f64::from(median)),
|
|
exit,
|
|
)?;
|
|
|
|
self.value.height.compute_divide(
|
|
starting_height,
|
|
&prices.spot.usd.height,
|
|
&self.hodl_bank,
|
|
exit,
|
|
)?;
|
|
|
|
Ok(())
|
|
}
|
|
}
|