diff --git a/crates/brk_bindgen/src/analysis/positions.rs b/crates/brk_bindgen/src/analysis/positions.rs index 7939bff1b..e2a7c18a8 100644 --- a/crates/brk_bindgen/src/analysis/positions.rs +++ b/crates/brk_bindgen/src/analysis/positions.rs @@ -1063,10 +1063,9 @@ mod tests { } #[test] - fn test_mixed_empty_fills_loss_from_shortest_leaf() { - // Integration test: "loss" child returns same base as parent (because - // its children like neg_realized_loss break the prefix). The mixed-empty - // fix should fill it from shortest leaf "utxos_realized_loss". + fn test_loss_with_neg_suffix_has_correct_field_parts() { + // Integration test: "loss" child has suffix-named children (realized_loss, + // realized_loss_neg) so it returns a proper base that differs from parent. use brk_types::{SeriesLeaf, SeriesLeafWithSchema, TreeNode}; fn leaf(name: &str) -> TreeNode { @@ -1084,7 +1083,7 @@ mod tests { TreeNode::Branch( [ ("base".into(), leaf("utxos_realized_loss")), - ("negative".into(), leaf("utxos_neg_realized_loss")), + ("negative".into(), leaf("utxos_realized_loss_neg")), ] .into_iter() .collect(), @@ -1115,9 +1114,7 @@ mod tests { assert!(!result.has_outlier); assert_eq!(result.field_parts.get("cap"), Some(&"realized_cap".to_string())); assert_eq!(result.field_parts.get("mvrv"), Some(&"mvrv".to_string())); - // loss stays empty after first pass (child returned same base as parent). - // The second pass (fill_mixed_empty_field_parts) fills it for templated - // children, but that requires pattern_lookup which this test doesn't set up. - assert_eq!(result.field_parts.get("loss"), Some(&"".to_string())); + // loss branch returns base "utxos_realized_loss" which yields field_part "realized_loss" + assert_eq!(result.field_parts.get("loss"), Some(&"realized_loss".to_string())); } } diff --git a/crates/brk_client/src/lib.rs b/crates/brk_client/src/lib.rs index 138ae7b99..d7533f6ad 100644 --- a/crates/brk_client/src/lib.rs +++ b/crates/brk_client/src/lib.rs @@ -1314,6 +1314,21 @@ pub struct CapLossMvrvNetPriceProfitSoprPattern { pub sopr: RatioValuePattern, } +impl CapLossMvrvNetPriceProfitSoprPattern { + /// Create a new pattern node with accumulated series name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + cap: CentsDeltaUsdPattern::new(client.clone(), _m(&acc, "realized_cap")), + loss: BlockCumulativeNegativeSumPattern::new(client.clone(), _m(&acc, "realized_loss")), + mvrv: SeriesPattern1::new(client.clone(), _m(&acc, "mvrv")), + net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), + price: BpsCentsRatioSatsUsdPattern::new(client.clone(), _m(&acc, "realized_price")), + profit: BlockCumulativeSumPattern::new(client.clone(), _m(&acc, "realized_profit")), + sopr: RatioValuePattern::new(client.clone(), acc.clone()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct InMaxMinPerSupplyPattern { pub in_loss: PerPattern, @@ -1407,7 +1422,7 @@ pub struct ActivityAddrOutputsRealizedSupplyUnrealizedPattern { pub addr_count: BaseDeltaPattern, pub outputs: UnspentPattern, pub realized: CapLossMvrvPriceProfitPattern, - pub supply: DeltaHalfTotalPattern, + pub supply: DeltaTotalPattern, pub unrealized: NuplPattern, } @@ -1419,7 +1434,7 @@ impl ActivityAddrOutputsRealizedSupplyUnrealizedPattern { addr_count: BaseDeltaPattern::new(client.clone(), _m(&acc, "addr_count")), outputs: UnspentPattern::new(client.clone(), _m(&acc, "utxo_count")), realized: CapLossMvrvPriceProfitPattern::new(client.clone(), acc.clone()), - supply: DeltaHalfTotalPattern::new(client.clone(), _m(&acc, "supply")), + supply: DeltaTotalPattern::new(client.clone(), _m(&acc, "supply")), unrealized: NuplPattern::new(client.clone(), _m(&acc, "nupl")), } } @@ -1511,12 +1526,12 @@ impl CentsNegativeToUsdPattern2 { /// Create a new pattern node with accumulated series name. pub fn new(client: Arc, acc: String) -> Self { Self { - cents: SeriesPattern1::new(client.clone(), _m(&acc, "unrealized_loss_cents")), - negative: SeriesPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss")), - to_mcap: BpsPercentRatioPattern3::new(client.clone(), _m(&acc, "unrealized_loss_to_mcap")), - to_own_gross_pnl: BpsPercentRatioPattern3::new(client.clone(), _m(&acc, "unrealized_loss_to_own_gross_pnl")), - to_own_mcap: BpsPercentRatioPattern4::new(client.clone(), _m(&acc, "unrealized_loss_to_own_mcap")), - usd: SeriesPattern1::new(client.clone(), _m(&acc, "unrealized_loss")), + cents: SeriesPattern1::new(client.clone(), _m(&acc, "cents")), + negative: SeriesPattern1::new(client.clone(), _m(&acc, "neg")), + to_mcap: BpsPercentRatioPattern3::new(client.clone(), _m(&acc, "to_mcap")), + to_own_gross_pnl: BpsPercentRatioPattern3::new(client.clone(), _m(&acc, "to_own_gross_pnl")), + to_own_mcap: BpsPercentRatioPattern4::new(client.clone(), _m(&acc, "to_own_mcap")), + usd: SeriesPattern1::new(client.clone(), acc.clone()), } } } @@ -1624,6 +1639,19 @@ pub struct ActivityOutputsRealizedSupplyUnrealizedPattern { pub unrealized: LossNetNuplProfitPattern, } +impl ActivityOutputsRealizedSupplyUnrealizedPattern { + /// Create a new pattern node with accumulated series name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + activity: CoindaysTransferPattern::new(client.clone(), acc.clone()), + outputs: UnspentPattern::new(client.clone(), _m(&acc, "utxo_count")), + realized: CapLossMvrvNetPriceProfitSoprPattern::new(client.clone(), acc.clone()), + supply: DeltaHalfInToTotalPattern::new(client.clone(), _m(&acc, "supply")), + unrealized: LossNetNuplProfitPattern::new(client.clone(), acc.clone()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct ActivityOutputsRealizedSupplyUnrealizedPattern3 { pub activity: TransferPattern, @@ -1651,7 +1679,7 @@ pub struct ActivityOutputsRealizedSupplyUnrealizedPattern2 { pub activity: TransferPattern, pub outputs: UnspentPattern, pub realized: CapLossMvrvPriceProfitPattern, - pub supply: DeltaHalfTotalPattern, + pub supply: DeltaTotalPattern, pub unrealized: NuplPattern, } @@ -1662,7 +1690,7 @@ impl ActivityOutputsRealizedSupplyUnrealizedPattern2 { activity: TransferPattern::new(client.clone(), _m(&acc, "transfer_volume")), outputs: UnspentPattern::new(client.clone(), _m(&acc, "utxo_count")), realized: CapLossMvrvPriceProfitPattern::new(client.clone(), acc.clone()), - supply: DeltaHalfTotalPattern::new(client.clone(), _m(&acc, "supply")), + supply: DeltaTotalPattern::new(client.clone(), _m(&acc, "supply")), unrealized: NuplPattern::new(client.clone(), _m(&acc, "nupl")), } } @@ -2071,6 +2099,18 @@ pub struct BlockCumulativeNegativeSumPattern { pub sum: _1m1w1y24hPattern6, } +impl BlockCumulativeNegativeSumPattern { + /// Create a new pattern node with accumulated series name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + block: CentsUsdPattern2::new(client.clone(), acc.clone()), + cumulative: CentsUsdPattern3::new(client.clone(), _m(&acc, "cumulative")), + negative: BaseSumPattern::new(client.clone(), _m(&acc, "neg")), + sum: _1m1w1y24hPattern6::new(client.clone(), _m(&acc, "sum")), + } + } +} + /// Pattern struct for repeated tree structure. pub struct BlockCumulativeDeltaSumPattern { pub block: CentsUsdPattern4, @@ -2231,7 +2271,7 @@ impl LossNetNuplProfitPattern { /// Create a new pattern node with accumulated series name. pub fn new(client: Arc, acc: String) -> Self { Self { - loss: CentsNegativeUsdPattern::new(client.clone(), acc.clone()), + loss: CentsNegativeUsdPattern::new(client.clone(), _m(&acc, "unrealized_loss")), net_pnl: CentsUsdPattern::new(client.clone(), _m(&acc, "net_unrealized_pnl")), nupl: BpsRatioPattern::new(client.clone(), _m(&acc, "nupl")), profit: CentsUsdPattern3::new(client.clone(), _m(&acc, "unrealized_profit")), @@ -2459,9 +2499,9 @@ impl CentsNegativeUsdPattern { /// Create a new pattern node with accumulated series name. pub fn new(client: Arc, acc: String) -> Self { Self { - cents: SeriesPattern1::new(client.clone(), _m(&acc, "unrealized_loss_cents")), - negative: SeriesPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss")), - usd: SeriesPattern1::new(client.clone(), _m(&acc, "unrealized_loss")), + cents: SeriesPattern1::new(client.clone(), _m(&acc, "cents")), + negative: SeriesPattern1::new(client.clone(), _m(&acc, "neg")), + usd: SeriesPattern1::new(client.clone(), acc.clone()), } } } @@ -2502,24 +2542,6 @@ impl CumulativeRollingSumPattern { } } -/// Pattern struct for repeated tree structure. -pub struct DeltaHalfTotalPattern { - pub delta: AbsoluteRatePattern, - pub half: BtcCentsSatsUsdPattern3, - pub total: BtcCentsSatsUsdPattern3, -} - -impl DeltaHalfTotalPattern { - /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - delta: AbsoluteRatePattern::new(client.clone(), _m(&acc, "delta")), - half: BtcCentsSatsUsdPattern3::new(client.clone(), _m(&acc, "half")), - total: BtcCentsSatsUsdPattern3::new(client.clone(), acc.clone()), - } - } -} - /// Pattern struct for repeated tree structure. pub struct GreedNetPainPattern { pub greed_index: CentsUsdPattern3, @@ -2538,7 +2560,7 @@ impl LossNuplProfitPattern { /// Create a new pattern node with accumulated series name. pub fn new(client: Arc, acc: String) -> Self { Self { - loss: CentsNegativeUsdPattern::new(client.clone(), acc.clone()), + loss: CentsNegativeUsdPattern::new(client.clone(), _m(&acc, "unrealized_loss")), nupl: BpsRatioPattern::new(client.clone(), _m(&acc, "nupl")), profit: CentsUsdPattern3::new(client.clone(), _m(&acc, "unrealized_profit")), } @@ -2812,6 +2834,22 @@ impl CoindaysTransferPattern { } } +/// Pattern struct for repeated tree structure. +pub struct DeltaTotalPattern { + pub delta: AbsoluteRatePattern, + pub total: BtcCentsSatsUsdPattern3, +} + +impl DeltaTotalPattern { + /// Create a new pattern node with accumulated series name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + delta: AbsoluteRatePattern::new(client.clone(), _m(&acc, "delta")), + total: BtcCentsSatsUsdPattern3::new(client.clone(), acc.clone()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct InPattern { pub in_loss: CentsUsdPattern3, @@ -6347,8 +6385,8 @@ impl SeriesTree_Cohorts_Utxo_All { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_All_Supply { pub total: BtcCentsSatsUsdPattern3, - pub half: BtcCentsSatsUsdPattern3, pub delta: AbsoluteRatePattern, + pub half: BtcCentsSatsUsdPattern3, pub in_profit: BtcCentsSatsToUsdPattern2, pub in_loss: BtcCentsSatsToUsdPattern2, } @@ -6357,8 +6395,8 @@ impl SeriesTree_Cohorts_Utxo_All_Supply { pub fn new(client: Arc, base_path: String) -> Self { Self { total: BtcCentsSatsUsdPattern3::new(client.clone(), "supply".to_string()), - half: BtcCentsSatsUsdPattern3::new(client.clone(), "supply_half".to_string()), delta: AbsoluteRatePattern::new(client.clone(), "supply_delta".to_string()), + half: BtcCentsSatsUsdPattern3::new(client.clone(), "supply_half".to_string()), in_profit: BtcCentsSatsToUsdPattern2::new(client.clone(), "supply_in_profit".to_string()), in_loss: BtcCentsSatsToUsdPattern2::new(client.clone(), "supply_in_loss".to_string()), } @@ -6388,7 +6426,7 @@ impl SeriesTree_Cohorts_Utxo_All_Activity { pub struct SeriesTree_Cohorts_Utxo_All_Realized { pub cap: CentsDeltaToUsdPattern, pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_All_Realized_Loss, + pub loss: BlockCumulativeNegativeSumPattern, pub price: SeriesTree_Cohorts_Utxo_All_Realized_Price, pub mvrv: SeriesPattern1, pub net_pnl: BlockChangeCumulativeDeltaSumPattern, @@ -6405,7 +6443,7 @@ impl SeriesTree_Cohorts_Utxo_All_Realized { Self { cap: CentsDeltaToUsdPattern::new(client.clone(), "realized_cap".to_string()), profit: BlockCumulativeSumPattern::new(client.clone(), "realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_All_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), + loss: BlockCumulativeNegativeSumPattern::new(client.clone(), "realized_loss".to_string()), price: SeriesTree_Cohorts_Utxo_All_Realized_Price::new(client.clone(), format!("{base_path}_price")), mvrv: SeriesPattern1::new(client.clone(), "mvrv".to_string()), net_pnl: BlockChangeCumulativeDeltaSumPattern::new(client.clone(), "net".to_string()), @@ -6419,25 +6457,6 @@ impl SeriesTree_Cohorts_Utxo_All_Realized { } } -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_All_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_All_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "neg_realized_loss".to_string()), - } - } -} - /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_All_Realized_Price { pub usd: SeriesPattern1, @@ -6769,7 +6788,7 @@ impl SeriesTree_Cohorts_Utxo_All_Unrealized_Loss { Self { usd: SeriesPattern1::new(client.clone(), "unrealized_loss".to_string()), cents: SeriesPattern1::new(client.clone(), "unrealized_loss_cents".to_string()), - negative: SeriesPattern1::new(client.clone(), "neg_unrealized_loss".to_string()), + negative: SeriesPattern1::new(client.clone(), "unrealized_loss_neg".to_string()), to_mcap: BpsPercentRatioPattern3::new(client.clone(), "unrealized_loss_to_mcap".to_string()), to_own_gross_pnl: BpsPercentRatioPattern3::new(client.clone(), "unrealized_loss_to_own_gross_pnl".to_string()), } @@ -6856,7 +6875,7 @@ impl SeriesTree_Cohorts_Utxo_Sth_Activity { pub struct SeriesTree_Cohorts_Utxo_Sth_Realized { pub cap: CentsDeltaToUsdPattern, pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Sth_Realized_Loss, + pub loss: BlockCumulativeNegativeSumPattern, pub price: SeriesTree_Cohorts_Utxo_Sth_Realized_Price, pub mvrv: SeriesPattern1, pub net_pnl: BlockChangeCumulativeDeltaSumPattern, @@ -6873,7 +6892,7 @@ impl SeriesTree_Cohorts_Utxo_Sth_Realized { Self { cap: CentsDeltaToUsdPattern::new(client.clone(), "sth_realized_cap".to_string()), profit: BlockCumulativeSumPattern::new(client.clone(), "sth_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Sth_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), + loss: BlockCumulativeNegativeSumPattern::new(client.clone(), "sth_realized_loss".to_string()), price: SeriesTree_Cohorts_Utxo_Sth_Realized_Price::new(client.clone(), format!("{base_path}_price")), mvrv: SeriesPattern1::new(client.clone(), "sth_mvrv".to_string()), net_pnl: BlockChangeCumulativeDeltaSumPattern::new(client.clone(), "sth_net".to_string()), @@ -6887,25 +6906,6 @@ impl SeriesTree_Cohorts_Utxo_Sth_Realized { } } -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Sth_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Sth_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "sth_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "sth_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "sth_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "sth_neg_realized_loss".to_string()), - } - } -} - /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Sth_Realized_Price { pub usd: SeriesPattern1, @@ -7193,7 +7193,7 @@ impl SeriesTree_Cohorts_Utxo_Sth_Unrealized { Self { nupl: BpsRatioPattern::new(client.clone(), "sth_nupl".to_string()), profit: CentsToUsdPattern4::new(client.clone(), "sth_unrealized_profit".to_string()), - loss: CentsNegativeToUsdPattern2::new(client.clone(), "sth".to_string()), + loss: CentsNegativeToUsdPattern2::new(client.clone(), "sth_unrealized_loss".to_string()), net_pnl: CentsToUsdPattern3::new(client.clone(), "sth_net_unrealized_pnl".to_string()), gross_pnl: CentsUsdPattern3::new(client.clone(), "sth_unrealized_gross_pnl".to_string()), invested_capital: InPattern::new(client.clone(), "sth_invested_capital_in".to_string()), @@ -7267,7 +7267,7 @@ impl SeriesTree_Cohorts_Utxo_Lth_Activity { pub struct SeriesTree_Cohorts_Utxo_Lth_Realized { pub cap: CentsDeltaToUsdPattern, pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Lth_Realized_Loss, + pub loss: BlockCumulativeNegativeSumPattern, pub price: SeriesTree_Cohorts_Utxo_Lth_Realized_Price, pub mvrv: SeriesPattern1, pub net_pnl: BlockChangeCumulativeDeltaSumPattern, @@ -7284,7 +7284,7 @@ impl SeriesTree_Cohorts_Utxo_Lth_Realized { Self { cap: CentsDeltaToUsdPattern::new(client.clone(), "lth_realized_cap".to_string()), profit: BlockCumulativeSumPattern::new(client.clone(), "lth_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Lth_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), + loss: BlockCumulativeNegativeSumPattern::new(client.clone(), "lth_realized_loss".to_string()), price: SeriesTree_Cohorts_Utxo_Lth_Realized_Price::new(client.clone(), format!("{base_path}_price")), mvrv: SeriesPattern1::new(client.clone(), "lth_mvrv".to_string()), net_pnl: BlockChangeCumulativeDeltaSumPattern::new(client.clone(), "lth_net".to_string()), @@ -7298,25 +7298,6 @@ impl SeriesTree_Cohorts_Utxo_Lth_Realized { } } -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Lth_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Lth_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "lth_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "lth_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "lth_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "lth_neg_realized_loss".to_string()), - } - } -} - /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Lth_Realized_Price { pub usd: SeriesPattern1, @@ -7585,7 +7566,7 @@ impl SeriesTree_Cohorts_Utxo_Lth_Unrealized { Self { nupl: BpsRatioPattern::new(client.clone(), "lth_nupl".to_string()), profit: CentsToUsdPattern4::new(client.clone(), "lth_unrealized_profit".to_string()), - loss: CentsNegativeToUsdPattern2::new(client.clone(), "lth".to_string()), + loss: CentsNegativeToUsdPattern2::new(client.clone(), "lth_unrealized_loss".to_string()), net_pnl: CentsToUsdPattern3::new(client.clone(), "lth_net_unrealized_pnl".to_string()), gross_pnl: CentsUsdPattern3::new(client.clone(), "lth_unrealized_gross_pnl".to_string()), invested_capital: InPattern::new(client.clone(), "lth_invested_capital_in".to_string()), @@ -7615,5415 +7596,215 @@ impl SeriesTree_Cohorts_Utxo_Lth_Unrealized_Sentiment { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_AgeRange { - pub under_1h: SeriesTree_Cohorts_Utxo_AgeRange_Under1h, - pub _1h_to_1d: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d, - pub _1d_to_1w: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w, - pub _1w_to_1m: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m, - pub _1m_to_2m: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m, - pub _2m_to_3m: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m, - pub _3m_to_4m: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m, - pub _4m_to_5m: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m, - pub _5m_to_6m: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m, - pub _6m_to_1y: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y, - pub _1y_to_2y: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y, - pub _2y_to_3y: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y, - pub _3y_to_4y: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y, - pub _4y_to_5y: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y, - pub _5y_to_6y: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y, - pub _6y_to_7y: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y, - pub _7y_to_8y: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y, - pub _8y_to_10y: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y, - pub _10y_to_12y: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y, - pub _12y_to_15y: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y, - pub over_15y: SeriesTree_Cohorts_Utxo_AgeRange_Over15y, + pub under_1h: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _1h_to_1d: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _1d_to_1w: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _1w_to_1m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _1m_to_2m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2m_to_3m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _3m_to_4m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _4m_to_5m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _5m_to_6m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _6m_to_1y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _1y_to_2y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2y_to_3y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _3y_to_4y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _4y_to_5y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _5y_to_6y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _6y_to_7y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _7y_to_8y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _8y_to_10y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _10y_to_12y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _12y_to_15y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub over_15y: ActivityOutputsRealizedSupplyUnrealizedPattern, } impl SeriesTree_Cohorts_Utxo_AgeRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - under_1h: SeriesTree_Cohorts_Utxo_AgeRange_Under1h::new(client.clone(), format!("{base_path}_under_1h")), - _1h_to_1d: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d::new(client.clone(), format!("{base_path}_1h_to_1d")), - _1d_to_1w: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w::new(client.clone(), format!("{base_path}_1d_to_1w")), - _1w_to_1m: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m::new(client.clone(), format!("{base_path}_1w_to_1m")), - _1m_to_2m: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m::new(client.clone(), format!("{base_path}_1m_to_2m")), - _2m_to_3m: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m::new(client.clone(), format!("{base_path}_2m_to_3m")), - _3m_to_4m: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m::new(client.clone(), format!("{base_path}_3m_to_4m")), - _4m_to_5m: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m::new(client.clone(), format!("{base_path}_4m_to_5m")), - _5m_to_6m: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m::new(client.clone(), format!("{base_path}_5m_to_6m")), - _6m_to_1y: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y::new(client.clone(), format!("{base_path}_6m_to_1y")), - _1y_to_2y: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y::new(client.clone(), format!("{base_path}_1y_to_2y")), - _2y_to_3y: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y::new(client.clone(), format!("{base_path}_2y_to_3y")), - _3y_to_4y: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y::new(client.clone(), format!("{base_path}_3y_to_4y")), - _4y_to_5y: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y::new(client.clone(), format!("{base_path}_4y_to_5y")), - _5y_to_6y: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y::new(client.clone(), format!("{base_path}_5y_to_6y")), - _6y_to_7y: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y::new(client.clone(), format!("{base_path}_6y_to_7y")), - _7y_to_8y: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y::new(client.clone(), format!("{base_path}_7y_to_8y")), - _8y_to_10y: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y::new(client.clone(), format!("{base_path}_8y_to_10y")), - _10y_to_12y: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y::new(client.clone(), format!("{base_path}_10y_to_12y")), - _12y_to_15y: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y::new(client.clone(), format!("{base_path}_12y_to_15y")), - over_15y: SeriesTree_Cohorts_Utxo_AgeRange_Over15y::new(client.clone(), format!("{base_path}_over_15y")), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_Under1h { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_Under1h { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_1h_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_1h_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_1h_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_1h_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_1h_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_1h_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_1h_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_1h_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_1h_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_1h_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_1h_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_1h_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_1h_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_1h_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_1h_to_1d_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_1h_to_1d_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_1h_to_1d_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_1h_to_1d_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_1h_to_1d_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_1h_to_1d_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_1h_to_1d_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_1h_to_1d_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_1h_to_1d_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_1h_to_1d_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_1h_to_1d_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_1h_to_1d_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_1h_to_1d_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_1h_to_1d_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_1d_to_1w_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_1d_to_1w_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_1d_to_1w_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_1d_to_1w_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_1d_to_1w_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_1d_to_1w_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_1d_to_1w_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_1d_to_1w_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_1d_to_1w_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_1d_to_1w_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_1d_to_1w_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_1d_to_1w_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_1d_to_1w_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_1d_to_1w_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_1w_to_1m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_1w_to_1m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_1w_to_1m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_1w_to_1m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_1w_to_1m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_1w_to_1m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_1w_to_1m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_1w_to_1m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_1w_to_1m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_1w_to_1m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_1w_to_1m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_1w_to_1m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_1w_to_1m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_1w_to_1m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_1m_to_2m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_1m_to_2m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_1m_to_2m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_1m_to_2m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_1m_to_2m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_1m_to_2m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_1m_to_2m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_1m_to_2m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_1m_to_2m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_1m_to_2m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_1m_to_2m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_1m_to_2m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_1m_to_2m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_1m_to_2m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_2m_to_3m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_2m_to_3m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_2m_to_3m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_2m_to_3m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_2m_to_3m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_2m_to_3m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_2m_to_3m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_2m_to_3m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_2m_to_3m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_2m_to_3m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_2m_to_3m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_2m_to_3m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_2m_to_3m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_2m_to_3m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_3m_to_4m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_3m_to_4m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_3m_to_4m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_3m_to_4m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_3m_to_4m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_3m_to_4m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_3m_to_4m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_3m_to_4m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_3m_to_4m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_3m_to_4m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_3m_to_4m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_3m_to_4m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_3m_to_4m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_3m_to_4m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_4m_to_5m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_4m_to_5m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_4m_to_5m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_4m_to_5m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_4m_to_5m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_4m_to_5m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_4m_to_5m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_4m_to_5m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_4m_to_5m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_4m_to_5m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_4m_to_5m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_4m_to_5m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_4m_to_5m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_4m_to_5m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_5m_to_6m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_5m_to_6m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_5m_to_6m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_5m_to_6m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_5m_to_6m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_5m_to_6m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_5m_to_6m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_5m_to_6m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_5m_to_6m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_5m_to_6m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_5m_to_6m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_5m_to_6m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_5m_to_6m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_5m_to_6m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_6m_to_1y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_6m_to_1y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_6m_to_1y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_6m_to_1y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_6m_to_1y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_6m_to_1y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_6m_to_1y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_6m_to_1y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_6m_to_1y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_6m_to_1y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_6m_to_1y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_6m_to_1y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_6m_to_1y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_6m_to_1y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_1y_to_2y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_1y_to_2y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_1y_to_2y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_1y_to_2y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_1y_to_2y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_1y_to_2y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_1y_to_2y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_1y_to_2y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_1y_to_2y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_1y_to_2y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_1y_to_2y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_1y_to_2y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_1y_to_2y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_1y_to_2y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_2y_to_3y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_2y_to_3y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_2y_to_3y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_2y_to_3y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_2y_to_3y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_2y_to_3y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_2y_to_3y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_2y_to_3y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_2y_to_3y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_2y_to_3y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_2y_to_3y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_2y_to_3y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_2y_to_3y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_2y_to_3y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_3y_to_4y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_3y_to_4y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_3y_to_4y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_3y_to_4y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_3y_to_4y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_3y_to_4y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_3y_to_4y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_3y_to_4y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_3y_to_4y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_3y_to_4y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_3y_to_4y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_3y_to_4y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_3y_to_4y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_3y_to_4y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_4y_to_5y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_4y_to_5y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_4y_to_5y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_4y_to_5y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_4y_to_5y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_4y_to_5y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_4y_to_5y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_4y_to_5y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_4y_to_5y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_4y_to_5y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_4y_to_5y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_4y_to_5y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_4y_to_5y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_4y_to_5y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_5y_to_6y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_5y_to_6y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_5y_to_6y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_5y_to_6y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_5y_to_6y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_5y_to_6y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_5y_to_6y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_5y_to_6y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_5y_to_6y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_5y_to_6y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_5y_to_6y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_5y_to_6y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_5y_to_6y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_5y_to_6y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_6y_to_7y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_6y_to_7y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_6y_to_7y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_6y_to_7y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_6y_to_7y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_6y_to_7y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_6y_to_7y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_6y_to_7y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_6y_to_7y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_6y_to_7y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_6y_to_7y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_6y_to_7y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_6y_to_7y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_6y_to_7y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_7y_to_8y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_7y_to_8y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_7y_to_8y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_7y_to_8y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_7y_to_8y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_7y_to_8y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_7y_to_8y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_7y_to_8y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_7y_to_8y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_7y_to_8y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_7y_to_8y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_7y_to_8y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_7y_to_8y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_7y_to_8y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_8y_to_10y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_8y_to_10y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_8y_to_10y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_8y_to_10y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_8y_to_10y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_8y_to_10y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_8y_to_10y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_8y_to_10y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_8y_to_10y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_8y_to_10y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_8y_to_10y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_8y_to_10y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_8y_to_10y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_8y_to_10y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_10y_to_12y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_10y_to_12y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_10y_to_12y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_10y_to_12y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_10y_to_12y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_10y_to_12y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_10y_to_12y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_10y_to_12y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_10y_to_12y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_10y_to_12y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_10y_to_12y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_10y_to_12y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_10y_to_12y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_10y_to_12y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_12y_to_15y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_12y_to_15y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_12y_to_15y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_12y_to_15y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_12y_to_15y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_12y_to_15y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_12y_to_15y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_12y_to_15y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_12y_to_15y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_12y_to_15y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_12y_to_15y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_12y_to_15y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_12y_to_15y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_12y_to_15y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_Over15y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_Over15y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_15y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_15y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_15y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_15y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_15y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_15y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_15y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_15y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_15y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_15y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_15y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_15y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_15y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_15y_old_neg_realized_loss".to_string()), + under_1h: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1h_old".to_string()), + _1h_to_1d: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1h_to_1d_old".to_string()), + _1d_to_1w: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1d_to_1w_old".to_string()), + _1w_to_1m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1w_to_1m_old".to_string()), + _1m_to_2m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1m_to_2m_old".to_string()), + _2m_to_3m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_2m_to_3m_old".to_string()), + _3m_to_4m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_3m_to_4m_old".to_string()), + _4m_to_5m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_4m_to_5m_old".to_string()), + _5m_to_6m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_5m_to_6m_old".to_string()), + _6m_to_1y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_6m_to_1y_old".to_string()), + _1y_to_2y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1y_to_2y_old".to_string()), + _2y_to_3y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_2y_to_3y_old".to_string()), + _3y_to_4y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_3y_to_4y_old".to_string()), + _4y_to_5y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_4y_to_5y_old".to_string()), + _5y_to_6y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_5y_to_6y_old".to_string()), + _6y_to_7y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_6y_to_7y_old".to_string()), + _7y_to_8y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_7y_to_8y_old".to_string()), + _8y_to_10y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_8y_to_10y_old".to_string()), + _10y_to_12y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_10y_to_12y_old".to_string()), + _12y_to_15y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_12y_to_15y_old".to_string()), + over_15y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_15y_old".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_UnderAge { - pub _1w: SeriesTree_Cohorts_Utxo_UnderAge_1w, - pub _1m: SeriesTree_Cohorts_Utxo_UnderAge_1m, - pub _2m: SeriesTree_Cohorts_Utxo_UnderAge_2m, - pub _3m: SeriesTree_Cohorts_Utxo_UnderAge_3m, - pub _4m: SeriesTree_Cohorts_Utxo_UnderAge_4m, - pub _5m: SeriesTree_Cohorts_Utxo_UnderAge_5m, - pub _6m: SeriesTree_Cohorts_Utxo_UnderAge_6m, - pub _1y: SeriesTree_Cohorts_Utxo_UnderAge_1y, - pub _2y: SeriesTree_Cohorts_Utxo_UnderAge_2y, - pub _3y: SeriesTree_Cohorts_Utxo_UnderAge_3y, - pub _4y: SeriesTree_Cohorts_Utxo_UnderAge_4y, - pub _5y: SeriesTree_Cohorts_Utxo_UnderAge_5y, - pub _6y: SeriesTree_Cohorts_Utxo_UnderAge_6y, - pub _7y: SeriesTree_Cohorts_Utxo_UnderAge_7y, - pub _8y: SeriesTree_Cohorts_Utxo_UnderAge_8y, - pub _10y: SeriesTree_Cohorts_Utxo_UnderAge_10y, - pub _12y: SeriesTree_Cohorts_Utxo_UnderAge_12y, - pub _15y: SeriesTree_Cohorts_Utxo_UnderAge_15y, + pub _1w: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _1m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _3m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _4m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _5m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _6m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _1y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _3y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _4y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _5y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _6y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _7y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _8y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _10y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _12y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _15y: ActivityOutputsRealizedSupplyUnrealizedPattern, } impl SeriesTree_Cohorts_Utxo_UnderAge { pub fn new(client: Arc, base_path: String) -> Self { Self { - _1w: SeriesTree_Cohorts_Utxo_UnderAge_1w::new(client.clone(), format!("{base_path}_1w")), - _1m: SeriesTree_Cohorts_Utxo_UnderAge_1m::new(client.clone(), format!("{base_path}_1m")), - _2m: SeriesTree_Cohorts_Utxo_UnderAge_2m::new(client.clone(), format!("{base_path}_2m")), - _3m: SeriesTree_Cohorts_Utxo_UnderAge_3m::new(client.clone(), format!("{base_path}_3m")), - _4m: SeriesTree_Cohorts_Utxo_UnderAge_4m::new(client.clone(), format!("{base_path}_4m")), - _5m: SeriesTree_Cohorts_Utxo_UnderAge_5m::new(client.clone(), format!("{base_path}_5m")), - _6m: SeriesTree_Cohorts_Utxo_UnderAge_6m::new(client.clone(), format!("{base_path}_6m")), - _1y: SeriesTree_Cohorts_Utxo_UnderAge_1y::new(client.clone(), format!("{base_path}_1y")), - _2y: SeriesTree_Cohorts_Utxo_UnderAge_2y::new(client.clone(), format!("{base_path}_2y")), - _3y: SeriesTree_Cohorts_Utxo_UnderAge_3y::new(client.clone(), format!("{base_path}_3y")), - _4y: SeriesTree_Cohorts_Utxo_UnderAge_4y::new(client.clone(), format!("{base_path}_4y")), - _5y: SeriesTree_Cohorts_Utxo_UnderAge_5y::new(client.clone(), format!("{base_path}_5y")), - _6y: SeriesTree_Cohorts_Utxo_UnderAge_6y::new(client.clone(), format!("{base_path}_6y")), - _7y: SeriesTree_Cohorts_Utxo_UnderAge_7y::new(client.clone(), format!("{base_path}_7y")), - _8y: SeriesTree_Cohorts_Utxo_UnderAge_8y::new(client.clone(), format!("{base_path}_8y")), - _10y: SeriesTree_Cohorts_Utxo_UnderAge_10y::new(client.clone(), format!("{base_path}_10y")), - _12y: SeriesTree_Cohorts_Utxo_UnderAge_12y::new(client.clone(), format!("{base_path}_12y")), - _15y: SeriesTree_Cohorts_Utxo_UnderAge_15y::new(client.clone(), format!("{base_path}_15y")), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_1w { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_1w { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_1w_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_1w_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_1w_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_1w_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_1w_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_1w_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_1w_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_1w_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_1w_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_1w_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_1w_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_1w_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_1w_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_1w_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_1m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_1m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_1m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_1m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_1m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_1m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_1m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_1m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_1m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_1m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_1m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_1m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_1m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_1m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_1m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_1m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_2m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_2m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_2m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_2m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_2m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_2m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_2m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_2m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_2m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_2m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_2m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_2m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_2m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_2m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_2m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_2m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_3m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_3m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_3m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_3m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_3m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_3m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_3m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_3m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_3m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_3m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_3m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_3m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_3m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_3m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_3m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_3m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_4m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_4m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_4m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_4m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_4m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_4m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_4m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_4m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_4m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_4m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_4m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_4m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_4m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_4m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_4m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_4m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_5m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_5m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_5m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_5m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_5m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_5m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_5m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_5m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_5m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_5m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_5m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_5m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_5m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_5m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_5m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_5m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_6m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_6m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_6m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_6m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_6m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_6m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_6m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_6m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_6m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_6m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_6m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_6m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_6m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_6m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_6m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_6m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_1y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_1y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_1y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_1y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_1y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_1y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_1y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_1y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_1y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_1y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_1y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_1y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_1y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_1y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_1y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_1y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_2y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_2y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_2y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_2y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_2y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_2y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_2y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_2y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_2y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_2y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_2y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_2y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_2y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_2y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_2y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_2y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_3y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_3y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_3y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_3y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_3y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_3y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_3y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_3y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_3y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_3y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_3y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_3y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_3y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_3y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_3y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_3y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_4y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_4y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_4y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_4y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_4y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_4y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_4y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_4y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_4y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_4y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_4y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_4y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_4y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_4y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_4y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_4y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_5y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_5y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_5y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_5y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_5y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_5y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_5y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_5y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_5y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_5y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_5y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_5y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_5y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_5y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_5y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_5y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_6y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_6y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_6y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_6y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_6y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_6y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_6y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_6y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_6y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_6y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_6y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_6y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_6y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_6y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_6y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_6y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_7y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_7y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_7y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_7y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_7y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_7y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_7y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_7y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_7y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_7y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_7y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_7y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_7y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_7y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_7y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_7y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_8y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_8y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_8y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_8y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_8y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_8y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_8y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_8y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_8y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_8y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_8y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_8y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_8y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_8y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_8y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_8y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_10y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_10y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_10y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_10y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_10y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_10y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_10y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_10y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_10y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_10y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_10y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_10y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_10y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_10y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_10y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_10y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_12y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_12y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_12y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_12y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_12y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_12y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_12y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_12y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_12y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_12y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_12y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_12y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_12y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_12y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_12y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_12y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_15y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_15y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_under_15y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_under_15y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_under_15y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_under_15y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_under_15y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_under_15y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_under_15y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_under_15y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_under_15y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_under_15y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_under_15y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_under_15y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_under_15y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_under_15y_old_neg_realized_loss".to_string()), + _1w: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1w_old".to_string()), + _1m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1m_old".to_string()), + _2m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_2m_old".to_string()), + _3m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_3m_old".to_string()), + _4m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_4m_old".to_string()), + _5m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_5m_old".to_string()), + _6m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_6m_old".to_string()), + _1y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1y_old".to_string()), + _2y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_2y_old".to_string()), + _3y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_3y_old".to_string()), + _4y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_4y_old".to_string()), + _5y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_5y_old".to_string()), + _6y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_6y_old".to_string()), + _7y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_7y_old".to_string()), + _8y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_8y_old".to_string()), + _10y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_10y_old".to_string()), + _12y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_12y_old".to_string()), + _15y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_15y_old".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_OverAge { - pub _1d: SeriesTree_Cohorts_Utxo_OverAge_1d, - pub _1w: SeriesTree_Cohorts_Utxo_OverAge_1w, - pub _1m: SeriesTree_Cohorts_Utxo_OverAge_1m, - pub _2m: SeriesTree_Cohorts_Utxo_OverAge_2m, - pub _3m: SeriesTree_Cohorts_Utxo_OverAge_3m, - pub _4m: SeriesTree_Cohorts_Utxo_OverAge_4m, - pub _5m: SeriesTree_Cohorts_Utxo_OverAge_5m, - pub _6m: SeriesTree_Cohorts_Utxo_OverAge_6m, - pub _1y: SeriesTree_Cohorts_Utxo_OverAge_1y, - pub _2y: SeriesTree_Cohorts_Utxo_OverAge_2y, - pub _3y: SeriesTree_Cohorts_Utxo_OverAge_3y, - pub _4y: SeriesTree_Cohorts_Utxo_OverAge_4y, - pub _5y: SeriesTree_Cohorts_Utxo_OverAge_5y, - pub _6y: SeriesTree_Cohorts_Utxo_OverAge_6y, - pub _7y: SeriesTree_Cohorts_Utxo_OverAge_7y, - pub _8y: SeriesTree_Cohorts_Utxo_OverAge_8y, - pub _10y: SeriesTree_Cohorts_Utxo_OverAge_10y, - pub _12y: SeriesTree_Cohorts_Utxo_OverAge_12y, + pub _1d: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _1w: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _1m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _3m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _4m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _5m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _6m: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _1y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _3y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _4y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _5y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _6y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _7y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _8y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _10y: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _12y: ActivityOutputsRealizedSupplyUnrealizedPattern, } impl SeriesTree_Cohorts_Utxo_OverAge { pub fn new(client: Arc, base_path: String) -> Self { Self { - _1d: SeriesTree_Cohorts_Utxo_OverAge_1d::new(client.clone(), format!("{base_path}_1d")), - _1w: SeriesTree_Cohorts_Utxo_OverAge_1w::new(client.clone(), format!("{base_path}_1w")), - _1m: SeriesTree_Cohorts_Utxo_OverAge_1m::new(client.clone(), format!("{base_path}_1m")), - _2m: SeriesTree_Cohorts_Utxo_OverAge_2m::new(client.clone(), format!("{base_path}_2m")), - _3m: SeriesTree_Cohorts_Utxo_OverAge_3m::new(client.clone(), format!("{base_path}_3m")), - _4m: SeriesTree_Cohorts_Utxo_OverAge_4m::new(client.clone(), format!("{base_path}_4m")), - _5m: SeriesTree_Cohorts_Utxo_OverAge_5m::new(client.clone(), format!("{base_path}_5m")), - _6m: SeriesTree_Cohorts_Utxo_OverAge_6m::new(client.clone(), format!("{base_path}_6m")), - _1y: SeriesTree_Cohorts_Utxo_OverAge_1y::new(client.clone(), format!("{base_path}_1y")), - _2y: SeriesTree_Cohorts_Utxo_OverAge_2y::new(client.clone(), format!("{base_path}_2y")), - _3y: SeriesTree_Cohorts_Utxo_OverAge_3y::new(client.clone(), format!("{base_path}_3y")), - _4y: SeriesTree_Cohorts_Utxo_OverAge_4y::new(client.clone(), format!("{base_path}_4y")), - _5y: SeriesTree_Cohorts_Utxo_OverAge_5y::new(client.clone(), format!("{base_path}_5y")), - _6y: SeriesTree_Cohorts_Utxo_OverAge_6y::new(client.clone(), format!("{base_path}_6y")), - _7y: SeriesTree_Cohorts_Utxo_OverAge_7y::new(client.clone(), format!("{base_path}_7y")), - _8y: SeriesTree_Cohorts_Utxo_OverAge_8y::new(client.clone(), format!("{base_path}_8y")), - _10y: SeriesTree_Cohorts_Utxo_OverAge_10y::new(client.clone(), format!("{base_path}_10y")), - _12y: SeriesTree_Cohorts_Utxo_OverAge_12y::new(client.clone(), format!("{base_path}_12y")), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_1d { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_1d_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_1d { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_1d_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_1d_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_1d_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_1d_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_1d_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_1d_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_1d_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_1d_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_1d_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_1d_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_1d_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_1d_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_1d_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_1d_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_1d_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_1d_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_1d_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_1d_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_1d_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_1d_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_1d_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_1w { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_1w_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_1w { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_1w_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_1w_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_1w_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_1w_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_1w_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_1w_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_1w_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_1w_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_1w_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_1w_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_1w_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_1w_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_1w_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_1w_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_1w_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_1w_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_1w_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_1w_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_1w_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_1w_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_1w_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_1m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_1m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_1m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_1m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_1m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_1m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_1m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_1m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_1m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_1m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_1m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_1m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_1m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_1m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_1m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_1m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_1m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_1m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_1m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_1m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_1m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_1m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_1m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_1m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_2m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_2m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_2m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_2m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_2m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_2m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_2m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_2m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_2m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_2m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_2m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_2m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_2m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_2m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_2m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_2m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_2m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_2m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_2m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_2m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_2m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_2m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_2m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_2m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_3m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_3m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_3m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_3m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_3m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_3m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_3m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_3m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_3m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_3m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_3m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_3m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_3m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_3m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_3m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_3m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_3m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_3m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_3m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_3m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_3m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_3m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_3m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_3m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_4m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_4m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_4m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_4m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_4m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_4m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_4m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_4m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_4m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_4m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_4m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_4m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_4m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_4m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_4m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_4m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_4m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_4m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_4m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_4m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_4m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_4m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_4m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_4m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_5m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_5m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_5m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_5m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_5m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_5m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_5m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_5m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_5m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_5m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_5m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_5m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_5m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_5m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_5m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_5m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_5m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_5m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_5m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_5m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_5m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_5m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_5m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_5m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_6m { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_6m_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_6m { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_6m_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_6m_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_6m_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_6m_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_6m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_6m_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_6m_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_6m_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_6m_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_6m_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_6m_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_6m_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_6m_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_6m_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_6m_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_6m_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_6m_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_6m_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_6m_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_6m_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_6m_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_1y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_1y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_1y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_1y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_1y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_1y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_1y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_1y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_1y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_1y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_1y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_1y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_1y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_1y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_1y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_1y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_1y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_1y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_1y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_1y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_1y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_1y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_1y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_1y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_2y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_2y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_2y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_2y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_2y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_2y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_2y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_2y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_2y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_2y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_2y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_2y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_2y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_2y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_2y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_2y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_2y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_2y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_2y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_2y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_2y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_2y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_2y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_2y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_3y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_3y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_3y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_3y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_3y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_3y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_3y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_3y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_3y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_3y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_3y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_3y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_3y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_3y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_3y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_3y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_3y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_3y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_3y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_3y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_3y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_3y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_3y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_3y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_4y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_4y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_4y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_4y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_4y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_4y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_4y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_4y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_4y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_4y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_4y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_4y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_4y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_4y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_4y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_4y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_4y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_4y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_4y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_4y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_4y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_4y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_4y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_4y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_5y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_5y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_5y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_5y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_5y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_5y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_5y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_5y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_5y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_5y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_5y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_5y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_5y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_5y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_5y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_5y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_5y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_5y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_5y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_5y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_5y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_5y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_5y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_5y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_6y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_6y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_6y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_6y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_6y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_6y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_6y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_6y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_6y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_6y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_6y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_6y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_6y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_6y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_6y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_6y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_6y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_6y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_6y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_6y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_6y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_6y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_6y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_6y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_7y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_7y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_7y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_7y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_7y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_7y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_7y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_7y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_7y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_7y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_7y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_7y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_7y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_7y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_7y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_7y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_7y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_7y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_7y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_7y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_7y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_7y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_7y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_7y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_8y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_8y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_8y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_8y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_8y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_8y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_8y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_8y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_8y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_8y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_8y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_8y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_8y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_8y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_8y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_8y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_8y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_8y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_8y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_8y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_8y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_8y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_8y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_8y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_10y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_10y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_10y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_10y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_10y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_10y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_10y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_10y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_10y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_10y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_10y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_10y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_10y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_10y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_10y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_10y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_10y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_10y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_10y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_10y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_10y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_10y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_10y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_10y_old_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_12y { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_OverAge_12y_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_12y { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "utxos_over_12y_old_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "utxos_over_12y_old_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "utxos_over_12y_old".to_string()), - realized: SeriesTree_Cohorts_Utxo_OverAge_12y_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "utxos_over_12y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_12y_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_OverAge_12y_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_12y_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "utxos_over_12y_old_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "utxos_over_12y_old_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_OverAge_12y_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "utxos_over_12y_old_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "utxos_over_12y_old_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "utxos_over_12y_old_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "utxos_over_12y_old".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_OverAge_12y_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_OverAge_12y_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "utxos_over_12y_old_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "utxos_over_12y_old_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "utxos_over_12y_old_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "utxos_over_12y_old_neg_realized_loss".to_string()), + _1d: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1d_old".to_string()), + _1w: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1w_old".to_string()), + _1m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1m_old".to_string()), + _2m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_2m_old".to_string()), + _3m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_3m_old".to_string()), + _4m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_4m_old".to_string()), + _5m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_5m_old".to_string()), + _6m: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_6m_old".to_string()), + _1y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1y_old".to_string()), + _2y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_2y_old".to_string()), + _3y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_3y_old".to_string()), + _4y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_4y_old".to_string()), + _5y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_5y_old".to_string()), + _6y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_6y_old".to_string()), + _7y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_7y_old".to_string()), + _8y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_8y_old".to_string()), + _10y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_10y_old".to_string()), + _12y: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_12y_old".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Epoch { - pub _0: SeriesTree_Cohorts_Utxo_Epoch_0, - pub _1: SeriesTree_Cohorts_Utxo_Epoch_1, - pub _2: SeriesTree_Cohorts_Utxo_Epoch_2, - pub _3: SeriesTree_Cohorts_Utxo_Epoch_3, - pub _4: SeriesTree_Cohorts_Utxo_Epoch_4, + pub _0: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _1: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _3: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _4: ActivityOutputsRealizedSupplyUnrealizedPattern, } impl SeriesTree_Cohorts_Utxo_Epoch { pub fn new(client: Arc, base_path: String) -> Self { Self { - _0: SeriesTree_Cohorts_Utxo_Epoch_0::new(client.clone(), format!("{base_path}_0")), - _1: SeriesTree_Cohorts_Utxo_Epoch_1::new(client.clone(), format!("{base_path}_1")), - _2: SeriesTree_Cohorts_Utxo_Epoch_2::new(client.clone(), format!("{base_path}_2")), - _3: SeriesTree_Cohorts_Utxo_Epoch_3::new(client.clone(), format!("{base_path}_3")), - _4: SeriesTree_Cohorts_Utxo_Epoch_4::new(client.clone(), format!("{base_path}_4")), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_0 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Epoch_0_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_0 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "epoch_0_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "epoch_0_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "epoch_0".to_string()), - realized: SeriesTree_Cohorts_Utxo_Epoch_0_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "epoch_0".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_0_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Epoch_0_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_0_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "epoch_0_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "epoch_0_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Epoch_0_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "epoch_0_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "epoch_0_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "epoch_0_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "epoch_0".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_0_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_0_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "epoch_0_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "epoch_0_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "epoch_0_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "epoch_0_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_1 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Epoch_1_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_1 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "epoch_1_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "epoch_1_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "epoch_1".to_string()), - realized: SeriesTree_Cohorts_Utxo_Epoch_1_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "epoch_1".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_1_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Epoch_1_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_1_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "epoch_1_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "epoch_1_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Epoch_1_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "epoch_1_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "epoch_1_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "epoch_1_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "epoch_1".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_1_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_1_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "epoch_1_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "epoch_1_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "epoch_1_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "epoch_1_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_2 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Epoch_2_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_2 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "epoch_2_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "epoch_2_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "epoch_2".to_string()), - realized: SeriesTree_Cohorts_Utxo_Epoch_2_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "epoch_2".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_2_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Epoch_2_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_2_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "epoch_2_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "epoch_2_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Epoch_2_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "epoch_2_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "epoch_2_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "epoch_2_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "epoch_2".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_2_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_2_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "epoch_2_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "epoch_2_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "epoch_2_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "epoch_2_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_3 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Epoch_3_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_3 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "epoch_3_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "epoch_3_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "epoch_3".to_string()), - realized: SeriesTree_Cohorts_Utxo_Epoch_3_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "epoch_3".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_3_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Epoch_3_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_3_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "epoch_3_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "epoch_3_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Epoch_3_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "epoch_3_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "epoch_3_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "epoch_3_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "epoch_3".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_3_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_3_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "epoch_3_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "epoch_3_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "epoch_3_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "epoch_3_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_4 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Epoch_4_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_4 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "epoch_4_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "epoch_4_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "epoch_4".to_string()), - realized: SeriesTree_Cohorts_Utxo_Epoch_4_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "epoch_4".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_4_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Epoch_4_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_4_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "epoch_4_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "epoch_4_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Epoch_4_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "epoch_4_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "epoch_4_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "epoch_4_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "epoch_4".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Epoch_4_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Epoch_4_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "epoch_4_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "epoch_4_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "epoch_4_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "epoch_4_neg_realized_loss".to_string()), + _0: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "epoch_0".to_string()), + _1: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "epoch_1".to_string()), + _2: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "epoch_2".to_string()), + _3: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "epoch_3".to_string()), + _4: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "epoch_4".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Class { - pub _2009: SeriesTree_Cohorts_Utxo_Class_2009, - pub _2010: SeriesTree_Cohorts_Utxo_Class_2010, - pub _2011: SeriesTree_Cohorts_Utxo_Class_2011, - pub _2012: SeriesTree_Cohorts_Utxo_Class_2012, - pub _2013: SeriesTree_Cohorts_Utxo_Class_2013, - pub _2014: SeriesTree_Cohorts_Utxo_Class_2014, - pub _2015: SeriesTree_Cohorts_Utxo_Class_2015, - pub _2016: SeriesTree_Cohorts_Utxo_Class_2016, - pub _2017: SeriesTree_Cohorts_Utxo_Class_2017, - pub _2018: SeriesTree_Cohorts_Utxo_Class_2018, - pub _2019: SeriesTree_Cohorts_Utxo_Class_2019, - pub _2020: SeriesTree_Cohorts_Utxo_Class_2020, - pub _2021: SeriesTree_Cohorts_Utxo_Class_2021, - pub _2022: SeriesTree_Cohorts_Utxo_Class_2022, - pub _2023: SeriesTree_Cohorts_Utxo_Class_2023, - pub _2024: SeriesTree_Cohorts_Utxo_Class_2024, - pub _2025: SeriesTree_Cohorts_Utxo_Class_2025, - pub _2026: SeriesTree_Cohorts_Utxo_Class_2026, + pub _2009: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2010: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2011: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2012: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2013: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2014: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2015: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2016: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2017: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2018: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2019: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2020: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2021: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2022: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2023: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2024: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2025: ActivityOutputsRealizedSupplyUnrealizedPattern, + pub _2026: ActivityOutputsRealizedSupplyUnrealizedPattern, } impl SeriesTree_Cohorts_Utxo_Class { pub fn new(client: Arc, base_path: String) -> Self { Self { - _2009: SeriesTree_Cohorts_Utxo_Class_2009::new(client.clone(), format!("{base_path}_2009")), - _2010: SeriesTree_Cohorts_Utxo_Class_2010::new(client.clone(), format!("{base_path}_2010")), - _2011: SeriesTree_Cohorts_Utxo_Class_2011::new(client.clone(), format!("{base_path}_2011")), - _2012: SeriesTree_Cohorts_Utxo_Class_2012::new(client.clone(), format!("{base_path}_2012")), - _2013: SeriesTree_Cohorts_Utxo_Class_2013::new(client.clone(), format!("{base_path}_2013")), - _2014: SeriesTree_Cohorts_Utxo_Class_2014::new(client.clone(), format!("{base_path}_2014")), - _2015: SeriesTree_Cohorts_Utxo_Class_2015::new(client.clone(), format!("{base_path}_2015")), - _2016: SeriesTree_Cohorts_Utxo_Class_2016::new(client.clone(), format!("{base_path}_2016")), - _2017: SeriesTree_Cohorts_Utxo_Class_2017::new(client.clone(), format!("{base_path}_2017")), - _2018: SeriesTree_Cohorts_Utxo_Class_2018::new(client.clone(), format!("{base_path}_2018")), - _2019: SeriesTree_Cohorts_Utxo_Class_2019::new(client.clone(), format!("{base_path}_2019")), - _2020: SeriesTree_Cohorts_Utxo_Class_2020::new(client.clone(), format!("{base_path}_2020")), - _2021: SeriesTree_Cohorts_Utxo_Class_2021::new(client.clone(), format!("{base_path}_2021")), - _2022: SeriesTree_Cohorts_Utxo_Class_2022::new(client.clone(), format!("{base_path}_2022")), - _2023: SeriesTree_Cohorts_Utxo_Class_2023::new(client.clone(), format!("{base_path}_2023")), - _2024: SeriesTree_Cohorts_Utxo_Class_2024::new(client.clone(), format!("{base_path}_2024")), - _2025: SeriesTree_Cohorts_Utxo_Class_2025::new(client.clone(), format!("{base_path}_2025")), - _2026: SeriesTree_Cohorts_Utxo_Class_2026::new(client.clone(), format!("{base_path}_2026")), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2009 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2009_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2009 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2009_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2009_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2009".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2009_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2009".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2009_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2009_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2009_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2009_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2009_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2009_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2009_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2009_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2009_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2009".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2009_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2009_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2009_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2009_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2009_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2009_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2010 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2010_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2010 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2010_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2010_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2010".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2010_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2010".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2010_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2010_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2010_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2010_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2010_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2010_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2010_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2010_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2010_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2010".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2010_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2010_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2010_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2010_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2010_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2010_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2011 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2011_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2011 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2011_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2011_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2011".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2011_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2011".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2011_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2011_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2011_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2011_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2011_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2011_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2011_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2011_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2011_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2011".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2011_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2011_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2011_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2011_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2011_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2011_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2012 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2012_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2012 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2012_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2012_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2012".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2012_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2012".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2012_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2012_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2012_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2012_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2012_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2012_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2012_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2012_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2012_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2012".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2012_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2012_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2012_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2012_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2012_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2012_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2013 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2013_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2013 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2013_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2013_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2013".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2013_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2013".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2013_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2013_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2013_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2013_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2013_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2013_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2013_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2013_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2013_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2013".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2013_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2013_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2013_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2013_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2013_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2013_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2014 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2014_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2014 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2014_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2014_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2014".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2014_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2014".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2014_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2014_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2014_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2014_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2014_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2014_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2014_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2014_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2014_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2014".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2014_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2014_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2014_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2014_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2014_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2014_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2015 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2015_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2015 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2015_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2015_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2015".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2015_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2015".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2015_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2015_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2015_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2015_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2015_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2015_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2015_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2015_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2015_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2015".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2015_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2015_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2015_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2015_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2015_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2015_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2016 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2016_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2016 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2016_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2016_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2016".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2016_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2016".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2016_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2016_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2016_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2016_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2016_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2016_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2016_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2016_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2016_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2016".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2016_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2016_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2016_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2016_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2016_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2016_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2017 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2017_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2017 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2017_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2017_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2017".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2017_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2017".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2017_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2017_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2017_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2017_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2017_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2017_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2017_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2017_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2017_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2017".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2017_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2017_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2017_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2017_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2017_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2017_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2018 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2018_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2018 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2018_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2018_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2018".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2018_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2018".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2018_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2018_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2018_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2018_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2018_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2018_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2018_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2018_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2018_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2018".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2018_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2018_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2018_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2018_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2018_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2018_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2019 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2019_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2019 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2019_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2019_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2019".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2019_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2019".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2019_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2019_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2019_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2019_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2019_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2019_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2019_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2019_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2019_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2019".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2019_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2019_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2019_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2019_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2019_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2019_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2020 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2020_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2020 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2020_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2020_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2020".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2020_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2020".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2020_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2020_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2020_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2020_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2020_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2020_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2020_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2020_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2020_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2020".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2020_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2020_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2020_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2020_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2020_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2020_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2021 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2021_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2021 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2021_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2021_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2021".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2021_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2021".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2021_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2021_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2021_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2021_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2021_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2021_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2021_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2021_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2021_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2021".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2021_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2021_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2021_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2021_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2021_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2021_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2022 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2022_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2022 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2022_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2022_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2022".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2022_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2022".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2022_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2022_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2022_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2022_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2022_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2022_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2022_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2022_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2022_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2022".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2022_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2022_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2022_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2022_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2022_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2022_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2023 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2023_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2023 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2023_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2023_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2023".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2023_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2023".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2023_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2023_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2023_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2023_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2023_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2023_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2023_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2023_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2023_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2023".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2023_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2023_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2023_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2023_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2023_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2023_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2024 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2024_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2024 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2024_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2024_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2024".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2024_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2024".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2024_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2024_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2024_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2024_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2024_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2024_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2024_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2024_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2024_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2024".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2024_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2024_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2024_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2024_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2024_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2024_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2025 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2025_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2025 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2025_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2025_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2025".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2025_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2025".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2025_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2025_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2025_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2025_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2025_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2025_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2025_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2025_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2025_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2025".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2025_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2025_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2025_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2025_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2025_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2025_neg_realized_loss".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2026 { - pub supply: DeltaHalfInToTotalPattern, - pub outputs: UnspentPattern, - pub activity: CoindaysTransferPattern, - pub realized: SeriesTree_Cohorts_Utxo_Class_2026_Realized, - pub unrealized: LossNetNuplProfitPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2026 { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - supply: DeltaHalfInToTotalPattern::new(client.clone(), "class_2026_supply".to_string()), - outputs: UnspentPattern::new(client.clone(), "class_2026_utxo_count".to_string()), - activity: CoindaysTransferPattern::new(client.clone(), "class_2026".to_string()), - realized: SeriesTree_Cohorts_Utxo_Class_2026_Realized::new(client.clone(), format!("{base_path}_realized")), - unrealized: LossNetNuplProfitPattern::new(client.clone(), "class_2026".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2026_Realized { - pub cap: CentsDeltaUsdPattern, - pub profit: BlockCumulativeSumPattern, - pub loss: SeriesTree_Cohorts_Utxo_Class_2026_Realized_Loss, - pub price: BpsCentsRatioSatsUsdPattern, - pub mvrv: SeriesPattern1, - pub net_pnl: BlockCumulativeDeltaSumPattern, - pub sopr: RatioValuePattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2026_Realized { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - cap: CentsDeltaUsdPattern::new(client.clone(), "class_2026_realized_cap".to_string()), - profit: BlockCumulativeSumPattern::new(client.clone(), "class_2026_realized_profit".to_string()), - loss: SeriesTree_Cohorts_Utxo_Class_2026_Realized_Loss::new(client.clone(), format!("{base_path}_loss")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), "class_2026_realized_price".to_string()), - mvrv: SeriesPattern1::new(client.clone(), "class_2026_mvrv".to_string()), - net_pnl: BlockCumulativeDeltaSumPattern::new(client.clone(), "class_2026_net_realized_pnl".to_string()), - sopr: RatioValuePattern::new(client.clone(), "class_2026".to_string()), - } - } -} - -/// Series tree node. -pub struct SeriesTree_Cohorts_Utxo_Class_2026_Realized_Loss { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub negative: BaseSumPattern, -} - -impl SeriesTree_Cohorts_Utxo_Class_2026_Realized_Loss { - pub fn new(client: Arc, base_path: String) -> Self { - Self { - block: CentsUsdPattern2::new(client.clone(), "class_2026_realized_loss".to_string()), - cumulative: CentsUsdPattern3::new(client.clone(), "class_2026_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern6::new(client.clone(), "class_2026_realized_loss_sum".to_string()), - negative: BaseSumPattern::new(client.clone(), "class_2026_neg_realized_loss".to_string()), + _2009: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2009".to_string()), + _2010: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2010".to_string()), + _2011: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2011".to_string()), + _2012: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2012".to_string()), + _2013: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2013".to_string()), + _2014: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2014".to_string()), + _2015: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2015".to_string()), + _2016: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2016".to_string()), + _2017: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2017".to_string()), + _2018: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2018".to_string()), + _2019: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2019".to_string()), + _2020: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2020".to_string()), + _2021: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2021".to_string()), + _2022: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2022".to_string()), + _2023: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2023".to_string()), + _2024: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2024".to_string()), + _2025: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2025".to_string()), + _2026: ActivityOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "class_2026".to_string()), } } } diff --git a/crates/brk_computer/src/distribution/metrics/realized/core.rs b/crates/brk_computer/src/distribution/metrics/realized/core.rs index 096e67d08..7f8de1601 100644 --- a/crates/brk_computer/src/distribution/metrics/realized/core.rs +++ b/crates/brk_computer/src/distribution/metrics/realized/core.rs @@ -52,7 +52,7 @@ impl RealizedCore { let minimal = RealizedMinimal::forced_import(cfg)?; let neg_loss_base = LazyPerBlock::from_height_source::( - &cfg.name("neg_realized_loss"), + &cfg.name("realized_loss_neg"), cfg.version + Version::ONE, minimal.loss.block.cents.read_only_boxed_clone(), cfg.indexes, @@ -60,7 +60,7 @@ impl RealizedCore { let neg_loss_sum = minimal.loss.sum.0.map_with_suffix(|suffix, slot| { LazyPerBlock::from_height_source::( - &cfg.name(&format!("neg_realized_loss_sum_{suffix}")), + &cfg.name(&format!("realized_loss_neg_sum_{suffix}")), cfg.version + Version::ONE, slot.cents.height.read_only_boxed_clone(), cfg.indexes, diff --git a/crates/brk_computer/src/distribution/metrics/supply/base.rs b/crates/brk_computer/src/distribution/metrics/supply/base.rs index 5c69dabe1..223134bc1 100644 --- a/crates/brk_computer/src/distribution/metrics/supply/base.rs +++ b/crates/brk_computer/src/distribution/metrics/supply/base.rs @@ -6,8 +6,7 @@ use vecdb::{AnyStoredVec, AnyVec, Exit, Rw, StorageMode, WritableVec}; use crate::{distribution::state::{CohortState, CostBasisOps, RealizedOps}, prices}; use crate::internal::{ - AmountPerBlock, HalveCents, HalveDollars, HalveSats, HalveSatsToBitcoin, - LazyAmountPerBlock, LazyRollingDeltasFromHeight, + AmountPerBlock, LazyRollingDeltasFromHeight, }; use crate::distribution::metrics::ImportConfig; @@ -16,20 +15,12 @@ use crate::distribution::metrics::ImportConfig; #[derive(Traversable)] pub struct SupplyBase { pub total: AmountPerBlock, - pub half: LazyAmountPerBlock, pub delta: LazyRollingDeltasFromHeight, } impl SupplyBase { pub(crate) fn forced_import(cfg: &ImportConfig) -> Result { - let supply = cfg.import("supply", Version::ZERO)?; - - let supply_half = LazyAmountPerBlock::from_block_source::< - HalveSats, - HalveSatsToBitcoin, - HalveCents, - HalveDollars, - >(&cfg.name("supply_half"), &supply, cfg.version); + let supply: AmountPerBlock = cfg.import("supply", Version::ZERO)?; let delta = LazyRollingDeltasFromHeight::new( &cfg.name("supply_delta"), @@ -41,7 +32,6 @@ impl SupplyBase { Ok(Self { total: supply, - half: supply_half, delta, }) } diff --git a/crates/brk_computer/src/distribution/metrics/supply/core.rs b/crates/brk_computer/src/distribution/metrics/supply/core.rs index 0eddea735..b8889a3ee 100644 --- a/crates/brk_computer/src/distribution/metrics/supply/core.rs +++ b/crates/brk_computer/src/distribution/metrics/supply/core.rs @@ -6,7 +6,9 @@ use vecdb::{AnyStoredVec, AnyVec, Exit, Rw, StorageMode, WritableVec}; use crate::{distribution::state::UnrealizedState, prices}; -use crate::internal::AmountPerBlock; +use crate::internal::{ + AmountPerBlock, HalveCents, HalveDollars, HalveSats, HalveSatsToBitcoin, LazyAmountPerBlock, +}; use crate::distribution::metrics::ImportConfig; @@ -20,6 +22,7 @@ pub struct SupplyCore { #[traversable(flatten)] pub base: SupplyBase, + pub half: LazyAmountPerBlock, pub in_profit: AmountPerBlock, pub in_loss: AmountPerBlock, } @@ -29,8 +32,16 @@ impl SupplyCore { let v0 = Version::ZERO; let base = SupplyBase::forced_import(cfg)?; + let half = LazyAmountPerBlock::from_block_source::< + HalveSats, + HalveSatsToBitcoin, + HalveCents, + HalveDollars, + >(&cfg.name("supply_half"), &base.total, cfg.version); + Ok(Self { base, + half, in_profit: cfg.import("supply_in_profit", v0)?, in_loss: cfg.import("supply_in_loss", v0)?, }) diff --git a/crates/brk_computer/src/distribution/metrics/unrealized/basic.rs b/crates/brk_computer/src/distribution/metrics/unrealized/basic.rs index 769b627af..af4e7bd12 100644 --- a/crates/brk_computer/src/distribution/metrics/unrealized/basic.rs +++ b/crates/brk_computer/src/distribution/metrics/unrealized/basic.rs @@ -30,7 +30,7 @@ impl UnrealizedBasic { let loss: FiatPerBlock = cfg.import("unrealized_loss", v1)?; let neg_loss = LazyPerBlock::from_computed::( - &cfg.name("neg_unrealized_loss"), + &cfg.name("unrealized_loss_neg"), cfg.version, loss.cents.height.read_only_boxed_clone(), &loss.cents, diff --git a/modules/brk-client/index.js b/modules/brk-client/index.js index 8f7318be4..e5f990497 100644 --- a/modules/brk-client/index.js +++ b/modules/brk-client/index.js @@ -2048,6 +2048,24 @@ function create_1m1w1y24hBpsPercentRatioPattern(client, acc) { * @property {RatioValuePattern} sopr */ +/** + * Create a CapLossMvrvNetPriceProfitSoprPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated series name + * @returns {CapLossMvrvNetPriceProfitSoprPattern} + */ +function createCapLossMvrvNetPriceProfitSoprPattern(client, acc) { + return { + cap: createCentsDeltaUsdPattern(client, _m(acc, 'realized_cap')), + loss: createBlockCumulativeNegativeSumPattern(client, _m(acc, 'realized_loss')), + mvrv: createSeriesPattern1(client, _m(acc, 'mvrv')), + netPnl: createBlockCumulativeDeltaSumPattern(client, _m(acc, 'net_realized_pnl')), + price: createBpsCentsRatioSatsUsdPattern(client, _m(acc, 'realized_price')), + profit: createBlockCumulativeSumPattern(client, _m(acc, 'realized_profit')), + sopr: createRatioValuePattern(client, acc), + }; +} + /** * @typedef {Object} InMaxMinPerSupplyPattern * @property {PerPattern} inLoss @@ -2152,7 +2170,7 @@ function create_1m1w1y2y4yAllPattern(client, acc) { * @property {BaseDeltaPattern} addrCount * @property {UnspentPattern} outputs * @property {CapLossMvrvPriceProfitPattern} realized - * @property {DeltaHalfTotalPattern} supply + * @property {DeltaTotalPattern} supply * @property {NuplPattern} unrealized */ @@ -2168,7 +2186,7 @@ function createActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, acc) { addrCount: createBaseDeltaPattern(client, _m(acc, 'addr_count')), outputs: createUnspentPattern(client, _m(acc, 'utxo_count')), realized: createCapLossMvrvPriceProfitPattern(client, acc), - supply: createDeltaHalfTotalPattern(client, _m(acc, 'supply')), + supply: createDeltaTotalPattern(client, _m(acc, 'supply')), unrealized: createNuplPattern(client, _m(acc, 'nupl')), }; } @@ -2272,12 +2290,12 @@ function createBtcCentsSatsToUsdPattern3(client, acc) { */ function createCentsNegativeToUsdPattern2(client, acc) { return { - cents: createSeriesPattern1(client, _m(acc, 'unrealized_loss_cents')), - negative: createSeriesPattern1(client, _m(acc, 'neg_unrealized_loss')), - toMcap: createBpsPercentRatioPattern3(client, _m(acc, 'unrealized_loss_to_mcap')), - toOwnGrossPnl: createBpsPercentRatioPattern3(client, _m(acc, 'unrealized_loss_to_own_gross_pnl')), - toOwnMcap: createBpsPercentRatioPattern4(client, _m(acc, 'unrealized_loss_to_own_mcap')), - usd: createSeriesPattern1(client, _m(acc, 'unrealized_loss')), + cents: createSeriesPattern1(client, _m(acc, 'cents')), + negative: createSeriesPattern1(client, _m(acc, 'neg')), + toMcap: createBpsPercentRatioPattern3(client, _m(acc, 'to_mcap')), + toOwnGrossPnl: createBpsPercentRatioPattern3(client, _m(acc, 'to_own_gross_pnl')), + toOwnMcap: createBpsPercentRatioPattern4(client, _m(acc, 'to_own_mcap')), + usd: createSeriesPattern1(client, acc), }; } @@ -2396,6 +2414,22 @@ function create_1m1w1y24hBlockPattern(client, acc) { * @property {LossNetNuplProfitPattern} unrealized */ +/** + * Create a ActivityOutputsRealizedSupplyUnrealizedPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated series name + * @returns {ActivityOutputsRealizedSupplyUnrealizedPattern} + */ +function createActivityOutputsRealizedSupplyUnrealizedPattern(client, acc) { + return { + activity: createCoindaysTransferPattern(client, acc), + outputs: createUnspentPattern(client, _m(acc, 'utxo_count')), + realized: createCapLossMvrvNetPriceProfitSoprPattern(client, acc), + supply: createDeltaHalfInToTotalPattern(client, _m(acc, 'supply')), + unrealized: createLossNetNuplProfitPattern(client, acc), + }; +} + /** * @typedef {Object} ActivityOutputsRealizedSupplyUnrealizedPattern3 * @property {TransferPattern} activity @@ -2426,7 +2460,7 @@ function createActivityOutputsRealizedSupplyUnrealizedPattern3(client, acc) { * @property {TransferPattern} activity * @property {UnspentPattern} outputs * @property {CapLossMvrvPriceProfitPattern} realized - * @property {DeltaHalfTotalPattern} supply + * @property {DeltaTotalPattern} supply * @property {NuplPattern} unrealized */ @@ -2441,7 +2475,7 @@ function createActivityOutputsRealizedSupplyUnrealizedPattern2(client, acc) { activity: createTransferPattern(client, _m(acc, 'transfer_volume')), outputs: createUnspentPattern(client, _m(acc, 'utxo_count')), realized: createCapLossMvrvPriceProfitPattern(client, acc), - supply: createDeltaHalfTotalPattern(client, _m(acc, 'supply')), + supply: createDeltaTotalPattern(client, _m(acc, 'supply')), unrealized: createNuplPattern(client, _m(acc, 'nupl')), }; } @@ -2903,6 +2937,21 @@ function createAverageBlockCumulativeSumPattern3(client, acc) { * @property {_1m1w1y24hPattern6} sum */ +/** + * Create a BlockCumulativeNegativeSumPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated series name + * @returns {BlockCumulativeNegativeSumPattern} + */ +function createBlockCumulativeNegativeSumPattern(client, acc) { + return { + block: createCentsUsdPattern2(client, acc), + cumulative: createCentsUsdPattern3(client, _m(acc, 'cumulative')), + negative: createBaseSumPattern(client, _m(acc, 'neg')), + sum: create_1m1w1y24hPattern6(client, _m(acc, 'sum')), + }; +} + /** * @typedef {Object} BlockCumulativeDeltaSumPattern * @property {CentsUsdPattern4} block @@ -3088,7 +3137,7 @@ function createCentsToUsdPattern3(client, acc) { */ function createLossNetNuplProfitPattern(client, acc) { return { - loss: createCentsNegativeUsdPattern(client, acc), + loss: createCentsNegativeUsdPattern(client, _m(acc, 'unrealized_loss')), netPnl: createCentsUsdPattern(client, _m(acc, 'net_unrealized_pnl')), nupl: createBpsRatioPattern(client, _m(acc, 'nupl')), profit: createCentsUsdPattern3(client, _m(acc, 'unrealized_profit')), @@ -3357,9 +3406,9 @@ function createCentsDeltaUsdPattern(client, acc) { */ function createCentsNegativeUsdPattern(client, acc) { return { - cents: createSeriesPattern1(client, _m(acc, 'unrealized_loss_cents')), - negative: createSeriesPattern1(client, _m(acc, 'neg_unrealized_loss')), - usd: createSeriesPattern1(client, _m(acc, 'unrealized_loss')), + cents: createSeriesPattern1(client, _m(acc, 'cents')), + negative: createSeriesPattern1(client, _m(acc, 'neg')), + usd: createSeriesPattern1(client, acc), }; } @@ -3405,27 +3454,6 @@ function createCumulativeRollingSumPattern(client, acc) { }; } -/** - * @typedef {Object} DeltaHalfTotalPattern - * @property {AbsoluteRatePattern} delta - * @property {BtcCentsSatsUsdPattern3} half - * @property {BtcCentsSatsUsdPattern3} total - */ - -/** - * Create a DeltaHalfTotalPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {DeltaHalfTotalPattern} - */ -function createDeltaHalfTotalPattern(client, acc) { - return { - delta: createAbsoluteRatePattern(client, _m(acc, 'delta')), - half: createBtcCentsSatsUsdPattern3(client, _m(acc, 'half')), - total: createBtcCentsSatsUsdPattern3(client, acc), - }; -} - /** * @typedef {Object} GreedNetPainPattern * @property {CentsUsdPattern3} greedIndex @@ -3448,7 +3476,7 @@ function createDeltaHalfTotalPattern(client, acc) { */ function createLossNuplProfitPattern(client, acc) { return { - loss: createCentsNegativeUsdPattern(client, acc), + loss: createCentsNegativeUsdPattern(client, _m(acc, 'unrealized_loss')), nupl: createBpsRatioPattern(client, _m(acc, 'nupl')), profit: createCentsUsdPattern3(client, _m(acc, 'unrealized_profit')), }; @@ -3771,6 +3799,25 @@ function createCoindaysTransferPattern(client, acc) { }; } +/** + * @typedef {Object} DeltaTotalPattern + * @property {AbsoluteRatePattern} delta + * @property {BtcCentsSatsUsdPattern3} total + */ + +/** + * Create a DeltaTotalPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated series name + * @returns {DeltaTotalPattern} + */ +function createDeltaTotalPattern(client, acc) { + return { + delta: createAbsoluteRatePattern(client, _m(acc, 'delta')), + total: createBtcCentsSatsUsdPattern3(client, acc), + }; +} + /** * @typedef {Object} InPattern * @property {CentsUsdPattern3} inLoss @@ -5434,8 +5481,8 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_All_Supply * @property {BtcCentsSatsUsdPattern3} total - * @property {BtcCentsSatsUsdPattern3} half * @property {AbsoluteRatePattern} delta + * @property {BtcCentsSatsUsdPattern3} half * @property {BtcCentsSatsToUsdPattern2} inProfit * @property {BtcCentsSatsToUsdPattern2} inLoss */ @@ -5452,7 +5499,7 @@ function createUnspentPattern(client, acc) { * @typedef {Object} SeriesTree_Cohorts_Utxo_All_Realized * @property {CentsDeltaToUsdPattern} cap * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_All_Realized_Loss} loss + * @property {BlockCumulativeNegativeSumPattern} loss * @property {SeriesTree_Cohorts_Utxo_All_Realized_Price} price * @property {SeriesPattern1} mvrv * @property {BlockChangeCumulativeDeltaSumPattern} netPnl @@ -5464,14 +5511,6 @@ function createUnspentPattern(client, acc) { * @property {_1m1w1y24hPattern} profitToLossRatio */ -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_All_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - /** * @typedef {Object} SeriesTree_Cohorts_Utxo_All_Realized_Price * @property {SeriesPattern1} usd @@ -5659,7 +5698,7 @@ function createUnspentPattern(client, acc) { * @typedef {Object} SeriesTree_Cohorts_Utxo_Sth_Realized * @property {CentsDeltaToUsdPattern} cap * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Sth_Realized_Loss} loss + * @property {BlockCumulativeNegativeSumPattern} loss * @property {SeriesTree_Cohorts_Utxo_Sth_Realized_Price} price * @property {SeriesPattern1} mvrv * @property {BlockChangeCumulativeDeltaSumPattern} netPnl @@ -5671,14 +5710,6 @@ function createUnspentPattern(client, acc) { * @property {_1m1w1y24hPattern} profitToLossRatio */ -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Sth_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Sth_Realized_Price * @property {SeriesPattern1} usd @@ -5842,7 +5873,7 @@ function createUnspentPattern(client, acc) { * @typedef {Object} SeriesTree_Cohorts_Utxo_Lth_Realized * @property {CentsDeltaToUsdPattern} cap * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Lth_Realized_Loss} loss + * @property {BlockCumulativeNegativeSumPattern} loss * @property {SeriesTree_Cohorts_Utxo_Lth_Realized_Price} price * @property {SeriesPattern1} mvrv * @property {BlockChangeCumulativeDeltaSumPattern} netPnl @@ -5854,14 +5885,6 @@ function createUnspentPattern(client, acc) { * @property {_1m1w1y24hPattern} profitToLossRatio */ -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Lth_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Lth_Realized_Price * @property {SeriesPattern1} usd @@ -5997,2342 +6020,102 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange - * @property {SeriesTree_Cohorts_Utxo_AgeRange_Under1h} under1h - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d} _1hTo1d - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w} _1dTo1w - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m} _1wTo1m - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m} _1mTo2m - * @property {SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m} _2mTo3m - * @property {SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m} _3mTo4m - * @property {SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m} _4mTo5m - * @property {SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m} _5mTo6m - * @property {SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y} _6mTo1y - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y} _1yTo2y - * @property {SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y} _2yTo3y - * @property {SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y} _3yTo4y - * @property {SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y} _4yTo5y - * @property {SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y} _5yTo6y - * @property {SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y} _6yTo7y - * @property {SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y} _7yTo8y - * @property {SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y} _8yTo10y - * @property {SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y} _10yTo12y - * @property {SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y} _12yTo15y - * @property {SeriesTree_Cohorts_Utxo_AgeRange_Over15y} over15y - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_Under1h - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_Over15y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} under1h + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1hTo1d + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1dTo1w + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1wTo1m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1mTo2m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2mTo3m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3mTo4m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4mTo5m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _5mTo6m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _6mTo1y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1yTo2y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2yTo3y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3yTo4y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4yTo5y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _5yTo6y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _6yTo7y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _7yTo8y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _8yTo10y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _10yTo12y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _12yTo15y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} over15y */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge - * @property {SeriesTree_Cohorts_Utxo_UnderAge_1w} _1w - * @property {SeriesTree_Cohorts_Utxo_UnderAge_1m} _1m - * @property {SeriesTree_Cohorts_Utxo_UnderAge_2m} _2m - * @property {SeriesTree_Cohorts_Utxo_UnderAge_3m} _3m - * @property {SeriesTree_Cohorts_Utxo_UnderAge_4m} _4m - * @property {SeriesTree_Cohorts_Utxo_UnderAge_5m} _5m - * @property {SeriesTree_Cohorts_Utxo_UnderAge_6m} _6m - * @property {SeriesTree_Cohorts_Utxo_UnderAge_1y} _1y - * @property {SeriesTree_Cohorts_Utxo_UnderAge_2y} _2y - * @property {SeriesTree_Cohorts_Utxo_UnderAge_3y} _3y - * @property {SeriesTree_Cohorts_Utxo_UnderAge_4y} _4y - * @property {SeriesTree_Cohorts_Utxo_UnderAge_5y} _5y - * @property {SeriesTree_Cohorts_Utxo_UnderAge_6y} _6y - * @property {SeriesTree_Cohorts_Utxo_UnderAge_7y} _7y - * @property {SeriesTree_Cohorts_Utxo_UnderAge_8y} _8y - * @property {SeriesTree_Cohorts_Utxo_UnderAge_10y} _10y - * @property {SeriesTree_Cohorts_Utxo_UnderAge_12y} _12y - * @property {SeriesTree_Cohorts_Utxo_UnderAge_15y} _15y - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1w - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_2m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_3m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_4m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_5m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_6m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_2y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_3y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_4y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_5y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_6y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_7y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_8y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_10y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_12y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_15y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1w + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _5m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _6m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _5y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _6y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _7y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _8y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _10y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _12y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _15y */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge - * @property {SeriesTree_Cohorts_Utxo_OverAge_1d} _1d - * @property {SeriesTree_Cohorts_Utxo_OverAge_1w} _1w - * @property {SeriesTree_Cohorts_Utxo_OverAge_1m} _1m - * @property {SeriesTree_Cohorts_Utxo_OverAge_2m} _2m - * @property {SeriesTree_Cohorts_Utxo_OverAge_3m} _3m - * @property {SeriesTree_Cohorts_Utxo_OverAge_4m} _4m - * @property {SeriesTree_Cohorts_Utxo_OverAge_5m} _5m - * @property {SeriesTree_Cohorts_Utxo_OverAge_6m} _6m - * @property {SeriesTree_Cohorts_Utxo_OverAge_1y} _1y - * @property {SeriesTree_Cohorts_Utxo_OverAge_2y} _2y - * @property {SeriesTree_Cohorts_Utxo_OverAge_3y} _3y - * @property {SeriesTree_Cohorts_Utxo_OverAge_4y} _4y - * @property {SeriesTree_Cohorts_Utxo_OverAge_5y} _5y - * @property {SeriesTree_Cohorts_Utxo_OverAge_6y} _6y - * @property {SeriesTree_Cohorts_Utxo_OverAge_7y} _7y - * @property {SeriesTree_Cohorts_Utxo_OverAge_8y} _8y - * @property {SeriesTree_Cohorts_Utxo_OverAge_10y} _10y - * @property {SeriesTree_Cohorts_Utxo_OverAge_12y} _12y - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1d - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_1d_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1d_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_1d_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1d_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1w - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_1w_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1w_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_1w_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1w_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_1m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_1m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_2m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_2m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_2m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_2m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_2m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_3m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_3m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_3m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_3m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_3m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_4m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_4m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_4m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_4m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_4m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_5m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_5m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_5m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_5m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_5m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_6m - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_6m_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_6m_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_6m_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_6m_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_1y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_1y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_1y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_2y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_2y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_2y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_2y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_2y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_3y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_3y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_3y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_3y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_3y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_4y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_4y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_4y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_4y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_4y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_5y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_5y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_5y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_5y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_5y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_6y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_6y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_6y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_6y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_6y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_7y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_7y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_7y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_7y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_7y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_8y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_8y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_8y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_8y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_8y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_10y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_10y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_10y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_10y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_10y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_12y - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_OverAge_12y_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_12y_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_OverAge_12y_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge_12y_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1d + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1w + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _5m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _6m + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _5y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _6y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _7y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _8y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _10y + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _12y */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch - * @property {SeriesTree_Cohorts_Utxo_Epoch_0} _0 - * @property {SeriesTree_Cohorts_Utxo_Epoch_1} _1 - * @property {SeriesTree_Cohorts_Utxo_Epoch_2} _2 - * @property {SeriesTree_Cohorts_Utxo_Epoch_3} _3 - * @property {SeriesTree_Cohorts_Utxo_Epoch_4} _4 - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_0 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Epoch_0_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_0_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Epoch_0_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_0_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_1 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Epoch_1_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_1_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Epoch_1_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_1_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_2 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Epoch_2_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_2_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Epoch_2_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_2_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_3 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Epoch_3_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_3_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Epoch_3_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_3_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_4 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Epoch_4_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_4_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Epoch_4_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch_4_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _0 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4 */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Class - * @property {SeriesTree_Cohorts_Utxo_Class_2009} _2009 - * @property {SeriesTree_Cohorts_Utxo_Class_2010} _2010 - * @property {SeriesTree_Cohorts_Utxo_Class_2011} _2011 - * @property {SeriesTree_Cohorts_Utxo_Class_2012} _2012 - * @property {SeriesTree_Cohorts_Utxo_Class_2013} _2013 - * @property {SeriesTree_Cohorts_Utxo_Class_2014} _2014 - * @property {SeriesTree_Cohorts_Utxo_Class_2015} _2015 - * @property {SeriesTree_Cohorts_Utxo_Class_2016} _2016 - * @property {SeriesTree_Cohorts_Utxo_Class_2017} _2017 - * @property {SeriesTree_Cohorts_Utxo_Class_2018} _2018 - * @property {SeriesTree_Cohorts_Utxo_Class_2019} _2019 - * @property {SeriesTree_Cohorts_Utxo_Class_2020} _2020 - * @property {SeriesTree_Cohorts_Utxo_Class_2021} _2021 - * @property {SeriesTree_Cohorts_Utxo_Class_2022} _2022 - * @property {SeriesTree_Cohorts_Utxo_Class_2023} _2023 - * @property {SeriesTree_Cohorts_Utxo_Class_2024} _2024 - * @property {SeriesTree_Cohorts_Utxo_Class_2025} _2025 - * @property {SeriesTree_Cohorts_Utxo_Class_2026} _2026 - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2009 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2009_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2009_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2009_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2009_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2010 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2010_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2010_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2010_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2010_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2011 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2011_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2011_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2011_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2011_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2012 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2012_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2012_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2012_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2012_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2013 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2013_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2013_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2013_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2013_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2014 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2014_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2014_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2014_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2014_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2015 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2015_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2015_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2015_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2015_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2016 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2016_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2016_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2016_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2016_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2017 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2017_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2017_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2017_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2017_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2018 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2018_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2018_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2018_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2018_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2019 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2019_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2019_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2019_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2019_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2020 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2020_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2020_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2020_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2020_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2021 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2021_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2021_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2021_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2021_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2022 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2022_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2022_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2022_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2022_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2023 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2023_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2023_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2023_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2023_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2024 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2024_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2024_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2024_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2024_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2025 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2025_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2025_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2025_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2025_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2026 - * @property {DeltaHalfInToTotalPattern} supply - * @property {UnspentPattern} outputs - * @property {CoindaysTransferPattern} activity - * @property {SeriesTree_Cohorts_Utxo_Class_2026_Realized} realized - * @property {LossNetNuplProfitPattern} unrealized - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2026_Realized - * @property {CentsDeltaUsdPattern} cap - * @property {BlockCumulativeSumPattern} profit - * @property {SeriesTree_Cohorts_Utxo_Class_2026_Realized_Loss} loss - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {SeriesPattern1} mvrv - * @property {BlockCumulativeDeltaSumPattern} netPnl - * @property {RatioValuePattern} sopr - */ - -/** - * @typedef {Object} SeriesTree_Cohorts_Utxo_Class_2026_Realized_Loss - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BaseSumPattern} negative + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2009 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2010 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2011 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2012 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2013 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2014 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2015 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2016 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2017 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2018 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2019 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2020 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2021 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2022 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2023 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2024 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2025 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2026 */ /** @@ -10766,8 +8549,8 @@ class BrkClient extends BrkClientBase { all: { supply: { total: createBtcCentsSatsUsdPattern3(this, 'supply'), - half: createBtcCentsSatsUsdPattern3(this, 'supply_half'), delta: createAbsoluteRatePattern(this, 'supply_delta'), + half: createBtcCentsSatsUsdPattern3(this, 'supply_half'), inProfit: createBtcCentsSatsToUsdPattern2(this, 'supply_in_profit'), inLoss: createBtcCentsSatsToUsdPattern2(this, 'supply_in_loss'), }, @@ -10781,12 +8564,7 @@ class BrkClient extends BrkClientBase { realized: { cap: createCentsDeltaToUsdPattern(this, 'realized_cap'), profit: createBlockCumulativeSumPattern(this, 'realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'realized_loss'), - cumulative: createCentsUsdPattern3(this, 'realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'realized_loss_sum'), - negative: createBaseSumPattern(this, 'neg_realized_loss'), - }, + loss: createBlockCumulativeNegativeSumPattern(this, 'realized_loss'), price: { usd: createSeriesPattern1(this, 'realized_price'), cents: createSeriesPattern1(this, 'realized_price_cents'), @@ -10903,7 +8681,7 @@ class BrkClient extends BrkClientBase { loss: { usd: createSeriesPattern1(this, 'unrealized_loss'), cents: createSeriesPattern1(this, 'unrealized_loss_cents'), - negative: createSeriesPattern1(this, 'neg_unrealized_loss'), + negative: createSeriesPattern1(this, 'unrealized_loss_neg'), toMcap: createBpsPercentRatioPattern3(this, 'unrealized_loss_to_mcap'), toOwnGrossPnl: createBpsPercentRatioPattern3(this, 'unrealized_loss_to_own_gross_pnl'), }, @@ -10935,12 +8713,7 @@ class BrkClient extends BrkClientBase { realized: { cap: createCentsDeltaToUsdPattern(this, 'sth_realized_cap'), profit: createBlockCumulativeSumPattern(this, 'sth_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'sth_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'sth_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'sth_realized_loss_sum'), - negative: createBaseSumPattern(this, 'sth_neg_realized_loss'), - }, + loss: createBlockCumulativeNegativeSumPattern(this, 'sth_realized_loss'), price: { usd: createSeriesPattern1(this, 'sth_realized_price'), cents: createSeriesPattern1(this, 'sth_realized_price_cents'), @@ -11049,7 +8822,7 @@ class BrkClient extends BrkClientBase { unrealized: { nupl: createBpsRatioPattern(this, 'sth_nupl'), profit: createCentsToUsdPattern4(this, 'sth_unrealized_profit'), - loss: createCentsNegativeToUsdPattern2(this, 'sth'), + loss: createCentsNegativeToUsdPattern2(this, 'sth_unrealized_loss'), netPnl: createCentsToUsdPattern3(this, 'sth_net_unrealized_pnl'), grossPnl: createCentsUsdPattern3(this, 'sth_unrealized_gross_pnl'), investedCapital: createInPattern(this, 'sth_invested_capital_in'), @@ -11074,12 +8847,7 @@ class BrkClient extends BrkClientBase { realized: { cap: createCentsDeltaToUsdPattern(this, 'lth_realized_cap'), profit: createBlockCumulativeSumPattern(this, 'lth_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'lth_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'lth_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'lth_realized_loss_sum'), - negative: createBaseSumPattern(this, 'lth_neg_realized_loss'), - }, + loss: createBlockCumulativeNegativeSumPattern(this, 'lth_realized_loss'), price: { usd: createSeriesPattern1(this, 'lth_realized_price'), cents: createSeriesPattern1(this, 'lth_realized_price_cents'), @@ -11183,7 +8951,7 @@ class BrkClient extends BrkClientBase { unrealized: { nupl: createBpsRatioPattern(this, 'lth_nupl'), profit: createCentsToUsdPattern4(this, 'lth_unrealized_profit'), - loss: createCentsNegativeToUsdPattern2(this, 'lth'), + loss: createCentsNegativeToUsdPattern2(this, 'lth_unrealized_loss'), netPnl: createCentsToUsdPattern3(this, 'lth_net_unrealized_pnl'), grossPnl: createCentsUsdPattern3(this, 'lth_unrealized_gross_pnl'), investedCapital: createInPattern(this, 'lth_invested_capital_in'), @@ -11197,1614 +8965,94 @@ class BrkClient extends BrkClientBase { }, }, ageRange: { - under1h: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_1h_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_1h_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_1h_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_1h_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_1h_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_1h_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_1h_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_1h_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_1h_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_1h_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_1h_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_1h_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_1h_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_1h_old'), - }, - _1hTo1d: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_1h_to_1d_old_supply'), - outputs: createUnspentPattern(this, 'utxos_1h_to_1d_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_1h_to_1d_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_1h_to_1d_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_1h_to_1d_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_1h_to_1d_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_1h_to_1d_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_1h_to_1d_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_1h_to_1d_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_1h_to_1d_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_1h_to_1d_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_1h_to_1d_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_1h_to_1d_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_1h_to_1d_old'), - }, - _1dTo1w: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_1d_to_1w_old_supply'), - outputs: createUnspentPattern(this, 'utxos_1d_to_1w_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_1d_to_1w_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_1d_to_1w_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_1d_to_1w_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_1d_to_1w_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_1d_to_1w_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_1d_to_1w_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_1d_to_1w_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_1d_to_1w_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_1d_to_1w_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_1d_to_1w_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_1d_to_1w_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_1d_to_1w_old'), - }, - _1wTo1m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_1w_to_1m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_1w_to_1m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_1w_to_1m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_1w_to_1m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_1w_to_1m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_1w_to_1m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_1w_to_1m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_1w_to_1m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_1w_to_1m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_1w_to_1m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_1w_to_1m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_1w_to_1m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_1w_to_1m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_1w_to_1m_old'), - }, - _1mTo2m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_1m_to_2m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_1m_to_2m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_1m_to_2m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_1m_to_2m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_1m_to_2m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_1m_to_2m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_1m_to_2m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_1m_to_2m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_1m_to_2m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_1m_to_2m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_1m_to_2m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_1m_to_2m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_1m_to_2m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_1m_to_2m_old'), - }, - _2mTo3m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_2m_to_3m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_2m_to_3m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_2m_to_3m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_2m_to_3m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_2m_to_3m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_2m_to_3m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_2m_to_3m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_2m_to_3m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_2m_to_3m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_2m_to_3m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_2m_to_3m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_2m_to_3m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_2m_to_3m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_2m_to_3m_old'), - }, - _3mTo4m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_3m_to_4m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_3m_to_4m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_3m_to_4m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_3m_to_4m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_3m_to_4m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_3m_to_4m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_3m_to_4m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_3m_to_4m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_3m_to_4m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_3m_to_4m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_3m_to_4m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_3m_to_4m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_3m_to_4m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_3m_to_4m_old'), - }, - _4mTo5m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_4m_to_5m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_4m_to_5m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_4m_to_5m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_4m_to_5m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_4m_to_5m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_4m_to_5m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_4m_to_5m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_4m_to_5m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_4m_to_5m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_4m_to_5m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_4m_to_5m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_4m_to_5m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_4m_to_5m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_4m_to_5m_old'), - }, - _5mTo6m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_5m_to_6m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_5m_to_6m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_5m_to_6m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_5m_to_6m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_5m_to_6m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_5m_to_6m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_5m_to_6m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_5m_to_6m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_5m_to_6m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_5m_to_6m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_5m_to_6m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_5m_to_6m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_5m_to_6m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_5m_to_6m_old'), - }, - _6mTo1y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_6m_to_1y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_6m_to_1y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_6m_to_1y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_6m_to_1y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_6m_to_1y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_6m_to_1y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_6m_to_1y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_6m_to_1y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_6m_to_1y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_6m_to_1y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_6m_to_1y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_6m_to_1y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_6m_to_1y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_6m_to_1y_old'), - }, - _1yTo2y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_1y_to_2y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_1y_to_2y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_1y_to_2y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_1y_to_2y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_1y_to_2y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_1y_to_2y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_1y_to_2y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_1y_to_2y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_1y_to_2y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_1y_to_2y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_1y_to_2y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_1y_to_2y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_1y_to_2y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_1y_to_2y_old'), - }, - _2yTo3y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_2y_to_3y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_2y_to_3y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_2y_to_3y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_2y_to_3y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_2y_to_3y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_2y_to_3y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_2y_to_3y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_2y_to_3y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_2y_to_3y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_2y_to_3y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_2y_to_3y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_2y_to_3y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_2y_to_3y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_2y_to_3y_old'), - }, - _3yTo4y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_3y_to_4y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_3y_to_4y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_3y_to_4y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_3y_to_4y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_3y_to_4y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_3y_to_4y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_3y_to_4y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_3y_to_4y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_3y_to_4y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_3y_to_4y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_3y_to_4y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_3y_to_4y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_3y_to_4y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_3y_to_4y_old'), - }, - _4yTo5y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_4y_to_5y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_4y_to_5y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_4y_to_5y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_4y_to_5y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_4y_to_5y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_4y_to_5y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_4y_to_5y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_4y_to_5y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_4y_to_5y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_4y_to_5y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_4y_to_5y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_4y_to_5y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_4y_to_5y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_4y_to_5y_old'), - }, - _5yTo6y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_5y_to_6y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_5y_to_6y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_5y_to_6y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_5y_to_6y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_5y_to_6y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_5y_to_6y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_5y_to_6y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_5y_to_6y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_5y_to_6y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_5y_to_6y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_5y_to_6y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_5y_to_6y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_5y_to_6y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_5y_to_6y_old'), - }, - _6yTo7y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_6y_to_7y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_6y_to_7y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_6y_to_7y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_6y_to_7y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_6y_to_7y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_6y_to_7y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_6y_to_7y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_6y_to_7y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_6y_to_7y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_6y_to_7y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_6y_to_7y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_6y_to_7y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_6y_to_7y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_6y_to_7y_old'), - }, - _7yTo8y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_7y_to_8y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_7y_to_8y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_7y_to_8y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_7y_to_8y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_7y_to_8y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_7y_to_8y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_7y_to_8y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_7y_to_8y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_7y_to_8y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_7y_to_8y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_7y_to_8y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_7y_to_8y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_7y_to_8y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_7y_to_8y_old'), - }, - _8yTo10y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_8y_to_10y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_8y_to_10y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_8y_to_10y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_8y_to_10y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_8y_to_10y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_8y_to_10y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_8y_to_10y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_8y_to_10y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_8y_to_10y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_8y_to_10y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_8y_to_10y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_8y_to_10y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_8y_to_10y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_8y_to_10y_old'), - }, - _10yTo12y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_10y_to_12y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_10y_to_12y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_10y_to_12y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_10y_to_12y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_10y_to_12y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_10y_to_12y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_10y_to_12y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_10y_to_12y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_10y_to_12y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_10y_to_12y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_10y_to_12y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_10y_to_12y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_10y_to_12y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_10y_to_12y_old'), - }, - _12yTo15y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_12y_to_15y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_12y_to_15y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_12y_to_15y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_12y_to_15y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_12y_to_15y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_12y_to_15y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_12y_to_15y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_12y_to_15y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_12y_to_15y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_12y_to_15y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_12y_to_15y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_12y_to_15y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_12y_to_15y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_12y_to_15y_old'), - }, - over15y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_15y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_15y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_15y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_15y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_15y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_15y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_15y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_15y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_15y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_15y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_15y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_15y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_15y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_15y_old'), - }, + under1h: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_1h_old'), + _1hTo1d: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1h_to_1d_old'), + _1dTo1w: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1d_to_1w_old'), + _1wTo1m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1w_to_1m_old'), + _1mTo2m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1m_to_2m_old'), + _2mTo3m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_2m_to_3m_old'), + _3mTo4m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_3m_to_4m_old'), + _4mTo5m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_4m_to_5m_old'), + _5mTo6m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_5m_to_6m_old'), + _6mTo1y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_6m_to_1y_old'), + _1yTo2y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1y_to_2y_old'), + _2yTo3y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_2y_to_3y_old'), + _3yTo4y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_3y_to_4y_old'), + _4yTo5y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_4y_to_5y_old'), + _5yTo6y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_5y_to_6y_old'), + _6yTo7y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_6y_to_7y_old'), + _7yTo8y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_7y_to_8y_old'), + _8yTo10y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_8y_to_10y_old'), + _10yTo12y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_10y_to_12y_old'), + _12yTo15y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_12y_to_15y_old'), + over15y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_15y_old'), }, underAge: { - _1w: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_1w_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_1w_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_1w_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_1w_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_1w_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_1w_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_1w_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_1w_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_1w_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_1w_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_1w_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_1w_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_1w_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_1w_old'), - }, - _1m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_1m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_1m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_1m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_1m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_1m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_1m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_1m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_1m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_1m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_1m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_1m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_1m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_1m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_1m_old'), - }, - _2m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_2m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_2m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_2m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_2m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_2m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_2m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_2m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_2m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_2m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_2m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_2m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_2m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_2m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_2m_old'), - }, - _3m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_3m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_3m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_3m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_3m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_3m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_3m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_3m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_3m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_3m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_3m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_3m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_3m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_3m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_3m_old'), - }, - _4m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_4m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_4m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_4m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_4m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_4m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_4m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_4m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_4m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_4m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_4m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_4m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_4m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_4m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_4m_old'), - }, - _5m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_5m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_5m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_5m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_5m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_5m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_5m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_5m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_5m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_5m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_5m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_5m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_5m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_5m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_5m_old'), - }, - _6m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_6m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_6m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_6m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_6m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_6m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_6m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_6m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_6m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_6m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_6m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_6m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_6m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_6m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_6m_old'), - }, - _1y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_1y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_1y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_1y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_1y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_1y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_1y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_1y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_1y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_1y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_1y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_1y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_1y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_1y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_1y_old'), - }, - _2y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_2y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_2y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_2y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_2y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_2y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_2y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_2y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_2y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_2y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_2y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_2y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_2y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_2y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_2y_old'), - }, - _3y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_3y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_3y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_3y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_3y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_3y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_3y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_3y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_3y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_3y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_3y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_3y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_3y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_3y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_3y_old'), - }, - _4y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_4y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_4y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_4y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_4y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_4y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_4y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_4y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_4y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_4y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_4y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_4y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_4y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_4y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_4y_old'), - }, - _5y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_5y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_5y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_5y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_5y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_5y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_5y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_5y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_5y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_5y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_5y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_5y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_5y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_5y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_5y_old'), - }, - _6y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_6y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_6y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_6y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_6y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_6y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_6y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_6y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_6y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_6y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_6y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_6y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_6y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_6y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_6y_old'), - }, - _7y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_7y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_7y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_7y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_7y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_7y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_7y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_7y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_7y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_7y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_7y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_7y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_7y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_7y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_7y_old'), - }, - _8y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_8y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_8y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_8y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_8y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_8y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_8y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_8y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_8y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_8y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_8y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_8y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_8y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_8y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_8y_old'), - }, - _10y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_10y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_10y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_10y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_10y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_10y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_10y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_10y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_10y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_10y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_10y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_10y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_10y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_10y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_10y_old'), - }, - _12y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_12y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_12y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_12y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_12y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_12y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_12y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_12y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_12y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_12y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_12y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_12y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_12y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_12y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_12y_old'), - }, - _15y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_under_15y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_under_15y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_under_15y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_under_15y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_under_15y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_under_15y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_under_15y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_under_15y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_under_15y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_under_15y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_under_15y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_under_15y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_under_15y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_under_15y_old'), - }, + _1w: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_1w_old'), + _1m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_1m_old'), + _2m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_2m_old'), + _3m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_3m_old'), + _4m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_4m_old'), + _5m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_5m_old'), + _6m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_6m_old'), + _1y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_1y_old'), + _2y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_2y_old'), + _3y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_3y_old'), + _4y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_4y_old'), + _5y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_5y_old'), + _6y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_6y_old'), + _7y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_7y_old'), + _8y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_8y_old'), + _10y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_10y_old'), + _12y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_12y_old'), + _15y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_15y_old'), }, overAge: { - _1d: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_1d_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_1d_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_1d_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_1d_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_1d_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_1d_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_1d_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_1d_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_1d_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_1d_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_1d_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_1d_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_1d_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_1d_old'), - }, - _1w: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_1w_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_1w_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_1w_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_1w_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_1w_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_1w_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_1w_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_1w_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_1w_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_1w_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_1w_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_1w_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_1w_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_1w_old'), - }, - _1m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_1m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_1m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_1m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_1m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_1m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_1m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_1m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_1m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_1m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_1m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_1m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_1m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_1m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_1m_old'), - }, - _2m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_2m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_2m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_2m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_2m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_2m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_2m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_2m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_2m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_2m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_2m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_2m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_2m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_2m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_2m_old'), - }, - _3m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_3m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_3m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_3m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_3m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_3m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_3m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_3m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_3m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_3m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_3m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_3m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_3m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_3m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_3m_old'), - }, - _4m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_4m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_4m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_4m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_4m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_4m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_4m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_4m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_4m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_4m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_4m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_4m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_4m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_4m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_4m_old'), - }, - _5m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_5m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_5m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_5m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_5m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_5m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_5m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_5m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_5m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_5m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_5m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_5m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_5m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_5m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_5m_old'), - }, - _6m: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_6m_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_6m_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_6m_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_6m_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_6m_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_6m_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_6m_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_6m_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_6m_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_6m_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_6m_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_6m_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_6m_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_6m_old'), - }, - _1y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_1y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_1y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_1y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_1y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_1y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_1y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_1y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_1y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_1y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_1y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_1y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_1y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_1y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_1y_old'), - }, - _2y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_2y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_2y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_2y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_2y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_2y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_2y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_2y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_2y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_2y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_2y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_2y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_2y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_2y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_2y_old'), - }, - _3y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_3y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_3y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_3y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_3y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_3y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_3y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_3y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_3y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_3y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_3y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_3y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_3y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_3y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_3y_old'), - }, - _4y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_4y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_4y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_4y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_4y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_4y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_4y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_4y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_4y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_4y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_4y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_4y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_4y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_4y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_4y_old'), - }, - _5y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_5y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_5y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_5y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_5y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_5y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_5y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_5y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_5y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_5y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_5y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_5y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_5y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_5y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_5y_old'), - }, - _6y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_6y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_6y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_6y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_6y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_6y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_6y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_6y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_6y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_6y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_6y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_6y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_6y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_6y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_6y_old'), - }, - _7y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_7y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_7y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_7y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_7y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_7y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_7y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_7y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_7y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_7y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_7y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_7y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_7y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_7y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_7y_old'), - }, - _8y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_8y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_8y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_8y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_8y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_8y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_8y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_8y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_8y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_8y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_8y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_8y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_8y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_8y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_8y_old'), - }, - _10y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_10y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_10y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_10y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_10y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_10y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_10y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_10y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_10y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_10y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_10y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_10y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_10y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_10y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_10y_old'), - }, - _12y: { - supply: createDeltaHalfInToTotalPattern(this, 'utxos_over_12y_old_supply'), - outputs: createUnspentPattern(this, 'utxos_over_12y_old_utxo_count'), - activity: createCoindaysTransferPattern(this, 'utxos_over_12y_old'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'utxos_over_12y_old_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'utxos_over_12y_old_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'utxos_over_12y_old_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'utxos_over_12y_old_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'utxos_over_12y_old_realized_loss_sum'), - negative: createBaseSumPattern(this, 'utxos_over_12y_old_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'utxos_over_12y_old_realized_price'), - mvrv: createSeriesPattern1(this, 'utxos_over_12y_old_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'utxos_over_12y_old_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'utxos_over_12y_old'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'utxos_over_12y_old'), - }, + _1d: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1d_old'), + _1w: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1w_old'), + _1m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1m_old'), + _2m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_2m_old'), + _3m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_3m_old'), + _4m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_4m_old'), + _5m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_5m_old'), + _6m: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_6m_old'), + _1y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1y_old'), + _2y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_2y_old'), + _3y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_3y_old'), + _4y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_4y_old'), + _5y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_5y_old'), + _6y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_6y_old'), + _7y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_7y_old'), + _8y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_8y_old'), + _10y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_10y_old'), + _12y: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_12y_old'), }, epoch: { - _0: { - supply: createDeltaHalfInToTotalPattern(this, 'epoch_0_supply'), - outputs: createUnspentPattern(this, 'epoch_0_utxo_count'), - activity: createCoindaysTransferPattern(this, 'epoch_0'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'epoch_0_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'epoch_0_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'epoch_0_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'epoch_0_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'epoch_0_realized_loss_sum'), - negative: createBaseSumPattern(this, 'epoch_0_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'epoch_0_realized_price'), - mvrv: createSeriesPattern1(this, 'epoch_0_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'epoch_0_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'epoch_0'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'epoch_0'), - }, - _1: { - supply: createDeltaHalfInToTotalPattern(this, 'epoch_1_supply'), - outputs: createUnspentPattern(this, 'epoch_1_utxo_count'), - activity: createCoindaysTransferPattern(this, 'epoch_1'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'epoch_1_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'epoch_1_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'epoch_1_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'epoch_1_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'epoch_1_realized_loss_sum'), - negative: createBaseSumPattern(this, 'epoch_1_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'epoch_1_realized_price'), - mvrv: createSeriesPattern1(this, 'epoch_1_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'epoch_1_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'epoch_1'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'epoch_1'), - }, - _2: { - supply: createDeltaHalfInToTotalPattern(this, 'epoch_2_supply'), - outputs: createUnspentPattern(this, 'epoch_2_utxo_count'), - activity: createCoindaysTransferPattern(this, 'epoch_2'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'epoch_2_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'epoch_2_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'epoch_2_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'epoch_2_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'epoch_2_realized_loss_sum'), - negative: createBaseSumPattern(this, 'epoch_2_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'epoch_2_realized_price'), - mvrv: createSeriesPattern1(this, 'epoch_2_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'epoch_2_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'epoch_2'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'epoch_2'), - }, - _3: { - supply: createDeltaHalfInToTotalPattern(this, 'epoch_3_supply'), - outputs: createUnspentPattern(this, 'epoch_3_utxo_count'), - activity: createCoindaysTransferPattern(this, 'epoch_3'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'epoch_3_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'epoch_3_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'epoch_3_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'epoch_3_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'epoch_3_realized_loss_sum'), - negative: createBaseSumPattern(this, 'epoch_3_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'epoch_3_realized_price'), - mvrv: createSeriesPattern1(this, 'epoch_3_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'epoch_3_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'epoch_3'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'epoch_3'), - }, - _4: { - supply: createDeltaHalfInToTotalPattern(this, 'epoch_4_supply'), - outputs: createUnspentPattern(this, 'epoch_4_utxo_count'), - activity: createCoindaysTransferPattern(this, 'epoch_4'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'epoch_4_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'epoch_4_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'epoch_4_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'epoch_4_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'epoch_4_realized_loss_sum'), - negative: createBaseSumPattern(this, 'epoch_4_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'epoch_4_realized_price'), - mvrv: createSeriesPattern1(this, 'epoch_4_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'epoch_4_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'epoch_4'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'epoch_4'), - }, + _0: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'epoch_0'), + _1: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'epoch_1'), + _2: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'epoch_2'), + _3: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'epoch_3'), + _4: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'epoch_4'), }, class: { - _2009: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2009_supply'), - outputs: createUnspentPattern(this, 'class_2009_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2009'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2009_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2009_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2009_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2009_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2009_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2009_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2009_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2009_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2009_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2009'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2009'), - }, - _2010: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2010_supply'), - outputs: createUnspentPattern(this, 'class_2010_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2010'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2010_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2010_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2010_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2010_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2010_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2010_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2010_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2010_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2010_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2010'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2010'), - }, - _2011: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2011_supply'), - outputs: createUnspentPattern(this, 'class_2011_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2011'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2011_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2011_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2011_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2011_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2011_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2011_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2011_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2011_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2011_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2011'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2011'), - }, - _2012: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2012_supply'), - outputs: createUnspentPattern(this, 'class_2012_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2012'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2012_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2012_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2012_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2012_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2012_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2012_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2012_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2012_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2012_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2012'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2012'), - }, - _2013: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2013_supply'), - outputs: createUnspentPattern(this, 'class_2013_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2013'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2013_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2013_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2013_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2013_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2013_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2013_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2013_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2013_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2013_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2013'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2013'), - }, - _2014: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2014_supply'), - outputs: createUnspentPattern(this, 'class_2014_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2014'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2014_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2014_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2014_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2014_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2014_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2014_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2014_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2014_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2014_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2014'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2014'), - }, - _2015: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2015_supply'), - outputs: createUnspentPattern(this, 'class_2015_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2015'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2015_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2015_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2015_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2015_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2015_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2015_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2015_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2015_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2015_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2015'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2015'), - }, - _2016: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2016_supply'), - outputs: createUnspentPattern(this, 'class_2016_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2016'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2016_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2016_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2016_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2016_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2016_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2016_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2016_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2016_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2016_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2016'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2016'), - }, - _2017: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2017_supply'), - outputs: createUnspentPattern(this, 'class_2017_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2017'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2017_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2017_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2017_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2017_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2017_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2017_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2017_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2017_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2017_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2017'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2017'), - }, - _2018: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2018_supply'), - outputs: createUnspentPattern(this, 'class_2018_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2018'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2018_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2018_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2018_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2018_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2018_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2018_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2018_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2018_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2018_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2018'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2018'), - }, - _2019: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2019_supply'), - outputs: createUnspentPattern(this, 'class_2019_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2019'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2019_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2019_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2019_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2019_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2019_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2019_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2019_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2019_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2019_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2019'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2019'), - }, - _2020: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2020_supply'), - outputs: createUnspentPattern(this, 'class_2020_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2020'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2020_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2020_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2020_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2020_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2020_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2020_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2020_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2020_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2020_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2020'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2020'), - }, - _2021: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2021_supply'), - outputs: createUnspentPattern(this, 'class_2021_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2021'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2021_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2021_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2021_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2021_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2021_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2021_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2021_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2021_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2021_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2021'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2021'), - }, - _2022: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2022_supply'), - outputs: createUnspentPattern(this, 'class_2022_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2022'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2022_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2022_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2022_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2022_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2022_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2022_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2022_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2022_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2022_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2022'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2022'), - }, - _2023: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2023_supply'), - outputs: createUnspentPattern(this, 'class_2023_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2023'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2023_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2023_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2023_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2023_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2023_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2023_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2023_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2023_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2023_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2023'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2023'), - }, - _2024: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2024_supply'), - outputs: createUnspentPattern(this, 'class_2024_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2024'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2024_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2024_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2024_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2024_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2024_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2024_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2024_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2024_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2024_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2024'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2024'), - }, - _2025: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2025_supply'), - outputs: createUnspentPattern(this, 'class_2025_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2025'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2025_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2025_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2025_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2025_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2025_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2025_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2025_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2025_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2025_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2025'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2025'), - }, - _2026: { - supply: createDeltaHalfInToTotalPattern(this, 'class_2026_supply'), - outputs: createUnspentPattern(this, 'class_2026_utxo_count'), - activity: createCoindaysTransferPattern(this, 'class_2026'), - realized: { - cap: createCentsDeltaUsdPattern(this, 'class_2026_realized_cap'), - profit: createBlockCumulativeSumPattern(this, 'class_2026_realized_profit'), - loss: { - block: createCentsUsdPattern2(this, 'class_2026_realized_loss'), - cumulative: createCentsUsdPattern3(this, 'class_2026_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern6(this, 'class_2026_realized_loss_sum'), - negative: createBaseSumPattern(this, 'class_2026_neg_realized_loss'), - }, - price: createBpsCentsRatioSatsUsdPattern(this, 'class_2026_realized_price'), - mvrv: createSeriesPattern1(this, 'class_2026_mvrv'), - netPnl: createBlockCumulativeDeltaSumPattern(this, 'class_2026_net_realized_pnl'), - sopr: createRatioValuePattern(this, 'class_2026'), - }, - unrealized: createLossNetNuplProfitPattern(this, 'class_2026'), - }, + _2009: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2009'), + _2010: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2010'), + _2011: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2011'), + _2012: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2012'), + _2013: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2013'), + _2014: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2014'), + _2015: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2015'), + _2016: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2016'), + _2017: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2017'), + _2018: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2018'), + _2019: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2019'), + _2020: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2020'), + _2021: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2021'), + _2022: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2022'), + _2023: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2023'), + _2024: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2024'), + _2025: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2025'), + _2026: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2026'), }, overAmount: { _1sat: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_1sat'), diff --git a/packages/brk_client/brk_client/__init__.py b/packages/brk_client/brk_client/__init__.py index a6465e6a5..38f12281a 100644 --- a/packages/brk_client/brk_client/__init__.py +++ b/packages/brk_client/brk_client/__init__.py @@ -2328,7 +2328,16 @@ class _1m1w1y24hBpsPercentRatioPattern: class CapLossMvrvNetPriceProfitSoprPattern: """Pattern struct for repeated tree structure.""" - pass + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated series name.""" + self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, _m(acc, 'realized_cap')) + self.loss: BlockCumulativeNegativeSumPattern = BlockCumulativeNegativeSumPattern(client, _m(acc, 'realized_loss')) + self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'mvrv')) + self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, _m(acc, 'net_realized_pnl')) + self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, _m(acc, 'realized_price')) + self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, _m(acc, 'realized_profit')) + self.sopr: RatioValuePattern = RatioValuePattern(client, acc) class InMaxMinPerSupplyPattern: """Pattern struct for repeated tree structure.""" @@ -2381,7 +2390,7 @@ class ActivityAddrOutputsRealizedSupplyUnrealizedPattern: self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, _m(acc, 'addr_count')) self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count')) self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, acc) - self.supply: DeltaHalfTotalPattern = DeltaHalfTotalPattern(client, _m(acc, 'supply')) + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, _m(acc, 'supply')) self.unrealized: NuplPattern = NuplPattern(client, _m(acc, 'nupl')) class AverageBlockCumulativeInSumPattern: @@ -2425,12 +2434,12 @@ class CentsNegativeToUsdPattern2: def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated series name.""" - self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'unrealized_loss_cents')) - self.negative: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'neg_unrealized_loss')) - self.to_mcap: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'unrealized_loss_to_mcap')) - self.to_own_gross_pnl: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'unrealized_loss_to_own_gross_pnl')) - self.to_own_mcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, _m(acc, 'unrealized_loss_to_own_mcap')) - self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'unrealized_loss')) + self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cents')) + self.negative: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'neg')) + self.to_mcap: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'to_mcap')) + self.to_own_gross_pnl: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'to_own_gross_pnl')) + self.to_own_mcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, _m(acc, 'to_own_mcap')) + self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, acc) class DeltaHalfInToTotalPattern: """Pattern struct for repeated tree structure.""" @@ -2481,7 +2490,14 @@ class _1m1w1y24hBlockPattern: class ActivityOutputsRealizedSupplyUnrealizedPattern: """Pattern struct for repeated tree structure.""" - pass + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated series name.""" + self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, acc) + self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count')) + self.realized: CapLossMvrvNetPriceProfitSoprPattern = CapLossMvrvNetPriceProfitSoprPattern(client, acc) + self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, _m(acc, 'supply')) + self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, acc) class ActivityOutputsRealizedSupplyUnrealizedPattern3: """Pattern struct for repeated tree structure.""" @@ -2502,7 +2518,7 @@ class ActivityOutputsRealizedSupplyUnrealizedPattern2: self.activity: TransferPattern = TransferPattern(client, _m(acc, 'transfer_volume')) self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count')) self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, acc) - self.supply: DeltaHalfTotalPattern = DeltaHalfTotalPattern(client, _m(acc, 'supply')) + self.supply: DeltaTotalPattern = DeltaTotalPattern(client, _m(acc, 'supply')) self.unrealized: NuplPattern = NuplPattern(client, _m(acc, 'nupl')) class BlockChangeCumulativeDeltaSumPattern: @@ -2704,7 +2720,13 @@ class AverageBlockCumulativeSumPattern3: class BlockCumulativeNegativeSumPattern: """Pattern struct for repeated tree structure.""" - pass + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated series name.""" + self.block: CentsUsdPattern2 = CentsUsdPattern2(client, acc) + self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, _m(acc, 'cumulative')) + self.negative: BaseSumPattern = BaseSumPattern(client, _m(acc, 'neg')) + self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, _m(acc, 'sum')) class BlockCumulativeDeltaSumPattern: """Pattern struct for repeated tree structure.""" @@ -2785,7 +2807,7 @@ class LossNetNuplProfitPattern: def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated series name.""" - self.loss: CentsNegativeUsdPattern = CentsNegativeUsdPattern(client, acc) + self.loss: CentsNegativeUsdPattern = CentsNegativeUsdPattern(client, _m(acc, 'unrealized_loss')) self.net_pnl: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'net_unrealized_pnl')) self.nupl: BpsRatioPattern = BpsRatioPattern(client, _m(acc, 'nupl')) self.profit: CentsUsdPattern3 = CentsUsdPattern3(client, _m(acc, 'unrealized_profit')) @@ -2900,9 +2922,9 @@ class CentsNegativeUsdPattern: def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated series name.""" - self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'unrealized_loss_cents')) - self.negative: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'neg_unrealized_loss')) - self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'unrealized_loss')) + self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, _m(acc, 'cents')) + self.negative: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'neg')) + self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, acc) class CentsSatsUsdPattern: """Pattern struct for repeated tree structure.""" @@ -2922,15 +2944,6 @@ class CumulativeRollingSumPattern: self.rolling: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern = AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern(client, acc) self.sum: SeriesPattern1[StoredU64] = SeriesPattern1(client, _m(acc, 'sum')) -class DeltaHalfTotalPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.delta: AbsoluteRatePattern = AbsoluteRatePattern(client, _m(acc, 'delta')) - self.half: BtcCentsSatsUsdPattern3 = BtcCentsSatsUsdPattern3(client, _m(acc, 'half')) - self.total: BtcCentsSatsUsdPattern3 = BtcCentsSatsUsdPattern3(client, acc) - class GreedNetPainPattern: """Pattern struct for repeated tree structure.""" pass @@ -2940,7 +2953,7 @@ class LossNuplProfitPattern: def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated series name.""" - self.loss: CentsNegativeUsdPattern = CentsNegativeUsdPattern(client, acc) + self.loss: CentsNegativeUsdPattern = CentsNegativeUsdPattern(client, _m(acc, 'unrealized_loss')) self.nupl: BpsRatioPattern = BpsRatioPattern(client, _m(acc, 'nupl')) self.profit: CentsUsdPattern3 = CentsUsdPattern3(client, _m(acc, 'unrealized_profit')) @@ -3078,6 +3091,14 @@ class CoindaysTransferPattern: self.coindays_destroyed: AverageBlockCumulativeSumPattern[StoredF64] = AverageBlockCumulativeSumPattern(client, _m(acc, 'coindays_destroyed')) self.transfer_volume: AverageBlockCumulativeInSumPattern = AverageBlockCumulativeInSumPattern(client, _m(acc, 'transfer_volume')) +class DeltaTotalPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated series name.""" + self.delta: AbsoluteRatePattern = AbsoluteRatePattern(client, _m(acc, 'delta')) + self.total: BtcCentsSatsUsdPattern3 = BtcCentsSatsUsdPattern3(client, acc) + class InPattern: """Pattern struct for repeated tree structure.""" @@ -4720,8 +4741,8 @@ class SeriesTree_Cohorts_Utxo_All_Supply: def __init__(self, client: BrkClientBase, base_path: str = ''): self.total: BtcCentsSatsUsdPattern3 = BtcCentsSatsUsdPattern3(client, 'supply') - self.half: BtcCentsSatsUsdPattern3 = BtcCentsSatsUsdPattern3(client, 'supply_half') self.delta: AbsoluteRatePattern = AbsoluteRatePattern(client, 'supply_delta') + self.half: BtcCentsSatsUsdPattern3 = BtcCentsSatsUsdPattern3(client, 'supply_half') self.in_profit: BtcCentsSatsToUsdPattern2 = BtcCentsSatsToUsdPattern2(client, 'supply_in_profit') self.in_loss: BtcCentsSatsToUsdPattern2 = BtcCentsSatsToUsdPattern2(client, 'supply_in_loss') @@ -4734,15 +4755,6 @@ class SeriesTree_Cohorts_Utxo_All_Activity: self.coinyears_destroyed: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'coinyears_destroyed') self.dormancy: _1m1w1y24hPattern[StoredF32] = _1m1w1y24hPattern(client, 'dormancy') -class SeriesTree_Cohorts_Utxo_All_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'neg_realized_loss') - class SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_All: """Series tree node.""" @@ -4867,7 +4879,7 @@ class SeriesTree_Cohorts_Utxo_All_Realized: def __init__(self, client: BrkClientBase, base_path: str = ''): self.cap: CentsDeltaToUsdPattern = CentsDeltaToUsdPattern(client, 'realized_cap') self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_All_Realized_Loss = SeriesTree_Cohorts_Utxo_All_Realized_Loss(client) + self.loss: BlockCumulativeNegativeSumPattern = BlockCumulativeNegativeSumPattern(client, 'realized_loss') self.price: SeriesTree_Cohorts_Utxo_All_Realized_Price = SeriesTree_Cohorts_Utxo_All_Realized_Price(client) self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'mvrv') self.net_pnl: BlockChangeCumulativeDeltaSumPattern = BlockChangeCumulativeDeltaSumPattern(client, 'net') @@ -4905,7 +4917,7 @@ class SeriesTree_Cohorts_Utxo_All_Unrealized_Loss: def __init__(self, client: BrkClientBase, base_path: str = ''): self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, 'unrealized_loss') self.cents: SeriesPattern1[Cents] = SeriesPattern1(client, 'unrealized_loss_cents') - self.negative: SeriesPattern1[Dollars] = SeriesPattern1(client, 'neg_unrealized_loss') + self.negative: SeriesPattern1[Dollars] = SeriesPattern1(client, 'unrealized_loss_neg') self.to_mcap: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'unrealized_loss_to_mcap') self.to_own_gross_pnl: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'unrealized_loss_to_own_gross_pnl') @@ -4959,15 +4971,6 @@ class SeriesTree_Cohorts_Utxo_Sth_Activity: self.coinyears_destroyed: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'sth_coinyears_destroyed') self.dormancy: _1m1w1y24hPattern[StoredF32] = _1m1w1y24hPattern(client, 'sth_dormancy') -class SeriesTree_Cohorts_Utxo_Sth_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'sth_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'sth_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'sth_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'sth_neg_realized_loss') - class SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_All: """Series tree node.""" @@ -5092,7 +5095,7 @@ class SeriesTree_Cohorts_Utxo_Sth_Realized: def __init__(self, client: BrkClientBase, base_path: str = ''): self.cap: CentsDeltaToUsdPattern = CentsDeltaToUsdPattern(client, 'sth_realized_cap') self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'sth_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Sth_Realized_Loss = SeriesTree_Cohorts_Utxo_Sth_Realized_Loss(client) + self.loss: BlockCumulativeNegativeSumPattern = BlockCumulativeNegativeSumPattern(client, 'sth_realized_loss') self.price: SeriesTree_Cohorts_Utxo_Sth_Realized_Price = SeriesTree_Cohorts_Utxo_Sth_Realized_Price(client) self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_mvrv') self.net_pnl: BlockChangeCumulativeDeltaSumPattern = BlockChangeCumulativeDeltaSumPattern(client, 'sth_net') @@ -5129,7 +5132,7 @@ class SeriesTree_Cohorts_Utxo_Sth_Unrealized: def __init__(self, client: BrkClientBase, base_path: str = ''): self.nupl: BpsRatioPattern = BpsRatioPattern(client, 'sth_nupl') self.profit: CentsToUsdPattern4 = CentsToUsdPattern4(client, 'sth_unrealized_profit') - self.loss: CentsNegativeToUsdPattern2 = CentsNegativeToUsdPattern2(client, 'sth') + self.loss: CentsNegativeToUsdPattern2 = CentsNegativeToUsdPattern2(client, 'sth_unrealized_loss') self.net_pnl: CentsToUsdPattern3 = CentsToUsdPattern3(client, 'sth_net_unrealized_pnl') self.gross_pnl: CentsUsdPattern3 = CentsUsdPattern3(client, 'sth_unrealized_gross_pnl') self.invested_capital: InPattern = InPattern(client, 'sth_invested_capital_in') @@ -5157,15 +5160,6 @@ class SeriesTree_Cohorts_Utxo_Lth_Activity: self.coinyears_destroyed: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'lth_coinyears_destroyed') self.dormancy: _1m1w1y24hPattern[StoredF32] = _1m1w1y24hPattern(client, 'lth_dormancy') -class SeriesTree_Cohorts_Utxo_Lth_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'lth_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'lth_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'lth_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'lth_neg_realized_loss') - class SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_All: """Series tree node.""" @@ -5281,7 +5275,7 @@ class SeriesTree_Cohorts_Utxo_Lth_Realized: def __init__(self, client: BrkClientBase, base_path: str = ''): self.cap: CentsDeltaToUsdPattern = CentsDeltaToUsdPattern(client, 'lth_realized_cap') self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'lth_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Lth_Realized_Loss = SeriesTree_Cohorts_Utxo_Lth_Realized_Loss(client) + self.loss: BlockCumulativeNegativeSumPattern = BlockCumulativeNegativeSumPattern(client, 'lth_realized_loss') self.price: SeriesTree_Cohorts_Utxo_Lth_Realized_Price = SeriesTree_Cohorts_Utxo_Lth_Realized_Price(client) self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_mvrv') self.net_pnl: BlockChangeCumulativeDeltaSumPattern = BlockChangeCumulativeDeltaSumPattern(client, 'lth_net') @@ -5318,7 +5312,7 @@ class SeriesTree_Cohorts_Utxo_Lth_Unrealized: def __init__(self, client: BrkClientBase, base_path: str = ''): self.nupl: BpsRatioPattern = BpsRatioPattern(client, 'lth_nupl') self.profit: CentsToUsdPattern4 = CentsToUsdPattern4(client, 'lth_unrealized_profit') - self.loss: CentsNegativeToUsdPattern2 = CentsNegativeToUsdPattern2(client, 'lth') + self.loss: CentsNegativeToUsdPattern2 = CentsNegativeToUsdPattern2(client, 'lth_unrealized_loss') self.net_pnl: CentsToUsdPattern3 = CentsToUsdPattern3(client, 'lth_net_unrealized_pnl') self.gross_pnl: CentsUsdPattern3 = CentsUsdPattern3(client, 'lth_unrealized_gross_pnl') self.invested_capital: InPattern = InPattern(client, 'lth_invested_capital_in') @@ -5337,2590 +5331,110 @@ class SeriesTree_Cohorts_Utxo_Lth: self.cost_basis: SeriesTree_Cohorts_Utxo_Lth_CostBasis = SeriesTree_Cohorts_Utxo_Lth_CostBasis(client) self.unrealized: SeriesTree_Cohorts_Utxo_Lth_Unrealized = SeriesTree_Cohorts_Utxo_Lth_Unrealized(client) -class SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_1h_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_1h_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_1h_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_1h_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_1h_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_1h_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_1h_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_1h_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_1h_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_1h_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_Under1h: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_1h_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_1h_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_1h_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized = SeriesTree_Cohorts_Utxo_AgeRange_Under1h_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_1h_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_1h_to_1d_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_1h_to_1d_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_1h_to_1d_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_1h_to_1d_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_1h_to_1d_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_1h_to_1d_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_1h_to_1d_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1h_to_1d_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_1h_to_1d_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_1h_to_1d_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_1h_to_1d_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_1h_to_1d_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_1h_to_1d_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized = SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_1h_to_1d_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_1d_to_1w_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_1d_to_1w_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_1d_to_1w_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_1d_to_1w_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_1d_to_1w_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_1d_to_1w_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_1d_to_1w_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1d_to_1w_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_1d_to_1w_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_1d_to_1w_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_1d_to_1w_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_1d_to_1w_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_1d_to_1w_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized = SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_1d_to_1w_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_1w_to_1m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_1w_to_1m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_1w_to_1m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_1w_to_1m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_1w_to_1m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_1w_to_1m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_1w_to_1m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1w_to_1m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_1w_to_1m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_1w_to_1m_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_1w_to_1m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_1w_to_1m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_1w_to_1m_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized = SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_1w_to_1m_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_1m_to_2m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_1m_to_2m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_1m_to_2m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_1m_to_2m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_1m_to_2m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_1m_to_2m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_1m_to_2m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1m_to_2m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_1m_to_2m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_1m_to_2m_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_1m_to_2m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_1m_to_2m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_1m_to_2m_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized = SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_1m_to_2m_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_2m_to_3m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_2m_to_3m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_2m_to_3m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_2m_to_3m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_2m_to_3m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_2m_to_3m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_2m_to_3m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_2m_to_3m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_2m_to_3m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_2m_to_3m_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_2m_to_3m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_2m_to_3m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_2m_to_3m_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized = SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_2m_to_3m_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_3m_to_4m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_3m_to_4m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_3m_to_4m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_3m_to_4m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_3m_to_4m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_3m_to_4m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_3m_to_4m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_3m_to_4m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_3m_to_4m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_3m_to_4m_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_3m_to_4m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_3m_to_4m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_3m_to_4m_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized = SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_3m_to_4m_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_4m_to_5m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_4m_to_5m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_4m_to_5m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_4m_to_5m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_4m_to_5m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_4m_to_5m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_4m_to_5m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_4m_to_5m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_4m_to_5m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_4m_to_5m_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_4m_to_5m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_4m_to_5m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_4m_to_5m_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized = SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_4m_to_5m_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_5m_to_6m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_5m_to_6m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_5m_to_6m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_5m_to_6m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_5m_to_6m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_5m_to_6m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_5m_to_6m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_5m_to_6m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_5m_to_6m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_5m_to_6m_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_5m_to_6m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_5m_to_6m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_5m_to_6m_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized = SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_5m_to_6m_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_6m_to_1y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_6m_to_1y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_6m_to_1y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_6m_to_1y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_6m_to_1y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_6m_to_1y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_6m_to_1y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_6m_to_1y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_6m_to_1y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_6m_to_1y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_6m_to_1y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_6m_to_1y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_6m_to_1y_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized = SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_6m_to_1y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_1y_to_2y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_1y_to_2y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_1y_to_2y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_1y_to_2y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_1y_to_2y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_1y_to_2y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_1y_to_2y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_1y_to_2y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_1y_to_2y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_1y_to_2y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_1y_to_2y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_1y_to_2y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_1y_to_2y_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized = SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_1y_to_2y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_2y_to_3y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_2y_to_3y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_2y_to_3y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_2y_to_3y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_2y_to_3y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_2y_to_3y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_2y_to_3y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_2y_to_3y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_2y_to_3y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_2y_to_3y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_2y_to_3y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_2y_to_3y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_2y_to_3y_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized = SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_2y_to_3y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_3y_to_4y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_3y_to_4y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_3y_to_4y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_3y_to_4y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_3y_to_4y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_3y_to_4y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_3y_to_4y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_3y_to_4y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_3y_to_4y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_3y_to_4y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_3y_to_4y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_3y_to_4y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_3y_to_4y_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized = SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_3y_to_4y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_4y_to_5y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_4y_to_5y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_4y_to_5y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_4y_to_5y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_4y_to_5y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_4y_to_5y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_4y_to_5y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_4y_to_5y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_4y_to_5y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_4y_to_5y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_4y_to_5y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_4y_to_5y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_4y_to_5y_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized = SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_4y_to_5y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_5y_to_6y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_5y_to_6y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_5y_to_6y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_5y_to_6y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_5y_to_6y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_5y_to_6y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_5y_to_6y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_5y_to_6y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_5y_to_6y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_5y_to_6y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_5y_to_6y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_5y_to_6y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_5y_to_6y_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized = SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_5y_to_6y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_6y_to_7y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_6y_to_7y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_6y_to_7y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_6y_to_7y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_6y_to_7y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_6y_to_7y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_6y_to_7y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_6y_to_7y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_6y_to_7y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_6y_to_7y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_6y_to_7y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_6y_to_7y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_6y_to_7y_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized = SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_6y_to_7y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_7y_to_8y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_7y_to_8y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_7y_to_8y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_7y_to_8y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_7y_to_8y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_7y_to_8y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_7y_to_8y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_7y_to_8y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_7y_to_8y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_7y_to_8y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_7y_to_8y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_7y_to_8y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_7y_to_8y_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized = SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_7y_to_8y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_8y_to_10y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_8y_to_10y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_8y_to_10y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_8y_to_10y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_8y_to_10y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_8y_to_10y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_8y_to_10y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_8y_to_10y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_8y_to_10y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_8y_to_10y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_8y_to_10y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_8y_to_10y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_8y_to_10y_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized = SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_8y_to_10y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_10y_to_12y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_10y_to_12y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_10y_to_12y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_10y_to_12y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_10y_to_12y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_10y_to_12y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_10y_to_12y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_10y_to_12y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_10y_to_12y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_10y_to_12y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_10y_to_12y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_10y_to_12y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_10y_to_12y_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized = SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_10y_to_12y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_12y_to_15y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_12y_to_15y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_12y_to_15y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_12y_to_15y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_12y_to_15y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_12y_to_15y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_12y_to_15y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_12y_to_15y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_12y_to_15y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_12y_to_15y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_12y_to_15y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_12y_to_15y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_12y_to_15y_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized = SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_12y_to_15y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_15y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_15y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_15y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_15y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_15y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_15y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized_Loss = SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_15y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_15y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_15y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_15y_old') - -class SeriesTree_Cohorts_Utxo_AgeRange_Over15y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_15y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_15y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_15y_old') - self.realized: SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized = SeriesTree_Cohorts_Utxo_AgeRange_Over15y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_15y_old') - class SeriesTree_Cohorts_Utxo_AgeRange: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.under_1h: SeriesTree_Cohorts_Utxo_AgeRange_Under1h = SeriesTree_Cohorts_Utxo_AgeRange_Under1h(client) - self._1h_to_1d: SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d = SeriesTree_Cohorts_Utxo_AgeRange_1hTo1d(client) - self._1d_to_1w: SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w = SeriesTree_Cohorts_Utxo_AgeRange_1dTo1w(client) - self._1w_to_1m: SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m = SeriesTree_Cohorts_Utxo_AgeRange_1wTo1m(client) - self._1m_to_2m: SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m = SeriesTree_Cohorts_Utxo_AgeRange_1mTo2m(client) - self._2m_to_3m: SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m = SeriesTree_Cohorts_Utxo_AgeRange_2mTo3m(client) - self._3m_to_4m: SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m = SeriesTree_Cohorts_Utxo_AgeRange_3mTo4m(client) - self._4m_to_5m: SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m = SeriesTree_Cohorts_Utxo_AgeRange_4mTo5m(client) - self._5m_to_6m: SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m = SeriesTree_Cohorts_Utxo_AgeRange_5mTo6m(client) - self._6m_to_1y: SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y = SeriesTree_Cohorts_Utxo_AgeRange_6mTo1y(client) - self._1y_to_2y: SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y = SeriesTree_Cohorts_Utxo_AgeRange_1yTo2y(client) - self._2y_to_3y: SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y = SeriesTree_Cohorts_Utxo_AgeRange_2yTo3y(client) - self._3y_to_4y: SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y = SeriesTree_Cohorts_Utxo_AgeRange_3yTo4y(client) - self._4y_to_5y: SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y = SeriesTree_Cohorts_Utxo_AgeRange_4yTo5y(client) - self._5y_to_6y: SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y = SeriesTree_Cohorts_Utxo_AgeRange_5yTo6y(client) - self._6y_to_7y: SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y = SeriesTree_Cohorts_Utxo_AgeRange_6yTo7y(client) - self._7y_to_8y: SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y = SeriesTree_Cohorts_Utxo_AgeRange_7yTo8y(client) - self._8y_to_10y: SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y = SeriesTree_Cohorts_Utxo_AgeRange_8yTo10y(client) - self._10y_to_12y: SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y = SeriesTree_Cohorts_Utxo_AgeRange_10yTo12y(client) - self._12y_to_15y: SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y = SeriesTree_Cohorts_Utxo_AgeRange_12yTo15y(client) - self.over_15y: SeriesTree_Cohorts_Utxo_AgeRange_Over15y = SeriesTree_Cohorts_Utxo_AgeRange_Over15y(client) - -class SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_1w_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_1w_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_1w_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_1w_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_1w_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_1w_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_1w_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_1w_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_1w_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_1w_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_1w: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_1w_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_1w_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_1w_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized = SeriesTree_Cohorts_Utxo_UnderAge_1w_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_1w_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_1m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_1m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_1m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_1m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_1m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_1m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_1m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_1m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_1m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_1m_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_1m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_1m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_1m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_1m_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized = SeriesTree_Cohorts_Utxo_UnderAge_1m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_1m_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_2m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_2m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_2m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_2m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_2m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_2m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_2m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_2m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_2m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_2m_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_2m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_2m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_2m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_2m_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized = SeriesTree_Cohorts_Utxo_UnderAge_2m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_2m_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_3m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_3m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_3m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_3m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_3m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_3m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_3m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_3m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_3m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_3m_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_3m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_3m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_3m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_3m_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized = SeriesTree_Cohorts_Utxo_UnderAge_3m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_3m_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_4m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_4m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_4m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_4m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_4m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_4m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_4m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_4m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_4m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_4m_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_4m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_4m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_4m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_4m_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized = SeriesTree_Cohorts_Utxo_UnderAge_4m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_4m_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_5m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_5m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_5m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_5m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_5m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_5m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_5m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_5m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_5m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_5m_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_5m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_5m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_5m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_5m_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized = SeriesTree_Cohorts_Utxo_UnderAge_5m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_5m_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_6m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_6m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_6m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_6m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_6m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_6m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_6m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_6m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_6m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_6m_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_6m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_6m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_6m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_6m_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized = SeriesTree_Cohorts_Utxo_UnderAge_6m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_6m_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_1y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_1y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_1y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_1y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_1y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_1y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_1y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_1y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_1y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_1y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_1y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_1y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_1y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_1y_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized = SeriesTree_Cohorts_Utxo_UnderAge_1y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_1y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_2y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_2y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_2y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_2y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_2y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_2y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_2y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_2y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_2y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_2y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_2y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_2y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_2y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_2y_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized = SeriesTree_Cohorts_Utxo_UnderAge_2y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_2y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_3y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_3y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_3y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_3y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_3y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_3y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_3y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_3y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_3y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_3y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_3y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_3y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_3y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_3y_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized = SeriesTree_Cohorts_Utxo_UnderAge_3y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_3y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_4y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_4y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_4y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_4y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_4y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_4y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_4y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_4y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_4y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_4y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_4y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_4y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_4y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_4y_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized = SeriesTree_Cohorts_Utxo_UnderAge_4y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_4y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_5y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_5y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_5y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_5y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_5y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_5y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_5y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_5y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_5y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_5y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_5y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_5y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_5y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_5y_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized = SeriesTree_Cohorts_Utxo_UnderAge_5y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_5y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_6y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_6y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_6y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_6y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_6y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_6y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_6y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_6y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_6y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_6y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_6y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_6y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_6y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_6y_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized = SeriesTree_Cohorts_Utxo_UnderAge_6y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_6y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_7y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_7y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_7y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_7y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_7y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_7y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_7y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_7y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_7y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_7y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_7y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_7y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_7y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_7y_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized = SeriesTree_Cohorts_Utxo_UnderAge_7y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_7y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_8y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_8y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_8y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_8y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_8y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_8y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_8y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_8y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_8y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_8y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_8y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_8y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_8y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_8y_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized = SeriesTree_Cohorts_Utxo_UnderAge_8y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_8y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_10y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_10y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_10y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_10y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_10y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_10y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_10y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_10y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_10y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_10y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_10y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_10y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_10y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_10y_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized = SeriesTree_Cohorts_Utxo_UnderAge_10y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_10y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_12y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_12y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_12y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_12y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_12y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_12y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_12y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_12y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_12y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_12y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_12y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_12y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_12y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_12y_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized = SeriesTree_Cohorts_Utxo_UnderAge_12y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_12y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_under_15y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_under_15y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_under_15y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_under_15y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_under_15y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_under_15y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized_Loss = SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_under_15y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_under_15y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_under_15y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_under_15y_old') - -class SeriesTree_Cohorts_Utxo_UnderAge_15y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_under_15y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_under_15y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_under_15y_old') - self.realized: SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized = SeriesTree_Cohorts_Utxo_UnderAge_15y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_under_15y_old') + self.under_1h: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1h_old') + self._1h_to_1d: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1h_to_1d_old') + self._1d_to_1w: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1d_to_1w_old') + self._1w_to_1m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1w_to_1m_old') + self._1m_to_2m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1m_to_2m_old') + self._2m_to_3m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_2m_to_3m_old') + self._3m_to_4m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_3m_to_4m_old') + self._4m_to_5m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_4m_to_5m_old') + self._5m_to_6m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_5m_to_6m_old') + self._6m_to_1y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_6m_to_1y_old') + self._1y_to_2y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1y_to_2y_old') + self._2y_to_3y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_2y_to_3y_old') + self._3y_to_4y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_3y_to_4y_old') + self._4y_to_5y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_4y_to_5y_old') + self._5y_to_6y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_5y_to_6y_old') + self._6y_to_7y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_6y_to_7y_old') + self._7y_to_8y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_7y_to_8y_old') + self._8y_to_10y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_8y_to_10y_old') + self._10y_to_12y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_10y_to_12y_old') + self._12y_to_15y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_12y_to_15y_old') + self.over_15y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_15y_old') class SeriesTree_Cohorts_Utxo_UnderAge: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._1w: SeriesTree_Cohorts_Utxo_UnderAge_1w = SeriesTree_Cohorts_Utxo_UnderAge_1w(client) - self._1m: SeriesTree_Cohorts_Utxo_UnderAge_1m = SeriesTree_Cohorts_Utxo_UnderAge_1m(client) - self._2m: SeriesTree_Cohorts_Utxo_UnderAge_2m = SeriesTree_Cohorts_Utxo_UnderAge_2m(client) - self._3m: SeriesTree_Cohorts_Utxo_UnderAge_3m = SeriesTree_Cohorts_Utxo_UnderAge_3m(client) - self._4m: SeriesTree_Cohorts_Utxo_UnderAge_4m = SeriesTree_Cohorts_Utxo_UnderAge_4m(client) - self._5m: SeriesTree_Cohorts_Utxo_UnderAge_5m = SeriesTree_Cohorts_Utxo_UnderAge_5m(client) - self._6m: SeriesTree_Cohorts_Utxo_UnderAge_6m = SeriesTree_Cohorts_Utxo_UnderAge_6m(client) - self._1y: SeriesTree_Cohorts_Utxo_UnderAge_1y = SeriesTree_Cohorts_Utxo_UnderAge_1y(client) - self._2y: SeriesTree_Cohorts_Utxo_UnderAge_2y = SeriesTree_Cohorts_Utxo_UnderAge_2y(client) - self._3y: SeriesTree_Cohorts_Utxo_UnderAge_3y = SeriesTree_Cohorts_Utxo_UnderAge_3y(client) - self._4y: SeriesTree_Cohorts_Utxo_UnderAge_4y = SeriesTree_Cohorts_Utxo_UnderAge_4y(client) - self._5y: SeriesTree_Cohorts_Utxo_UnderAge_5y = SeriesTree_Cohorts_Utxo_UnderAge_5y(client) - self._6y: SeriesTree_Cohorts_Utxo_UnderAge_6y = SeriesTree_Cohorts_Utxo_UnderAge_6y(client) - self._7y: SeriesTree_Cohorts_Utxo_UnderAge_7y = SeriesTree_Cohorts_Utxo_UnderAge_7y(client) - self._8y: SeriesTree_Cohorts_Utxo_UnderAge_8y = SeriesTree_Cohorts_Utxo_UnderAge_8y(client) - self._10y: SeriesTree_Cohorts_Utxo_UnderAge_10y = SeriesTree_Cohorts_Utxo_UnderAge_10y(client) - self._12y: SeriesTree_Cohorts_Utxo_UnderAge_12y = SeriesTree_Cohorts_Utxo_UnderAge_12y(client) - self._15y: SeriesTree_Cohorts_Utxo_UnderAge_15y = SeriesTree_Cohorts_Utxo_UnderAge_15y(client) - -class SeriesTree_Cohorts_Utxo_OverAge_1d_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_1d_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_1d_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_1d_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_1d_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_1d_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_1d_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_1d_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_1d_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_1d_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_1d_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_1d_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_1d_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_1d_old') - -class SeriesTree_Cohorts_Utxo_OverAge_1d: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_1d_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_1d_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_1d_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_1d_Realized = SeriesTree_Cohorts_Utxo_OverAge_1d_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_1d_old') - -class SeriesTree_Cohorts_Utxo_OverAge_1w_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_1w_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_1w_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_1w_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_1w_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_1w_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_1w_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_1w_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_1w_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_1w_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_1w_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_1w_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_1w_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_1w_old') - -class SeriesTree_Cohorts_Utxo_OverAge_1w: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_1w_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_1w_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_1w_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_1w_Realized = SeriesTree_Cohorts_Utxo_OverAge_1w_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_1w_old') - -class SeriesTree_Cohorts_Utxo_OverAge_1m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_1m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_1m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_1m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_1m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_1m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_1m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_1m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_1m_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_1m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_1m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_1m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_1m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_1m_old') - -class SeriesTree_Cohorts_Utxo_OverAge_1m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_1m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_1m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_1m_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_1m_Realized = SeriesTree_Cohorts_Utxo_OverAge_1m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_1m_old') - -class SeriesTree_Cohorts_Utxo_OverAge_2m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_2m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_2m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_2m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_2m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_2m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_2m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_2m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_2m_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_2m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_2m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_2m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_2m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_2m_old') - -class SeriesTree_Cohorts_Utxo_OverAge_2m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_2m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_2m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_2m_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_2m_Realized = SeriesTree_Cohorts_Utxo_OverAge_2m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_2m_old') - -class SeriesTree_Cohorts_Utxo_OverAge_3m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_3m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_3m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_3m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_3m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_3m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_3m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_3m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_3m_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_3m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_3m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_3m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_3m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_3m_old') - -class SeriesTree_Cohorts_Utxo_OverAge_3m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_3m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_3m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_3m_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_3m_Realized = SeriesTree_Cohorts_Utxo_OverAge_3m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_3m_old') - -class SeriesTree_Cohorts_Utxo_OverAge_4m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_4m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_4m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_4m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_4m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_4m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_4m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_4m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_4m_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_4m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_4m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_4m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_4m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_4m_old') - -class SeriesTree_Cohorts_Utxo_OverAge_4m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_4m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_4m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_4m_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_4m_Realized = SeriesTree_Cohorts_Utxo_OverAge_4m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_4m_old') - -class SeriesTree_Cohorts_Utxo_OverAge_5m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_5m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_5m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_5m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_5m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_5m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_5m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_5m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_5m_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_5m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_5m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_5m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_5m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_5m_old') - -class SeriesTree_Cohorts_Utxo_OverAge_5m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_5m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_5m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_5m_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_5m_Realized = SeriesTree_Cohorts_Utxo_OverAge_5m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_5m_old') - -class SeriesTree_Cohorts_Utxo_OverAge_6m_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_6m_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_6m_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_6m_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_6m_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_6m_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_6m_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_6m_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_6m_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_6m_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_6m_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_6m_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_6m_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_6m_old') - -class SeriesTree_Cohorts_Utxo_OverAge_6m: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_6m_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_6m_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_6m_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_6m_Realized = SeriesTree_Cohorts_Utxo_OverAge_6m_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_6m_old') - -class SeriesTree_Cohorts_Utxo_OverAge_1y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_1y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_1y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_1y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_1y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_1y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_1y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_1y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_1y_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_1y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_1y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_1y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_1y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_1y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_1y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_1y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_1y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_1y_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_1y_Realized = SeriesTree_Cohorts_Utxo_OverAge_1y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_1y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_2y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_2y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_2y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_2y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_2y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_2y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_2y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_2y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_2y_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_2y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_2y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_2y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_2y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_2y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_2y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_2y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_2y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_2y_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_2y_Realized = SeriesTree_Cohorts_Utxo_OverAge_2y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_2y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_3y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_3y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_3y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_3y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_3y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_3y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_3y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_3y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_3y_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_3y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_3y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_3y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_3y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_3y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_3y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_3y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_3y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_3y_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_3y_Realized = SeriesTree_Cohorts_Utxo_OverAge_3y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_3y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_4y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_4y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_4y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_4y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_4y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_4y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_4y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_4y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_4y_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_4y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_4y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_4y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_4y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_4y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_4y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_4y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_4y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_4y_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_4y_Realized = SeriesTree_Cohorts_Utxo_OverAge_4y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_4y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_5y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_5y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_5y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_5y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_5y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_5y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_5y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_5y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_5y_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_5y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_5y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_5y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_5y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_5y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_5y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_5y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_5y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_5y_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_5y_Realized = SeriesTree_Cohorts_Utxo_OverAge_5y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_5y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_6y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_6y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_6y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_6y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_6y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_6y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_6y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_6y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_6y_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_6y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_6y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_6y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_6y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_6y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_6y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_6y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_6y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_6y_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_6y_Realized = SeriesTree_Cohorts_Utxo_OverAge_6y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_6y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_7y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_7y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_7y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_7y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_7y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_7y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_7y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_7y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_7y_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_7y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_7y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_7y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_7y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_7y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_7y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_7y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_7y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_7y_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_7y_Realized = SeriesTree_Cohorts_Utxo_OverAge_7y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_7y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_8y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_8y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_8y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_8y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_8y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_8y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_8y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_8y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_8y_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_8y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_8y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_8y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_8y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_8y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_8y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_8y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_8y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_8y_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_8y_Realized = SeriesTree_Cohorts_Utxo_OverAge_8y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_8y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_10y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_10y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_10y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_10y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_10y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_10y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_10y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_10y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_10y_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_10y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_10y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_10y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_10y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_10y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_10y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_10y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_10y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_10y_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_10y_Realized = SeriesTree_Cohorts_Utxo_OverAge_10y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_10y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_12y_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'utxos_over_12y_old_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'utxos_over_12y_old_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'utxos_over_12y_old_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'utxos_over_12y_old_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_OverAge_12y_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'utxos_over_12y_old_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'utxos_over_12y_old_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_OverAge_12y_Realized_Loss = SeriesTree_Cohorts_Utxo_OverAge_12y_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'utxos_over_12y_old_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'utxos_over_12y_old_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'utxos_over_12y_old_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'utxos_over_12y_old') - -class SeriesTree_Cohorts_Utxo_OverAge_12y: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'utxos_over_12y_old_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'utxos_over_12y_old_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'utxos_over_12y_old') - self.realized: SeriesTree_Cohorts_Utxo_OverAge_12y_Realized = SeriesTree_Cohorts_Utxo_OverAge_12y_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'utxos_over_12y_old') + self._1w: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1w_old') + self._1m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1m_old') + self._2m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_2m_old') + self._3m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_3m_old') + self._4m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_4m_old') + self._5m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_5m_old') + self._6m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_6m_old') + self._1y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1y_old') + self._2y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_2y_old') + self._3y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_3y_old') + self._4y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_4y_old') + self._5y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_5y_old') + self._6y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_6y_old') + self._7y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_7y_old') + self._8y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_8y_old') + self._10y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_10y_old') + self._12y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_12y_old') + self._15y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_15y_old') class SeriesTree_Cohorts_Utxo_OverAge: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._1d: SeriesTree_Cohorts_Utxo_OverAge_1d = SeriesTree_Cohorts_Utxo_OverAge_1d(client) - self._1w: SeriesTree_Cohorts_Utxo_OverAge_1w = SeriesTree_Cohorts_Utxo_OverAge_1w(client) - self._1m: SeriesTree_Cohorts_Utxo_OverAge_1m = SeriesTree_Cohorts_Utxo_OverAge_1m(client) - self._2m: SeriesTree_Cohorts_Utxo_OverAge_2m = SeriesTree_Cohorts_Utxo_OverAge_2m(client) - self._3m: SeriesTree_Cohorts_Utxo_OverAge_3m = SeriesTree_Cohorts_Utxo_OverAge_3m(client) - self._4m: SeriesTree_Cohorts_Utxo_OverAge_4m = SeriesTree_Cohorts_Utxo_OverAge_4m(client) - self._5m: SeriesTree_Cohorts_Utxo_OverAge_5m = SeriesTree_Cohorts_Utxo_OverAge_5m(client) - self._6m: SeriesTree_Cohorts_Utxo_OverAge_6m = SeriesTree_Cohorts_Utxo_OverAge_6m(client) - self._1y: SeriesTree_Cohorts_Utxo_OverAge_1y = SeriesTree_Cohorts_Utxo_OverAge_1y(client) - self._2y: SeriesTree_Cohorts_Utxo_OverAge_2y = SeriesTree_Cohorts_Utxo_OverAge_2y(client) - self._3y: SeriesTree_Cohorts_Utxo_OverAge_3y = SeriesTree_Cohorts_Utxo_OverAge_3y(client) - self._4y: SeriesTree_Cohorts_Utxo_OverAge_4y = SeriesTree_Cohorts_Utxo_OverAge_4y(client) - self._5y: SeriesTree_Cohorts_Utxo_OverAge_5y = SeriesTree_Cohorts_Utxo_OverAge_5y(client) - self._6y: SeriesTree_Cohorts_Utxo_OverAge_6y = SeriesTree_Cohorts_Utxo_OverAge_6y(client) - self._7y: SeriesTree_Cohorts_Utxo_OverAge_7y = SeriesTree_Cohorts_Utxo_OverAge_7y(client) - self._8y: SeriesTree_Cohorts_Utxo_OverAge_8y = SeriesTree_Cohorts_Utxo_OverAge_8y(client) - self._10y: SeriesTree_Cohorts_Utxo_OverAge_10y = SeriesTree_Cohorts_Utxo_OverAge_10y(client) - self._12y: SeriesTree_Cohorts_Utxo_OverAge_12y = SeriesTree_Cohorts_Utxo_OverAge_12y(client) - -class SeriesTree_Cohorts_Utxo_Epoch_0_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'epoch_0_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'epoch_0_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'epoch_0_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'epoch_0_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Epoch_0_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'epoch_0_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'epoch_0_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Epoch_0_Realized_Loss = SeriesTree_Cohorts_Utxo_Epoch_0_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'epoch_0_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'epoch_0_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'epoch_0_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'epoch_0') - -class SeriesTree_Cohorts_Utxo_Epoch_0: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'epoch_0_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'epoch_0_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'epoch_0') - self.realized: SeriesTree_Cohorts_Utxo_Epoch_0_Realized = SeriesTree_Cohorts_Utxo_Epoch_0_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'epoch_0') - -class SeriesTree_Cohorts_Utxo_Epoch_1_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'epoch_1_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'epoch_1_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'epoch_1_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'epoch_1_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Epoch_1_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'epoch_1_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'epoch_1_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Epoch_1_Realized_Loss = SeriesTree_Cohorts_Utxo_Epoch_1_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'epoch_1_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'epoch_1_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'epoch_1_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'epoch_1') - -class SeriesTree_Cohorts_Utxo_Epoch_1: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'epoch_1_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'epoch_1_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'epoch_1') - self.realized: SeriesTree_Cohorts_Utxo_Epoch_1_Realized = SeriesTree_Cohorts_Utxo_Epoch_1_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'epoch_1') - -class SeriesTree_Cohorts_Utxo_Epoch_2_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'epoch_2_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'epoch_2_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'epoch_2_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'epoch_2_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Epoch_2_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'epoch_2_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'epoch_2_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Epoch_2_Realized_Loss = SeriesTree_Cohorts_Utxo_Epoch_2_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'epoch_2_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'epoch_2_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'epoch_2_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'epoch_2') - -class SeriesTree_Cohorts_Utxo_Epoch_2: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'epoch_2_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'epoch_2_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'epoch_2') - self.realized: SeriesTree_Cohorts_Utxo_Epoch_2_Realized = SeriesTree_Cohorts_Utxo_Epoch_2_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'epoch_2') - -class SeriesTree_Cohorts_Utxo_Epoch_3_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'epoch_3_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'epoch_3_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'epoch_3_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'epoch_3_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Epoch_3_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'epoch_3_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'epoch_3_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Epoch_3_Realized_Loss = SeriesTree_Cohorts_Utxo_Epoch_3_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'epoch_3_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'epoch_3_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'epoch_3_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'epoch_3') - -class SeriesTree_Cohorts_Utxo_Epoch_3: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'epoch_3_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'epoch_3_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'epoch_3') - self.realized: SeriesTree_Cohorts_Utxo_Epoch_3_Realized = SeriesTree_Cohorts_Utxo_Epoch_3_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'epoch_3') - -class SeriesTree_Cohorts_Utxo_Epoch_4_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'epoch_4_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'epoch_4_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'epoch_4_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'epoch_4_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Epoch_4_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'epoch_4_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'epoch_4_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Epoch_4_Realized_Loss = SeriesTree_Cohorts_Utxo_Epoch_4_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'epoch_4_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'epoch_4_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'epoch_4_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'epoch_4') - -class SeriesTree_Cohorts_Utxo_Epoch_4: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'epoch_4_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'epoch_4_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'epoch_4') - self.realized: SeriesTree_Cohorts_Utxo_Epoch_4_Realized = SeriesTree_Cohorts_Utxo_Epoch_4_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'epoch_4') + self._1d: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1d_old') + self._1w: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1w_old') + self._1m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1m_old') + self._2m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_2m_old') + self._3m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_3m_old') + self._4m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_4m_old') + self._5m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_5m_old') + self._6m: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_6m_old') + self._1y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1y_old') + self._2y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_2y_old') + self._3y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_3y_old') + self._4y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_4y_old') + self._5y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_5y_old') + self._6y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_6y_old') + self._7y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_7y_old') + self._8y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_8y_old') + self._10y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_10y_old') + self._12y: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_12y_old') class SeriesTree_Cohorts_Utxo_Epoch: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._0: SeriesTree_Cohorts_Utxo_Epoch_0 = SeriesTree_Cohorts_Utxo_Epoch_0(client) - self._1: SeriesTree_Cohorts_Utxo_Epoch_1 = SeriesTree_Cohorts_Utxo_Epoch_1(client) - self._2: SeriesTree_Cohorts_Utxo_Epoch_2 = SeriesTree_Cohorts_Utxo_Epoch_2(client) - self._3: SeriesTree_Cohorts_Utxo_Epoch_3 = SeriesTree_Cohorts_Utxo_Epoch_3(client) - self._4: SeriesTree_Cohorts_Utxo_Epoch_4 = SeriesTree_Cohorts_Utxo_Epoch_4(client) - -class SeriesTree_Cohorts_Utxo_Class_2009_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2009_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2009_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2009_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2009_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2009_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2009_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2009_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2009_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2009_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2009_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2009_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2009_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2009') - -class SeriesTree_Cohorts_Utxo_Class_2009: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2009_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2009_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2009') - self.realized: SeriesTree_Cohorts_Utxo_Class_2009_Realized = SeriesTree_Cohorts_Utxo_Class_2009_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2009') - -class SeriesTree_Cohorts_Utxo_Class_2010_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2010_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2010_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2010_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2010_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2010_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2010_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2010_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2010_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2010_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2010_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2010_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2010_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2010') - -class SeriesTree_Cohorts_Utxo_Class_2010: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2010_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2010_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2010') - self.realized: SeriesTree_Cohorts_Utxo_Class_2010_Realized = SeriesTree_Cohorts_Utxo_Class_2010_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2010') - -class SeriesTree_Cohorts_Utxo_Class_2011_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2011_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2011_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2011_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2011_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2011_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2011_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2011_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2011_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2011_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2011_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2011_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2011_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2011') - -class SeriesTree_Cohorts_Utxo_Class_2011: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2011_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2011_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2011') - self.realized: SeriesTree_Cohorts_Utxo_Class_2011_Realized = SeriesTree_Cohorts_Utxo_Class_2011_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2011') - -class SeriesTree_Cohorts_Utxo_Class_2012_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2012_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2012_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2012_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2012_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2012_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2012_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2012_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2012_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2012_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2012_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2012_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2012_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2012') - -class SeriesTree_Cohorts_Utxo_Class_2012: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2012_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2012_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2012') - self.realized: SeriesTree_Cohorts_Utxo_Class_2012_Realized = SeriesTree_Cohorts_Utxo_Class_2012_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2012') - -class SeriesTree_Cohorts_Utxo_Class_2013_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2013_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2013_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2013_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2013_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2013_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2013_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2013_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2013_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2013_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2013_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2013_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2013_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2013') - -class SeriesTree_Cohorts_Utxo_Class_2013: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2013_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2013_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2013') - self.realized: SeriesTree_Cohorts_Utxo_Class_2013_Realized = SeriesTree_Cohorts_Utxo_Class_2013_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2013') - -class SeriesTree_Cohorts_Utxo_Class_2014_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2014_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2014_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2014_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2014_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2014_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2014_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2014_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2014_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2014_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2014_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2014_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2014_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2014') - -class SeriesTree_Cohorts_Utxo_Class_2014: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2014_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2014_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2014') - self.realized: SeriesTree_Cohorts_Utxo_Class_2014_Realized = SeriesTree_Cohorts_Utxo_Class_2014_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2014') - -class SeriesTree_Cohorts_Utxo_Class_2015_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2015_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2015_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2015_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2015_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2015_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2015_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2015_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2015_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2015_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2015_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2015_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2015_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2015') - -class SeriesTree_Cohorts_Utxo_Class_2015: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2015_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2015_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2015') - self.realized: SeriesTree_Cohorts_Utxo_Class_2015_Realized = SeriesTree_Cohorts_Utxo_Class_2015_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2015') - -class SeriesTree_Cohorts_Utxo_Class_2016_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2016_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2016_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2016_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2016_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2016_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2016_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2016_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2016_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2016_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2016_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2016_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2016_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2016') - -class SeriesTree_Cohorts_Utxo_Class_2016: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2016_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2016_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2016') - self.realized: SeriesTree_Cohorts_Utxo_Class_2016_Realized = SeriesTree_Cohorts_Utxo_Class_2016_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2016') - -class SeriesTree_Cohorts_Utxo_Class_2017_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2017_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2017_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2017_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2017_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2017_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2017_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2017_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2017_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2017_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2017_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2017_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2017_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2017') - -class SeriesTree_Cohorts_Utxo_Class_2017: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2017_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2017_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2017') - self.realized: SeriesTree_Cohorts_Utxo_Class_2017_Realized = SeriesTree_Cohorts_Utxo_Class_2017_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2017') - -class SeriesTree_Cohorts_Utxo_Class_2018_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2018_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2018_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2018_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2018_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2018_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2018_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2018_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2018_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2018_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2018_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2018_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2018_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2018') - -class SeriesTree_Cohorts_Utxo_Class_2018: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2018_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2018_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2018') - self.realized: SeriesTree_Cohorts_Utxo_Class_2018_Realized = SeriesTree_Cohorts_Utxo_Class_2018_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2018') - -class SeriesTree_Cohorts_Utxo_Class_2019_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2019_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2019_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2019_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2019_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2019_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2019_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2019_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2019_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2019_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2019_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2019_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2019_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2019') - -class SeriesTree_Cohorts_Utxo_Class_2019: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2019_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2019_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2019') - self.realized: SeriesTree_Cohorts_Utxo_Class_2019_Realized = SeriesTree_Cohorts_Utxo_Class_2019_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2019') - -class SeriesTree_Cohorts_Utxo_Class_2020_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2020_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2020_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2020_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2020_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2020_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2020_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2020_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2020_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2020_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2020_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2020_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2020_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2020') - -class SeriesTree_Cohorts_Utxo_Class_2020: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2020_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2020_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2020') - self.realized: SeriesTree_Cohorts_Utxo_Class_2020_Realized = SeriesTree_Cohorts_Utxo_Class_2020_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2020') - -class SeriesTree_Cohorts_Utxo_Class_2021_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2021_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2021_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2021_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2021_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2021_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2021_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2021_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2021_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2021_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2021_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2021_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2021_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2021') - -class SeriesTree_Cohorts_Utxo_Class_2021: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2021_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2021_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2021') - self.realized: SeriesTree_Cohorts_Utxo_Class_2021_Realized = SeriesTree_Cohorts_Utxo_Class_2021_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2021') - -class SeriesTree_Cohorts_Utxo_Class_2022_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2022_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2022_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2022_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2022_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2022_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2022_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2022_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2022_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2022_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2022_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2022_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2022_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2022') - -class SeriesTree_Cohorts_Utxo_Class_2022: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2022_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2022_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2022') - self.realized: SeriesTree_Cohorts_Utxo_Class_2022_Realized = SeriesTree_Cohorts_Utxo_Class_2022_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2022') - -class SeriesTree_Cohorts_Utxo_Class_2023_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2023_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2023_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2023_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2023_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2023_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2023_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2023_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2023_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2023_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2023_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2023_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2023_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2023') - -class SeriesTree_Cohorts_Utxo_Class_2023: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2023_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2023_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2023') - self.realized: SeriesTree_Cohorts_Utxo_Class_2023_Realized = SeriesTree_Cohorts_Utxo_Class_2023_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2023') - -class SeriesTree_Cohorts_Utxo_Class_2024_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2024_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2024_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2024_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2024_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2024_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2024_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2024_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2024_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2024_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2024_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2024_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2024_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2024') - -class SeriesTree_Cohorts_Utxo_Class_2024: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2024_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2024_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2024') - self.realized: SeriesTree_Cohorts_Utxo_Class_2024_Realized = SeriesTree_Cohorts_Utxo_Class_2024_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2024') - -class SeriesTree_Cohorts_Utxo_Class_2025_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2025_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2025_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2025_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2025_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2025_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2025_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2025_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2025_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2025_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2025_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2025_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2025_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2025') - -class SeriesTree_Cohorts_Utxo_Class_2025: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2025_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2025_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2025') - self.realized: SeriesTree_Cohorts_Utxo_Class_2025_Realized = SeriesTree_Cohorts_Utxo_Class_2025_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2025') - -class SeriesTree_Cohorts_Utxo_Class_2026_Realized_Loss: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, 'class_2026_realized_loss') - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, 'class_2026_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'class_2026_realized_loss_sum') - self.negative: BaseSumPattern = BaseSumPattern(client, 'class_2026_neg_realized_loss') - -class SeriesTree_Cohorts_Utxo_Class_2026_Realized: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'class_2026_realized_cap') - self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'class_2026_realized_profit') - self.loss: SeriesTree_Cohorts_Utxo_Class_2026_Realized_Loss = SeriesTree_Cohorts_Utxo_Class_2026_Realized_Loss(client) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, 'class_2026_realized_price') - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'class_2026_mvrv') - self.net_pnl: BlockCumulativeDeltaSumPattern = BlockCumulativeDeltaSumPattern(client, 'class_2026_net_realized_pnl') - self.sopr: RatioValuePattern = RatioValuePattern(client, 'class_2026') - -class SeriesTree_Cohorts_Utxo_Class_2026: - """Series tree node.""" - - def __init__(self, client: BrkClientBase, base_path: str = ''): - self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, 'class_2026_supply') - self.outputs: UnspentPattern = UnspentPattern(client, 'class_2026_utxo_count') - self.activity: CoindaysTransferPattern = CoindaysTransferPattern(client, 'class_2026') - self.realized: SeriesTree_Cohorts_Utxo_Class_2026_Realized = SeriesTree_Cohorts_Utxo_Class_2026_Realized(client) - self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, 'class_2026') + self._0: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_0') + self._1: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_1') + self._2: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_2') + self._3: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_3') + self._4: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'epoch_4') class SeriesTree_Cohorts_Utxo_Class: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._2009: SeriesTree_Cohorts_Utxo_Class_2009 = SeriesTree_Cohorts_Utxo_Class_2009(client) - self._2010: SeriesTree_Cohorts_Utxo_Class_2010 = SeriesTree_Cohorts_Utxo_Class_2010(client) - self._2011: SeriesTree_Cohorts_Utxo_Class_2011 = SeriesTree_Cohorts_Utxo_Class_2011(client) - self._2012: SeriesTree_Cohorts_Utxo_Class_2012 = SeriesTree_Cohorts_Utxo_Class_2012(client) - self._2013: SeriesTree_Cohorts_Utxo_Class_2013 = SeriesTree_Cohorts_Utxo_Class_2013(client) - self._2014: SeriesTree_Cohorts_Utxo_Class_2014 = SeriesTree_Cohorts_Utxo_Class_2014(client) - self._2015: SeriesTree_Cohorts_Utxo_Class_2015 = SeriesTree_Cohorts_Utxo_Class_2015(client) - self._2016: SeriesTree_Cohorts_Utxo_Class_2016 = SeriesTree_Cohorts_Utxo_Class_2016(client) - self._2017: SeriesTree_Cohorts_Utxo_Class_2017 = SeriesTree_Cohorts_Utxo_Class_2017(client) - self._2018: SeriesTree_Cohorts_Utxo_Class_2018 = SeriesTree_Cohorts_Utxo_Class_2018(client) - self._2019: SeriesTree_Cohorts_Utxo_Class_2019 = SeriesTree_Cohorts_Utxo_Class_2019(client) - self._2020: SeriesTree_Cohorts_Utxo_Class_2020 = SeriesTree_Cohorts_Utxo_Class_2020(client) - self._2021: SeriesTree_Cohorts_Utxo_Class_2021 = SeriesTree_Cohorts_Utxo_Class_2021(client) - self._2022: SeriesTree_Cohorts_Utxo_Class_2022 = SeriesTree_Cohorts_Utxo_Class_2022(client) - self._2023: SeriesTree_Cohorts_Utxo_Class_2023 = SeriesTree_Cohorts_Utxo_Class_2023(client) - self._2024: SeriesTree_Cohorts_Utxo_Class_2024 = SeriesTree_Cohorts_Utxo_Class_2024(client) - self._2025: SeriesTree_Cohorts_Utxo_Class_2025 = SeriesTree_Cohorts_Utxo_Class_2025(client) - self._2026: SeriesTree_Cohorts_Utxo_Class_2026 = SeriesTree_Cohorts_Utxo_Class_2026(client) + self._2009: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2009') + self._2010: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2010') + self._2011: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2011') + self._2012: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2012') + self._2013: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2013') + self._2014: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2014') + self._2015: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2015') + self._2016: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2016') + self._2017: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2017') + self._2018: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2018') + self._2019: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2019') + self._2020: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2020') + self._2021: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2021') + self._2022: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2022') + self._2023: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2023') + self._2024: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2024') + self._2025: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2025') + self._2026: ActivityOutputsRealizedSupplyUnrealizedPattern = ActivityOutputsRealizedSupplyUnrealizedPattern(client, 'class_2026') class SeriesTree_Cohorts_Utxo_OverAmount: """Series tree node.""" diff --git a/website/scripts/options/distribution/activity.js b/website/scripts/options/distribution/activity.js index 09e528787..43b409372 100644 --- a/website/scripts/options/distribution/activity.js +++ b/website/scripts/options/distribution/activity.js @@ -71,35 +71,6 @@ function volumeFolderWithProfitability(activity, color, title) { }; } -/** - * Full activity items: volume (with profitability), coindays, dormancy - * @param {FullActivityPattern} activity - * @param {Color} color - * @param {(name: string) => string} title - * @returns {PartialOptionsTree} - */ -function fullVolumeTree(activity, color, title) { - return [ - volumeFolderWithProfitability(activity, color, title), - { - name: "Coindays Destroyed", - tree: chartsFromCount({ - pattern: activity.coindaysDestroyed, - title: title("Coindays Destroyed"), - unit: Unit.coindays, - color, - }), - }, - { - name: "Dormancy", - tree: averagesArray({ - windows: activity.dormancy, - title: title("Dormancy"), - unit: Unit.days, - }), - }, - ]; -} // ============================================================================ // Shared SOPR Helpers @@ -180,64 +151,46 @@ function singleSellSideRiskTree(sellSideRisk, title) { // ============================================================================ /** - * Full activity with adjusted SOPR (All/STH) - * @param {{ cohort: CohortAll | CohortFull, title: (name: string) => string }} args - * @returns {PartialOptionsGroup} + * Single activity tree items shared between WithAdjusted and basic + * @param {CohortAll | CohortFull | CohortLongTerm} cohort + * @param {(name: string) => string} title + * @param {PartialOptionsGroup} soprFolder + * @returns {PartialOptionsTree} */ -export function createActivitySectionWithAdjusted({ cohort, title }) { +function singleFullActivityTree(cohort, title, soprFolder) { const { tree, color } = cohort; - const r = tree.realized; - const sopr = r.sopr; + return [ + volumeFolderWithProfitability(tree.activity, color, title), + soprFolder, + { name: "Coindays Destroyed", tree: chartsFromCount({ pattern: tree.activity.coindaysDestroyed, title: title("Coindays Destroyed"), unit: Unit.coindays, color }) }, + { name: "Dormancy", tree: averagesArray({ windows: tree.activity.dormancy, title: title("Dormancy"), unit: Unit.days }) }, + { name: "Sell Side Risk", tree: singleSellSideRiskTree(tree.realized.sellSideRiskRatio, title) }, + ]; +} +/** @param {{ cohort: CohortAll | CohortFull, title: (name: string) => string }} args */ +export function createActivitySectionWithAdjusted({ cohort, title }) { + const sopr = cohort.tree.realized.sopr; return { name: "Activity", - tree: [ - ...fullVolumeTree(tree.activity, color, title), - { - name: "SOPR", - tree: [ - ...singleRollingSoprTree(sopr.ratio, title), - { - name: "Adjusted", - tree: singleRollingSoprTree( - sopr.adjusted.ratio, - title, - "Adjusted ", - ), - }, - ], - }, - { - name: "Sell Side Risk", - tree: singleSellSideRiskTree(r.sellSideRiskRatio, title), - }, - ], + tree: singleFullActivityTree(cohort, title, { + name: "SOPR", + tree: [ + ...singleRollingSoprTree(sopr.ratio, title), + { name: "Adjusted", tree: singleRollingSoprTree(sopr.adjusted.ratio, title, "Adjusted ") }, + ], + }), }; } -/** - * Activity section for cohorts with rolling SOPR + sell side risk (LTH, also CohortFull | CohortLongTerm) - * @param {{ cohort: CohortFull | CohortLongTerm, title: (name: string) => string }} args - * @returns {PartialOptionsGroup} - */ +/** @param {{ cohort: CohortFull | CohortLongTerm, title: (name: string) => string }} args */ export function createActivitySection({ cohort, title }) { - const { tree, color } = cohort; - const r = tree.realized; - const sopr = r.sopr; - return { name: "Activity", - tree: [ - ...fullVolumeTree(tree.activity, color, title), - { - name: "SOPR", - tree: singleRollingSoprTree(sopr.ratio, title), - }, - { - name: "Sell Side Risk", - tree: singleSellSideRiskTree(r.sellSideRiskRatio, title), - }, - ], + tree: singleFullActivityTree(cohort, title, { + name: "SOPR", + tree: singleRollingSoprTree(cohort.tree.realized.sopr.ratio, title), + }), }; } @@ -316,6 +269,27 @@ export function createGroupedActivitySectionMinimal({ list, all, title }) { }; } +/** + * Grouped volume folder with In Profit/Loss subfolders + * @template {{ name: string, color: Color }} T + * @template {{ name: string, color: Color }} A + * @param {readonly T[]} list + * @param {A} all + * @param {(name: string) => string} title + * @param {(c: T | A) => { sum: Record, cumulative: AnyValuePattern, inProfit: { sum: Record, cumulative: AnyValuePattern }, inLoss: { sum: Record, cumulative: AnyValuePattern } }} getTransferVolume + * @returns {PartialOptionsGroup} + */ +function groupedVolumeFolder(list, all, title, getTransferVolume) { + return { + name: "Volume", + tree: [ + ...groupedWindowsCumulativeSatsBtcUsd({ list, all, title, metricTitle: "Sent Volume", getMetric: (c) => getTransferVolume(c) }), + { name: "In Profit", tree: groupedWindowsCumulativeSatsBtcUsd({ list, all, title, metricTitle: "Sent In Profit", getMetric: (c) => getTransferVolume(c).inProfit }) }, + { name: "In Loss", tree: groupedWindowsCumulativeSatsBtcUsd({ list, all, title, metricTitle: "Sent In Loss", getMetric: (c) => getTransferVolume(c).inLoss }) }, + ], + }; +} + // ============================================================================ // Grouped SOPR Helpers // ============================================================================ @@ -366,214 +340,88 @@ function groupedSoprCharts(list, all, getRatio, title, prefix = "") { // ============================================================================ /** - * @param {{ list: readonly CohortFull[], all: CohortAll, title: (name: string) => string }} args - * @returns {PartialOptionsGroup} + * Grouped activity tree items shared between WithAdjusted and basic + * @param {readonly (CohortFull | CohortLongTerm)[]} list + * @param {CohortAll} all + * @param {(name: string) => string} title + * @param {PartialOptionsGroup} soprFolder + * @returns {PartialOptionsTree} */ +function groupedFullActivityTree(list, all, title, soprFolder) { + return [ + groupedVolumeFolder(list, all, title, (c) => c.tree.activity.transferVolume), + soprFolder, + ...groupedActivitySharedItems(list, all, title), + ]; +} + +/** @param {{ list: readonly CohortFull[], all: CohortAll, title: (name: string) => string }} args */ export function createGroupedActivitySectionWithAdjusted({ list, all, title }) { return { name: "Activity", - tree: [ - { - name: "Volume", - tree: [ - ...groupedWindowsCumulativeSatsBtcUsd({ - list, - all, - title, - metricTitle: "Sent Volume", - getMetric: (c) => c.tree.activity.transferVolume, - }), - { - name: "In Profit", - tree: groupedWindowsCumulativeSatsBtcUsd({ - list, - all, - title, - metricTitle: "Sent In Profit", - getMetric: (c) => c.tree.activity.transferVolume.inProfit, - }), - }, - { - name: "In Loss", - tree: groupedWindowsCumulativeSatsBtcUsd({ - list, - all, - title, - metricTitle: "Sent In Loss", - getMetric: (c) => c.tree.activity.transferVolume.inLoss, - }), - }, - ], - }, - { - name: "Coindays Destroyed", - tree: groupedWindowsCumulative({ - list, - all, - title, - metricTitle: "Coindays Destroyed", - getWindowSeries: (c, key) => - c.tree.activity.coindaysDestroyed.sum[key], - getCumulativeSeries: (c) => - c.tree.activity.coindaysDestroyed.cumulative, - seriesFn: line, - unit: Unit.coindays, - }), - }, - { - name: "Dormancy", - tree: ROLLING_WINDOWS.map((w) => ({ - name: w.name, - title: title(`Dormancy (${w.title})`), - bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => - line({ - series: tree.activity.dormancy[w.key], - name, - color, - unit: Unit.days, - }), - ), - })), - }, - { - name: "SOPR", - tree: [ - ...groupedSoprCharts( - list, - all, - (c) => c.tree.realized.sopr.ratio, - title, - ), - { - name: "Adjusted", - tree: groupedSoprCharts( - list, - all, - (c) => c.tree.realized.sopr.adjusted.ratio, - title, - "Adjusted ", - ), - }, - ], - }, - { - name: "Sell Side Risk", - tree: ROLLING_WINDOWS.map((w) => ({ - name: w.name, - title: title(`Sell Side Risk (${w.title})`), - bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => - line({ - series: tree.realized.sellSideRiskRatio[w.key].ratio, - name, - color, - unit: Unit.ratio, - }), - ), - })), - }, - ], + tree: groupedFullActivityTree(list, all, title, { + name: "SOPR", + tree: [ + ...groupedSoprCharts(list, all, (c) => c.tree.realized.sopr.ratio, title), + { name: "Adjusted", tree: groupedSoprCharts(list, all, (c) => c.tree.realized.sopr.adjusted.ratio, title, "Adjusted ") }, + ], + }), + }; +} + +/** @param {{ list: readonly (CohortFull | CohortLongTerm)[], all: CohortAll, title: (name: string) => string }} args */ +export function createGroupedActivitySection({ list, all, title }) { + return { + name: "Activity", + tree: groupedFullActivityTree(list, all, title, { + name: "SOPR", + tree: groupedSoprCharts(list, all, (c) => c.tree.realized.sopr.ratio, title), + }), }; } /** - * Grouped activity for cohorts with rolling SOPR + sell side risk (LTH-like) - * @param {{ list: readonly (CohortFull | CohortLongTerm)[], all: CohortAll, title: (name: string) => string }} args - * @returns {PartialOptionsGroup} + * Shared grouped activity items: coindays, dormancy, sell side risk + * @param {readonly (CohortFull | CohortLongTerm)[]} list + * @param {CohortAll} all + * @param {(name: string) => string} title + * @returns {PartialOptionsTree} */ -export function createGroupedActivitySection({ list, all, title }) { - return { - name: "Activity", - tree: [ - { - name: "Volume", - tree: [ - ...groupedWindowsCumulativeSatsBtcUsd({ - list, - all, - title, - metricTitle: "Sent Volume", - getMetric: (c) => c.tree.activity.transferVolume, - }), - { - name: "In Profit", - tree: groupedWindowsCumulativeSatsBtcUsd({ - list, - all, - title, - metricTitle: "Sent In Profit", - getMetric: (c) => c.tree.activity.transferVolume.inProfit, - }), - }, - { - name: "In Loss", - tree: groupedWindowsCumulativeSatsBtcUsd({ - list, - all, - title, - metricTitle: "Sent In Loss", - getMetric: (c) => c.tree.activity.transferVolume.inLoss, - }), - }, - ], - }, - { - name: "Coindays Destroyed", - tree: groupedWindowsCumulative({ - list, - all, - title, - metricTitle: "Coindays Destroyed", - getWindowSeries: (c, key) => - c.tree.activity.coindaysDestroyed.sum[key], - getCumulativeSeries: (c) => - c.tree.activity.coindaysDestroyed.cumulative, - seriesFn: line, - unit: Unit.coindays, - }), - }, - { - name: "Dormancy", - tree: ROLLING_WINDOWS.map((w) => ({ - name: w.name, - title: title(`Dormancy (${w.title})`), - bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => - line({ - series: tree.activity.dormancy[w.key], - name, - color, - unit: Unit.days, - }), - ), - })), - }, - { - name: "SOPR", - tree: groupedSoprCharts( - list, - all, - (c) => c.tree.realized.sopr.ratio, - title, +function groupedActivitySharedItems(list, all, title) { + return [ + { + name: "Coindays Destroyed", + tree: groupedWindowsCumulative({ + list, all, title, metricTitle: "Coindays Destroyed", + getWindowSeries: (c, key) => c.tree.activity.coindaysDestroyed.sum[key], + getCumulativeSeries: (c) => c.tree.activity.coindaysDestroyed.cumulative, + seriesFn: line, unit: Unit.coindays, + }), + }, + { + name: "Dormancy", + tree: ROLLING_WINDOWS.map((w) => ({ + name: w.name, + title: title(`Dormancy (${w.title})`), + bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => + line({ series: tree.activity.dormancy[w.key], name, color, unit: Unit.days }), ), - }, - { - name: "Sell Side Risk", - tree: ROLLING_WINDOWS.map((w) => ({ - name: w.name, - title: title(`Sell Side Risk (${w.title})`), - bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => - line({ - series: tree.realized.sellSideRiskRatio[w.key].ratio, - name, - color, - unit: Unit.ratio, - }), - ), - })), - }, - ], - }; + })), + }, + { + name: "Sell Side Risk", + tree: ROLLING_WINDOWS.map((w) => ({ + name: w.name, + title: title(`Sell Side Risk (${w.title})`), + bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => + line({ series: tree.realized.sellSideRiskRatio[w.key].ratio, name, color, unit: Unit.ratio }), + ), + })), + }, + ]; } + /** * Grouped activity for cohorts with activity but basic realized (AgeRange/MaxAge) * @param {{ list: readonly (CohortAgeRange | CohortWithAdjusted)[], all: CohortAll, title: (name: string) => string }} args diff --git a/website/scripts/options/distribution/holdings.js b/website/scripts/options/distribution/holdings.js index e77db2dff..369af94fe 100644 --- a/website/scripts/options/distribution/holdings.js +++ b/website/scripts/options/distribution/holdings.js @@ -16,6 +16,7 @@ import { baseline, sumsTreeBaseline, rollingPercentRatioTree, + percentRatio, percentRatioBaseline, } from "../series.js"; import { @@ -29,7 +30,7 @@ import { priceLines } from "../constants.js"; /** * Simple supply series (total + half only, no profit/loss) - * @param {{ total: AnyValuePattern, half: AnyValuePattern }} supply + * @param {{ total: AnyValuePattern }} supply * @returns {AnyFetchedSeriesBlueprint[]} */ function simpleSupplySeries(supply) { @@ -39,68 +40,6 @@ function simpleSupplySeries(supply) { }); } -/** - * % of Own Supply series (profit/loss relative to own supply) - * @param {{ inProfit: { toOwn: { percent: AnySeriesPattern, ratio: AnySeriesPattern } }, inLoss: { toOwn: { percent: AnySeriesPattern, ratio: AnySeriesPattern } } }} supply - * @returns {AnyFetchedSeriesBlueprint[]} - */ -function ownSupplyPctSeries(supply) { - return [ - line({ - series: supply.inProfit.toOwn.percent, - name: "In Profit", - color: colors.profit, - unit: Unit.percentage, - }), - line({ - series: supply.inLoss.toOwn.percent, - name: "In Loss", - color: colors.loss, - unit: Unit.percentage, - }), - line({ - series: supply.inProfit.toOwn.ratio, - name: "In Profit", - color: colors.profit, - unit: Unit.ratio, - }), - line({ - series: supply.inLoss.toOwn.ratio, - name: "In Loss", - color: colors.loss, - unit: Unit.ratio, - }), - ...priceLines({ numbers: [100, 50, 0], unit: Unit.percentage }), - ]; -} - -/** - * % of Circulating Supply series (total, profit, loss) - * @param {{ toCirculating: { percent: AnySeriesPattern }, inProfit: { toCirculating: { percent: AnySeriesPattern } }, inLoss: { toCirculating: { percent: AnySeriesPattern } } }} supply - * @returns {AnyFetchedSeriesBlueprint[]} - */ -function circulatingSupplyPctSeries(supply) { - return [ - line({ - series: supply.toCirculating.percent, - name: "Total", - color: colors.default, - unit: Unit.percentage, - }), - line({ - series: supply.inProfit.toCirculating.percent, - name: "In Profit", - color: colors.profit, - unit: Unit.percentage, - }), - line({ - series: supply.inLoss.toCirculating.percent, - name: "In Loss", - color: colors.loss, - unit: Unit.percentage, - }), - ]; -} /** * @param {readonly (UtxoCohortObject | CohortWithoutRelative)[]} list @@ -244,7 +183,11 @@ function circulatingChart(supply, title) { return { name: "% of Circulating", title: title("Supply (% of Circulating)"), - bottom: circulatingSupplyPctSeries(supply), + bottom: [ + line({ series: supply.toCirculating.percent, name: "Total", color: colors.default, unit: Unit.percentage }), + line({ series: supply.inProfit.toCirculating.percent, name: "In Profit", color: colors.profit, unit: Unit.percentage }), + line({ series: supply.inLoss.toCirculating.percent, name: "In Loss", color: colors.loss, unit: Unit.percentage }), + ], }; } @@ -257,7 +200,11 @@ function ownSupplyChart(supply, title) { return { name: "% of Own Supply", title: title("Supply (% of Own)"), - bottom: ownSupplyPctSeries(supply), + bottom: [ + ...percentRatio({ pattern: supply.inProfit.toOwn, name: "In Profit", color: colors.profit }), + ...percentRatio({ pattern: supply.inLoss.toOwn, name: "In Loss", color: colors.loss }), + ...priceLines({ numbers: [100, 50, 0], unit: Unit.percentage }), + ], }; } @@ -460,6 +407,35 @@ export function createHoldingsSectionAddressAmount({ cohort, title }) { ]; } +// ============================================================================ +// Grouped Cohort Supply Helpers +// ============================================================================ + +/** + * @template {{ name: string, color: Color, tree: { supply: { total: AnyValuePattern } } }} T + * @param {readonly T[]} list + * @param {CohortAll} all + * @param {(name: string) => string} title + * @returns {PartialChartOption} + */ +function groupedSupplyTotal(list, all, title) { + return { name: "Total", title: title("Supply"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.total, name, color })) }; +} + +/** + * @template {{ name: string, color: Color, tree: { supply: { inProfit: AnyValuePattern, inLoss: AnyValuePattern } } }} T + * @param {readonly T[]} list + * @param {CohortAll} all + * @param {(name: string) => string} title + * @returns {PartialOptionsTree} + */ +function groupedSupplyProfitLoss(list, all, title) { + return [ + { name: "In Profit", title: title("Supply In Profit"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.inProfit, name, color })) }, + { name: "In Loss", title: title("Supply In Loss"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.inLoss, name, color })) }, + ]; +} + // ============================================================================ // Grouped Cohort Holdings Sections // ============================================================================ @@ -473,27 +449,8 @@ export function createGroupedHoldingsSectionAddress({ list, all, title }) { { name: "Supply", tree: [ - { - name: "Total", - title: title("Supply"), - bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => - satsBtcUsd({ pattern: tree.supply.total, name, color }), - ), - }, - { - name: "In Profit", - title: title("Supply In Profit"), - bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => - satsBtcUsd({ pattern: tree.supply.inProfit, name, color }), - ), - }, - { - name: "In Loss", - title: title("Supply In Loss"), - bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => - satsBtcUsd({ pattern: tree.supply.inLoss, name, color }), - ), - }, + groupedSupplyTotal(list, all, title), + ...groupedSupplyProfitLoss(list, all, title), ...groupedDeltaItems(list, all, (c) => c.tree.supply.delta, Unit.sats, title, "Supply"), ], }, @@ -524,7 +481,7 @@ export function createGroupedHoldingsSectionAddressAmount({ list, all, title }) { name: "Supply", tree: [ - { name: "Total", title: title("Supply"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.total, name, color })) }, + groupedSupplyTotal(list, all, title), ...groupedDeltaItems(list, all, (c) => c.tree.supply.delta, Unit.sats, title, "Supply"), ], }, @@ -551,7 +508,7 @@ export function createGroupedHoldingsSection({ list, all, title }) { { name: "Supply", tree: [ - { name: "Total", title: title("Supply"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.total, name, color })) }, + groupedSupplyTotal(list, all, title), ...groupedDeltaItems(list, all, (c) => c.tree.supply.delta, Unit.sats, title, "Supply"), ], }, @@ -565,9 +522,8 @@ export function createGroupedHoldingsSectionWithProfitLoss({ list, all, title }) { name: "Supply", tree: [ - { name: "Total", title: title("Supply"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.total, name, color })) }, - { name: "In Profit", title: title("Supply In Profit"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.inProfit, name, color })) }, - { name: "In Loss", title: title("Supply In Loss"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.inLoss, name, color })) }, + groupedSupplyTotal(list, all, title), + ...groupedSupplyProfitLoss(list, all, title), ...groupedDeltaItems(list, all, (c) => c.tree.supply.delta, Unit.sats, title, "Supply"), ], }, @@ -581,9 +537,8 @@ export function createGroupedHoldingsSectionWithOwnSupply({ list, all, title }) { name: "Supply", tree: [ - { name: "Total", title: title("Supply"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.total, name, color })) }, - { name: "In Profit", title: title("Supply In Profit"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.inProfit, name, color })) }, - { name: "In Loss", title: title("Supply In Loss"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.inLoss, name, color })) }, + groupedSupplyTotal(list, all, title), + ...groupedSupplyProfitLoss(list, all, title), { name: "% of Circulating", title: title("Supply (% of Circulating)"), bottom: mapCohorts(list, ({ name, color, tree }) => line({ series: tree.supply.toCirculating.percent, name, color, unit: Unit.percentage })) }, ...groupedDeltaItems(list, all, (c) => c.tree.supply.delta, Unit.sats, title, "Supply"), ], @@ -603,9 +558,8 @@ export function createGroupedHoldingsSectionWithRelative({ list, all, title }) { { name: "Supply", tree: [ - { name: "Total", title: title("Supply"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.total, name, color })) }, - { name: "In Profit", title: title("Supply In Profit"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.inProfit, name, color })) }, - { name: "In Loss", title: title("Supply In Loss"), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => satsBtcUsd({ pattern: tree.supply.inLoss, name, color })) }, + groupedSupplyTotal(list, all, title), + ...groupedSupplyProfitLoss(list, all, title), { name: "% of Circulating", title: title("Supply (% of Circulating)"), bottom: mapCohorts(list, ({ name, color, tree }) => line({ series: tree.supply.toCirculating.percent, name, color, unit: Unit.percentage })) }, { name: "% of Own Supply", title: title("Supply (% of Own)"), bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => line({ series: tree.supply.inProfit.toOwn.percent, name, color, unit: Unit.percentage })) }, ...groupedDeltaItems(list, all, (c) => c.tree.supply.delta, Unit.sats, title, "Supply"), diff --git a/website/scripts/options/distribution/index.js b/website/scripts/options/distribution/index.js index 205906199..3515a558b 100644 --- a/website/scripts/options/distribution/index.js +++ b/website/scripts/options/distribution/index.js @@ -36,7 +36,6 @@ import { createHoldingsSectionWithRelative, createHoldingsSectionWithOwnSupply, createGroupedHoldingsSection, - createGroupedHoldingsSectionWithProfitLoss, createGroupedHoldingsSectionAddress, createGroupedHoldingsSectionAddressAmount, createGroupedHoldingsSectionWithRelative, @@ -68,18 +67,15 @@ import { createProfitabilitySectionWithProfitLoss, createProfitabilitySectionLongTerm, createGroupedProfitabilitySection, - createGroupedProfitabilitySectionWithProfitLoss, createGroupedProfitabilitySectionWithNupl, createGroupedProfitabilitySectionWithInvestedCapitalPct, createGroupedProfitabilitySectionBasicWithInvestedCapitalPct, - createGroupedProfitabilitySectionLongTerm, } from "./profitability.js"; import { createActivitySection, createActivitySectionWithAdjusted, createActivitySectionWithActivity, createGroupedActivitySection, - createGroupedActivitySectionWithAdjusted, createGroupedActivitySectionWithActivity, createActivitySectionMinimal, createGroupedActivitySectionMinimal, @@ -327,30 +323,6 @@ export function createAddressCohortFolder(cohort) { // Grouped Cohort Folder Builders // ============================================================================ -/** - * @param {CohortGroupFull} args - * @returns {PartialOptionsGroup} - */ -export function createGroupedCohortFolderFull({ - name, - title: groupTitle, - list, - all, -}) { - const title = formatCohortTitle(groupTitle); - return { - name: name || "all", - tree: [ - ...createGroupedHoldingsSectionWithRelative({ list, all, title }), - createGroupedValuationSectionWithOwnMarketCap({ list, all, title }), - createGroupedPricesSectionFull({ list, all, title }), - createGroupedCostBasisSectionWithPercentiles({ list, all, title }), - createGroupedProfitabilitySectionWithNupl({ list, all, title }), - createGroupedActivitySectionWithAdjusted({ list, all, title }), - ], - }; -} - /** * @param {CohortGroupWithAdjusted} args * @returns {PartialOptionsGroup} @@ -402,30 +374,6 @@ export function createGroupedCohortFolderWithNupl({ }; } -/** - * @param {CohortGroupLongTerm} args - * @returns {PartialOptionsGroup} - */ -export function createGroupedCohortFolderLongTerm({ - name, - title: groupTitle, - list, - all, -}) { - const title = formatCohortTitle(groupTitle); - return { - name: name || "all", - tree: [ - ...createGroupedHoldingsSectionWithRelative({ list, all, title }), - createGroupedValuationSectionWithOwnMarketCap({ list, all, title }), - createGroupedPricesSectionFull({ list, all, title }), - createGroupedCostBasisSectionWithPercentiles({ list, all, title }), - createGroupedProfitabilitySectionLongTerm({ list, all, title }), - createGroupedActivitySection({ list, all, title }), - ], - }; -} - /** * @param {CohortGroupAgeRange} args * @returns {PartialOptionsGroup} @@ -564,29 +512,6 @@ export function createGroupedCohortFolderAddress({ }; } -/** - * @param {CohortGroupWithoutRelative} args - * @returns {PartialOptionsGroup} - */ -export function createGroupedCohortFolderWithoutRelative({ - name, - title: groupTitle, - list, - all, -}) { - const title = formatCohortTitle(groupTitle); - return { - name: name || "all", - tree: [ - ...createGroupedHoldingsSectionWithProfitLoss({ list, all, title }), - createGroupedValuationSection({ list, all, title }), - createGroupedPricesSection({ list, all, title }), - createGroupedProfitabilitySectionWithProfitLoss({ list, all, title }), - createGroupedActivitySectionMinimal({ list, all, title }), - ], - }; -} - /** * @param {AddrCohortGroupObject} args * @returns {PartialOptionsGroup} diff --git a/website/scripts/options/distribution/profitability.js b/website/scripts/options/distribution/profitability.js index f2d565ee3..9074d04ab 100644 --- a/website/scripts/options/distribution/profitability.js +++ b/website/scripts/options/distribution/profitability.js @@ -26,7 +26,6 @@ import { colors } from "../../utils/colors.js"; import { priceLine } from "../constants.js"; import { mapCohortsWithAll, - flatMapCohorts, flatMapCohortsWithAll, groupedWindowsCumulativeUsd, } from "../shared.js"; @@ -35,14 +34,6 @@ import { // Core Series Builders // ============================================================================ -/** - * @param {AnySeriesPattern} s - * @param {Unit} unit - * @returns {AnyFetchedSeriesBlueprint} - */ -function netBaseline(s, unit) { - return baseline({ series: s, name: "Net", unit }); -} // ============================================================================ // Unrealized P&L Builders @@ -110,18 +101,18 @@ function relPnlChart(profit, loss, name, title) { } /** - * Shared unrealized base items - * @param {AllRelativePattern | FullRelativePattern} u + * Core unrealized items: Overview + Net + NUPL + Profit + Loss + * @param {{ profit: { usd: AnySeriesPattern }, loss: { usd: AnySeriesPattern, negative: AnySeriesPattern }, netPnl: { usd: AnySeriesPattern }, nupl: NuplPattern }} u * @param {(name: string) => string} title * @returns {PartialOptionsTree} */ -function unrealizedBase(u, title) { +function unrealizedCore(u, title) { return [ unrealizedOverview(u.profit, u.loss, u.netPnl.usd, title), { name: "Net", title: title("Net Unrealized P&L"), - bottom: [netBaseline(u.netPnl.usd, Unit.usd)], + bottom: [baseline({ series: u.netPnl.usd, name: "Net", unit: Unit.usd })], }, { name: "NUPL", title: title("NUPL"), bottom: nuplSeries(u.nupl) }, { @@ -148,35 +139,42 @@ function unrealizedBase(u, title) { }), ], }, - { - name: "% of Own P&L", - title: title("Unrealized P&L (% of Own P&L)"), - bottom: [ - ...percentRatioBaseline({ - pattern: u.netPnl.toOwnGrossPnl, - name: "Net", - }), - ...percentRatio({ - pattern: u.profit.toOwnGrossPnl, - name: "Profit", - color: colors.profit, - defaultActive: false, - }), - ...percentRatio({ - pattern: u.loss.toOwnGrossPnl, - name: "Loss", - color: colors.loss, - defaultActive: false, - }), - ], - }, ]; } +/** + * % of Own P&L chart + * @param {AllRelativePattern | FullRelativePattern} u + * @param {(name: string) => string} title + * @returns {PartialChartOption} + */ +function ownPnlChart(u, title) { + return { + name: "% of Own P&L", + title: title("Unrealized P&L (% of Own P&L)"), + bottom: [ + ...percentRatioBaseline({ pattern: u.netPnl.toOwnGrossPnl, name: "Net" }), + ...percentRatio({ + pattern: u.profit.toOwnGrossPnl, + name: "Profit", + color: colors.profit, + defaultActive: false, + }), + ...percentRatio({ + pattern: u.loss.toOwnGrossPnl, + name: "Loss", + color: colors.loss, + defaultActive: false, + }), + ], + }; +} + /** @param {AllRelativePattern} u @param {(name: string) => string} title */ function unrealizedTreeAll(u, title) { return [ - ...unrealizedBase(u, title), + ...unrealizedCore(u, title), + ownPnlChart(u, title), relPnlChart(u.profit.toMcap, u.loss.toMcap, "% of Market Cap", title), ]; } @@ -184,7 +182,8 @@ function unrealizedTreeAll(u, title) { /** @param {FullRelativePattern} u @param {(name: string) => string} title */ function unrealizedTreeFull(u, title) { return [ - ...unrealizedBase(u, title), + ...unrealizedCore(u, title), + ownPnlChart(u, title), relPnlChart(u.profit.toMcap, u.loss.toMcap, "% of Market Cap", title), relPnlChart( u.profit.toOwnMcap, @@ -198,7 +197,8 @@ function unrealizedTreeFull(u, title) { /** @param {FullRelativePattern} u @param {(name: string) => string} title */ function unrealizedTreeLongTerm(u, title) { return [ - ...unrealizedBase(u, title), + ...unrealizedCore(u, title), + ownPnlChart(u, title), { name: "% of Market Cap", title: title("Unrealized Loss (% of Market Cap)"), @@ -217,48 +217,6 @@ function unrealizedTreeLongTerm(u, title) { ]; } -/** - * Unrealized tree for mid-tier cohorts (AgeRange/MaxAge — profit/loss/net, no relative) - * @param {BasicRelativePattern} u - * @param {(name: string) => string} title - * @returns {PartialOptionsTree} - */ -function unrealizedTreeMid(u, title) { - return [ - unrealizedOverview(u.profit, u.loss, u.netPnl.usd, title), - { - name: "Net", - title: title("Net Unrealized P&L"), - bottom: [netBaseline(u.netPnl.usd, Unit.usd)], - }, - { name: "NUPL", title: title("NUPL"), bottom: nuplSeries(u.nupl) }, - { - name: "Profit", - title: title("Unrealized Profit"), - bottom: [ - line({ - series: u.profit.usd, - name: "Profit", - color: colors.profit, - unit: Unit.usd, - }), - ], - }, - { - name: "Loss", - title: title("Unrealized Loss"), - bottom: [ - line({ - series: u.loss.usd, - name: "Loss", - color: colors.loss, - unit: Unit.usd, - }), - ], - }, - ]; -} - // ============================================================================ // Invested Capital, Sentiment, NUPL // ============================================================================ @@ -401,11 +359,21 @@ function realizedNetFolder({ netPnl, title, extraChange = [] }) { }), ], }, - { ...sumsTreeBaseline({ windows: mapWindows(netPnl.delta.absolute, (c) => c.usd), title: title("Net Realized P&L Change"), unit: Unit.usd }), name: "Change" }, + { + ...sumsTreeBaseline({ + windows: mapWindows(netPnl.delta.absolute, (c) => c.usd), + title: title("Net Realized P&L Change"), + unit: Unit.usd, + }), + name: "Change", + }, { name: "Growth Rate", tree: [ - ...rollingPercentRatioTree({ windows: netPnl.delta.rate, title: title("Net Realized P&L Rate") }).tree, + ...rollingPercentRatioTree({ + windows: netPnl.delta.rate, + title: title("Net Realized P&L Rate"), + }).tree, ...extraChange, ], }, @@ -885,7 +853,7 @@ export function createProfitabilitySectionWithInvestedCapitalPct({ return { name: "Profitability", tree: [ - { name: "Unrealized", tree: unrealizedTreeMid(u, title) }, + { name: "Unrealized", tree: unrealizedCore(u, title) }, realizedSubfolderMid(r, title), ], }; @@ -981,10 +949,26 @@ function groupedRealizedSubfolder(list, all, title) { return { name: "Realized", tree: [ - { name: "Profit", tree: groupedWindowsCumulativeUsd({ list, all, title, metricTitle: "Realized Profit", - getMetric: (c) => c.tree.realized.profit }) }, - { name: "Loss", tree: groupedWindowsCumulativeUsd({ list, all, title, metricTitle: "Realized Loss", - getMetric: (c) => c.tree.realized.loss }) }, + { + name: "Profit", + tree: groupedWindowsCumulativeUsd({ + list, + all, + title, + metricTitle: "Realized Profit", + getMetric: (c) => c.tree.realized.profit, + }), + }, + { + name: "Loss", + tree: groupedWindowsCumulativeUsd({ + list, + all, + title, + metricTitle: "Realized Loss", + getMetric: (c) => c.tree.realized.loss, + }), + }, ], }; } @@ -1004,7 +988,12 @@ function groupedRealizedNetPnlDeltaItems(list, all, title) { name: w.name, title: title(`Net Realized P&L Change (${w.title})`), bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => - baseline({ series: tree.realized.netPnl.delta.absolute[w.key].usd, name, color, unit: Unit.usd }), + baseline({ + series: tree.realized.netPnl.delta.absolute[w.key].usd, + name, + color, + unit: Unit.usd, + }), ), })), }, @@ -1014,7 +1003,11 @@ function groupedRealizedNetPnlDeltaItems(list, all, title) { name: w.name, title: title(`Net Realized P&L Rate (${w.title})`), bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => - percentRatioBaseline({ pattern: tree.realized.netPnl.delta.rate[w.key], name, color }), + percentRatioBaseline({ + pattern: tree.realized.netPnl.delta.rate[w.key], + name, + color, + }), ), })), }, @@ -1212,116 +1205,6 @@ function groupedUnrealizedWithMarketCap(list, all, title) { ]; } -/** - * Grouped unrealized for LongTerm: Net → NUPL → Profit → Loss → Relative(Own P&L, Market Cap, Own Mcap) - * @param {readonly CohortLongTerm[]} list - * @param {CohortAll} all - * @param {(name: string) => string} title - * @returns {PartialOptionsTree} - */ -function groupedUnrealizedLongTerm(list, all, title) { - return [ - ...groupedUnrealizedMid(list, all, title), - { - name: "Relative", - tree: [ - { - name: "Own P&L", - tree: [ - { - name: "Net", - title: title("Net Unrealized P&L (% of Own P&L)"), - bottom: flatMapCohortsWithAll( - list, - all, - ({ name, color, tree }) => - percentRatioBaseline({ - pattern: tree.unrealized.netPnl.toOwnGrossPnl, - name, - color, - }), - ), - }, - { - name: "Profit", - title: title("Unrealized Profit (% of Own P&L)"), - bottom: flatMapCohortsWithAll( - list, - all, - ({ name, color, tree }) => - percentRatio({ - pattern: tree.unrealized.profit.toOwnGrossPnl, - name, - color, - }), - ), - }, - { - name: "Loss", - title: title("Unrealized Loss (% of Own P&L)"), - bottom: flatMapCohortsWithAll( - list, - all, - ({ name, color, tree }) => - percentRatio({ - pattern: tree.unrealized.loss.toOwnGrossPnl, - name, - color, - }), - ), - }, - ], - }, - { - name: "Market Cap", - title: title("Unrealized Loss (% of Market Cap)"), - bottom: flatMapCohortsWithAll(list, all, ({ name, color, tree }) => - percentRatio({ pattern: tree.unrealized.loss.toMcap, name, color }), - ), - }, - { - name: "Own Market Cap", - tree: [ - { - name: "Net", - title: title("Net Unrealized P&L (% of Own Market Cap)"), - bottom: flatMapCohorts(list, ({ name, color, tree }) => - percentRatioBaseline({ - pattern: tree.unrealized.netPnl.toOwnMcap, - name, - color, - }), - ), - }, - { - name: "Profit", - title: title("Unrealized Profit (% of Own Market Cap)"), - bottom: flatMapCohorts(list, ({ name, color, tree }) => - percentRatio({ - pattern: tree.unrealized.profit.toOwnMcap, - name, - color, - }), - ), - }, - { - name: "Loss", - title: title("Unrealized Loss (% of Own Market Cap)"), - bottom: flatMapCohorts(list, ({ name, color, tree }) => - percentRatio({ - pattern: tree.unrealized.loss.toOwnMcap, - name, - color, - }), - ), - }, - ], - }, - ], - }, - ]; -} - /** * Grouped sentiment (full unrealized only) * @param {readonly (CohortAll | CohortFull | CohortLongTerm)[]} list @@ -1501,23 +1384,3 @@ export function createGroupedProfitabilitySectionWithNupl({ ], }; } - -/** - * Grouped section for LongTerm cohorts - * @param {{ list: readonly CohortLongTerm[], all: CohortAll, title: (name: string) => string }} args - * @returns {PartialOptionsGroup} - */ -export function createGroupedProfitabilitySectionLongTerm({ - list, - all, - title, -}) { - return { - name: "Profitability", - tree: [ - { name: "Unrealized", tree: groupedUnrealizedLongTerm(list, all, title) }, - groupedRealizedSubfolderFull(list, all, title), - groupedSentiment(list, all, title), - ], - }; -} diff --git a/website/scripts/types.js b/website/scripts/types.js index 135916685..c0185e6ca 100644 --- a/website/scripts/types.js +++ b/website/scripts/types.js @@ -67,24 +67,15 @@ * @typedef {Brk.AnySeriesEndpoint} AnySeriesEndpoint * @typedef {Brk.AnySeriesData} AnySeriesData * Relative patterns by capability: - * - BasicRelativePattern: minimal relative (investedCapitalIn*Pct, supplyIn*RelToOwnSupply only) - * - GlobalRelativePattern: has RelToMarketCap series (netUnrealizedPnlRelToMarketCap, etc) - * - OwnRelativePattern: has RelToOwnMarketCap series (netUnrealizedPnlRelToOwnMarketCap, etc) - * - FullRelativePattern: has BOTH RelToMarketCap AND RelToOwnMarketCap + * Unrealized patterns by capability level * @typedef {Brk.LossNetNuplProfitPattern} BasicRelativePattern - * @typedef {Brk.LossNetNuplProfitPattern} GlobalRelativePattern - * @typedef {Brk.GrossInvestedInvestorLossNetNuplProfitSentimentPattern2} OwnRelativePattern * @typedef {Brk.GrossInvestedInvestorLossNetNuplProfitSentimentPattern2} FullRelativePattern - * @typedef {Brk.GrossInvestedInvestorLossNetNuplProfitSentimentPattern2} UnrealizedPattern * * Profitability bucket pattern (supply + realized_cap + nupl) * @typedef {Brk.NuplRealizedSupplyPattern} RealizedSupplyPattern * - * Realized patterns + * Realized pattern (full: cap + gross + investor + loss + mvrv + net + peak + price + profit + sell + sopr) * @typedef {Brk.CapGrossInvestorLossMvrvNetPeakPriceProfitSellSoprPattern} RealizedPattern - * @typedef {Brk.CapGrossInvestorLossMvrvNetPeakPriceProfitSellSoprPattern} RealizedPattern2 - * @typedef {Brk.CapGrossInvestorLossMvrvNetPeakPriceProfitSellSoprPattern} RealizedPattern3 - * @typedef {Brk.CapGrossInvestorLossMvrvNetPeakPriceProfitSellSoprPattern} RealizedPattern4 * * Transfer volume pattern (block + cumulative + inProfit/inLoss + sum windows) * @typedef {Brk.AverageBlockCumulativeInSumPattern} TransferVolumePattern @@ -103,7 +94,7 @@ * @typedef {Brk.SeriesTree_Cohorts_Utxo_Lth_Realized} LthRealizedPattern * * Net PnL pattern with change (base + change + cumulative + delta + rel + sum) - * @typedef {Brk.BlockChangeCumulativeDeltaSumToPattern} NetPnlFullPattern + * @typedef {Brk.BlockChangeCumulativeDeltaSumPattern} NetPnlFullPattern * * Net PnL basic pattern (base + cumulative + delta + sum) * @typedef {Brk.BlockCumulativeDeltaSumPattern} NetPnlBasicPattern @@ -135,13 +126,9 @@ * @typedef {Brk._1m1w1y24hPattern7} SellSideRiskPattern */ /** - * Stats pattern: average, min, max, percentiles (height-only indexes, NO base) + * Stats pattern: min, max, median, percentiles * @typedef {Brk.MaxMedianMinPct10Pct25Pct75Pct90Pattern} StatsPattern */ -/** - * Base stats pattern: average, min, max, percentiles - * @typedef {Brk.MaxMedianMinPct10Pct25Pct75Pct90Pattern} BaseStatsPattern - */ /** * Full stats pattern: cumulative, sum, average, min, max, percentiles + rolling * @typedef {Brk.AverageBlockCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern} FullStatsPattern @@ -150,14 +137,6 @@ * Aggregated pattern: cumulative + rolling (with distribution stats) + sum (no base) * @typedef {Brk.CumulativeRollingSumPattern} AggregatedPattern */ -/** - * Sum stats pattern: cumulative, sum, average, min, max, percentiles + rolling (same as FullStatsPattern) - * @typedef {Brk.AverageBlockCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern} SumStatsPattern - */ -/** - * Full stats pattern for Bitcoin (non-generic variant) - same as FullStatsPattern - * @typedef {Brk.AverageBlockCumulativeMaxMedianMinPct10Pct25Pct75Pct90SumPattern} BtcFullStatsPattern - */ /** * Count pattern: height, cumulative, and rolling sum windows * @template T @@ -170,8 +149,8 @@ * @typedef {Omit} FullPerBlockPattern */ /** - * Any stats pattern union - patterns with sum/cumulative + percentiles - * @typedef {FullStatsPattern | BtcFullStatsPattern} AnyStatsPattern + * Any stats pattern union + * @typedef {FullStatsPattern} AnyStatsPattern */ /** * Distribution stats: min, max, median, pct10/25/75/90 @@ -190,8 +169,7 @@ * @typedef {Brk.SeriesTree_Market_MovingAverage} MarketMovingAverage * @typedef {Brk.SeriesTree_Market_Dca} MarketDca * @typedef {Brk._10y2y3y4y5y6y8yPattern} PeriodCagrPattern - * Full stats pattern union (both generic and non-generic variants) - * @typedef {FullStatsPattern | BtcFullStatsPattern} AnyFullStatsPattern + * @typedef {FullStatsPattern} AnyFullStatsPattern * * DCA period keys - derived from pattern types * @typedef {keyof Brk._10y2y3y4y5y6y8yPattern} LongPeriodKey @@ -204,18 +182,14 @@ * @typedef {UtxoCohortPattern | AddrCohortPattern} CohortPattern * * Relative pattern capability types - * @typedef {GlobalRelativePattern | FullRelativePattern | AllRelativePattern} RelativeWithMarketCap - * @typedef {OwnRelativePattern | FullRelativePattern} RelativeWithOwnMarketCap - * @typedef {OwnRelativePattern | FullRelativePattern | AllRelativePattern} RelativeWithOwnPnl - * @typedef {GlobalRelativePattern | FullRelativePattern | AllRelativePattern} RelativeWithNupl - * @typedef {BasicRelativePattern | GlobalRelativePattern | OwnRelativePattern | FullRelativePattern | AllRelativePattern} RelativeWithInvestedCapitalPct + * @typedef {BasicRelativePattern | FullRelativePattern | AllRelativePattern} RelativeWithMarketCap + * @typedef {FullRelativePattern | AllRelativePattern} RelativeWithOwnMarketCap + * @typedef {FullRelativePattern | AllRelativePattern} RelativeWithOwnPnl + * @typedef {BasicRelativePattern | FullRelativePattern | AllRelativePattern} RelativeWithNupl + * @typedef {BasicRelativePattern | FullRelativePattern | AllRelativePattern} RelativeWithInvestedCapitalPct * * Realized pattern capability types - * RealizedWithExtras: patterns with realizedCapRelToOwnMarketCap + realizedProfitToLossRatio - * @typedef {RealizedPattern2 | RealizedPattern3} RealizedWithExtras - * - * Any realized pattern (all have sellSideRiskRatio, valueCreated, valueDestroyed, etc.) - * @typedef {RealizedPattern | RealizedPattern2 | RealizedPattern3 | RealizedPattern4} AnyRealizedPattern + * @typedef {RealizedPattern} AnyRealizedPattern * * Capability-based pattern groupings (patterns that have specific properties) * @typedef {AllUtxoPattern | AgeRangePattern | UtxoAmountPattern} PatternWithRealizedPrice