diff --git a/Cargo.lock b/Cargo.lock index cd0fccb53..7a9b2ea0a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -682,9 +682,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.23" +version = "1.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4ac86a9e5bc1e2b3449ab9d7d3a6a405e3d1bb28d7b9be8614f55846ae3766" +checksum = "16595d3be041c03b09d08d0858631facccee9221e579704070e6e9e4915d3bc7" dependencies = [ "jobserver", "libc", @@ -1809,9 +1809,9 @@ checksum = "26995317201fa17f3656c36716aed4a7c81743a9634ac4c99c0eeda495db0cec" [[package]] name = "oxc" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd47d686dbfad71f2986f7baa019877d1ca6537d6c4b5de35c504bef34fd241" +checksum = "86a761cfb7ce8c7d07e0bb5a43d8676ae69de62b2d19a542c131784049ad22cb" dependencies = [ "oxc_allocator", "oxc_ast", @@ -1852,23 +1852,22 @@ dependencies = [ [[package]] name = "oxc_allocator" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8248980c6d9db21f8ad42e0c85c172ef4dd20335522fc81e4ac72b6b70f806" +checksum = "0769ed37977fc61b76ee89fe955b184db62b07e62609388ad6e6a1eb046837e3" dependencies = [ "allocator-api2", "bumpalo", "hashbrown 0.15.3", "oxc_data_structures", "rustc-hash", - "simdutf8", ] [[package]] name = "oxc_ast" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a05110cb2af185324857a9a5d1a1986196e2cf3c5127cd90a7694c6b326e97c9" +checksum = "17c6c770d1e86a9c4710d9c7974bf79e573b48efa3a764698477c11035c65738" dependencies = [ "bitflags", "cow-utils", @@ -1883,9 +1882,9 @@ dependencies = [ [[package]] name = "oxc_ast_macros" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24598056bb57788599997bbdb6ebf21a24b3331805aa9190c5b1204c973e636e" +checksum = "9c08ec3f117c0370106cf39b274090ae7f0b2be48b6bcae794bdc92fd1d34f22" dependencies = [ "phf", "proc-macro2", @@ -1895,9 +1894,9 @@ dependencies = [ [[package]] name = "oxc_ast_visit" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a263a5d0fcb1fd60696b54cc5fd8fba020266522effdb48ae3c74744602e0116" +checksum = "3b6fc584d5c7e5bd8394208a01d2d33025afcc8abceaed85455d642ee11db998" dependencies = [ "oxc_allocator", "oxc_ast", @@ -1907,9 +1906,9 @@ dependencies = [ [[package]] name = "oxc_cfg" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85ddc41b0e6af5aaa2e0936f4394f37b3e9890a78cd7b09f7b945a2b4ce6902" +checksum = "35a48bb41100a00b9a647c9aacd7fe6412d03a1c623a8285a9e514c2fa49e447" dependencies = [ "bitflags", "itertools", @@ -1922,9 +1921,9 @@ dependencies = [ [[package]] name = "oxc_codegen" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec27365d210ed97419c0e6b31b0b30c9a3f85ca45087b23619e02477b4873ff" +checksum = "cf726a55fd107703b21b728c044a2e64c71242d35514c4e7e1c4c7dffca98220" dependencies = [ "bitflags", "cow-utils", @@ -1943,18 +1942,18 @@ dependencies = [ [[package]] name = "oxc_data_structures" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112fcb78e9c0f3dda6beb1d93865f319d1c0165b0bf067fafda7f6529118328d" +checksum = "374638f55291a87994e37c715c9a312be3e29dfac5dd5a655847a3d4f98d2b63" dependencies = [ "rustversion", ] [[package]] name = "oxc_diagnostics" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7b801ff7bbda76e11e0d5a43c06a80b3c105219e564c05e0b2fdb56d87b832a" +checksum = "c4f29efa3f609ea53f193b1ffc19f548a6ac5464f27ad20a27982d623fc5784a" dependencies = [ "cow-utils", "oxc-miette", @@ -1962,9 +1961,9 @@ dependencies = [ [[package]] name = "oxc_ecmascript" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea29dc44ee5ed0b63adb6d377dd07bf5870b6ae76d986965a92af1fac101dfd4" +checksum = "b0f469ed7c14f5a2d75f39af03517d3d0da071ae2c33c91cd75f547f434b978d" dependencies = [ "cow-utils", "num-bigint", @@ -1976,9 +1975,9 @@ dependencies = [ [[package]] name = "oxc_estree" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ffa7908363d884399956c8971e924f1abba00ebe9995853bc70f536c0ccaaf" +checksum = "5bf9a77d3465740411872becbf9fc43d0462ba3adb6f2609334c1b75365dfde3" [[package]] name = "oxc_index" @@ -1988,9 +1987,9 @@ checksum = "2fa07b0cfa997730afed43705766ef27792873fdf5215b1391949fec678d2392" [[package]] name = "oxc_mangler" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b53c9553ca1c89d65db3faa19cacc17cdb8b349ee94dd1e5443aafa395eb4ff" +checksum = "68675862106f3ad0177dce45db81d27f406d0f27ac27541b55a60953ed5358e8" dependencies = [ "fixedbitset", "itertools", @@ -2005,9 +2004,9 @@ dependencies = [ [[package]] name = "oxc_minifier" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b22dec40158a43da6954d6cc148f3d9f03cf57084ba4ce761a6ca6baa7f2d5" +checksum = "aa89cd8c32768a12f50d949d2ad602262f3104ceca5504947850ee6c39aeaadc" dependencies = [ "cow-utils", "oxc_allocator", @@ -2027,9 +2026,9 @@ dependencies = [ [[package]] name = "oxc_parser" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0d4e22dc3630700e32320bbbc9f04396f109e8be2bb18791a00950485b049a5" +checksum = "848bc15e9fd22229224593e1468ae4d2cf8d396157b5ba9938daecbbac9a1409" dependencies = [ "bitflags", "cow-utils", @@ -2050,9 +2049,9 @@ dependencies = [ [[package]] name = "oxc_regular_expression" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4691c62894d99f689da38419894e6e38c33862ac414206a65f0539d80c3ef252" +checksum = "6ef0bc791b7a19124561c8c285cbb0f25e7cd5e4201b9bfd770b96b5f3bcdf79" dependencies = [ "bitflags", "oxc_allocator", @@ -2066,9 +2065,9 @@ dependencies = [ [[package]] name = "oxc_semantic" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d6d869c2d2727114a9fd4b51459e7ce5025c5b7122195c227c6b02cc6500388" +checksum = "e796ba52fa9b3c8dbc8fd3e57f5085f80dde092244098049dfa5732180304ed6" dependencies = [ "itertools", "oxc_allocator", @@ -2102,9 +2101,9 @@ dependencies = [ [[package]] name = "oxc_span" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d915cbabe501873b16236ae0e8ddfd5c001fd764b1dd073128858b5a0641a4" +checksum = "b2c1bcdd7b1695ac01ddcde35bc7b69b72150857d14e696f82f8a38927e7ceb3" dependencies = [ "compact_str", "oxc-miette", @@ -2115,9 +2114,9 @@ dependencies = [ [[package]] name = "oxc_syntax" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6318faa445653106b56da5497a080e4fcf9231d5121035639d8c003f992378" +checksum = "934fcc154f95afb172f84d250fe42833745eb06e83ced8a4e5d6669b9348528f" dependencies = [ "bitflags", "cow-utils", @@ -2136,9 +2135,9 @@ dependencies = [ [[package]] name = "oxc_traverse" -version = "0.71.0" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6c80fce6487edd19c71034f47ef039d7f736078d66f682e23ce3f3f5ab8d91" +checksum = "4e394bf07dc65a0f15eee42a5410a6e975def23c498cc7ecd38e19c286866aea" dependencies = [ "itoa", "oxc_allocator", @@ -2752,12 +2751,6 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" -[[package]] -name = "simdutf8" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" - [[package]] name = "siphasher" version = "1.0.1" diff --git a/crates/brk_computer/src/states/outputs/mod.rs b/crates/brk_computer/src/states/outputs/mod.rs index 3af2035ad..7f7f15c29 100644 --- a/crates/brk_computer/src/states/outputs/mod.rs +++ b/crates/brk_computer/src/states/outputs/mod.rs @@ -36,7 +36,7 @@ use super::{BlockState, Transacted}; pub struct Outputs { pub all: T, pub by_term: OutputsByTerm, - // pub by_up_to: OutputsByUpTo, + pub by_up_to: OutputsByUpTo, pub by_from: OutputsByFrom, pub by_range: OutputsByRange, pub by_epoch: OutputsByEpoch, @@ -51,7 +51,7 @@ impl Outputs { [&mut self.all] .into_iter() .chain(self.by_term.as_mut_vec()) - // .chain(self.by_up_to.as_mut_vec()) + .chain(self.by_up_to.as_mut_vec()) .chain(self.by_from.as_mut_vec()) .chain(self.by_range.as_mut_vec()) .chain(self.by_epoch.as_mut_vec()) @@ -73,7 +73,7 @@ impl Outputs<(OutputFilter, vecs::utxos::cohort::Vecs)> { self.by_term .as_mut_vec() .into_par_iter() - // .chain(self.by_up_to.as_mut_vec()) + .chain(self.by_up_to.as_mut_vec()) .chain(self.by_from.as_mut_vec()) .chain(self.by_range.as_mut_vec()) .for_each(|(filter, v)| { @@ -126,7 +126,7 @@ impl Outputs<(OutputFilter, vecs::utxos::cohort::Vecs)> { .by_term .as_mut_vec() .into_iter() - // .chain(self.by_up_to.as_mut_vec()) + .chain(self.by_up_to.as_mut_vec()) .chain(self.by_from.as_mut_vec()) .chain(self.by_range.as_mut_vec()) .chain(self.by_epoch.as_mut_vec()) @@ -187,7 +187,7 @@ impl Outputs<(OutputFilter, vecs::utxos::cohort::Vecs)> { // Skip from and range as can't receive in the past ] .into_iter() - // .chain(self.by_up_to.as_mut_vec().map(|(_, v)| v)) + .chain(self.by_up_to.as_mut_vec().map(|(_, v)| v)) .for_each(|v| { v.state.increment(&supply_state, price); }); @@ -222,7 +222,7 @@ impl Outputs<(OutputFilter, T)> { [&self.all.1] .into_iter() .chain(self.by_term.vecs()) - // .chain(self.by_up_to.vecs()) + .chain(self.by_up_to.vecs()) .chain(self.by_from.vecs()) .chain(self.by_range.vecs()) .chain(self.by_epoch.vecs()) @@ -238,7 +238,7 @@ impl From> for Outputs<(OutputFilter, T)> { Self { all: (OutputFilter::All, value.all), by_term: OutputsByTerm::from(value.by_term), - // by_up_to: OutputsByUpTo::from(value.by_up_to), + by_up_to: OutputsByUpTo::from(value.by_up_to), by_from: OutputsByFrom::from(value.by_from), by_range: OutputsByRange::from(value.by_range), by_epoch: OutputsByEpoch::from(value.by_epoch), diff --git a/crates/brk_computer/src/vecs/utxos/cohort.rs b/crates/brk_computer/src/vecs/utxos/cohort.rs index b93f09d22..47085576b 100644 --- a/crates/brk_computer/src/vecs/utxos/cohort.rs +++ b/crates/brk_computer/src/vecs/utxos/cohort.rs @@ -117,7 +117,7 @@ impl Vecs { path, &suffix("realized_price"), true, - VERSION + Version::ZERO + version, + VERSION + Version::new(2) + version, compressed, StorableVecGeneatorOptions::default().add_last(), ) @@ -128,7 +128,7 @@ impl Vecs { path, &suffix("realized_price"), false, - VERSION + Version::ZERO, + VERSION + Version::new(2) + version, compressed, StorableVecGeneatorOptions::default().add_last(), ) diff --git a/crates/brk_computer/src/vecs/utxos/mod.rs b/crates/brk_computer/src/vecs/utxos/mod.rs index 21a9b7b63..b9385d2d9 100644 --- a/crates/brk_computer/src/vecs/utxos/mod.rs +++ b/crates/brk_computer/src/vecs/utxos/mod.rs @@ -12,7 +12,7 @@ use rayon::prelude::*; use crate::states::{ BlockState, OutputFilter, Outputs, OutputsByEpoch, OutputsByFrom, OutputsByRange, - OutputsBySize, OutputsBySpendableType, OutputsByTerm, SupplyState, Transacted, + OutputsBySize, OutputsBySpendableType, OutputsByTerm, OutputsByUpTo, SupplyState, Transacted, }; use super::{ @@ -101,152 +101,152 @@ impl Vecs { fetched, )?, }, - // by_up_to: OutputsByUpTo { - // _1d: cohort::Vecs::forced_import( - // path, - // Some("up_to_1d"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _1w: cohort::Vecs::forced_import( - // path, - // Some("up_to_1w"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _1m: cohort::Vecs::forced_import( - // path, - // Some("up_to_1m"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _2m: cohort::Vecs::forced_import( - // path, - // Some("up_to_2m"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _3m: cohort::Vecs::forced_import( - // path, - // Some("up_to_3m"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _4m: cohort::Vecs::forced_import( - // path, - // Some("up_to_4m"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _5m: cohort::Vecs::forced_import( - // path, - // Some("up_to_5m"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _6m: cohort::Vecs::forced_import( - // path, - // Some("up_to_6m"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _1y: cohort::Vecs::forced_import( - // path, - // Some("up_to_1y"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _2y: cohort::Vecs::forced_import( - // path, - // Some("up_to_2y"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _3y: cohort::Vecs::forced_import( - // path, - // Some("up_to_3y"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _4y: cohort::Vecs::forced_import( - // path, - // Some("up_to_4y"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _5y: cohort::Vecs::forced_import( - // path, - // Some("up_to_5y"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _6y: cohort::Vecs::forced_import( - // path, - // Some("up_to_6y"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _7y: cohort::Vecs::forced_import( - // path, - // Some("up_to_7y"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _8y: cohort::Vecs::forced_import( - // path, - // Some("up_to_8y"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _10y: cohort::Vecs::forced_import( - // path, - // Some("up_to_10y"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // _15y: cohort::Vecs::forced_import( - // path, - // Some("up_to_15y"), - // _computation, - // compressed, - // VERSION + Version::ZERO, - // fetched, - // )?, - // }, + by_up_to: OutputsByUpTo { + _1d: cohort::Vecs::forced_import( + path, + Some("up_to_1d"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _1w: cohort::Vecs::forced_import( + path, + Some("up_to_1w"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _1m: cohort::Vecs::forced_import( + path, + Some("up_to_1m"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _2m: cohort::Vecs::forced_import( + path, + Some("up_to_2m"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _3m: cohort::Vecs::forced_import( + path, + Some("up_to_3m"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _4m: cohort::Vecs::forced_import( + path, + Some("up_to_4m"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _5m: cohort::Vecs::forced_import( + path, + Some("up_to_5m"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _6m: cohort::Vecs::forced_import( + path, + Some("up_to_6m"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _1y: cohort::Vecs::forced_import( + path, + Some("up_to_1y"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _2y: cohort::Vecs::forced_import( + path, + Some("up_to_2y"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _3y: cohort::Vecs::forced_import( + path, + Some("up_to_3y"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _4y: cohort::Vecs::forced_import( + path, + Some("up_to_4y"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _5y: cohort::Vecs::forced_import( + path, + Some("up_to_5y"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _6y: cohort::Vecs::forced_import( + path, + Some("up_to_6y"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _7y: cohort::Vecs::forced_import( + path, + Some("up_to_7y"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _8y: cohort::Vecs::forced_import( + path, + Some("up_to_8y"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _10y: cohort::Vecs::forced_import( + path, + Some("up_to_10y"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + _15y: cohort::Vecs::forced_import( + path, + Some("up_to_15y"), + _computation, + compressed, + VERSION + Version::ZERO, + fetched, + )?, + }, by_from: OutputsByFrom { _1d: cohort::Vecs::forced_import( path, @@ -1191,14 +1191,18 @@ impl Vecs { let mut flat_vecs_ = self.utxos_vecs.as_mut_vec(); + info!("Flushing..."); + // Flush rest of values flat_vecs_ - .iter_mut() + .par_iter_mut() .try_for_each(|(_, v)| v.safe_flush_height_vecs(exit))?; self.height_to_unspendable_supply.safe_flush(exit)?; + info!("Computing rest..."); + // Compute other vecs from height vecs - flat_vecs_.iter_mut().try_for_each(|(_, v)| { + flat_vecs_.par_iter_mut().try_for_each(|(_, v)| { v.compute_rest(indexer, indexes, fetched, starting_indexes, exit) })?; self.indexes_to_unspendable_supply.compute_rest( @@ -1210,6 +1214,8 @@ impl Vecs { Some(&self.height_to_unspendable_supply), )?; + info!("Chain state..."); + // Save chain state self.chain_state.truncate_if_needed(Height::ZERO)?; mem::take(&mut chain_state) diff --git a/crates/brk_core/src/structs/dollars.rs b/crates/brk_core/src/structs/dollars.rs index 2a94ed41f..d4ad32d74 100644 --- a/crates/brk_core/src/structs/dollars.rs +++ b/crates/brk_core/src/structs/dollars.rs @@ -1,4 +1,5 @@ use std::{ + cmp::Ordering, f64, ops::{Add, AddAssign, Div, Mul}, }; @@ -88,35 +89,55 @@ impl Add for Dollars { impl Div for Dollars { type Output = StoredF64; fn div(self, rhs: Dollars) -> Self::Output { - StoredF64::from(self.0 / rhs.0) + if self.is_nan() { + StoredF64::from(self.0) + } else { + StoredF64::from(self.0 / rhs.0) + } } } impl Div> for Dollars { type Output = StoredF64; fn div(self, rhs: Close) -> Self::Output { - StoredF64::from(self.0 / rhs.0) + if self.is_nan() { + StoredF64::from(self.0) + } else { + StoredF64::from(self.0 / rhs.0) + } } } impl Div for Close { type Output = StoredF64; fn div(self, rhs: Dollars) -> Self::Output { - StoredF64::from(self.0 / rhs.0) + if self.is_nan() { + StoredF64::from(self.0) + } else { + StoredF64::from(self.0 / rhs.0) + } } } impl Div for Dollars { type Output = Self; fn div(self, rhs: usize) -> Self::Output { - Self::from(Cents::from(self) / rhs) + if self.is_nan() { + self + } else { + Self::from(Cents::from(self) / rhs) + } } } impl Div for Dollars { type Output = Self; fn div(self, rhs: Bitcoin) -> Self::Output { - Self(f64::from(self) / f64::from(rhs)) + if self.is_nan() { + self + } else { + Self(f64::from(self) / f64::from(rhs)) + } } } @@ -125,16 +146,26 @@ impl Eq for Dollars {} #[allow(clippy::derive_ord_xor_partial_ord)] impl Ord for Dollars { fn cmp(&self, other: &Self) -> std::cmp::Ordering { - self.0.partial_cmp(&other.0).unwrap() + match (self.0.is_nan(), other.0.is_nan()) { + (true, true) => Ordering::Equal, + (true, false) => Ordering::Less, + (false, true) => Ordering::Greater, + (false, false) => self.0.partial_cmp(&other.0).unwrap(), + } } } impl Mul for Dollars { type Output = Self; fn mul(self, rhs: Bitcoin) -> Self::Output { - Self::from(Cents::from( - u128::from(Sats::from(rhs)) * u128::from(Cents::from(self)) / u128::from(Sats::ONE_BTC), - )) + if self.is_nan() { + self + } else { + Self::from(Cents::from( + u128::from(Sats::from(rhs)) * u128::from(Cents::from(self)) + / u128::from(Sats::ONE_BTC), + )) + } } } @@ -142,7 +173,7 @@ impl Mul for Dollars { type Output = Self; fn mul(self, rhs: StoredF32) -> Self::Output { if rhs.is_nan() { - Self(f64::NAN) + self } else { Self::from(Cents::from(Self::from(self.0 * *rhs as f64))) } @@ -152,7 +183,11 @@ impl Mul for Dollars { impl Mul for Dollars { type Output = Self; fn mul(self, rhs: usize) -> Self::Output { - Self::from(Cents::from(self) * rhs) + if self.is_nan() { + self + } else { + Self::from(Cents::from(self) * rhs) + } } } @@ -182,9 +217,13 @@ impl AddAssign for Dollars { impl CheckedSub for Dollars { fn checked_sub(self, rhs: Self) -> Option { - Cents::from(self) - .checked_sub(Cents::from(rhs)) - .map(Dollars::from) + if self.is_nan() { + Some(self) + } else { + Cents::from(self) + .checked_sub(Cents::from(rhs)) + .map(Dollars::from) + } } } diff --git a/crates/brk_core/src/structs/stored_f32.rs b/crates/brk_core/src/structs/stored_f32.rs index 595fdf02f..4116782a8 100644 --- a/crates/brk_core/src/structs/stored_f32.rs +++ b/crates/brk_core/src/structs/stored_f32.rs @@ -1,4 +1,7 @@ -use std::ops::{Add, Div, Mul, Sub}; +use std::{ + cmp::Ordering, + ops::{Add, Div, Mul, Sub}, +}; use derive_deref::Deref; use serde::Serialize; @@ -79,7 +82,12 @@ impl Eq for StoredF32 {} #[allow(clippy::derive_ord_xor_partial_ord)] impl Ord for StoredF32 { fn cmp(&self, other: &Self) -> std::cmp::Ordering { - self.0.partial_cmp(&other.0).unwrap() + match (self.0.is_nan(), other.0.is_nan()) { + (true, true) => Ordering::Equal, + (true, false) => Ordering::Less, + (false, true) => Ordering::Greater, + (false, false) => self.0.partial_cmp(&other.0).unwrap(), + } } } diff --git a/crates/brk_core/src/structs/stored_f64.rs b/crates/brk_core/src/structs/stored_f64.rs index e81da2ccb..95f82726e 100644 --- a/crates/brk_core/src/structs/stored_f64.rs +++ b/crates/brk_core/src/structs/stored_f64.rs @@ -1,4 +1,7 @@ -use std::ops::{Add, Div, Mul}; +use std::{ + cmp::Ordering, + ops::{Add, Div, Mul}, +}; use derive_deref::Deref; use serde::Serialize; @@ -72,7 +75,12 @@ impl Eq for StoredF64 {} #[allow(clippy::derive_ord_xor_partial_ord)] impl Ord for StoredF64 { fn cmp(&self, other: &Self) -> std::cmp::Ordering { - self.0.partial_cmp(&other.0).unwrap() + match (self.0.is_nan(), other.0.is_nan()) { + (true, true) => Ordering::Equal, + (true, false) => Ordering::Less, + (false, true) => Ordering::Greater, + (false, false) => self.0.partial_cmp(&other.0).unwrap(), + } } } diff --git a/crates/brk_server/Cargo.toml b/crates/brk_server/Cargo.toml index bc8c9710e..056c253c6 100644 --- a/crates/brk_server/Cargo.toml +++ b/crates/brk_server/Cargo.toml @@ -23,7 +23,7 @@ color-eyre = { workspace = true } jiff = { workspace = true } log = { workspace = true } minreq = { workspace = true } -oxc = { version = "0.71.0", features = ["codegen", "minifier"] } +oxc = { version = "0.72.0", features = ["codegen", "minifier"] } serde = { workspace = true } tokio = { version = "1.45.0", features = ["full"] } tower-http = { version = "0.6.4", features = ["compression-full", "trace"] } diff --git a/crates/brk_vec/src/variants/eager.rs b/crates/brk_vec/src/variants/eager.rs index 4b836887b..010ed41bb 100644 --- a/crates/brk_vec/src/variants/eager.rs +++ b/crates/brk_vec/src/variants/eager.rs @@ -267,7 +267,9 @@ where let mut divider_iter = divider.iter(); divided.iter_at(index).try_for_each(|(i, divided)| { - let v = (divided.into_inner() / divider_iter.unwrap_get_inner(i) * multiplier) + let divided = divided.into_inner(); + let divider = divider_iter.unwrap_get_inner(i); + let v = (divided / divider * multiplier) .checked_sub(subtract) .unwrap(); self.forced_push_at(i, T::from(v), exit) diff --git a/websites/kibo.money/packages/lightweight-charts/wrapper.js b/websites/kibo.money/packages/lightweight-charts/wrapper.js index 7db33ed72..66cfd5795 100644 --- a/websites/kibo.money/packages/lightweight-charts/wrapper.js +++ b/websites/kibo.money/packages/lightweight-charts/wrapper.js @@ -420,7 +420,7 @@ export default import("./v5.0.6-treeshaked/script.js").then((lc) => { const paneIndex = _paneIndex ?? 0; - color ||= unit === "USD" ? colors.dollars : colors.bitcoin; + color ||= unit === "USD" ? colors.green : colors.orange; const series = ichart.addSeries( /** @type {SeriesDefinition<'Line'>} */ (lc.LineSeries), diff --git a/websites/kibo.money/scripts/chart.js b/websites/kibo.money/scripts/chart.js index 6872d5131..3e8933620 100644 --- a/websites/kibo.money/scripts/chart.js +++ b/websites/kibo.money/scripts/chart.js @@ -293,7 +293,7 @@ export function init({ */ function createIndexSelector({ elements, signals, utils }) { const { field, selected } = utils.dom.createHorizontalChoiceField({ - title: "Index", + // title: "Index", defaultValue: "date", keyPrefix: "charts", key: "index", diff --git a/websites/kibo.money/scripts/main.js b/websites/kibo.money/scripts/main.js index b0108ae9a..41bb5245a 100644 --- a/websites/kibo.money/scripts/main.js +++ b/websites/kibo.money/scripts/main.js @@ -1603,63 +1603,61 @@ function createColors(dark, elements) { default: textColor, gray, border: borderColor, - lightBitcoin: yellow, - bitcoin: orange, - offBitcoin: red, - lightDollars: lime, - dollars: green, - offDollars: emerald, + // dollars: green, + // offDollars: emerald, - yellow, - lime, - orange, red, + orange, + amber, + yellow, + avocado, + lime, + green, + emerald, + teal, + cyan, sky, blue, - emerald, - rose, - green, - amber, - avocado, - cyan, + indigo, violet, purple, fuchsia, pink, + rose, - _1d: pink, - _1w: red, - _8d: orange, - _13d: amber, - _21d: yellow, - _1m: lime, - _34d: green, - _55d: emerald, - _89d: teal, - _144d: cyan, - _6m: sky, - _1y: blue, - _2y: indigo, - _200w: violet, - _4y: purple, - _10y: fuchsia, + // _1d: pink, + // _1w: red, + // _8d: orange, + // _13d: amber, + // _21d: yellow, + // _1m: lime, + // _34d: green, + // _55d: emerald, + // _89d: teal, + // _144d: cyan, + // _6m: sky, + // _1y: blue, + // _2y: indigo, + // _200w: violet, + // _4y: purple, + // _10y: fuchsia, - 2015: pink, - 2016: red, - 2017: orange, - 2018: amber, - 2019: yellow, - 2020: lime, - 2021: green, - 2022: emerald, - 2023: teal, - 2024: cyan, - 2025: sky, - 2026: blue, - 2027: indigo, - 2028: violet, - 2029: purple, - 2030: fuchsia, + // 2015: pink, + // 2016: red, + // 2017: orange, + // 2018: amber, + // 2019: yellow, + // 2020: lime, + // 2021: green, + // 2022: emerald, + // 2023: teal, + // 2024: cyan, + // 2025: sky, + // 2026: blue, + // 2027: indigo, + // 2028: violet, + // 2029: purple, + // 2030: fuchsia, // r1d: pink, // r1w: red, @@ -1675,92 +1673,92 @@ function createColors(dark, elements) { // r8y: purple, // r10y: fuchsia, - p2pk: lime, - p2pkh: violet, - p2sh: emerald, - p2wpkh: cyan, - p2wsh: pink, - p2tr: blue, - crab: red, - fish: lime, - humpback: violet, - plankton: emerald, - shark: cyan, - shrimp: pink, - whale: blue, - megalodon: purple, - realizedPrice: orange, - oneMonthHolders: cyan, - threeMonthsHolders: lime, - sth: yellow, - sixMonthsHolder: red, - oneYearHolders: pink, - twoYearsHolders: purple, - lth: fuchsia, - balancedPrice: yellow, - cointimePrice: yellow, - trueMarketMeanPrice: blue, - vaultedPrice: green, - cvdd: lime, - terminalPrice: red, - loss: red, - profit: green, - thermoCap: green, - investorCap: rose, - realizedCap: orange, - offLiveliness: red, - liveliness: rose, - vaultedness: green, - activityToVaultednessRatio: violet, - up_to_1d: pink, - up_to_1w: red, - up_to_1m: orange, - up_to_2m: amber, - up_to_3m: yellow, - up_to_4m: lime, - up_to_5m: green, - up_to_6m: teal, - up_to_1y: sky, - up_to_2y: indigo, - up_to_3y: violet, - up_to_4y: purple, - up_to_5y: red, - up_to_7y: orange, - up_to_10y: amber, - up_to_15y: yellow, - from_10y_to_15y: purple, - from_7y_to_10y: violet, - from_5y_to_7y: indigo, - from_3y_to_5y: sky, - from_2y_to_3y: teal, - from_1y_to_2y: green, - from_6m_to_1y: lime, - from_3m_to_6m: yellow, - from_1m_to_3m: amber, - from_1w_to_1m: orange, - from_1d_to_1w: red, - from_1y: green, - from_2y: teal, - from_4y: indigo, - from_10y: violet, - from_15y: fuchsia, - coinblocksCreated: purple, - coinblocksDestroyed: red, - coinblocksStored: green, - momentumGreen: green, - momentumYellow: yellow, - momentumRed: red, - probability0_1p: red, - probability0_5p: orange, - probability1p: yellow, - epoch_1: red, - epoch_2: orange, - epoch_3: yellow, - epoch_4: green, - epoch_5: blue, - highly_liquid: red, - liquid: lime, - illiquid: cyan, + // p2pk: lime, + // p2pkh: violet, + // p2sh: emerald, + // p2wpkh: cyan, + // p2wsh: pink, + // p2tr: blue, + // crab: red, + // fish: lime, + // humpback: violet, + // plankton: emerald, + // shark: cyan, + // shrimp: pink, + // whale: blue, + // megalodon: purple, + // realizedPrice: orange, + // oneMonthHolders: cyan, + // threeMonthsHolders: lime, + // sth: yellow, + // sixMonthsHolder: red, + // oneYearHolders: pink, + // twoYearsHolders: purple, + // lth: fuchsia, + // balancedPrice: yellow, + // cointimePrice: yellow, + // trueMarketMeanPrice: blue, + // vaultedPrice: green, + // cvdd: lime, + // terminalPrice: red, + // loss: red, + // profit: green, + // thermoCap: green, + // investorCap: rose, + // realizedCap: orange, + // offLiveliness: red, + // liveliness: rose, + // vaultedness: green, + // activityToVaultednessRatio: violet, + // up_to_1d: pink, + // up_to_1w: red, + // up_to_1m: orange, + // up_to_2m: amber, + // up_to_3m: yellow, + // up_to_4m: lime, + // up_to_5m: green, + // up_to_6m: teal, + // up_to_1y: sky, + // up_to_2y: indigo, + // up_to_3y: violet, + // up_to_4y: purple, + // up_to_5y: red, + // up_to_7y: orange, + // up_to_10y: amber, + // up_to_15y: yellow, + // from_10y_to_15y: purple, + // from_7y_to_10y: violet, + // from_5y_to_7y: indigo, + // from_3y_to_5y: sky, + // from_2y_to_3y: teal, + // from_1y_to_2y: green, + // from_6m_to_1y: lime, + // from_3m_to_6m: yellow, + // from_1m_to_3m: amber, + // from_1w_to_1m: orange, + // from_1d_to_1w: red, + // from_1y: green, + // from_2y: teal, + // from_4y: indigo, + // from_10y: violet, + // from_15y: fuchsia, + // coinblocksCreated: purple, + // coinblocksDestroyed: red, + // coinblocksStored: green, + // momentumGreen: green, + // momentumYellow: yellow, + // momentumRed: red, + // probability0_1p: red, + // probability0_5p: orange, + // probability1p: yellow, + // epoch_1: red, + // epoch_2: orange, + // epoch_3: yellow, + // epoch_4: green, + // epoch_5: blue, + // highly_liquid: red, + // liquid: lime, + // illiquid: cyan, }; } /** diff --git a/websites/kibo.money/scripts/options.js b/websites/kibo.money/scripts/options.js index a5092febb..c70d898e6 100644 --- a/websites/kibo.money/scripts/options.js +++ b/websites/kibo.money/scripts/options.js @@ -179,23 +179,552 @@ function createPartialOptions(colors) { */ const averages = /** @type {const} */ ([ - { name: "1 Week", key: "1w", days: 7 }, - { name: "8 Days", key: "8d", days: 8 }, - { name: "13 Days", key: "13d", days: 13 }, - { name: "21 Days", key: "21d", days: 21 }, - { name: "1 Month", key: "1m", days: 30 }, - { name: "34 Days", key: "34d", days: 34 }, - { name: "55 Days", key: "55d", days: 55 }, - { name: "89 Days", key: "89d", days: 89 }, - { name: "144 Days", key: "144d", days: 144 }, - { name: "1 Year", key: "1y", days: 365 }, - { name: "2 Years", key: "2y", days: 2 * 365 }, - { name: "200 Weeks", key: "200w", days: 200 * 7 }, - { name: "4 Years", key: "4y", days: 4 * 365 }, + { name: "1 Week", key: "1w", days: 7, color: colors.orange }, + { name: "8 Days", key: "8d", days: 8, color: colors.amber }, + { name: "13 Days", key: "13d", days: 13, color: colors.yellow }, + { name: "21 Days", key: "21d", days: 21, color: colors.lime }, + { name: "1 Month", key: "1m", days: 30, color: colors.green }, + { name: "34 Days", key: "34d", days: 34, color: colors.emerald }, + { name: "55 Days", key: "55d", days: 55, color: colors.teal }, + { name: "89 Days", key: "89d", days: 89, color: colors.cyan }, + { name: "144 Days", key: "144d", days: 144, color: colors.sky }, + { name: "1 Year", key: "1y", days: 365, color: colors.blue }, + { name: "2 Years", key: "2y", days: 2 * 365, color: colors.indigo }, + { name: "200 Weeks", key: "200w", days: 200 * 7, color: colors.violet }, + { name: "4 Years", key: "4y", days: 4 * 365, color: colors.purple }, ]); const dcaClasses = /** @type {const} */ ([ - 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, + { year: 2015, color: colors.pink, defaultActive: false }, + { year: 2016, color: colors.red, defaultActive: false }, + { year: 2017, color: colors.orange, defaultActive: true }, + { year: 2018, color: colors.yellow, defaultActive: true }, + { year: 2019, color: colors.green, defaultActive: true }, + { year: 2020, color: colors.teal, defaultActive: true }, + { year: 2021, color: colors.sky, defaultActive: true }, + { year: 2022, color: colors.blue, defaultActive: true }, + { year: 2023, color: colors.purple, defaultActive: true }, + { year: 2024, color: colors.fuchsia, defaultActive: true }, + { year: 2025, color: colors.pink, defaultActive: true }, + ]); + + const terms = /** @type {const} */ ([ + { + key: "sth", + name: "short", + title: "Short Term Holders", + color: colors.yellow, + }, + { + key: "lth", + name: "long", + title: "Long Term Holders", + color: colors.fuchsia, + }, + ]); + + const upTo = /** @type {const} */ ([ + { + key: "up-to-1d", + name: "1d", + title: "Up to 1 Day", + color: colors.pink, + }, + { + key: "up-to-1w", + name: "1w", + title: "Up to 1 Week", + color: colors.red, + }, + { + key: "up-to-1m", + name: "1m", + title: "Up to 1 Month", + color: colors.orange, + }, + { + key: "up-to-2m", + name: "2m", + title: "Up to 2 Months", + color: colors.amber, + }, + { + key: "up-to-3m", + name: "3m", + title: "Up to 3 Months", + color: colors.yellow, + }, + { + key: "up-to-4m", + name: "4m", + title: "Up to 4 Months", + color: colors.lime, + }, + { + key: "up-to-5m", + name: "5m", + title: "Up to 5 Months", + color: colors.green, + }, + { + key: "up-to-6m", + name: "6m", + title: "Up to 6 Months", + color: colors.teal, + }, + { + key: "up-to-1y", + name: "1y", + title: "Up to 1 Year", + color: colors.sky, + }, + { + key: "up-to-2y", + name: "2y", + title: "Up to 2 Years", + color: colors.indigo, + }, + { + key: "up-to-3y", + name: "3y", + title: "Up to 3 Years", + color: colors.violet, + }, + { + key: "up-to-4y", + name: "4y", + title: "Up to 4 Years", + color: colors.purple, + }, + { + key: "up-to-5y", + name: "5y", + title: "Up to 5 Years", + color: colors.fuchsia, + }, + { + key: "up-to-6y", + name: "6y", + title: "Up to 6 Years", + color: colors.pink, + }, + { + key: "up-to-7y", + name: "7y", + title: "Up to 7 Years", + color: colors.red, + }, + { + key: "up-to-8y", + name: "8y", + title: "Up to 8 Years", + color: colors.orange, + }, + { + key: "up-to-10y", + name: "10y", + title: "Up to 10 Years", + color: colors.amber, + }, + { + key: "up-to-15y", + name: "15y", + title: "Up to 15 Years", + color: colors.yellow, + }, + ]); + + const from = /** @type {const} */ ([ + { + key: "from-1d", + name: "1d", + title: "From 1 Day", + color: colors.red, + }, + { + key: "from-1w", + name: "1w", + title: "From 1 Week", + color: colors.orange, + }, + { + key: "from-1m", + name: "1m", + title: "From 1 Month", + color: colors.yellow, + }, + { + key: "from-2m", + name: "2m", + title: "From 2 Months", + color: colors.lime, + }, + { + key: "from-3m", + name: "3m", + title: "From 3 Months", + color: colors.green, + }, + { + key: "from-4m", + name: "4m", + title: "From 4 Months", + color: colors.teal, + }, + { + key: "from-5m", + name: "5m", + title: "From 5 Months", + color: colors.cyan, + }, + { + key: "from-6m", + name: "6m", + title: "From 6 Months", + color: colors.blue, + }, + { + key: "from-1y", + name: "1y", + title: "From 1 Year", + color: colors.indigo, + }, + { + key: "from-2y", + name: "2y", + title: "From 2 Years", + color: colors.violet, + }, + { + key: "from-3y", + name: "3y", + title: "From 3 Years", + color: colors.purple, + }, + { + key: "from-4y", + name: "4y", + title: "From 4 Years", + color: colors.fuchsia, + }, + { + key: "from-5y", + name: "5y", + title: "From 5 Years", + color: colors.pink, + }, + { + key: "from-6y", + name: "6y", + title: "From 6 Years", + color: colors.rose, + }, + { + key: "from-7y", + name: "7y", + title: "From 7 Years", + color: colors.red, + }, + { + key: "from-8y", + name: "8y", + title: "From 8 Years", + color: colors.orange, + }, + { + key: "from-10y", + name: "10y", + title: "From 10 Years", + color: colors.yellow, + }, + { + key: "from-15y", + name: "15y", + title: "From 15 Years", + color: colors.lime, + }, + ]); + + const range = /** @type {const} */ ([ + { + key: "up-to-1d", + name: "24h", + title: "Last 24 hours", + color: colors.pink, + }, + { + key: "from-1d-to-1w", + name: "1d..1w", + title: "From 1 Day ago to 1 Week ago", + color: colors.red, + }, + { + key: "from-1w-to-1m", + name: "1w..1m", + title: "From 1 Week ago to 1 Month ago", + color: colors.orange, + }, + { + key: "from-1m-to-3m", + name: "1m..3m", + title: "From 1 Month ago to 3 Months ago", + color: colors.yellow, + }, + { + key: "from-3m-to-6m", + name: "3m..6m", + title: "From 3 Month ago to 6 Months ago", + color: colors.lime, + }, + { + key: "from-6m-to-1y", + name: "6m..1y", + title: "From 6 Months ago to 1 Year ago", + color: colors.green, + }, + { + key: "from-1y-to-2y", + name: "1y..2y", + title: "From 1 Year ago to 2 Years ago", + color: colors.cyan, + }, + { + key: "from-2y-to-3y", + name: "2y..3y", + title: "From 2 Years ago to 3 Years ago", + color: colors.blue, + }, + { + key: "from-3y-to-4y", + name: "3y..4y", + title: "From 3 Years ago to 4 Years ago", + color: colors.indigo, + }, + { + key: "from-4y-to-5y", + name: "4y..5y", + title: "From 4 Years ago to 5 Years ago", + color: colors.violet, + }, + { + key: "from-5y-to-7y", + name: "5y..7y", + title: "From 5 Years ago to 7 Years ago", + color: colors.purple, + }, + { + key: "from-7y-to-10y", + name: "7y..10y", + title: "From 7 Years ago to 10 Years ago", + color: colors.fuchsia, + }, + { + key: "from-10y-to-15y", + name: "10y..15y", + title: "From 10 Years ago to 15 Years ago", + color: colors.pink, + }, + { + key: "from-15y", + name: "15y+", + title: "From 15 Years ago to genesis (2009-01-03)", + color: colors.red, + }, + ]); + + const epoch = /** @type {const} */ ([ + { + key: "epoch-0", + name: "0", + title: "Epoch 0", + color: colors.red, + }, + { + key: "epoch-1", + name: "1", + title: "Epoch 1", + color: colors.yellow, + }, + { + key: "epoch-2", + name: "2", + title: "Epoch 2", + color: colors.orange, + }, + { + key: "epoch-3", + name: "3", + title: "Epoch 3", + color: colors.lime, + }, + { + key: "epoch-4", + name: "4", + title: "Epoch 4", + color: colors.green, + }, + ]); + + const size = /** @type {const } */ ([ + { + key: "0sat", + name: "0sat", + title: "0 sat", + color: colors.red, + }, + { + key: "from-1sat-to-10sats", + name: "1sat..10sats", + title: "From 1 sat to 10 sats", + color: colors.orange, + }, + { + key: "from-10sats-to-100sats", + name: "10sat..100sats", + title: "From 10 sats to 100 sats", + color: colors.yellow, + }, + { + key: "from-100sats-to-1-000sats", + name: "100sat..1_000sats", + title: "From 100 sats to 1,000 sats", + color: colors.lime, + }, + { + key: "from-1-000sats-to-10-000sats", + name: "1_000sat..10_000sats", + title: "From 1,000 sats to 10,000 sats", + color: colors.green, + }, + { + key: "from-10-000sats-to-100-000sats", + name: "10_000sat..100_000sats", + title: "From 10,000 sats to 100,000 sats", + color: colors.cyan, + }, + { + key: "from-100-000sats-to-1-000-000sats", + name: "100_000sat..1_000_000sats", + title: "From 100,000 sats to 1,000,000 sats", + color: colors.blue, + }, + { + key: "from-1-000-000sats-to-10-000-000sats", + name: "1_000_000sat..10_000_000sats", + title: "From 1,000,000 sats to 10,000,000 sats", + color: colors.indigo, + }, + { + key: "from-10-000-000sats-to-1btc", + name: "10_000_000sat..1btc", + title: "From 10,000,000 sats to 1 BTC", + color: colors.purple, + }, + { + key: "from-1btc-to-10btc", + name: "1btc..10btc", + title: "From 1 BTC to 10 BTC", + color: colors.violet, + }, + { + key: "from-10btc-to-100btc", + name: "10btc..100btc", + title: "From 10 BTC to 100 BTC", + color: colors.fuchsia, + }, + { + key: "from-100btc-to-1-000btc", + name: "100btc..1_000btc", + title: "From 100 BTC to 1,000 BTC", + color: colors.pink, + }, + { + key: "from-1-000btc-to-10-000btc", + name: "1_000btc..10_000btc", + title: "From 1,000 BTC to 10,000 BTC", + color: colors.red, + }, + { + key: "from-10-000btc-to-100-000btc", + name: "10_000btc..100_000btc", + title: "From 10,000 BTC to 100,000 BTC", + color: colors.orange, + }, + { + key: "from-100-000btc", + name: "100_000btc+", + title: "From 100,000 BTC", + color: colors.yellow, + }, + ]); + + const type = /** @type {const} */ ([ + { + key: "p2pk65", + name: "p2pk65", + title: "Pay To Long Public Key", + color: colors.red, + }, + { + key: "p2pk33", + name: "p2pk33", + title: "Pay To Short Public Key", + color: colors.orange, + }, + { + key: "p2pkh", + name: "p2pkh", + title: "Pay To Public Key Hash", + color: colors.yellow, + }, + { + key: "p2ms", + name: "p2ms", + title: "Pay To Bare Multisig", + color: colors.lime, + }, + { + key: "p2sh", + name: "p2sh", + title: "Pay To Script Hash", + color: colors.green, + }, + { + key: "p2wpkh", + name: "p2wpkh", + title: "Pay To Witness Public Key Hash", + color: colors.teal, + }, + { + key: "p2wsh", + name: "p2wsh", + title: "Pay To Witness Script Hash", + color: colors.blue, + }, + { + key: "p2tr", + name: "p2tr", + title: "Pay To Taproot", + color: colors.indigo, + }, + { + key: "p2a", + name: "p2a", + title: "Pay To Anchor", + color: colors.purple, + }, + { + key: "unknown", + name: "unknown", + title: "Pay To Unknown", + color: colors.violet, + }, + { + key: "empty", + name: "empty", + title: "Pay To Empty", + color: colors.fuchsia, + }, ]); /** @@ -237,12 +766,12 @@ function createPartialOptions(colors) { { key: `${concat}-sum`, title: name ? `${name} Sum` : "Sum", - color: colors.bitcoin, + color: colors.orange, }, { key: `total-${concat}`, title: name ? `Total ${name}` : "Total", - color: colors.offBitcoin, + color: colors.red, defaultActive: false, }, ]); @@ -579,64 +1108,110 @@ function createPartialOptions(colors) { */ /** - * - * @param {Object} args - * @param {string} args.name - * @param {string} args.title - * @param {"" | VecIdRealizedCapBase} args.key + * @typedef {Object} UTXOGroupObject + * @property {string} args.name + * @property {string} args.title + * @property {Color} args.color + * @property {"" | VecIdRealizedCapBase} args.key */ - function createUTXOGroupFolder({ name, title, key: _key }) { - const key = _key - ? /** @type {const} */ (`${_key}-`) - : /** @type {const} */ (""); + + /** + * @typedef {Object} UTXOGroupsObject + * @property {string} args.name + * @property {string} args.title + * @property {readonly UTXOGroupObject[]} args.list + */ + + /** + * @param {UTXOGroupObject | UTXOGroupsObject} args + */ + function createUTXOGroupFolder(args) { + /** + * @template {"" | VecIdRealizedCapBase} T + * @param {T} _key + */ + const fixKey = (_key) => + _key !== "" + ? /** @type {Exclude<"" | `${T}-`, "-">} */ (`${_key}-`) + : /** @type {const} */ (""); + 0; + + const list = "list" in args ? args.list : [args]; + const useGroupName = "list" in args; return /** @satisfies {PartialOptionsGroup} */ ({ - name: name || "all", + name: args.name || "all", tree: [ { name: "supply", - title: `${title} Supply`, - bottom: [ - createBaseSeries({ - key: `${key}supply`, - name: "Supply", - }), - createBaseSeries({ - key: `${key}supply-in-btc`, - name: "Supply", - }), - createBaseSeries({ - key: `${key}supply-in-usd`, - name: "Supply", - }), - ], + title: `${args.title} Supply`, + bottom: list.flatMap(({ color, name, key: _key }) => { + const key = fixKey(_key); + return /** @type {const} */ ([ + createBaseSeries({ + key: `${key}supply`, + name: useGroupName ? name : "Supply", + color: color, + }), + createBaseSeries({ + key: `${key}supply-in-btc`, + name: useGroupName ? name : "Supply", + color, + }), + createBaseSeries({ + key: `${key}supply-in-usd`, + name: useGroupName ? name : "Supply", + }), + ]); + }), }, { name: "utxo count", - title: `${title} UTXO Count`, - bottom: [ - createBaseSeries({ - key: `${key}utxo-count`, - name: "Count", - }), - ], + title: `${args.title} UTXO Count`, + bottom: list.flatMap(({ color, name, key: _key }) => { + const key = fixKey(_key); + return /** @type {const} */ ([ + createBaseSeries({ + key: `${key}utxo-count`, + name: useGroupName ? name : "Count", + color, + }), + ]); + }), }, { name: "realized cap", - title: `${title} Realized Capitalization`, - bottom: [ - createBaseSeries({ - key: `${key}realized-cap`, - name: "Realized Cap", - }), - ], + title: `${args.title} Realized Capitalization`, + bottom: list.flatMap(({ color, name, key: _key }) => { + const key = fixKey(_key); + return /** @type {const} */ ([ + createBaseSeries({ + key: `${key}realized-cap`, + name: useGroupName ? name : "Realized Cap", + color, + }), + ]); + }), }, - createPriceWithRatio({ - key: `${key}realized-price`, - name: "realized price", - legend: "realized", - title: `${title} Realized Price`, - }), + "list" in args + ? { + name: "Realized Price", + title: `${args.title} Realized Prices`, + top: args.list.map(({ color, name, key }) => + createBaseSeries({ + key: `${fixKey(key)}realized-price`, + name, + color, + }), + ), + } + : createPriceWithRatio({ + title: `${args.title} Realized Price`, + key: `${fixKey(args.key)}realized-price`, + name: "realized price", + legend: "realized", + color: args.color, + }), ], }); } @@ -664,70 +1239,72 @@ function createPartialOptions(colors) { }, { name: "All Time High", - tree: [ - { - name: "Value", - title: "All Time High", - top: [ - createBaseSeries({ - key: "ath", - name: "ath", - }), - ], - }, - { - name: "drawdown", - title: "All Time High Drawdown", - top: [ - createBaseSeries({ - key: "ath", - name: "ath", - }), - ], - bottom: [ - createBaseSeries({ - key: "drawdown", - name: "Drawdown", - color: colors.red, - }), - ], - }, - { - name: "days since", - title: "Number of days Since All Time High", - top: [ - createBaseSeries({ - key: "ath", - name: "ath", - }), - ], - bottom: [ - createBaseSeries({ - key: "days-since-ath", - name: "Days", - }), - ], - }, - { - name: "max between", - title: "Maximum time between All Time Highs", - top: [ - createBaseSeries({ - key: "ath", - name: "ath", - }), - ], - bottom: [ - createBaseSeries({ - key: "max-days-between-ath", - name: "Days", - }), - createBaseSeries({ - key: "max-years-between-ath", - name: "Years", - }), - ], - }, + title: "All Time High", + // tree: [ + // { + // name: "Value", + top: [ + createBaseSeries({ + key: "ath", + name: "ath", + }), + ], + // }, + // { + // name: "drawdown", + // title: "All Time High Drawdown", + // top: [ + // createBaseSeries({ + // key: "ath", + // name: "ath", + // }), + // ], + bottom: [ + createBaseSeries({ + key: "drawdown", + name: "Drawdown", + color: colors.red, + }), + // ], + // }, + // { + // name: "days since", + // title: "Number of days Since All Time High", + // top: [ + // createBaseSeries({ + // key: "ath", + // name: "ath", + // }), + // ], + // bottom: [ + createBaseSeries({ + key: "days-since-ath", + name: "Days since", + }), + // ], + // }, + // { + // name: "max between", + // title: "Maximum time between All Time Highs", + // top: [ + // createBaseSeries({ + // key: "ath", + // name: "ath", + // }), + // ], + // bottom: [ + createBaseSeries({ + key: "max-days-between-ath", + name: "Max", + color: colors.red, + }), + createBaseSeries({ + key: "max-years-between-ath", + name: "Max", + color: colors.red, + }), + // ], + // }, ], }, { @@ -736,21 +1313,21 @@ function createPartialOptions(colors) { { name: "Compare", title: "Moving Averages", - top: averages.map(({ days, key, name }) => + top: averages.map(({ days, key, name, color }) => createBaseSeries({ key: `${key}-sma`, name: key, - color: colors[`_${key}`], + color, }), ), }, - ...averages.map(({ key, name }) => + ...averages.map(({ key, name, color }) => createPriceWithRatio({ key: `${key}-sma`, name, title: `${name} Market Price Moving Average`, legend: "average", - color: colors[`_${key}`], + color, }), ), ], @@ -923,16 +1500,17 @@ function createPartialOptions(colors) { { name: "Compare", title: "DCA Classes", - top: dcaClasses.map((year) => + top: dcaClasses.map(({ year, color, defaultActive }) => createBaseSeries({ key: `dca-class-${year}-avg-price`, name: `${year}`, - color: colors[year], + color, + defaultActive, }), ), }, ...dcaClasses.map( - (year) => + ({ year, color }) => /** @satisfies {PartialChartOption} */ ({ name: `${year}`, title: `DCA Since ${year}`, @@ -940,7 +1518,7 @@ function createPartialOptions(colors) { createBaseSeries({ key: `dca-class-${year}-avg-price`, name: `avg. price`, - color: colors[year], + color, }), ], bottom: [ @@ -1478,373 +2056,106 @@ function createPartialOptions(colors) { key: "", name: "", title: "", + color: colors.orange, }), { name: "term", tree: [ createUTXOGroupFolder({ - key: "sth", - name: "short", - title: "Short Term Holders", + name: "Compare", + title: "Compare By Term", + list: terms, }), + ...terms.map(createUTXOGroupFolder), + ], + }, + { + name: "Up to", + tree: [ createUTXOGroupFolder({ - key: "lth", - name: "long", - title: "Long Term Holders", + name: "Compare", + title: "Compare By Up To", + list: upTo, }), + ...upTo.map(createUTXOGroupFolder), ], }, { name: "From", tree: [ createUTXOGroupFolder({ - key: "from-1d", - name: "1d", - title: "From 1 Day", - }), - createUTXOGroupFolder({ - key: "from-1w", - name: "1w", - title: "From 1 Week", - }), - createUTXOGroupFolder({ - key: "from-1m", - name: "1m", - title: "From 1 Month", - }), - createUTXOGroupFolder({ - key: "from-2m", - name: "2m", - title: "From 2 Months", - }), - createUTXOGroupFolder({ - key: "from-3m", - name: "3m", - title: "From 3 Months", - }), - createUTXOGroupFolder({ - key: "from-4m", - name: "4m", - title: "From 4 Months", - }), - createUTXOGroupFolder({ - key: "from-5m", - name: "5m", - title: "From 5 Months", - }), - createUTXOGroupFolder({ - key: "from-6m", - name: "6m", - title: "From 6 Months", - }), - createUTXOGroupFolder({ - key: "from-1y", - name: "1y", - title: "From 1 Year", - }), - createUTXOGroupFolder({ - key: "from-2y", - name: "2y", - title: "From 2 Years", - }), - createUTXOGroupFolder({ - key: "from-3y", - name: "3y", - title: "From 3 Years", - }), - createUTXOGroupFolder({ - key: "from-4y", - name: "4y", - title: "From 4 Years", - }), - createUTXOGroupFolder({ - key: "from-5y", - name: "5y", - title: "From 5 Years", - }), - createUTXOGroupFolder({ - key: "from-6y", - name: "6y", - title: "From 6 Years", - }), - createUTXOGroupFolder({ - key: "from-7y", - name: "7y", - title: "From 7 Years", - }), - createUTXOGroupFolder({ - key: "from-8y", - name: "8y", - title: "From 8 Years", - }), - createUTXOGroupFolder({ - key: "from-10y", - name: "10y", - title: "From 10 Years", - }), - createUTXOGroupFolder({ - key: "from-15y", - name: "15y", - title: "From 15 Years", + name: "Compare", + title: "Compare By From", + list: from, }), + ...from.map(createUTXOGroupFolder), ], }, { name: "Range", tree: [ createUTXOGroupFolder({ - key: "from-1d-to-1w", - name: "1d..1w", - title: "Between 1 Day and 1 Week", - }), - createUTXOGroupFolder({ - key: "from-1w-to-1m", - name: "1w..1m", - title: "Between 1 Week and 1 Month", - }), - createUTXOGroupFolder({ - key: "from-1m-to-3m", - name: "1m..3m", - title: "Between 1 Month and 3 Months", - }), - createUTXOGroupFolder({ - key: "from-3m-to-6m", - name: "3m..6m", - title: "Between 3 Month and 6 Months", - }), - createUTXOGroupFolder({ - key: "from-6m-to-1y", - name: "6m..1y", - title: "Between 6 Months and 1 Year", - }), - createUTXOGroupFolder({ - key: "from-1y-to-2y", - name: "1y..2y", - title: "Between 1 Year and 2 Years", - }), - createUTXOGroupFolder({ - key: "from-2y-to-3y", - name: "2y..3y", - title: "Between 2 Years and 3 Years", - }), - createUTXOGroupFolder({ - key: "from-3y-to-4y", - name: "3y..4y", - title: "Between 3 Years and 4 Years", - }), - createUTXOGroupFolder({ - key: "from-4y-to-5y", - name: "4y..5y", - title: "Between 4 Years and 5 Years", - }), - createUTXOGroupFolder({ - key: "from-5y-to-7y", - name: "5y..7y", - title: "Between 5 Years and 7 Years", - }), - createUTXOGroupFolder({ - key: "from-7y-to-10y", - name: "7y..10y", - title: "Between 7 Years and 10 Years", - }), - createUTXOGroupFolder({ - key: "from-10y-to-15y", - name: "10y..15y", - title: "Between 10 Years and 15 Years", + name: "Compare", + title: "Compare By Range", + list: range, }), + ...range.map(createUTXOGroupFolder), ], }, { name: "Epoch", tree: [ createUTXOGroupFolder({ - key: "epoch-0", - name: "0", - title: "Epoch 0", - }), - createUTXOGroupFolder({ - key: "epoch-1", - name: "1", - title: "Epoch 1", - }), - createUTXOGroupFolder({ - key: "epoch-2", - name: "2", - title: "Epoch 2", - }), - createUTXOGroupFolder({ - key: "epoch-3", - name: "3", - title: "Epoch 3", - }), - createUTXOGroupFolder({ - key: "epoch-4", - name: "4", - title: "Epoch 4", + name: "Compare", + title: "Compare By Epoch", + list: epoch, }), + ...epoch.map(createUTXOGroupFolder), ], }, { name: "size", tree: [ createUTXOGroupFolder({ - key: "0sat", - name: "0sat", - title: "0 sat", - }), - createUTXOGroupFolder({ - key: "from-1sat-to-10sats", - name: "1sat..10sats", - title: "From 1 sat to 10 sats", - }), - createUTXOGroupFolder({ - key: "from-10sats-to-100sats", - name: "10sat..100sats", - title: "From 10 sats to 100 sats", - }), - createUTXOGroupFolder({ - key: "from-100sats-to-1-000sats", - name: "100sat..1_000sats", - title: "From 100 sats to 1,000 sats", - }), - createUTXOGroupFolder({ - key: "from-1-000sats-to-10-000sats", - name: "1_000sat..10_000sats", - title: "From 1,000 sats to 10,000 sats", - }), - createUTXOGroupFolder({ - key: "from-10-000sats-to-100-000sats", - name: "10_000sat..100_000sats", - title: "From 10,000 sats to 100,000 sats", - }), - createUTXOGroupFolder({ - key: "from-100-000sats-to-1-000-000sats", - name: "100_000sat..1_000_000sats", - title: "From 100,000 sats to 1,000,000 sats", - }), - createUTXOGroupFolder({ - key: "from-1-000-000sats-to-10-000-000sats", - name: "1_000_000sat..10_000_000sats", - title: "From 1,000,000 sats to 10,000,000 sats", - }), - createUTXOGroupFolder({ - key: "from-10-000-000sats-to-1btc", - name: "10_000_000sat..1btc", - title: "From 10,000,000 sats to 1 BTC", - }), - createUTXOGroupFolder({ - key: "from-1btc-to-10btc", - name: "1btc..10btc", - title: "From 1 BTC to 10 BTC", - }), - createUTXOGroupFolder({ - key: "from-10btc-to-100btc", - name: "10btc..100btc", - title: "From 10 BTC to 100 BTC", - }), - createUTXOGroupFolder({ - key: "from-100btc-to-1-000btc", - name: "100btc..1_000btc", - title: "From 100 BTC to 1,000 BTC", - }), - createUTXOGroupFolder({ - key: "from-1-000btc-to-10-000btc", - name: "1_000btc..10_000btc", - title: "From 1,000 BTC to 10,000 BTC", - }), - createUTXOGroupFolder({ - key: "from-10-000btc-to-100-000btc", - name: "10_000btc..100_000btc", - title: "From 10,000 BTC to 100,000 BTC", - }), - createUTXOGroupFolder({ - key: "from-100-000btc", - name: "100_000btc+", - title: "From 100,000 BTC", + name: "Compare", + title: "Compare By Size", + list: size, }), + ...size.map(createUTXOGroupFolder), ], }, { name: "type", tree: [ createUTXOGroupFolder({ - key: "p2pk65", - name: "p2pk65", - title: "Pay To Long Public Key", - }), - createUTXOGroupFolder({ - key: "p2pk33", - name: "p2pk33", - title: "Pay To Short Public Key", - }), - createUTXOGroupFolder({ - key: "p2pkh", - name: "p2pkh", - title: "Pay To Public Key Hash", - }), - createUTXOGroupFolder({ - key: "p2ms", - name: "p2ms", - title: "Pay To Bare Multisig", - }), - createUTXOGroupFolder({ - key: "p2sh", - name: "p2sh", - title: "Pay To Script Hash", - }), - createUTXOGroupFolder({ - key: "p2wpkh", - name: "p2wpkh", - title: "Pay To Witness Public Key Hash", - }), - createUTXOGroupFolder({ - key: "p2wsh", - name: "p2wsh", - title: "Pay To Witness Script Hash", - }), - createUTXOGroupFolder({ - key: "p2tr", - name: "p2tr", - title: "Pay To Taproot", - }), - createUTXOGroupFolder({ - key: "p2a", - name: "p2a", - title: "Pay To Anchor", - }), - createUTXOGroupFolder({ - key: "unknown", - name: "unknown", - title: "Pay To Unknown", - }), - createUTXOGroupFolder({ - key: "empty", - name: "empty", - title: "Pay To Empty", + name: "Compare", + title: "Compare By Type", + list: type, }), + ...type.map(createUTXOGroupFolder), ], }, + ], + }, + { + name: "Unspendable", + tree: [ { - name: "Unspendable", - tree: [ - { - name: "supply", - title: "Unspendable Supply", - bottom: [ - createBaseSeries({ - key: "unspendable-supply", - name: "Supply", - }), - createBaseSeries({ - key: "unspendable-supply-in-btc", - name: "Supply", - }), - createBaseSeries({ - key: "unspendable-supply-in-usd", - name: "Supply", - }), - ], - }, + name: "supply", + title: "Unspendable Supply", + bottom: [ + createBaseSeries({ + key: "unspendable-supply", + name: "Supply", + }), + createBaseSeries({ + key: "unspendable-supply-in-btc", + name: "Supply", + }), + createBaseSeries({ + key: "unspendable-supply-in-usd", + name: "Supply", + }), ], }, ], diff --git a/websites/kibo.money/scripts/vecid-to-indexes.js b/websites/kibo.money/scripts/vecid-to-indexes.js index 64eef9bd7..8e0fde66a 100644 --- a/websites/kibo.money/scripts/vecid-to-indexes.js +++ b/websites/kibo.money/scripts/vecid-to-indexes.js @@ -3424,6 +3424,690 @@ export function createVecIdToIndexes() { "unspendable-supply": [0, 1, 2, 5, 7, 19, 22, 23], "unspendable-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], "unspendable-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-10y-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-10y-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-10y-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-10y-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-10y-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-10y-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-10y-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-15y-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-15y-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-15y-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-15y-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-15y-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-15y-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-15y-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1d-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1d-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-1d-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-1d-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1d-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1d-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1d-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1m-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1m-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-1m-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-1m-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1m-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1m-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1m-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1w-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1w-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-1w-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-1w-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1w-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1w-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1w-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1y-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1y-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-1y-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-1y-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1y-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1y-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-1y-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-2m-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-2m-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-2m-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-2m-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-2m-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-2m-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-2m-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-2y-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-2y-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-2y-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-2y-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-2y-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-2y-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-2y-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-3m-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-3m-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-3m-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-3m-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-3m-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-3m-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-3m-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-3y-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-3y-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-3y-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-3y-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-3y-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-3y-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-3y-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-4m-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-4m-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-4m-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-4m-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-4m-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-4m-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-4m-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-4y-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-4y-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-4y-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-4y-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-4y-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-4y-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-4y-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-5m-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-5m-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-5m-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-5m-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-5m-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-5m-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-5m-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-5y-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-5y-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-5y-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-5y-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-5y-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-5y-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-5y-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-6m-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-6m-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-6m-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-6m-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-6m-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-6m-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-6m-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-6y-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-6y-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-6y-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-6y-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-6y-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-6y-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-6y-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-7y-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-7y-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-7y-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-7y-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-7y-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-7y-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-7y-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-8y-realized-cap": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-8y-realized-price": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-1m-sma": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-1w-sma": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-1y-sma": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-1y-sma-momentum-oscillator": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-m1sd": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-m1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-m2sd": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-m2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-m3sd": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-m3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p0-1": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p0-1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p0-5": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p0-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p1": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p1-as-price": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p1sd": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p1sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p2sd": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p2sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p3sd": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p3sd-as-price": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p99": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p99-5": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p99-5-as-price": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p99-9": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p99-9-as-price": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-p99-as-price": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-sma": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-standard-deviation": [0, 1, 7, 19, 22, 23], + "up-to-8y-realized-price-ratio-zscore": [0, 1, 7, 19, 22, 23], + "up-to-8y-supply": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-8y-supply-in-btc": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-8y-supply-in-usd": [0, 1, 2, 5, 7, 19, 22, 23], + "up-to-8y-utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], "utxo-count": [0, 1, 2, 5, 7, 19, 22, 23], "value": [6, 9], "vbytes": [5],