diff --git a/crates/brk_client/src/lib.rs b/crates/brk_client/src/lib.rs index 0d5c9bb18..138ae7b99 100644 --- a/crates/brk_client/src/lib.rs +++ b/crates/brk_client/src/lib.rs @@ -1074,12 +1074,12 @@ pub struct CapGrossInvestorLossMvrvNetPeakPriceProfitSellSoprPattern { pub cap: CentsDeltaToUsdPattern, pub gross_pnl: BlockCumulativeSumPattern, pub investor: PricePattern, - pub loss: BlockCumulativeNegativeSumToPattern, + pub loss: BlockCumulativeNegativeSumPattern, pub mvrv: SeriesPattern1, - pub net_pnl: BlockChangeCumulativeDeltaSumToPattern, - pub peak_regret: BlockCumulativeSumToPattern, + pub net_pnl: BlockChangeCumulativeDeltaSumPattern, + pub peak_regret: BlockCumulativeSumPattern, pub price: BpsCentsPercentilesRatioSatsSmaStdUsdPattern, - pub profit: BlockCumulativeSumToPattern, + pub profit: BlockCumulativeSumPattern, pub profit_to_loss_ratio: _1m1w1y24hPattern, pub sell_side_risk_ratio: _1m1w1y24hPattern7, pub sopr: AdjustedRatioValuePattern, @@ -1314,21 +1314,6 @@ 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(), acc.clone()), - 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, @@ -1464,30 +1449,6 @@ impl AverageBlockCumulativeInSumPattern { } } -/// Pattern struct for repeated tree structure. -pub struct BlockChangeCumulativeDeltaSumToPattern { - pub block: CentsUsdPattern4, - pub change_1m: ToPattern, - pub cumulative: CentsUsdPattern, - pub delta: AbsoluteRatePattern2, - pub sum: _1m1w1y24hPattern5, - pub to_rcap: BpsPercentRatioPattern, -} - -impl BlockChangeCumulativeDeltaSumToPattern { - /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - block: CentsUsdPattern4::new(client.clone(), _m(&acc, "realized_pnl")), - change_1m: ToPattern::new(client.clone(), _m(&acc, "pnl_change_1m_to")), - cumulative: CentsUsdPattern::new(client.clone(), _m(&acc, "realized_pnl_cumulative")), - delta: AbsoluteRatePattern2::new(client.clone(), _m(&acc, "realized_pnl_delta")), - sum: _1m1w1y24hPattern5::new(client.clone(), _m(&acc, "realized_pnl_sum")), - to_rcap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "realized_pnl_to_rcap")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct BpsCentsPercentilesRatioSatsUsdPattern { pub bps: SeriesPattern1, @@ -1663,19 +1624,6 @@ 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, @@ -1721,12 +1669,25 @@ impl ActivityOutputsRealizedSupplyUnrealizedPattern2 { } /// Pattern struct for repeated tree structure. -pub struct BlockCumulativeNegativeSumToPattern { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub negative: BaseSumPattern, - pub sum: _1m1w1y24hPattern6, - pub to_rcap: BpsPercentRatioPattern4, +pub struct BlockChangeCumulativeDeltaSumPattern { + pub block: CentsUsdPattern4, + pub change_1m: ToPattern, + pub cumulative: CentsUsdPattern, + pub delta: AbsoluteRatePattern2, + pub sum: _1m1w1y24hPattern5, +} + +impl BlockChangeCumulativeDeltaSumPattern { + /// Create a new pattern node with accumulated series name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + block: CentsUsdPattern4::new(client.clone(), _m(&acc, "realized_pnl")), + change_1m: ToPattern::new(client.clone(), _m(&acc, "pnl_change_1m_to")), + cumulative: CentsUsdPattern::new(client.clone(), _m(&acc, "realized_pnl_cumulative")), + delta: AbsoluteRatePattern2::new(client.clone(), _m(&acc, "realized_pnl_delta")), + sum: _1m1w1y24hPattern5::new(client.clone(), _m(&acc, "realized_pnl_sum")), + } + } } /// Pattern struct for repeated tree structure. @@ -2110,38 +2071,6 @@ 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(), _m(&acc, "realized_loss")), - cumulative: CentsUsdPattern3::new(client.clone(), _m(&acc, "realized_loss_cumulative")), - negative: BaseSumPattern::new(client.clone(), _m(&acc, "neg_realized_loss")), - sum: _1m1w1y24hPattern6::new(client.clone(), _m(&acc, "realized_loss_sum")), - } - } -} - -/// Pattern struct for repeated tree structure. -pub struct BlockCumulativeSumToPattern { - pub block: CentsUsdPattern2, - pub cumulative: CentsUsdPattern3, - pub sum: _1m1w1y24hPattern6, - pub to_rcap: BpsPercentRatioPattern4, -} - -impl BlockCumulativeSumToPattern { - /// 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")), - sum: _1m1w1y24hPattern6::new(client.clone(), _m(&acc, "sum")), - to_rcap: BpsPercentRatioPattern4::new(client.clone(), _m(&acc, "to_rcap")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct BlockCumulativeDeltaSumPattern { pub block: CentsUsdPattern4, @@ -6458,15 +6387,15 @@ impl SeriesTree_Cohorts_Utxo_All_Activity { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_All_Realized { pub cap: CentsDeltaToUsdPattern, - pub profit: BlockCumulativeSumToPattern, + pub profit: BlockCumulativeSumPattern, pub loss: SeriesTree_Cohorts_Utxo_All_Realized_Loss, pub price: SeriesTree_Cohorts_Utxo_All_Realized_Price, pub mvrv: SeriesPattern1, - pub net_pnl: BlockChangeCumulativeDeltaSumToPattern, + pub net_pnl: BlockChangeCumulativeDeltaSumPattern, pub sopr: SeriesTree_Cohorts_Utxo_All_Realized_Sopr, pub gross_pnl: BlockCumulativeSumPattern, pub sell_side_risk_ratio: _1m1w1y24hPattern7, - pub peak_regret: BlockCumulativeSumToPattern, + pub peak_regret: BlockCumulativeSumPattern, pub investor: PricePattern, pub profit_to_loss_ratio: _1m1w1y24hPattern, } @@ -6475,15 +6404,15 @@ impl SeriesTree_Cohorts_Utxo_All_Realized { pub fn new(client: Arc, base_path: String) -> Self { Self { cap: CentsDeltaToUsdPattern::new(client.clone(), "realized_cap".to_string()), - profit: BlockCumulativeSumToPattern::new(client.clone(), "realized_profit".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")), price: SeriesTree_Cohorts_Utxo_All_Realized_Price::new(client.clone(), format!("{base_path}_price")), mvrv: SeriesPattern1::new(client.clone(), "mvrv".to_string()), - net_pnl: BlockChangeCumulativeDeltaSumToPattern::new(client.clone(), "net".to_string()), + net_pnl: BlockChangeCumulativeDeltaSumPattern::new(client.clone(), "net".to_string()), sopr: SeriesTree_Cohorts_Utxo_All_Realized_Sopr::new(client.clone(), format!("{base_path}_sopr")), gross_pnl: BlockCumulativeSumPattern::new(client.clone(), "realized_gross_pnl".to_string()), sell_side_risk_ratio: _1m1w1y24hPattern7::new(client.clone(), "sell_side_risk_ratio".to_string()), - peak_regret: BlockCumulativeSumToPattern::new(client.clone(), "realized_peak_regret".to_string()), + peak_regret: BlockCumulativeSumPattern::new(client.clone(), "realized_peak_regret".to_string()), investor: PricePattern::new(client.clone(), "investor_price".to_string()), profit_to_loss_ratio: _1m1w1y24hPattern::new(client.clone(), "realized_profit_to_loss_ratio".to_string()), } @@ -6496,7 +6425,6 @@ pub struct SeriesTree_Cohorts_Utxo_All_Realized_Loss { pub cumulative: CentsUsdPattern3, pub sum: _1m1w1y24hPattern6, pub negative: BaseSumPattern, - pub to_rcap: BpsPercentRatioPattern4, } impl SeriesTree_Cohorts_Utxo_All_Realized_Loss { @@ -6506,7 +6434,6 @@ impl SeriesTree_Cohorts_Utxo_All_Realized_Loss { 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()), - to_rcap: BpsPercentRatioPattern4::new(client.clone(), "realized_loss_to_rcap".to_string()), } } } @@ -6928,15 +6855,15 @@ impl SeriesTree_Cohorts_Utxo_Sth_Activity { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Sth_Realized { pub cap: CentsDeltaToUsdPattern, - pub profit: BlockCumulativeSumToPattern, + pub profit: BlockCumulativeSumPattern, pub loss: SeriesTree_Cohorts_Utxo_Sth_Realized_Loss, pub price: SeriesTree_Cohorts_Utxo_Sth_Realized_Price, pub mvrv: SeriesPattern1, - pub net_pnl: BlockChangeCumulativeDeltaSumToPattern, + pub net_pnl: BlockChangeCumulativeDeltaSumPattern, pub sopr: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr, pub gross_pnl: BlockCumulativeSumPattern, pub sell_side_risk_ratio: _1m1w1y24hPattern7, - pub peak_regret: BlockCumulativeSumToPattern, + pub peak_regret: BlockCumulativeSumPattern, pub investor: PricePattern, pub profit_to_loss_ratio: _1m1w1y24hPattern, } @@ -6945,15 +6872,15 @@ impl SeriesTree_Cohorts_Utxo_Sth_Realized { pub fn new(client: Arc, base_path: String) -> Self { Self { cap: CentsDeltaToUsdPattern::new(client.clone(), "sth_realized_cap".to_string()), - profit: BlockCumulativeSumToPattern::new(client.clone(), "sth_realized_profit".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")), 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: BlockChangeCumulativeDeltaSumToPattern::new(client.clone(), "sth_net".to_string()), + net_pnl: BlockChangeCumulativeDeltaSumPattern::new(client.clone(), "sth_net".to_string()), sopr: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr::new(client.clone(), format!("{base_path}_sopr")), gross_pnl: BlockCumulativeSumPattern::new(client.clone(), "sth_realized_gross_pnl".to_string()), sell_side_risk_ratio: _1m1w1y24hPattern7::new(client.clone(), "sth_sell_side_risk_ratio".to_string()), - peak_regret: BlockCumulativeSumToPattern::new(client.clone(), "sth_realized_peak_regret".to_string()), + peak_regret: BlockCumulativeSumPattern::new(client.clone(), "sth_realized_peak_regret".to_string()), investor: PricePattern::new(client.clone(), "sth_investor_price".to_string()), profit_to_loss_ratio: _1m1w1y24hPattern::new(client.clone(), "sth_realized_profit_to_loss_ratio".to_string()), } @@ -6966,7 +6893,6 @@ pub struct SeriesTree_Cohorts_Utxo_Sth_Realized_Loss { pub cumulative: CentsUsdPattern3, pub sum: _1m1w1y24hPattern6, pub negative: BaseSumPattern, - pub to_rcap: BpsPercentRatioPattern4, } impl SeriesTree_Cohorts_Utxo_Sth_Realized_Loss { @@ -6976,7 +6902,6 @@ impl SeriesTree_Cohorts_Utxo_Sth_Realized_Loss { 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()), - to_rcap: BpsPercentRatioPattern4::new(client.clone(), "sth_realized_loss_to_rcap".to_string()), } } } @@ -7341,15 +7266,15 @@ impl SeriesTree_Cohorts_Utxo_Lth_Activity { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Lth_Realized { pub cap: CentsDeltaToUsdPattern, - pub profit: BlockCumulativeSumToPattern, + pub profit: BlockCumulativeSumPattern, pub loss: SeriesTree_Cohorts_Utxo_Lth_Realized_Loss, pub price: SeriesTree_Cohorts_Utxo_Lth_Realized_Price, pub mvrv: SeriesPattern1, - pub net_pnl: BlockChangeCumulativeDeltaSumToPattern, + pub net_pnl: BlockChangeCumulativeDeltaSumPattern, pub sopr: SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr, pub gross_pnl: BlockCumulativeSumPattern, pub sell_side_risk_ratio: _1m1w1y24hPattern7, - pub peak_regret: BlockCumulativeSumToPattern, + pub peak_regret: BlockCumulativeSumPattern, pub investor: PricePattern, pub profit_to_loss_ratio: _1m1w1y24hPattern, } @@ -7358,15 +7283,15 @@ impl SeriesTree_Cohorts_Utxo_Lth_Realized { pub fn new(client: Arc, base_path: String) -> Self { Self { cap: CentsDeltaToUsdPattern::new(client.clone(), "lth_realized_cap".to_string()), - profit: BlockCumulativeSumToPattern::new(client.clone(), "lth_realized_profit".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")), 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: BlockChangeCumulativeDeltaSumToPattern::new(client.clone(), "lth_net".to_string()), + net_pnl: BlockChangeCumulativeDeltaSumPattern::new(client.clone(), "lth_net".to_string()), sopr: SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr::new(client.clone(), format!("{base_path}_sopr")), gross_pnl: BlockCumulativeSumPattern::new(client.clone(), "lth_realized_gross_pnl".to_string()), sell_side_risk_ratio: _1m1w1y24hPattern7::new(client.clone(), "lth_sell_side_risk_ratio".to_string()), - peak_regret: BlockCumulativeSumToPattern::new(client.clone(), "lth_realized_peak_regret".to_string()), + peak_regret: BlockCumulativeSumPattern::new(client.clone(), "lth_realized_peak_regret".to_string()), investor: PricePattern::new(client.clone(), "lth_investor_price".to_string()), profit_to_loss_ratio: _1m1w1y24hPattern::new(client.clone(), "lth_realized_profit_to_loss_ratio".to_string()), } @@ -7379,7 +7304,6 @@ pub struct SeriesTree_Cohorts_Utxo_Lth_Realized_Loss { pub cumulative: CentsUsdPattern3, pub sum: _1m1w1y24hPattern6, pub negative: BaseSumPattern, - pub to_rcap: BpsPercentRatioPattern4, } impl SeriesTree_Cohorts_Utxo_Lth_Realized_Loss { @@ -7389,7 +7313,6 @@ impl SeriesTree_Cohorts_Utxo_Lth_Realized_Loss { 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()), - to_rcap: BpsPercentRatioPattern4::new(client.clone(), "lth_realized_loss_to_rcap".to_string()), } } } @@ -7692,215 +7615,5415 @@ impl SeriesTree_Cohorts_Utxo_Lth_Unrealized_Sentiment { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_AgeRange { - 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, + 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, } impl SeriesTree_Cohorts_Utxo_AgeRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - 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()), + 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()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_UnderAge { - 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, + 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, } impl SeriesTree_Cohorts_Utxo_UnderAge { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_OverAge { - 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, + 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, } impl SeriesTree_Cohorts_Utxo_OverAge { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Epoch { - pub _0: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _1: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _2: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _3: ActivityOutputsRealizedSupplyUnrealizedPattern, - pub _4: ActivityOutputsRealizedSupplyUnrealizedPattern, + 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, } impl SeriesTree_Cohorts_Utxo_Epoch { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Class { - 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, + 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, } impl SeriesTree_Cohorts_Utxo_Class { pub fn new(client: Arc, base_path: String) -> Self { Self { - _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()), + _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()), } } } diff --git a/crates/brk_computer/src/distribution/metrics/realized/full.rs b/crates/brk_computer/src/distribution/metrics/realized/full.rs index d6782fe11..e8197d947 100644 --- a/crates/brk_computer/src/distribution/metrics/realized/full.rs +++ b/crates/brk_computer/src/distribution/metrics/realized/full.rs @@ -24,19 +24,8 @@ use crate::distribution::metrics::ImportConfig; use super::RealizedCore; -#[derive(Traversable)] -pub struct RealizedProfitFull { - pub to_rcap: PercentPerBlock, -} - -#[derive(Traversable)] -pub struct RealizedLossFull { - pub to_rcap: PercentPerBlock, -} - #[derive(Traversable)] pub struct RealizedNetPnl { - pub to_rcap: PercentPerBlock, #[traversable(wrap = "change_1m", rename = "to_rcap")] pub change_1m_to_rcap: PercentPerBlock, #[traversable(wrap = "change_1m", rename = "to_mcap")] @@ -53,7 +42,6 @@ pub struct RealizedSopr { pub struct RealizedPeakRegret { #[traversable(flatten)] pub value: FiatPerBlockCumulativeWithSums, - pub to_rcap: PercentPerBlock, } #[derive(Traversable)] @@ -70,8 +58,6 @@ pub struct RealizedFull { #[traversable(flatten)] pub core: RealizedCore, - pub profit: RealizedProfitFull, - pub loss: RealizedLossFull, pub gross_pnl: FiatPerBlockCumulativeWithSums, pub sell_side_risk_ratio: PercentRollingWindows, pub net_pnl: RealizedNetPnl, @@ -101,13 +87,6 @@ impl RealizedFull { let core = RealizedCore::forced_import(cfg)?; - let profit = RealizedProfitFull { - to_rcap: cfg.import("realized_profit_to_rcap", Version::new(2))?, - }; - let loss = RealizedLossFull { - to_rcap: cfg.import("realized_loss_to_rcap", Version::new(2))?, - }; - // Gross PnL let gross_pnl: FiatPerBlockCumulativeWithSums = cfg.import("realized_gross_pnl", v1)?; @@ -115,7 +94,6 @@ impl RealizedFull { // Net PnL let net_pnl = RealizedNetPnl { - to_rcap: cfg.import("net_realized_pnl_to_rcap", Version::new(2))?, change_1m_to_rcap: cfg.import("net_pnl_change_1m_to_rcap", Version::new(4))?, change_1m_to_mcap: cfg.import("net_pnl_change_1m_to_mcap", Version::new(4))?, }; @@ -128,7 +106,6 @@ impl RealizedFull { // Peak regret let peak_regret = RealizedPeakRegret { value: cfg.import("realized_peak_regret", Version::new(3))?, - to_rcap: cfg.import("realized_peak_regret_to_rcap", Version::new(2))?, }; // Investor @@ -143,8 +120,6 @@ impl RealizedFull { Ok(Self { core, - profit, - loss, gross_pnl, sell_side_risk_ratio, net_pnl, @@ -298,32 +273,6 @@ impl RealizedFull { )?; } - // Profit/loss/net_pnl rel to realized cap - self.profit - .to_rcap - .compute_binary::( - starting_indexes.height, - &self.core.minimal.profit.block.cents, - &self.core.minimal.cap.cents.height, - exit, - )?; - self.loss - .to_rcap - .compute_binary::( - starting_indexes.height, - &self.core.minimal.loss.block.cents, - &self.core.minimal.cap.cents.height, - exit, - )?; - self.net_pnl - .to_rcap - .compute_binary::( - starting_indexes.height, - &self.core.net_pnl.block.cents, - &self.core.minimal.cap.cents.height, - exit, - )?; - // Gross PnL self.gross_pnl.block.cents.compute_add( starting_indexes.height, @@ -351,16 +300,6 @@ impl RealizedFull { exit, )?; - // Peak regret rel to rcap - self.peak_regret - .to_rcap - .compute_binary::( - starting_indexes.height, - &self.peak_regret.value.block.cents, - &self.core.minimal.cap.cents.height, - exit, - )?; - // Investor price ratio, percentiles and bands self.investor .price diff --git a/modules/brk-client/index.js b/modules/brk-client/index.js index 7862b70c0..8f7318be4 100644 --- a/modules/brk-client/index.js +++ b/modules/brk-client/index.js @@ -1788,12 +1788,12 @@ function create_10y1m1w1y2y3m3y4y5y6m6y8yPattern3(client, acc) { * @property {CentsDeltaToUsdPattern} cap * @property {BlockCumulativeSumPattern} grossPnl * @property {PricePattern} investor - * @property {BlockCumulativeNegativeSumToPattern} loss + * @property {BlockCumulativeNegativeSumPattern} loss * @property {SeriesPattern1} mvrv - * @property {BlockChangeCumulativeDeltaSumToPattern} netPnl - * @property {BlockCumulativeSumToPattern} peakRegret + * @property {BlockChangeCumulativeDeltaSumPattern} netPnl + * @property {BlockCumulativeSumPattern} peakRegret * @property {BpsCentsPercentilesRatioSatsSmaStdUsdPattern} price - * @property {BlockCumulativeSumToPattern} profit + * @property {BlockCumulativeSumPattern} profit * @property {_1m1w1y24hPattern} profitToLossRatio * @property {_1m1w1y24hPattern7} sellSideRiskRatio * @property {AdjustedRatioValuePattern} sopr @@ -2048,24 +2048,6 @@ 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, acc), - 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 @@ -2218,33 +2200,6 @@ function createAverageBlockCumulativeInSumPattern(client, acc) { }; } -/** - * @typedef {Object} BlockChangeCumulativeDeltaSumToPattern - * @property {CentsUsdPattern4} block - * @property {ToPattern} change1m - * @property {CentsUsdPattern} cumulative - * @property {AbsoluteRatePattern2} delta - * @property {_1m1w1y24hPattern5} sum - * @property {BpsPercentRatioPattern} toRcap - */ - -/** - * Create a BlockChangeCumulativeDeltaSumToPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {BlockChangeCumulativeDeltaSumToPattern} - */ -function createBlockChangeCumulativeDeltaSumToPattern(client, acc) { - return { - block: createCentsUsdPattern4(client, _m(acc, 'realized_pnl')), - change1m: createToPattern(client, _m(acc, 'pnl_change_1m_to')), - cumulative: createCentsUsdPattern(client, _m(acc, 'realized_pnl_cumulative')), - delta: createAbsoluteRatePattern2(client, _m(acc, 'realized_pnl_delta')), - sum: create_1m1w1y24hPattern5(client, _m(acc, 'realized_pnl_sum')), - toRcap: createBpsPercentRatioPattern(client, _m(acc, 'realized_pnl_to_rcap')), - }; -} - /** * @typedef {Object} BpsCentsPercentilesRatioSatsUsdPattern * @property {SeriesPattern1} bps @@ -2441,22 +2396,6 @@ 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 @@ -2508,14 +2447,30 @@ function createActivityOutputsRealizedSupplyUnrealizedPattern2(client, acc) { } /** - * @typedef {Object} BlockCumulativeNegativeSumToPattern - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {BaseSumPattern} negative - * @property {_1m1w1y24hPattern6} sum - * @property {BpsPercentRatioPattern4} toRcap + * @typedef {Object} BlockChangeCumulativeDeltaSumPattern + * @property {CentsUsdPattern4} block + * @property {ToPattern} change1m + * @property {CentsUsdPattern} cumulative + * @property {AbsoluteRatePattern2} delta + * @property {_1m1w1y24hPattern5} sum */ +/** + * Create a BlockChangeCumulativeDeltaSumPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated series name + * @returns {BlockChangeCumulativeDeltaSumPattern} + */ +function createBlockChangeCumulativeDeltaSumPattern(client, acc) { + return { + block: createCentsUsdPattern4(client, _m(acc, 'realized_pnl')), + change1m: createToPattern(client, _m(acc, 'pnl_change_1m_to')), + cumulative: createCentsUsdPattern(client, _m(acc, 'realized_pnl_cumulative')), + delta: createAbsoluteRatePattern2(client, _m(acc, 'realized_pnl_delta')), + sum: create_1m1w1y24hPattern5(client, _m(acc, 'realized_pnl_sum')), + }; +} + /** * @typedef {Object} BpsCentsRatioSatsUsdPattern * @property {SeriesPattern1} bps @@ -2948,44 +2903,6 @@ 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, _m(acc, 'realized_loss')), - cumulative: createCentsUsdPattern3(client, _m(acc, 'realized_loss_cumulative')), - negative: createBaseSumPattern(client, _m(acc, 'neg_realized_loss')), - sum: create_1m1w1y24hPattern6(client, _m(acc, 'realized_loss_sum')), - }; -} - -/** - * @typedef {Object} BlockCumulativeSumToPattern - * @property {CentsUsdPattern2} block - * @property {CentsUsdPattern3} cumulative - * @property {_1m1w1y24hPattern6} sum - * @property {BpsPercentRatioPattern4} toRcap - */ - -/** - * Create a BlockCumulativeSumToPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {BlockCumulativeSumToPattern} - */ -function createBlockCumulativeSumToPattern(client, acc) { - return { - block: createCentsUsdPattern2(client, acc), - cumulative: createCentsUsdPattern3(client, _m(acc, 'cumulative')), - sum: create_1m1w1y24hPattern6(client, _m(acc, 'sum')), - toRcap: createBpsPercentRatioPattern4(client, _m(acc, 'to_rcap')), - }; -} - /** * @typedef {Object} BlockCumulativeDeltaSumPattern * @property {CentsUsdPattern4} block @@ -5534,15 +5451,15 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_All_Realized * @property {CentsDeltaToUsdPattern} cap - * @property {BlockCumulativeSumToPattern} profit + * @property {BlockCumulativeSumPattern} profit * @property {SeriesTree_Cohorts_Utxo_All_Realized_Loss} loss * @property {SeriesTree_Cohorts_Utxo_All_Realized_Price} price * @property {SeriesPattern1} mvrv - * @property {BlockChangeCumulativeDeltaSumToPattern} netPnl + * @property {BlockChangeCumulativeDeltaSumPattern} netPnl * @property {SeriesTree_Cohorts_Utxo_All_Realized_Sopr} sopr * @property {BlockCumulativeSumPattern} grossPnl * @property {_1m1w1y24hPattern7} sellSideRiskRatio - * @property {BlockCumulativeSumToPattern} peakRegret + * @property {BlockCumulativeSumPattern} peakRegret * @property {PricePattern} investor * @property {_1m1w1y24hPattern} profitToLossRatio */ @@ -5553,7 +5470,6 @@ function createUnspentPattern(client, acc) { * @property {CentsUsdPattern3} cumulative * @property {_1m1w1y24hPattern6} sum * @property {BaseSumPattern} negative - * @property {BpsPercentRatioPattern4} toRcap */ /** @@ -5742,15 +5658,15 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Sth_Realized * @property {CentsDeltaToUsdPattern} cap - * @property {BlockCumulativeSumToPattern} profit + * @property {BlockCumulativeSumPattern} profit * @property {SeriesTree_Cohorts_Utxo_Sth_Realized_Loss} loss * @property {SeriesTree_Cohorts_Utxo_Sth_Realized_Price} price * @property {SeriesPattern1} mvrv - * @property {BlockChangeCumulativeDeltaSumToPattern} netPnl + * @property {BlockChangeCumulativeDeltaSumPattern} netPnl * @property {SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr} sopr * @property {BlockCumulativeSumPattern} grossPnl * @property {_1m1w1y24hPattern7} sellSideRiskRatio - * @property {BlockCumulativeSumToPattern} peakRegret + * @property {BlockCumulativeSumPattern} peakRegret * @property {PricePattern} investor * @property {_1m1w1y24hPattern} profitToLossRatio */ @@ -5761,7 +5677,6 @@ function createUnspentPattern(client, acc) { * @property {CentsUsdPattern3} cumulative * @property {_1m1w1y24hPattern6} sum * @property {BaseSumPattern} negative - * @property {BpsPercentRatioPattern4} toRcap */ /** @@ -5926,15 +5841,15 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Lth_Realized * @property {CentsDeltaToUsdPattern} cap - * @property {BlockCumulativeSumToPattern} profit + * @property {BlockCumulativeSumPattern} profit * @property {SeriesTree_Cohorts_Utxo_Lth_Realized_Loss} loss * @property {SeriesTree_Cohorts_Utxo_Lth_Realized_Price} price * @property {SeriesPattern1} mvrv - * @property {BlockChangeCumulativeDeltaSumToPattern} netPnl + * @property {BlockChangeCumulativeDeltaSumPattern} netPnl * @property {SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr} sopr * @property {BlockCumulativeSumPattern} grossPnl * @property {_1m1w1y24hPattern7} sellSideRiskRatio - * @property {BlockCumulativeSumToPattern} peakRegret + * @property {BlockCumulativeSumPattern} peakRegret * @property {PricePattern} investor * @property {_1m1w1y24hPattern} profitToLossRatio */ @@ -5945,7 +5860,6 @@ function createUnspentPattern(client, acc) { * @property {CentsUsdPattern3} cumulative * @property {_1m1w1y24hPattern6} sum * @property {BaseSumPattern} negative - * @property {BpsPercentRatioPattern4} toRcap */ /** @@ -6083,102 +5997,2342 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_AgeRange - * @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 + * @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 */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAge - * @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 + * @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 */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAge - * @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 + * @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 */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Epoch - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _0 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _1 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _2 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _3 - * @property {ActivityOutputsRealizedSupplyUnrealizedPattern} _4 + * @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 */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Class - * @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 + * @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 */ /** @@ -8626,13 +10780,12 @@ class BrkClient extends BrkClientBase { }, realized: { cap: createCentsDeltaToUsdPattern(this, 'realized_cap'), - profit: createBlockCumulativeSumToPattern(this, 'realized_profit'), + 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'), - toRcap: createBpsPercentRatioPattern4(this, 'realized_loss_to_rcap'), }, price: { usd: createSeriesPattern1(this, 'realized_price'), @@ -8714,7 +10867,7 @@ class BrkClient extends BrkClientBase { }, }, mvrv: createSeriesPattern1(this, 'mvrv'), - netPnl: createBlockChangeCumulativeDeltaSumToPattern(this, 'net'), + netPnl: createBlockChangeCumulativeDeltaSumPattern(this, 'net'), sopr: { valueDestroyed: createAverageBlockCumulativeSumPattern(this, 'value_destroyed'), ratio: create_1m1w1y24hPattern(this, 'sopr'), @@ -8726,7 +10879,7 @@ class BrkClient extends BrkClientBase { }, grossPnl: createBlockCumulativeSumPattern(this, 'realized_gross_pnl'), sellSideRiskRatio: create_1m1w1y24hPattern7(this, 'sell_side_risk_ratio'), - peakRegret: createBlockCumulativeSumToPattern(this, 'realized_peak_regret'), + peakRegret: createBlockCumulativeSumPattern(this, 'realized_peak_regret'), investor: createPricePattern(this, 'investor_price'), profitToLossRatio: create_1m1w1y24hPattern(this, 'realized_profit_to_loss_ratio'), }, @@ -8781,13 +10934,12 @@ class BrkClient extends BrkClientBase { }, realized: { cap: createCentsDeltaToUsdPattern(this, 'sth_realized_cap'), - profit: createBlockCumulativeSumToPattern(this, 'sth_realized_profit'), + 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'), - toRcap: createBpsPercentRatioPattern4(this, 'sth_realized_loss_to_rcap'), }, price: { usd: createSeriesPattern1(this, 'sth_realized_price'), @@ -8869,7 +11021,7 @@ class BrkClient extends BrkClientBase { }, }, mvrv: createSeriesPattern1(this, 'sth_mvrv'), - netPnl: createBlockChangeCumulativeDeltaSumToPattern(this, 'sth_net'), + netPnl: createBlockChangeCumulativeDeltaSumPattern(this, 'sth_net'), sopr: { valueDestroyed: createAverageBlockCumulativeSumPattern(this, 'sth_value_destroyed'), ratio: create_1m1w1y24hPattern(this, 'sth_sopr'), @@ -8881,7 +11033,7 @@ class BrkClient extends BrkClientBase { }, grossPnl: createBlockCumulativeSumPattern(this, 'sth_realized_gross_pnl'), sellSideRiskRatio: create_1m1w1y24hPattern7(this, 'sth_sell_side_risk_ratio'), - peakRegret: createBlockCumulativeSumToPattern(this, 'sth_realized_peak_regret'), + peakRegret: createBlockCumulativeSumPattern(this, 'sth_realized_peak_regret'), investor: createPricePattern(this, 'sth_investor_price'), profitToLossRatio: create_1m1w1y24hPattern(this, 'sth_realized_profit_to_loss_ratio'), }, @@ -8921,13 +11073,12 @@ class BrkClient extends BrkClientBase { }, realized: { cap: createCentsDeltaToUsdPattern(this, 'lth_realized_cap'), - profit: createBlockCumulativeSumToPattern(this, 'lth_realized_profit'), + 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'), - toRcap: createBpsPercentRatioPattern4(this, 'lth_realized_loss_to_rcap'), }, price: { usd: createSeriesPattern1(this, 'lth_realized_price'), @@ -9009,14 +11160,14 @@ class BrkClient extends BrkClientBase { }, }, mvrv: createSeriesPattern1(this, 'lth_mvrv'), - netPnl: createBlockChangeCumulativeDeltaSumToPattern(this, 'lth_net'), + netPnl: createBlockChangeCumulativeDeltaSumPattern(this, 'lth_net'), sopr: { valueDestroyed: createAverageBlockCumulativeSumPattern(this, 'lth_value_destroyed'), ratio: create_1m1w1y24hPattern(this, 'lth_sopr'), }, grossPnl: createBlockCumulativeSumPattern(this, 'lth_realized_gross_pnl'), sellSideRiskRatio: create_1m1w1y24hPattern7(this, 'lth_sell_side_risk_ratio'), - peakRegret: createBlockCumulativeSumToPattern(this, 'lth_realized_peak_regret'), + peakRegret: createBlockCumulativeSumPattern(this, 'lth_realized_peak_regret'), investor: createPricePattern(this, 'lth_investor_price'), profitToLossRatio: create_1m1w1y24hPattern(this, 'lth_realized_profit_to_loss_ratio'), }, @@ -9046,94 +11197,1614 @@ class BrkClient extends BrkClientBase { }, }, ageRange: { - 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'), + 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'), + }, }, underAge: { - _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'), + _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'), + }, }, overAge: { - _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'), + _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'), + }, }, epoch: { - _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'), + _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'), + }, }, class: { - _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'), + _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'), + }, }, 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 709e61b86..a6465e6a5 100644 --- a/packages/brk_client/brk_client/__init__.py +++ b/packages/brk_client/brk_client/__init__.py @@ -2328,16 +2328,7 @@ class _1m1w1y24hBpsPercentRatioPattern: class CapLossMvrvNetPriceProfitSoprPattern: """Pattern struct for repeated tree structure.""" - - 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, acc) - 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) + pass class InMaxMinPerSupplyPattern: """Pattern struct for repeated tree structure.""" @@ -2405,18 +2396,6 @@ class AverageBlockCumulativeInSumPattern: self.in_profit: AverageBlockCumulativeSumPattern3 = AverageBlockCumulativeSumPattern3(client, _m(acc, 'in_profit')) self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, _m(acc, 'sum')) -class BlockChangeCumulativeDeltaSumToPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.block: CentsUsdPattern4 = CentsUsdPattern4(client, _m(acc, 'realized_pnl')) - self.change_1m: ToPattern = ToPattern(client, _m(acc, 'pnl_change_1m_to')) - self.cumulative: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'realized_pnl_cumulative')) - self.delta: AbsoluteRatePattern2 = AbsoluteRatePattern2(client, _m(acc, 'realized_pnl_delta')) - self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, _m(acc, 'realized_pnl_sum')) - self.to_rcap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'realized_pnl_to_rcap')) - class BpsCentsPercentilesRatioSatsUsdPattern: """Pattern struct for repeated tree structure.""" @@ -2502,14 +2481,7 @@ class _1m1w1y24hBlockPattern: class ActivityOutputsRealizedSupplyUnrealizedPattern: """Pattern struct for repeated tree structure.""" - - 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) + pass class ActivityOutputsRealizedSupplyUnrealizedPattern3: """Pattern struct for repeated tree structure.""" @@ -2533,9 +2505,16 @@ class ActivityOutputsRealizedSupplyUnrealizedPattern2: self.supply: DeltaHalfTotalPattern = DeltaHalfTotalPattern(client, _m(acc, 'supply')) self.unrealized: NuplPattern = NuplPattern(client, _m(acc, 'nupl')) -class BlockCumulativeNegativeSumToPattern: +class BlockChangeCumulativeDeltaSumPattern: """Pattern struct for repeated tree structure.""" - pass + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated series name.""" + self.block: CentsUsdPattern4 = CentsUsdPattern4(client, _m(acc, 'realized_pnl')) + self.change_1m: ToPattern = ToPattern(client, _m(acc, 'pnl_change_1m_to')) + self.cumulative: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'realized_pnl_cumulative')) + self.delta: AbsoluteRatePattern2 = AbsoluteRatePattern2(client, _m(acc, 'realized_pnl_delta')) + self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, _m(acc, 'realized_pnl_sum')) class BpsCentsRatioSatsUsdPattern: """Pattern struct for repeated tree structure.""" @@ -2725,23 +2704,7 @@ class AverageBlockCumulativeSumPattern3: class BlockCumulativeNegativeSumPattern: """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.block: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, 'realized_loss')) - self.cumulative: CentsUsdPattern3 = CentsUsdPattern3(client, _m(acc, 'realized_loss_cumulative')) - self.negative: BaseSumPattern = BaseSumPattern(client, _m(acc, 'neg_realized_loss')) - self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, _m(acc, 'realized_loss_sum')) - -class BlockCumulativeSumToPattern: - """Pattern struct for repeated tree structure.""" - - 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.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, _m(acc, 'sum')) - self.to_rcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, _m(acc, 'to_rcap')) + pass class BlockCumulativeDeltaSumPattern: """Pattern struct for repeated tree structure.""" @@ -4779,7 +4742,6 @@ class SeriesTree_Cohorts_Utxo_All_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') - self.to_rcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, 'realized_loss_to_rcap') class SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_All: """Series tree node.""" @@ -4904,15 +4866,15 @@ class SeriesTree_Cohorts_Utxo_All_Realized: def __init__(self, client: BrkClientBase, base_path: str = ''): self.cap: CentsDeltaToUsdPattern = CentsDeltaToUsdPattern(client, 'realized_cap') - self.profit: BlockCumulativeSumToPattern = BlockCumulativeSumToPattern(client, 'realized_profit') + self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'realized_profit') self.loss: SeriesTree_Cohorts_Utxo_All_Realized_Loss = SeriesTree_Cohorts_Utxo_All_Realized_Loss(client) 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: BlockChangeCumulativeDeltaSumToPattern = BlockChangeCumulativeDeltaSumToPattern(client, 'net') + self.net_pnl: BlockChangeCumulativeDeltaSumPattern = BlockChangeCumulativeDeltaSumPattern(client, 'net') self.sopr: SeriesTree_Cohorts_Utxo_All_Realized_Sopr = SeriesTree_Cohorts_Utxo_All_Realized_Sopr(client) self.gross_pnl: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'realized_gross_pnl') self.sell_side_risk_ratio: _1m1w1y24hPattern7 = _1m1w1y24hPattern7(client, 'sell_side_risk_ratio') - self.peak_regret: BlockCumulativeSumToPattern = BlockCumulativeSumToPattern(client, 'realized_peak_regret') + self.peak_regret: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'realized_peak_regret') self.investor: PricePattern = PricePattern(client, 'investor_price') self.profit_to_loss_ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'realized_profit_to_loss_ratio') @@ -5005,7 +4967,6 @@ class SeriesTree_Cohorts_Utxo_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') - self.to_rcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, 'sth_realized_loss_to_rcap') class SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_All: """Series tree node.""" @@ -5130,15 +5091,15 @@ class SeriesTree_Cohorts_Utxo_Sth_Realized: def __init__(self, client: BrkClientBase, base_path: str = ''): self.cap: CentsDeltaToUsdPattern = CentsDeltaToUsdPattern(client, 'sth_realized_cap') - self.profit: BlockCumulativeSumToPattern = BlockCumulativeSumToPattern(client, 'sth_realized_profit') + self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'sth_realized_profit') self.loss: SeriesTree_Cohorts_Utxo_Sth_Realized_Loss = SeriesTree_Cohorts_Utxo_Sth_Realized_Loss(client) 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: BlockChangeCumulativeDeltaSumToPattern = BlockChangeCumulativeDeltaSumToPattern(client, 'sth_net') + self.net_pnl: BlockChangeCumulativeDeltaSumPattern = BlockChangeCumulativeDeltaSumPattern(client, 'sth_net') self.sopr: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr = SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr(client) self.gross_pnl: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'sth_realized_gross_pnl') self.sell_side_risk_ratio: _1m1w1y24hPattern7 = _1m1w1y24hPattern7(client, 'sth_sell_side_risk_ratio') - self.peak_regret: BlockCumulativeSumToPattern = BlockCumulativeSumToPattern(client, 'sth_realized_peak_regret') + self.peak_regret: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'sth_realized_peak_regret') self.investor: PricePattern = PricePattern(client, 'sth_investor_price') self.profit_to_loss_ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'sth_realized_profit_to_loss_ratio') @@ -5204,7 +5165,6 @@ class SeriesTree_Cohorts_Utxo_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') - self.to_rcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, 'lth_realized_loss_to_rcap') class SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_All: """Series tree node.""" @@ -5320,15 +5280,15 @@ class SeriesTree_Cohorts_Utxo_Lth_Realized: def __init__(self, client: BrkClientBase, base_path: str = ''): self.cap: CentsDeltaToUsdPattern = CentsDeltaToUsdPattern(client, 'lth_realized_cap') - self.profit: BlockCumulativeSumToPattern = BlockCumulativeSumToPattern(client, 'lth_realized_profit') + self.profit: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'lth_realized_profit') self.loss: SeriesTree_Cohorts_Utxo_Lth_Realized_Loss = SeriesTree_Cohorts_Utxo_Lth_Realized_Loss(client) 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: BlockChangeCumulativeDeltaSumToPattern = BlockChangeCumulativeDeltaSumToPattern(client, 'lth_net') + self.net_pnl: BlockChangeCumulativeDeltaSumPattern = BlockChangeCumulativeDeltaSumPattern(client, 'lth_net') self.sopr: SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr = SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr(client) self.gross_pnl: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'lth_realized_gross_pnl') self.sell_side_risk_ratio: _1m1w1y24hPattern7 = _1m1w1y24hPattern7(client, 'lth_sell_side_risk_ratio') - self.peak_regret: BlockCumulativeSumToPattern = BlockCumulativeSumToPattern(client, 'lth_realized_peak_regret') + self.peak_regret: BlockCumulativeSumPattern = BlockCumulativeSumPattern(client, 'lth_realized_peak_regret') self.investor: PricePattern = PricePattern(client, 'lth_investor_price') self.profit_to_loss_ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'lth_realized_profit_to_loss_ratio') @@ -5377,110 +5337,2590 @@ 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: 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') + 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') class SeriesTree_Cohorts_Utxo_UnderAge: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - 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') + 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') class SeriesTree_Cohorts_Utxo_OverAge: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - 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') + 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') class SeriesTree_Cohorts_Utxo_Epoch: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - 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') + 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') class SeriesTree_Cohorts_Utxo_Class: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - 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') + 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) class SeriesTree_Cohorts_Utxo_OverAmount: """Series tree node.""" diff --git a/website/scripts/options/distribution/profitability.js b/website/scripts/options/distribution/profitability.js index efb32771e..f2d565ee3 100644 --- a/website/scripts/options/distribution/profitability.js +++ b/website/scripts/options/distribution/profitability.js @@ -41,7 +41,7 @@ import { * @returns {AnyFetchedSeriesBlueprint} */ function netBaseline(s, unit) { - return baseline({ series: s, name: "Net P&L", unit }); + return baseline({ series: s, name: "Net", unit }); } // ============================================================================ @@ -61,7 +61,7 @@ function unrealizedOverview(profit, loss, netPnlUsd, title) { name: "Overview", title: title("Unrealized P&L"), bottom: [ - baseline({ series: netPnlUsd, name: "Net P&L", unit: Unit.usd }), + baseline({ series: netPnlUsd, name: "Net", unit: Unit.usd }), dotted({ series: profit.usd, name: "Profit", @@ -119,7 +119,7 @@ function unrealizedBase(u, title) { return [ unrealizedOverview(u.profit, u.loss, u.netPnl.usd, title), { - name: "Net P&L", + name: "Net", title: title("Net Unrealized P&L"), bottom: [netBaseline(u.netPnl.usd, Unit.usd)], }, @@ -227,7 +227,7 @@ function unrealizedTreeMid(u, title) { return [ unrealizedOverview(u.profit, u.loss, u.netPnl.usd, title), { - name: "Net P&L", + name: "Net", title: title("Net Unrealized P&L"), bottom: [netBaseline(u.netPnl.usd, Unit.usd)], }, @@ -312,10 +312,9 @@ function nuplSeries(nupl) { * @param {string} args.metricTitle * @param {Color} args.color * @param {(name: string) => string} args.title - * @param {{ percent: AnySeriesPattern, ratio: AnySeriesPattern }} [args.toRcap] * @returns {PartialOptionsTree} */ -function realizedMetricFolder({ pattern, metricTitle, color, title, toRcap }) { +function realizedMetricFolder({ pattern, metricTitle, color, title }) { return [ { name: "Compare", @@ -353,19 +352,6 @@ function realizedMetricFolder({ pattern, metricTitle, color, title, toRcap }) { }), ], }, - ...(toRcap - ? [ - { - name: "% of Realized Cap", - title: title(`Realized ${metricTitle} (% of Realized Cap)`), - bottom: percentRatioBaseline({ - pattern: toRcap, - name: metricTitle, - color, - }), - }, - ] - : []), ]; } @@ -374,13 +360,12 @@ function realizedMetricFolder({ pattern, metricTitle, color, title, toRcap }) { * @param {Object} args * @param {NetPnlFullPattern | NetPnlBasicPattern} args.netPnl * @param {(name: string) => string} args.title - * @param {{ percent: AnySeriesPattern, ratio: AnySeriesPattern }} [args.toRcap] * @param {PartialOptionsTree} [args.extraChange] - Additional change items (% of Mcap, % of Rcap) * @returns {PartialOptionsGroup} */ -function realizedNetFolder({ netPnl, title, toRcap, extraChange = [] }) { +function realizedNetFolder({ netPnl, title, extraChange = [] }) { return { - name: "Net P&L", + name: "Net", tree: [ { name: "Compare", @@ -416,15 +401,6 @@ function realizedNetFolder({ netPnl, title, toRcap, extraChange = [] }) { }), ], }, - ...(toRcap - ? [ - { - name: "% of Realized Cap", - title: title("Net Realized P&L (% of Realized Cap)"), - bottom: percentRatioBaseline({ pattern: toRcap, name: "Net" }), - }, - ] - : []), { ...sumsTreeBaseline({ windows: mapWindows(netPnl.delta.absolute, (c) => c.usd), title: title("Net Realized P&L Change"), unit: Unit.usd }), name: "Change" }, { name: "Growth Rate", @@ -464,7 +440,7 @@ function realizedOverviewFolder({ bottom: [ baseline({ series: netPnl.sum[w.key].usd, - name: "Net P&L", + name: "Net", unit: Unit.usd, }), dotted({ @@ -491,7 +467,7 @@ function realizedOverviewFolder({ dotted({ series: grossPnl.sum[w.key].usd, name: "Gross", - color: colors.bitcoin, + color: colors.gross, unit: Unit.usd, defaultActive: false, }), @@ -502,7 +478,7 @@ function realizedOverviewFolder({ dotted({ series: peakRegret.sum[w.key].usd, name: "Peak Regret", - color: colors.default, + color: colors.regret, unit: Unit.usd, defaultActive: false, }), @@ -539,7 +515,6 @@ function realizedSubfolderFull(r, title) { realizedNetFolder({ netPnl: r.netPnl, title, - toRcap: r.netPnl.toRcap, extraChange: [ { name: "% of Market Cap", @@ -566,7 +541,6 @@ function realizedSubfolderFull(r, title) { metricTitle: "Profit", color: colors.profit, title, - toRcap: r.profit.toRcap, }), }, { @@ -576,15 +550,14 @@ function realizedSubfolderFull(r, title) { metricTitle: "Loss", color: colors.loss, title, - toRcap: r.loss.toRcap, }), }, { - name: "Gross P&L", + name: "Gross", tree: realizedMetricFolder({ pattern: r.grossPnl, metricTitle: "Gross P&L", - color: colors.bitcoin, + color: colors.gross, title, }), }, @@ -655,14 +628,6 @@ function realizedSubfolderFull(r, title) { }), ], }, - { - name: "% of Realized Cap", - title: title("Peak Regret (% of Realized Cap)"), - bottom: percentRatioBaseline({ - pattern: r.peakRegret.toRcap, - name: "Peak Regret", - }), - }, ], }, ], @@ -1102,7 +1067,7 @@ function groupedRealizedSubfolderFull(list, all, title) { }), }, { - name: "Gross P&L", + name: "Gross", tree: groupedWindowsCumulativeUsd({ list, all, @@ -1177,7 +1142,7 @@ function groupedNuplCharts(list, all, title) { function groupedUnrealizedMid(list, all, title) { return [ { - name: "Net P&L", + name: "Net", title: title("Net Unrealized P&L"), bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => baseline({ diff --git a/website/scripts/utils/colors.js b/website/scripts/utils/colors.js index 9c2376af0..06eeedf04 100644 --- a/website/scripts/utils/colors.js +++ b/website/scripts/utils/colors.js @@ -173,6 +173,10 @@ export const colors = { adjustedCreated: palette.lime, adjustedDestroyed: palette.pink, + // Realized P&L + gross: palette.yellow, + regret: palette.pink, + // Ratios plRatio: palette.yellow,