parser: add ratio for price smas

This commit is contained in:
k
2024-07-12 12:02:57 +02:00
parent 35fd5054aa
commit 9077fee4d6
6 changed files with 147 additions and 70 deletions

View File

@@ -215,7 +215,7 @@ impl CointimeDataset {
&|liveliness| 1.0 - liveliness,
);
self.activity_to_vaultedness_ratio.multi_insert_percentage(
self.activity_to_vaultedness_ratio.multi_insert_divide(
heights,
dates,
&mut self.liveliness,

View File

@@ -14,7 +14,7 @@ use crate::{
utils::{ONE_MONTH_IN_DAYS, ONE_WEEK_IN_DAYS, ONE_YEAR_IN_DAYS},
};
use super::{AnyDataset, ComputeData, MinInitialStates};
use super::{AnyDataset, ComputeData, MinInitialStates, RatioDataset};
#[derive(Allocative)]
pub struct PriceDatasets {
@@ -32,19 +32,32 @@ pub struct PriceDatasets {
// Computed
pub closes: BiMap<f32>,
pub market_cap: BiMap<f32>,
pub price_1w_sma: DateMap<f32>,
pub price_1m_sma: DateMap<f32>,
pub price_1y_sma: DateMap<f32>,
pub price_2y_sma: DateMap<f32>,
pub price_4y_sma: DateMap<f32>,
pub price_8d_sma: DateMap<f32>,
pub price_13d_sma: DateMap<f32>,
pub price_21d_sma: DateMap<f32>,
pub price_34d_sma: DateMap<f32>,
pub price_55d_sma: DateMap<f32>,
pub price_89d_sma: DateMap<f32>,
pub price_144d_sma: DateMap<f32>,
pub price_200w_sma: DateMap<f32>,
pub price_1w_sma: BiMap<f32>,
pub price_1w_sma_ratio: RatioDataset,
pub price_1m_sma: BiMap<f32>,
pub price_1m_sma_ratio: RatioDataset,
pub price_1y_sma: BiMap<f32>,
pub price_1y_sma_ratio: RatioDataset,
pub price_2y_sma: BiMap<f32>,
pub price_2y_sma_ratio: RatioDataset,
pub price_4y_sma: BiMap<f32>,
pub price_4y_sma_ratio: RatioDataset,
pub price_8d_sma: BiMap<f32>,
pub price_8d_sma_ratio: RatioDataset,
pub price_13d_sma: BiMap<f32>,
pub price_13d_sma_ratio: RatioDataset,
pub price_21d_sma: BiMap<f32>,
pub price_21d_sma_ratio: RatioDataset,
pub price_34d_sma: BiMap<f32>,
pub price_34d_sma_ratio: RatioDataset,
pub price_55d_sma: BiMap<f32>,
pub price_55d_sma_ratio: RatioDataset,
pub price_89d_sma: BiMap<f32>,
pub price_89d_sma_ratio: RatioDataset,
pub price_144d_sma: BiMap<f32>,
pub price_144d_sma_ratio: RatioDataset,
pub price_200w_sma: BiMap<f32>,
pub price_200w_sma_ratio: RatioDataset,
pub price_1d_total_return: DateMap<f32>,
pub price_1m_total_return: DateMap<f32>,
pub price_6m_total_return: DateMap<f32>,
@@ -80,19 +93,32 @@ impl PriceDatasets {
ohlcs: BiMap::new_json(1, &format!("{price_path}/ohlc")),
closes: BiMap::new_json(1, &f("close")),
market_cap: BiMap::new_bin(1, &f("market_cap")),
price_1w_sma: DateMap::new_bin(1, &f("price_1w_sma")),
price_1m_sma: DateMap::new_bin(1, &f("price_1m_sma")),
price_1y_sma: DateMap::new_bin(1, &f("price_1y_sma")),
price_2y_sma: DateMap::new_bin(1, &f("price_2y_sma")),
price_4y_sma: DateMap::new_bin(1, &f("price_4y_sma")),
price_8d_sma: DateMap::new_bin(1, &f("price_8d_sma")),
price_13d_sma: DateMap::new_bin(1, &f("price_13d_sma")),
price_21d_sma: DateMap::new_bin(1, &f("price_21d_sma")),
price_34d_sma: DateMap::new_bin(1, &f("price_34d_sma")),
price_55d_sma: DateMap::new_bin(1, &f("price_55d_sma")),
price_89d_sma: DateMap::new_bin(1, &f("price_89d_sma")),
price_144d_sma: DateMap::new_bin(1, &f("price_144d_sma")),
price_200w_sma: DateMap::new_bin(1, &f("price_200w_sma")),
price_1w_sma: BiMap::new_bin(1, &f("price_1w_sma")),
price_1w_sma_ratio: RatioDataset::import(datasets_path, "price_1w_sma")?,
price_1m_sma: BiMap::new_bin(1, &f("price_1m_sma")),
price_1m_sma_ratio: RatioDataset::import(datasets_path, "price_1m_sma")?,
price_1y_sma: BiMap::new_bin(1, &f("price_1y_sma")),
price_1y_sma_ratio: RatioDataset::import(datasets_path, "price_1y_sma")?,
price_2y_sma: BiMap::new_bin(1, &f("price_2y_sma")),
price_2y_sma_ratio: RatioDataset::import(datasets_path, "price_2y_sma")?,
price_4y_sma: BiMap::new_bin(1, &f("price_4y_sma")),
price_4y_sma_ratio: RatioDataset::import(datasets_path, "price_4y_sma")?,
price_8d_sma: BiMap::new_bin(1, &f("price_8d_sma")),
price_8d_sma_ratio: RatioDataset::import(datasets_path, "price_8d_sma")?,
price_13d_sma: BiMap::new_bin(1, &f("price_13d_sma")),
price_13d_sma_ratio: RatioDataset::import(datasets_path, "price_13d_sma")?,
price_21d_sma: BiMap::new_bin(1, &f("price_21d_sma")),
price_21d_sma_ratio: RatioDataset::import(datasets_path, "price_21d_sma")?,
price_34d_sma: BiMap::new_bin(1, &f("price_34d_sma")),
price_34d_sma_ratio: RatioDataset::import(datasets_path, "price_34d_sma")?,
price_55d_sma: BiMap::new_bin(1, &f("price_55d_sma")),
price_55d_sma_ratio: RatioDataset::import(datasets_path, "price_55d_sma")?,
price_89d_sma: BiMap::new_bin(1, &f("price_89d_sma")),
price_89d_sma_ratio: RatioDataset::import(datasets_path, "price_89d_sma")?,
price_144d_sma: BiMap::new_bin(1, &f("price_144d_sma")),
price_144d_sma_ratio: RatioDataset::import(datasets_path, "price_144d_sma")?,
price_200w_sma: BiMap::new_bin(1, &f("price_200w_sma")),
price_200w_sma_ratio: RatioDataset::import(datasets_path, "price_200w_sma")?,
price_1d_total_return: DateMap::new_bin(1, &f("price_1d_total_return")),
price_1m_total_return: DateMap::new_bin(1, &f("price_1m_total_return")),
price_6m_total_return: DateMap::new_bin(1, &f("price_6m_total_return")),
@@ -124,59 +150,65 @@ impl PriceDatasets {
.multi_insert_multiply(heights, dates, &mut self.closes, circulating_supply);
self.price_1w_sma.multi_insert_simple_average(
heights,
dates,
&mut self.closes.date,
&mut self.closes,
ONE_WEEK_IN_DAYS,
);
self.price_1m_sma.multi_insert_simple_average(
heights,
dates,
&mut self.closes.date,
&mut self.closes,
ONE_MONTH_IN_DAYS,
);
self.price_1y_sma.multi_insert_simple_average(
heights,
dates,
&mut self.closes.date,
&mut self.closes,
ONE_YEAR_IN_DAYS,
);
self.price_2y_sma.multi_insert_simple_average(
heights,
dates,
&mut self.closes.date,
&mut self.closes,
2 * ONE_YEAR_IN_DAYS,
);
self.price_4y_sma.multi_insert_simple_average(
heights,
dates,
&mut self.closes.date,
&mut self.closes,
4 * ONE_YEAR_IN_DAYS,
);
self.price_8d_sma
.multi_insert_simple_average(dates, &mut self.closes.date, 8);
.multi_insert_simple_average(heights, dates, &mut self.closes, 8);
self.price_13d_sma
.multi_insert_simple_average(dates, &mut self.closes.date, 13);
.multi_insert_simple_average(heights, dates, &mut self.closes, 13);
self.price_21d_sma
.multi_insert_simple_average(dates, &mut self.closes.date, 21);
.multi_insert_simple_average(heights, dates, &mut self.closes, 21);
self.price_34d_sma
.multi_insert_simple_average(dates, &mut self.closes.date, 34);
.multi_insert_simple_average(heights, dates, &mut self.closes, 34);
self.price_55d_sma
.multi_insert_simple_average(dates, &mut self.closes.date, 55);
.multi_insert_simple_average(heights, dates, &mut self.closes, 55);
self.price_89d_sma
.multi_insert_simple_average(dates, &mut self.closes.date, 89);
.multi_insert_simple_average(heights, dates, &mut self.closes, 89);
self.price_144d_sma
.multi_insert_simple_average(dates, &mut self.closes.date, 144);
.multi_insert_simple_average(heights, dates, &mut self.closes, 144);
self.price_200w_sma.multi_insert_simple_average(
heights,
dates,
&mut self.closes.date,
&mut self.closes,
200 * ONE_WEEK_IN_DAYS,
);
@@ -445,15 +477,9 @@ impl AnyDataset for PriceDatasets {
}
fn to_computed_bi_map_vec(&self) -> Vec<&(dyn AnyBiMap + Send + Sync)> {
vec![&self.closes, &self.market_cap]
}
fn to_computed_mut_bi_map_vec(&mut self) -> Vec<&mut dyn AnyBiMap> {
vec![&mut self.closes, &mut self.market_cap]
}
fn to_computed_date_map_vec(&self) -> Vec<&(dyn AnyDateMap + Send + Sync)> {
vec![
let mut v = vec![
&self.closes as &(dyn AnyBiMap + Send + Sync),
&self.market_cap,
&self.price_1w_sma,
&self.price_1m_sma,
&self.price_1y_sma,
@@ -467,6 +493,63 @@ impl AnyDataset for PriceDatasets {
&self.price_89d_sma,
&self.price_144d_sma,
&self.price_200w_sma,
];
v.append(&mut self.price_1w_sma_ratio.to_computed_bi_map_vec());
v.append(&mut self.price_1m_sma_ratio.to_computed_bi_map_vec());
v.append(&mut self.price_1y_sma_ratio.to_computed_bi_map_vec());
v.append(&mut self.price_2y_sma_ratio.to_computed_bi_map_vec());
v.append(&mut self.price_4y_sma_ratio.to_computed_bi_map_vec());
v.append(&mut self.price_8d_sma_ratio.to_computed_bi_map_vec());
v.append(&mut self.price_13d_sma_ratio.to_computed_bi_map_vec());
v.append(&mut self.price_21d_sma_ratio.to_computed_bi_map_vec());
v.append(&mut self.price_34d_sma_ratio.to_computed_bi_map_vec());
v.append(&mut self.price_55d_sma_ratio.to_computed_bi_map_vec());
v.append(&mut self.price_89d_sma_ratio.to_computed_bi_map_vec());
v.append(&mut self.price_144d_sma_ratio.to_computed_bi_map_vec());
v.append(&mut self.price_200w_sma_ratio.to_computed_bi_map_vec());
v
}
fn to_computed_mut_bi_map_vec(&mut self) -> Vec<&mut dyn AnyBiMap> {
let mut v = vec![
&mut self.closes as &mut dyn AnyBiMap,
&mut self.market_cap,
&mut self.price_1w_sma,
&mut self.price_1m_sma,
&mut self.price_1y_sma,
&mut self.price_2y_sma,
&mut self.price_4y_sma,
&mut self.price_8d_sma,
&mut self.price_13d_sma,
&mut self.price_21d_sma,
&mut self.price_34d_sma,
&mut self.price_55d_sma,
&mut self.price_89d_sma,
&mut self.price_144d_sma,
&mut self.price_200w_sma,
];
v.append(&mut self.price_1w_sma_ratio.to_computed_mut_bi_map_vec());
v.append(&mut self.price_1m_sma_ratio.to_computed_mut_bi_map_vec());
v.append(&mut self.price_1y_sma_ratio.to_computed_mut_bi_map_vec());
v.append(&mut self.price_2y_sma_ratio.to_computed_mut_bi_map_vec());
v.append(&mut self.price_4y_sma_ratio.to_computed_mut_bi_map_vec());
v.append(&mut self.price_8d_sma_ratio.to_computed_mut_bi_map_vec());
v.append(&mut self.price_13d_sma_ratio.to_computed_mut_bi_map_vec());
v.append(&mut self.price_21d_sma_ratio.to_computed_mut_bi_map_vec());
v.append(&mut self.price_34d_sma_ratio.to_computed_mut_bi_map_vec());
v.append(&mut self.price_55d_sma_ratio.to_computed_mut_bi_map_vec());
v.append(&mut self.price_89d_sma_ratio.to_computed_mut_bi_map_vec());
v.append(&mut self.price_144d_sma_ratio.to_computed_mut_bi_map_vec());
v.append(&mut self.price_200w_sma_ratio.to_computed_mut_bi_map_vec());
v
}
fn to_computed_date_map_vec(&self) -> Vec<&(dyn AnyDateMap + Send + Sync)> {
vec![
&self.price_1d_total_return,
&self.price_1m_total_return,
&self.price_6m_total_return,
@@ -483,19 +566,6 @@ impl AnyDataset for PriceDatasets {
fn to_computed_mut_date_map_vec(&mut self) -> Vec<&mut dyn AnyDateMap> {
vec![
&mut self.price_1w_sma,
&mut self.price_1m_sma,
&mut self.price_1y_sma,
&mut self.price_2y_sma,
&mut self.price_4y_sma,
&mut self.price_8d_sma,
&mut self.price_13d_sma,
&mut self.price_21d_sma,
&mut self.price_34d_sma,
&mut self.price_55d_sma,
&mut self.price_89d_sma,
&mut self.price_144d_sma,
&mut self.price_200w_sma,
&mut self.price_1d_total_return,
&mut self.price_1m_total_return,
&mut self.price_6m_total_return,

View File

@@ -19,7 +19,7 @@ pub struct CapitalizationDataset {
// Computed
pub realized_price: BiMap<f32>,
realized_cap_1m_net_change: BiMap<f32>,
ratio: RatioDataset,
realized_price_ratio: RatioDataset,
}
impl CapitalizationDataset {
@@ -32,7 +32,7 @@ impl CapitalizationDataset {
realized_cap: BiMap::new_bin(1, &f("realized_cap")),
realized_cap_1m_net_change: BiMap::new_bin(1, &f("realized_cap_1m_net_change")),
realized_price: BiMap::new_bin(1, &f("realized_price")),
ratio: RatioDataset::import(parent_path, "realized_price")?,
realized_price_ratio: RatioDataset::import(parent_path, "realized_price")?,
};
s.min_initial_states
@@ -83,7 +83,7 @@ impl CapitalizationDataset {
ONE_MONTH_IN_DAYS,
);
self.ratio
self.realized_price_ratio
.compute(compute_data, closes, &mut self.realized_price);
}
}
@@ -106,7 +106,7 @@ impl AnyDataset for CapitalizationDataset {
&self.realized_price as &(dyn AnyBiMap + Send + Sync),
&self.realized_cap_1m_net_change,
];
v.append(&mut self.ratio.to_computed_bi_map_vec());
v.append(&mut self.realized_price_ratio.to_computed_bi_map_vec());
v
}
@@ -115,7 +115,7 @@ impl AnyDataset for CapitalizationDataset {
&mut self.realized_price as &mut dyn AnyBiMap,
&mut self.realized_cap_1m_net_change,
];
v.append(&mut self.ratio.to_computed_mut_bi_map_vec());
v.append(&mut self.realized_price_ratio.to_computed_mut_bi_map_vec());
v
}
}