Files
brk/crates/brk_computer/src/market/compute.rs
T
2026-01-04 01:47:03 +01:00

54 lines
1.4 KiB
Rust

use brk_error::Result;
use vecdb::Exit;
use crate::{blocks, distribution, price, ComputeIndexes};
use super::Vecs;
impl Vecs {
pub fn compute(
&mut self,
price: &price::Vecs,
blocks: &blocks::Vecs,
distribution: &distribution::Vecs,
starting_indexes: &ComputeIndexes,
exit: &Exit,
) -> Result<()> {
// ATH metrics (independent)
self.ath.compute(price, starting_indexes, exit)?;
// Lookback metrics (independent)
self.lookback.compute(price, starting_indexes, exit)?;
// Returns metrics (depends on lookback)
self.returns.compute(starting_indexes, exit)?;
// Volatility: all fields are lazy (derived from returns SD)
// Range metrics (independent)
self.range.compute(price, starting_indexes, exit)?;
// Moving average metrics (independent)
self.moving_average.compute(price, starting_indexes, exit)?;
// DCA metrics (depends on lookback for lump sum comparison)
self.dca
.compute(price, &self.lookback, starting_indexes, exit)?;
self.indicators.compute(
&blocks.rewards,
&self.returns,
&self.moving_average,
&self.range,
price,
distribution,
starting_indexes,
exit,
)?;
let _lock = exit.lock();
self.db.compact()?;
Ok(())
}
}