mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-05-29 23:39:26 -07:00
computer: snapshot
This commit is contained in:
@@ -19,7 +19,7 @@ pub(super) fn compute(
|
||||
starting_indexes: &ComputeIndexes,
|
||||
exit: &Exit,
|
||||
) -> Result<()> {
|
||||
let source_version = returns.price_returns._1d.height.version();
|
||||
let source_version = returns.price_returns._24h.height.version();
|
||||
|
||||
let vecs = [
|
||||
&mut chain.gains.height,
|
||||
|
||||
@@ -5,7 +5,7 @@ use crate::{market::returns::Vecs as ReturnsVecs, prices};
|
||||
|
||||
pub(super) fn collect_returns(tf: &str, returns: &ReturnsVecs) -> Vec<f32> {
|
||||
let data: Vec<StoredF32> = match tf {
|
||||
"1d" => returns.price_returns._1d.day1.collect_or_default(),
|
||||
"1d" => returns.price_returns._24h.day1.collect_or_default(),
|
||||
"1w" => returns.price_returns._1w.week1.collect_or_default(),
|
||||
"1m" => returns.price_returns._1m.month1.collect_or_default(),
|
||||
"1y" => returns.price_returns._1y.year1.collect_or_default(),
|
||||
|
||||
@@ -2,9 +2,9 @@ use brk_traversable::Traversable;
|
||||
|
||||
use crate::market::dca::ByDcaPeriod;
|
||||
|
||||
/// Lookback period days (includes 1d, unlike DCA)
|
||||
/// Lookback period days (includes 24h, unlike DCA)
|
||||
pub const LOOKBACK_PERIOD_DAYS: ByLookbackPeriod<u32> = ByLookbackPeriod {
|
||||
_1d: 1,
|
||||
_24h: 1,
|
||||
_1w: 7,
|
||||
_1m: 30,
|
||||
_3m: 3 * 30,
|
||||
@@ -21,7 +21,7 @@ pub const LOOKBACK_PERIOD_DAYS: ByLookbackPeriod<u32> = ByLookbackPeriod {
|
||||
|
||||
/// Lookback period names
|
||||
pub const LOOKBACK_PERIOD_NAMES: ByLookbackPeriod<&'static str> = ByLookbackPeriod {
|
||||
_1d: "1d",
|
||||
_24h: "24h",
|
||||
_1w: "1w",
|
||||
_1m: "1m",
|
||||
_3m: "3m",
|
||||
@@ -36,10 +36,10 @@ pub const LOOKBACK_PERIOD_NAMES: ByLookbackPeriod<&'static str> = ByLookbackPeri
|
||||
_10y: "10y",
|
||||
};
|
||||
|
||||
/// Generic wrapper for lookback period-based data (includes 1d)
|
||||
/// Generic wrapper for lookback period-based data (includes 24h)
|
||||
#[derive(Clone, Default, Traversable)]
|
||||
pub struct ByLookbackPeriod<T> {
|
||||
pub _1d: T,
|
||||
pub _24h: T,
|
||||
pub _1w: T,
|
||||
pub _1m: T,
|
||||
pub _3m: T,
|
||||
@@ -62,7 +62,7 @@ impl<T> ByLookbackPeriod<T> {
|
||||
let n = LOOKBACK_PERIOD_NAMES;
|
||||
let d = LOOKBACK_PERIOD_DAYS;
|
||||
Ok(Self {
|
||||
_1d: create(n._1d, d._1d)?,
|
||||
_24h: create(n._24h, d._24h)?,
|
||||
_1w: create(n._1w, d._1w)?,
|
||||
_1m: create(n._1m, d._1m)?,
|
||||
_3m: create(n._3m, d._3m)?,
|
||||
@@ -81,7 +81,7 @@ impl<T> ByLookbackPeriod<T> {
|
||||
pub(crate) fn iter_with_days(&self) -> impl Iterator<Item = (&T, u32)> {
|
||||
let d = LOOKBACK_PERIOD_DAYS;
|
||||
[
|
||||
(&self._1d, d._1d),
|
||||
(&self._24h, d._24h),
|
||||
(&self._1w, d._1w),
|
||||
(&self._1m, d._1m),
|
||||
(&self._3m, d._3m),
|
||||
@@ -101,7 +101,7 @@ impl<T> ByLookbackPeriod<T> {
|
||||
pub(crate) fn iter_mut_with_days(&mut self) -> impl Iterator<Item = (&mut T, u32)> {
|
||||
let d = LOOKBACK_PERIOD_DAYS;
|
||||
[
|
||||
(&mut self._1d, d._1d),
|
||||
(&mut self._24h, d._24h),
|
||||
(&mut self._1w, d._1w),
|
||||
(&mut self._1m, d._1m),
|
||||
(&mut self._3m, d._3m),
|
||||
@@ -118,7 +118,7 @@ impl<T> ByLookbackPeriod<T> {
|
||||
.into_iter()
|
||||
}
|
||||
|
||||
/// Get the DCA-matching subset (excludes 1d)
|
||||
/// Get the DCA-matching subset (excludes 24h)
|
||||
pub(crate) fn as_dca_period(&self) -> ByDcaPeriod<&T> {
|
||||
ByDcaPeriod {
|
||||
_1w: &self._1w,
|
||||
|
||||
@@ -55,19 +55,19 @@ impl Vecs {
|
||||
)?;
|
||||
}
|
||||
|
||||
let _1d_price_returns_height = &self.price_returns._1d.height;
|
||||
let _24h_price_returns_height = &self.price_returns._24h.height;
|
||||
|
||||
self._1d_returns_1w_sd
|
||||
.compute_all(blocks, starting_indexes, exit, _1d_price_returns_height)?;
|
||||
.compute_all(blocks, starting_indexes, exit, _24h_price_returns_height)?;
|
||||
self._1d_returns_1m_sd
|
||||
.compute_all(blocks, starting_indexes, exit, _1d_price_returns_height)?;
|
||||
.compute_all(blocks, starting_indexes, exit, _24h_price_returns_height)?;
|
||||
self._1d_returns_1y_sd
|
||||
.compute_all(blocks, starting_indexes, exit, _1d_price_returns_height)?;
|
||||
.compute_all(blocks, starting_indexes, exit, _24h_price_returns_height)?;
|
||||
|
||||
// Downside returns: min(return, 0)
|
||||
self.downside_returns.compute_transform(
|
||||
starting_indexes.height,
|
||||
_1d_price_returns_height,
|
||||
_24h_price_returns_height,
|
||||
|(i, ret, ..)| (i, StoredF32::from((*ret).min(0.0))),
|
||||
exit,
|
||||
)?;
|
||||
|
||||
Reference in New Issue
Block a user