diff --git a/crates/brk_client/src/lib.rs b/crates/brk_client/src/lib.rs index f2e592114..28a64b756 100644 --- a/crates/brk_client/src/lib.rs +++ b/crates/brk_client/src/lib.rs @@ -1072,7 +1072,7 @@ impl _10y1m1w1y2y3m3y4y5y6m6y8yPattern3 { /// Pattern struct for repeated tree structure. pub struct CapGrossInvestorLossMvrvNetPeakPriceProfitSellSoprPattern { pub cap: CentsDeltaToUsdPattern, - pub gross_pnl: BaseCumulativeSumPattern3, + pub gross_pnl: BaseCumulativeSumPattern4, pub investor: PricePattern, pub loss: BaseCumulativeNegativeSumToPattern, pub mvrv: SeriesPattern1, @@ -1353,7 +1353,7 @@ pub struct CapLossMvrvNetPriceProfitSoprPattern { pub mvrv: SeriesPattern1, pub net_pnl: BaseCumulativeDeltaSumPattern, pub price: BpsCentsRatioSatsUsdPattern, - pub profit: BaseCumulativeSumPattern3, + pub profit: BaseCumulativeSumPattern4, pub sopr: RatioValuePattern, } @@ -1366,7 +1366,7 @@ impl CapLossMvrvNetPriceProfitSoprPattern { mvrv: SeriesPattern1::new(client.clone(), _m(&acc, "mvrv")), net_pnl: BaseCumulativeDeltaSumPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), price: BpsCentsRatioSatsUsdPattern::new(client.clone(), _m(&acc, "realized_price")), - profit: BaseCumulativeSumPattern3::new(client.clone(), _m(&acc, "realized_profit")), + profit: BaseCumulativeSumPattern4::new(client.clone(), _m(&acc, "realized_profit")), sopr: RatioValuePattern::new(client.clone(), acc.clone()), } } @@ -1407,13 +1407,37 @@ impl _1m1w1y2y4yAllPattern { } } +/// Pattern struct for repeated tree structure. +pub struct ActivityAddrOutputsRealizedSupplyUnrealizedPattern { + pub activity: TransferPattern, + pub addr_count: BaseDeltaPattern, + pub outputs: UnspentPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub supply: DeltaHalfTotalPattern, + pub unrealized: NuplPattern, +} + +impl ActivityAddrOutputsRealizedSupplyUnrealizedPattern { + /// Create a new pattern node with accumulated series name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + activity: TransferPattern::new(client.clone(), _m(&acc, "transfer_volume")), + addr_count: BaseDeltaPattern::new(client.clone(), _m(&acc, "addr_count")), + outputs: UnspentPattern::new(client.clone(), _m(&acc, "utxo_count")), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), acc.clone()), + supply: DeltaHalfTotalPattern::new(client.clone(), _m(&acc, "supply")), + unrealized: NuplPattern::new(client.clone(), _m(&acc, "nupl")), + } + } +} + /// Pattern struct for repeated tree structure. pub struct BaseChangeCumulativeDeltaSumToPattern { pub base: CentsUsdPattern, pub change_1m: ToPattern, pub cumulative: CentsUsdPattern, pub delta: AbsoluteRatePattern2, - pub sum: _1m1w1y24hPattern3, + pub sum: _1m1w1y24hPattern4, pub to_rcap: BpsPercentRatioPattern, } @@ -1425,7 +1449,7 @@ impl BaseChangeCumulativeDeltaSumToPattern { 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: _1m1w1y24hPattern3::new(client.clone(), _m(&acc, "realized_pnl_sum")), + sum: _1m1w1y24hPattern4::new(client.clone(), _m(&acc, "realized_pnl_sum")), to_rcap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "realized_pnl_to_rcap")), } } @@ -1479,30 +1503,6 @@ impl BtcCentsSatsToUsdPattern3 { } } -/// Pattern struct for repeated tree structure. -pub struct CapLossMvrvPriceProfitSoprPattern { - pub cap: CentsDeltaUsdPattern, - pub loss: BaseCumulativeSumPattern3, - pub mvrv: SeriesPattern1, - pub price: BpsCentsRatioSatsUsdPattern, - pub profit: BaseCumulativeSumPattern3, - pub sopr: ValuePattern, -} - -impl CapLossMvrvPriceProfitSoprPattern { - /// 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: BaseCumulativeSumPattern3::new(client.clone(), _m(&acc, "realized_loss")), - mvrv: SeriesPattern1::new(client.clone(), _m(&acc, "mvrv")), - price: BpsCentsRatioSatsUsdPattern::new(client.clone(), _m(&acc, "realized_price")), - profit: BaseCumulativeSumPattern3::new(client.clone(), _m(&acc, "realized_profit")), - sopr: ValuePattern::new(client.clone(), _m(&acc, "value")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct CentsNegativeToUsdPattern2 { pub cents: SeriesPattern1, @@ -1622,21 +1622,43 @@ impl ActivityOutputsRealizedSupplyUnrealizedPattern { } /// Pattern struct for repeated tree structure. -pub struct AddrOutputsRealizedSupplyUnrealizedPattern { - pub addr_count: BaseDeltaPattern, +pub struct ActivityOutputsRealizedSupplyUnrealizedPattern3 { + pub activity: TransferPattern, pub outputs: UnspentPattern, - pub realized: CapLossMvrvPriceProfitSoprPattern, + pub realized: CapLossMvrvPriceProfitPattern, + pub supply: DeltaHalfInTotalPattern2, + pub unrealized: LossNuplProfitPattern, +} + +impl ActivityOutputsRealizedSupplyUnrealizedPattern3 { + /// Create a new pattern node with accumulated series name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + activity: TransferPattern::new(client.clone(), _m(&acc, "transfer_volume")), + outputs: UnspentPattern::new(client.clone(), _m(&acc, "utxo_count")), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), acc.clone()), + supply: DeltaHalfInTotalPattern2::new(client.clone(), _m(&acc, "supply")), + unrealized: LossNuplProfitPattern::new(client.clone(), acc.clone()), + } + } +} + +/// Pattern struct for repeated tree structure. +pub struct ActivityOutputsRealizedSupplyUnrealizedPattern2 { + pub activity: TransferPattern, + pub outputs: UnspentPattern, + pub realized: CapLossMvrvPriceProfitPattern, pub supply: DeltaHalfTotalPattern, pub unrealized: NuplPattern, } -impl AddrOutputsRealizedSupplyUnrealizedPattern { +impl ActivityOutputsRealizedSupplyUnrealizedPattern2 { /// Create a new pattern node with accumulated series name. pub fn new(client: Arc, acc: String) -> Self { Self { - addr_count: BaseDeltaPattern::new(client.clone(), _m(&acc, "addr_count")), + activity: TransferPattern::new(client.clone(), _m(&acc, "transfer_volume")), outputs: UnspentPattern::new(client.clone(), _m(&acc, "utxo_count")), - realized: CapLossMvrvPriceProfitSoprPattern::new(client.clone(), acc.clone()), + realized: CapLossMvrvPriceProfitPattern::new(client.clone(), acc.clone()), supply: DeltaHalfTotalPattern::new(client.clone(), _m(&acc, "supply")), unrealized: NuplPattern::new(client.clone(), _m(&acc, "nupl")), } @@ -1647,9 +1669,9 @@ impl AddrOutputsRealizedSupplyUnrealizedPattern { pub struct BaseCumulativeInSumPattern { pub base: BtcCentsSatsUsdPattern, pub cumulative: BtcCentsSatsUsdPattern, - pub in_loss: BaseCumulativeSumPattern4, - pub in_profit: BaseCumulativeSumPattern4, - pub sum: _1m1w1y24hPattern5, + pub in_loss: BaseCumulativeSumPattern3, + pub in_profit: BaseCumulativeSumPattern3, + pub sum: _1m1w1y24hPattern3, } impl BaseCumulativeInSumPattern { @@ -1658,9 +1680,9 @@ impl BaseCumulativeInSumPattern { Self { base: BtcCentsSatsUsdPattern::new(client.clone(), acc.clone()), cumulative: BtcCentsSatsUsdPattern::new(client.clone(), _m(&acc, "cumulative")), - in_loss: BaseCumulativeSumPattern4::new(client.clone(), _m(&acc, "in_loss")), - in_profit: BaseCumulativeSumPattern4::new(client.clone(), _m(&acc, "in_profit")), - sum: _1m1w1y24hPattern5::new(client.clone(), _m(&acc, "sum")), + in_loss: BaseCumulativeSumPattern3::new(client.clone(), _m(&acc, "in_loss")), + in_profit: BaseCumulativeSumPattern3::new(client.clone(), _m(&acc, "in_profit")), + sum: _1m1w1y24hPattern3::new(client.clone(), _m(&acc, "sum")), } } } @@ -1670,7 +1692,7 @@ pub struct BaseCumulativeNegativeSumToPattern { pub base: CentsUsdPattern2, pub cumulative: CentsUsdPattern2, pub negative: BaseSumPattern, - pub sum: _1m1w1y24hPattern4, + pub sum: _1m1w1y24hPattern5, pub to_rcap: BpsPercentRatioPattern4, } @@ -1762,6 +1784,28 @@ impl BtcCentsSatsToUsdPattern2 { } } +/// Pattern struct for repeated tree structure. +pub struct CapLossMvrvPriceProfitPattern { + pub cap: CentsDeltaUsdPattern, + pub loss: BaseCumulativeSumPattern4, + pub mvrv: SeriesPattern1, + pub price: BpsCentsRatioSatsUsdPattern, + pub profit: BaseCumulativeSumPattern4, +} + +impl CapLossMvrvPriceProfitPattern { + /// 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: BaseCumulativeSumPattern4::new(client.clone(), _m(&acc, "realized_loss")), + mvrv: SeriesPattern1::new(client.clone(), _m(&acc, "mvrv")), + price: BpsCentsRatioSatsUsdPattern::new(client.clone(), _m(&acc, "realized_price")), + profit: BaseCumulativeSumPattern4::new(client.clone(), _m(&acc, "realized_profit")), + } + } +} + /// Pattern struct for repeated tree structure. pub struct CentsToUsdPattern4 { pub cents: SeriesPattern1, @@ -1909,14 +1953,14 @@ impl _1m1w1y24hPattern6 { } /// Pattern struct for repeated tree structure. -pub struct _1m1w1y24hPattern5 { +pub struct _1m1w1y24hPattern3 { pub _1m: BtcCentsSatsUsdPattern, pub _1w: BtcCentsSatsUsdPattern, pub _1y: BtcCentsSatsUsdPattern, pub _24h: BtcCentsSatsUsdPattern, } -impl _1m1w1y24hPattern5 { +impl _1m1w1y24hPattern3 { /// Create a new pattern node with accumulated series name. pub fn new(client: Arc, acc: String) -> Self { Self { @@ -1949,14 +1993,14 @@ impl _1m1w1y2wPattern { } /// Pattern struct for repeated tree structure. -pub struct _1m1w1y24hPattern3 { +pub struct _1m1w1y24hPattern4 { pub _1m: CentsUsdPattern, pub _1w: CentsUsdPattern, pub _1y: CentsUsdPattern, pub _24h: CentsUsdPattern, } -impl _1m1w1y24hPattern3 { +impl _1m1w1y24hPattern4 { /// Create a new pattern node with accumulated series name. pub fn new(client: Arc, acc: String) -> Self { Self { @@ -1969,14 +2013,14 @@ impl _1m1w1y24hPattern3 { } /// Pattern struct for repeated tree structure. -pub struct _1m1w1y24hPattern4 { +pub struct _1m1w1y24hPattern5 { pub _1m: CentsUsdPattern2, pub _1w: CentsUsdPattern2, pub _1y: CentsUsdPattern2, pub _24h: CentsUsdPattern2, } -impl _1m1w1y24hPattern4 { +impl _1m1w1y24hPattern5 { /// Create a new pattern node with accumulated series name. pub fn new(client: Arc, acc: String) -> Self { Self { @@ -1996,20 +2040,12 @@ pub struct _1y2y4yAllPattern { pub all: _0sdM0M1M1sdM2M2sdM3sdP0P1P1sdP2P2sdP3sdSdZscorePattern, } -/// Pattern struct for repeated tree structure. -pub struct AdjustedRatioValuePattern { - pub adjusted: RatioValuePattern2, - pub ratio: _1m1w1y24hPattern, - pub value_created: BaseCumulativeSumPattern, - pub value_destroyed: BaseCumulativeSumPattern, -} - /// Pattern struct for repeated tree structure. pub struct BaseCumulativeDeltaSumPattern { pub base: CentsUsdPattern, pub cumulative: CentsUsdPattern, pub delta: AbsoluteRatePattern2, - pub sum: _1m1w1y24hPattern3, + pub sum: _1m1w1y24hPattern4, } impl BaseCumulativeDeltaSumPattern { @@ -2019,7 +2055,7 @@ impl BaseCumulativeDeltaSumPattern { base: CentsUsdPattern::new(client.clone(), acc.clone()), cumulative: CentsUsdPattern::new(client.clone(), _m(&acc, "cumulative")), delta: AbsoluteRatePattern2::new(client.clone(), _m(&acc, "delta")), - sum: _1m1w1y24hPattern3::new(client.clone(), _m(&acc, "sum")), + sum: _1m1w1y24hPattern4::new(client.clone(), _m(&acc, "sum")), } } } @@ -2029,7 +2065,7 @@ pub struct BaseCumulativeNegativeSumPattern { pub base: CentsUsdPattern2, pub cumulative: CentsUsdPattern2, pub negative: BaseSumPattern, - pub sum: _1m1w1y24hPattern4, + pub sum: _1m1w1y24hPattern5, } impl BaseCumulativeNegativeSumPattern { @@ -2039,7 +2075,7 @@ impl BaseCumulativeNegativeSumPattern { base: CentsUsdPattern2::new(client.clone(), _m(&acc, "realized_loss")), cumulative: CentsUsdPattern2::new(client.clone(), _m(&acc, "realized_loss_cumulative")), negative: BaseSumPattern::new(client.clone(), _m(&acc, "neg_realized_loss")), - sum: _1m1w1y24hPattern4::new(client.clone(), _m(&acc, "realized_loss_sum")), + sum: _1m1w1y24hPattern5::new(client.clone(), _m(&acc, "realized_loss_sum")), } } } @@ -2048,7 +2084,7 @@ impl BaseCumulativeNegativeSumPattern { pub struct BaseCumulativeSumToPattern { pub base: CentsUsdPattern2, pub cumulative: CentsUsdPattern2, - pub sum: _1m1w1y24hPattern4, + pub sum: _1m1w1y24hPattern5, pub to_rcap: BpsPercentRatioPattern4, } @@ -2058,7 +2094,7 @@ impl BaseCumulativeSumToPattern { Self { base: CentsUsdPattern2::new(client.clone(), acc.clone()), cumulative: CentsUsdPattern2::new(client.clone(), _m(&acc, "cumulative")), - sum: _1m1w1y24hPattern4::new(client.clone(), _m(&acc, "sum")), + sum: _1m1w1y24hPattern5::new(client.clone(), _m(&acc, "sum")), to_rcap: BpsPercentRatioPattern4::new(client.clone(), _m(&acc, "to_rcap")), } } @@ -2148,7 +2184,7 @@ impl CentsToUsdPattern3 { pub struct CoindaysCoinyearsDormancyTransferPattern { pub coindays_destroyed: BaseCumulativeSumPattern, pub coinyears_destroyed: SeriesPattern1, - pub dormancy: SeriesPattern1, + pub dormancy: _1m1w1y24hPattern, pub transfer_volume: BaseCumulativeInSumPattern, } @@ -2172,46 +2208,6 @@ impl LossNetNuplProfitPattern { } } -/// Pattern struct for repeated tree structure. -pub struct OutputsRealizedSupplyUnrealizedPattern2 { - pub outputs: UnspentPattern, - pub realized: CapLossMvrvPriceProfitSoprPattern, - pub supply: DeltaHalfInTotalPattern2, - pub unrealized: LossNuplProfitPattern, -} - -impl OutputsRealizedSupplyUnrealizedPattern2 { - /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - outputs: UnspentPattern::new(client.clone(), _m(&acc, "utxo_count")), - realized: CapLossMvrvPriceProfitSoprPattern::new(client.clone(), acc.clone()), - supply: DeltaHalfInTotalPattern2::new(client.clone(), _m(&acc, "supply")), - unrealized: LossNuplProfitPattern::new(client.clone(), acc.clone()), - } - } -} - -/// Pattern struct for repeated tree structure. -pub struct OutputsRealizedSupplyUnrealizedPattern { - pub outputs: UnspentPattern, - pub realized: CapLossMvrvPriceProfitSoprPattern, - pub supply: DeltaHalfTotalPattern, - pub unrealized: NuplPattern, -} - -impl OutputsRealizedSupplyUnrealizedPattern { - /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - outputs: UnspentPattern::new(client.clone(), _m(&acc, "utxo_count")), - realized: CapLossMvrvPriceProfitSoprPattern::new(client.clone(), acc.clone()), - supply: DeltaHalfTotalPattern::new(client.clone(), _m(&acc, "supply")), - unrealized: NuplPattern::new(client.clone(), _m(&acc, "nupl")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct _1m1w1y24hPattern { pub _1m: SeriesPattern1, @@ -2233,37 +2229,44 @@ impl _1m1w1y24hPattern { } /// Pattern struct for repeated tree structure. -pub struct BaseCumulativeSumPattern4 { +pub struct AdjustedRatioValuePattern { + pub adjusted: RatioTransferValuePattern, + pub ratio: _1m1w1y24hPattern, + pub value_destroyed: BaseCumulativeSumPattern, +} + +/// Pattern struct for repeated tree structure. +pub struct BaseCumulativeSumPattern3 { pub base: BtcCentsSatsUsdPattern, pub cumulative: BtcCentsSatsUsdPattern, + pub sum: _1m1w1y24hPattern3, +} + +impl BaseCumulativeSumPattern3 { + /// Create a new pattern node with accumulated series name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + base: BtcCentsSatsUsdPattern::new(client.clone(), acc.clone()), + cumulative: BtcCentsSatsUsdPattern::new(client.clone(), _m(&acc, "cumulative")), + sum: _1m1w1y24hPattern3::new(client.clone(), _m(&acc, "sum")), + } + } +} + +/// Pattern struct for repeated tree structure. +pub struct BaseCumulativeSumPattern4 { + pub base: CentsUsdPattern2, + pub cumulative: CentsUsdPattern2, pub sum: _1m1w1y24hPattern5, } impl BaseCumulativeSumPattern4 { - /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - base: BtcCentsSatsUsdPattern::new(client.clone(), acc.clone()), - cumulative: BtcCentsSatsUsdPattern::new(client.clone(), _m(&acc, "cumulative")), - sum: _1m1w1y24hPattern5::new(client.clone(), _m(&acc, "sum")), - } - } -} - -/// Pattern struct for repeated tree structure. -pub struct BaseCumulativeSumPattern3 { - pub base: CentsUsdPattern2, - pub cumulative: CentsUsdPattern2, - pub sum: _1m1w1y24hPattern4, -} - -impl BaseCumulativeSumPattern3 { /// Create a new pattern node with accumulated series name. pub fn new(client: Arc, acc: String) -> Self { Self { base: CentsUsdPattern2::new(client.clone(), acc.clone()), cumulative: CentsUsdPattern2::new(client.clone(), _m(&acc, "cumulative")), - sum: _1m1w1y24hPattern4::new(client.clone(), _m(&acc, "sum")), + sum: _1m1w1y24hPattern5::new(client.clone(), _m(&acc, "sum")), } } } @@ -2290,7 +2293,7 @@ impl BaseCumulativeSumPattern2 { pub struct BlocksDominanceRewardsPattern { pub blocks_mined: BaseCumulativeSumPattern2, pub dominance: _1m1w1y24hBpsPercentRatioPattern, - pub rewards: BaseCumulativeSumPattern4, + pub rewards: BaseCumulativeSumPattern3, } impl BlocksDominanceRewardsPattern { @@ -2299,7 +2302,7 @@ impl BlocksDominanceRewardsPattern { Self { blocks_mined: BaseCumulativeSumPattern2::new(client.clone(), _m(&acc, "blocks_mined")), dominance: _1m1w1y24hBpsPercentRatioPattern::new(client.clone(), _m(&acc, "dominance")), - rewards: BaseCumulativeSumPattern4::new(client.clone(), _m(&acc, "rewards")), + rewards: BaseCumulativeSumPattern3::new(client.clone(), _m(&acc, "rewards")), } } } @@ -2546,30 +2549,12 @@ impl NuplRealizedSupplyPattern { } /// Pattern struct for repeated tree structure. -pub struct RatioValuePattern2 { +pub struct RatioTransferValuePattern { pub ratio: _1m1w1y24hPattern, - pub value_created: BaseCumulativeSumPattern, + pub transfer_volume: BaseCumulativeSumPattern, pub value_destroyed: BaseCumulativeSumPattern, } -/// Pattern struct for repeated tree structure. -pub struct RatioValuePattern { - pub ratio: _24hPattern, - pub value_created: BaseCumulativeSumPattern, - pub value_destroyed: BaseCumulativeSumPattern, -} - -impl RatioValuePattern { - /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - ratio: _24hPattern::new(client.clone(), _m(&acc, "sopr_24h")), - value_created: BaseCumulativeSumPattern::new(client.clone(), _m(&acc, "value_created")), - value_destroyed: BaseCumulativeSumPattern::new(client.clone(), _m(&acc, "value_destroyed")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct _6bBlockTxPattern { pub _6b: AverageMaxMedianMinPct10Pct25Pct75Pct90Pattern, @@ -2624,7 +2609,7 @@ impl AbsoluteRatePattern { /// Pattern struct for repeated tree structure. pub struct AbsoluteRatePattern2 { - pub absolute: _1m1w1y24hPattern3, + pub absolute: _1m1w1y24hPattern4, pub rate: _1m1w1y24hPattern2, } @@ -2632,7 +2617,7 @@ impl AbsoluteRatePattern2 { /// Create a new pattern node with accumulated series name. pub fn new(client: Arc, acc: String) -> Self { Self { - absolute: _1m1w1y24hPattern3::new(client.clone(), acc.clone()), + absolute: _1m1w1y24hPattern4::new(client.clone(), acc.clone()), rate: _1m1w1y24hPattern2::new(client.clone(), acc.clone()), } } @@ -2830,6 +2815,22 @@ impl PriceRatioPattern { } } +/// Pattern struct for repeated tree structure. +pub struct RatioValuePattern { + pub ratio: _24hPattern, + pub value_destroyed: BaseCumulativeSumPattern, +} + +impl RatioValuePattern { + /// Create a new pattern node with accumulated series name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + ratio: _24hPattern::new(client.clone(), _m(&acc, "sopr_24h")), + value_destroyed: BaseCumulativeSumPattern::new(client.clone(), _m(&acc, "value_destroyed")), + } + } +} + /// Pattern struct for repeated tree structure. pub struct SdSmaPattern { pub sd: SeriesPattern1, @@ -2852,22 +2853,6 @@ impl ToPattern { } } -/// Pattern struct for repeated tree structure. -pub struct ValuePattern { - pub value_created: BaseCumulativeSumPattern, - pub value_destroyed: BaseCumulativeSumPattern, -} - -impl ValuePattern { - /// Create a new pattern node with accumulated series name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - value_created: BaseCumulativeSumPattern::new(client.clone(), _m(&acc, "created")), - value_destroyed: BaseCumulativeSumPattern::new(client.clone(), _m(&acc, "destroyed")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct _24hPattern { pub _24h: SeriesPattern1, @@ -2910,6 +2895,20 @@ impl PricePattern { } } +/// Pattern struct for repeated tree structure. +pub struct TransferPattern { + pub transfer_volume: BaseCumulativeSumPattern3, +} + +impl TransferPattern { + /// Create a new pattern node with accumulated series name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + transfer_volume: BaseCumulativeSumPattern3::new(client.clone(), acc.clone()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct UnspentPattern { pub unspent_count: BaseDeltaPattern, @@ -3395,7 +3394,7 @@ impl SeriesTree_Transactions_Versions { /// Series tree node. pub struct SeriesTree_Transactions_Volume { - pub transfer_volume: BaseCumulativeSumPattern4, + pub transfer_volume: BaseCumulativeSumPattern3, pub tx_per_sec: _1m1w1y24hPattern, pub outputs_per_sec: _1m1w1y24hPattern, pub inputs_per_sec: _1m1w1y24hPattern, @@ -3404,7 +3403,7 @@ pub struct SeriesTree_Transactions_Volume { impl SeriesTree_Transactions_Volume { pub fn new(client: Arc, base_path: String) -> Self { Self { - transfer_volume: BaseCumulativeSumPattern4::new(client.clone(), "transfer_volume_bis".to_string()), + transfer_volume: BaseCumulativeSumPattern3::new(client.clone(), "transfer_volume_bis".to_string()), tx_per_sec: _1m1w1y24hPattern::new(client.clone(), "tx_per_sec".to_string()), outputs_per_sec: _1m1w1y24hPattern::new(client.clone(), "outputs_per_sec".to_string()), inputs_per_sec: _1m1w1y24hPattern::new(client.clone(), "inputs_per_sec".to_string()), @@ -3973,13 +3972,13 @@ impl SeriesTree_Scripts_Count { /// Series tree node. pub struct SeriesTree_Scripts_Value { - pub op_return: BaseCumulativeSumPattern4, + pub op_return: BaseCumulativeSumPattern3, } impl SeriesTree_Scripts_Value { pub fn new(client: Arc, base_path: String) -> Self { Self { - op_return: BaseCumulativeSumPattern4::new(client.clone(), "op_return_value".to_string()), + op_return: BaseCumulativeSumPattern3::new(client.clone(), "op_return_value".to_string()), } } } @@ -4001,7 +4000,7 @@ impl SeriesTree_Mining { /// Series tree node. pub struct SeriesTree_Mining_Rewards { - pub coinbase: BaseCumulativeSumPattern4, + pub coinbase: BaseCumulativeSumPattern3, pub subsidy: SeriesTree_Mining_Rewards_Subsidy, pub fees: SeriesTree_Mining_Rewards_Fees, pub unclaimed: SeriesTree_Mining_Rewards_Unclaimed, @@ -4010,7 +4009,7 @@ pub struct SeriesTree_Mining_Rewards { impl SeriesTree_Mining_Rewards { pub fn new(client: Arc, base_path: String) -> Self { Self { - coinbase: BaseCumulativeSumPattern4::new(client.clone(), "coinbase".to_string()), + coinbase: BaseCumulativeSumPattern3::new(client.clone(), "coinbase".to_string()), subsidy: SeriesTree_Mining_Rewards_Subsidy::new(client.clone(), format!("{base_path}_subsidy")), fees: SeriesTree_Mining_Rewards_Fees::new(client.clone(), format!("{base_path}_fees")), unclaimed: SeriesTree_Mining_Rewards_Unclaimed::new(client.clone(), format!("{base_path}_unclaimed")), @@ -4041,15 +4040,15 @@ impl SeriesTree_Mining_Rewards_Subsidy { pub struct SeriesTree_Mining_Rewards_Fees { pub base: BtcCentsSatsUsdPattern, pub cumulative: BtcCentsSatsUsdPattern, - pub sum: _1m1w1y24hPattern5, - pub average: _1m1w1y24hPattern5, - pub min: _1m1w1y24hPattern5, - pub max: _1m1w1y24hPattern5, - pub pct10: _1m1w1y24hPattern5, - pub pct25: _1m1w1y24hPattern5, - pub median: _1m1w1y24hPattern5, - pub pct75: _1m1w1y24hPattern5, - pub pct90: _1m1w1y24hPattern5, + pub sum: _1m1w1y24hPattern3, + pub average: _1m1w1y24hPattern3, + pub min: _1m1w1y24hPattern3, + pub max: _1m1w1y24hPattern3, + pub pct10: _1m1w1y24hPattern3, + pub pct25: _1m1w1y24hPattern3, + pub median: _1m1w1y24hPattern3, + pub pct75: _1m1w1y24hPattern3, + pub pct90: _1m1w1y24hPattern3, pub dominance: _1m1w1y24hBpsPercentRatioPattern, pub to_subsidy_ratio: SeriesTree_Mining_Rewards_Fees_ToSubsidyRatio, } @@ -4059,15 +4058,15 @@ impl SeriesTree_Mining_Rewards_Fees { Self { base: BtcCentsSatsUsdPattern::new(client.clone(), "fees".to_string()), cumulative: BtcCentsSatsUsdPattern::new(client.clone(), "fees_cumulative".to_string()), - sum: _1m1w1y24hPattern5::new(client.clone(), "fees_sum".to_string()), - average: _1m1w1y24hPattern5::new(client.clone(), "fees_average".to_string()), - min: _1m1w1y24hPattern5::new(client.clone(), "fees_min".to_string()), - max: _1m1w1y24hPattern5::new(client.clone(), "fees_max".to_string()), - pct10: _1m1w1y24hPattern5::new(client.clone(), "fees_pct10".to_string()), - pct25: _1m1w1y24hPattern5::new(client.clone(), "fees_pct25".to_string()), - median: _1m1w1y24hPattern5::new(client.clone(), "fees_median".to_string()), - pct75: _1m1w1y24hPattern5::new(client.clone(), "fees_pct75".to_string()), - pct90: _1m1w1y24hPattern5::new(client.clone(), "fees_pct90".to_string()), + sum: _1m1w1y24hPattern3::new(client.clone(), "fees_sum".to_string()), + average: _1m1w1y24hPattern3::new(client.clone(), "fees_average".to_string()), + min: _1m1w1y24hPattern3::new(client.clone(), "fees_min".to_string()), + max: _1m1w1y24hPattern3::new(client.clone(), "fees_max".to_string()), + pct10: _1m1w1y24hPattern3::new(client.clone(), "fees_pct10".to_string()), + pct25: _1m1w1y24hPattern3::new(client.clone(), "fees_pct25".to_string()), + median: _1m1w1y24hPattern3::new(client.clone(), "fees_median".to_string()), + pct75: _1m1w1y24hPattern3::new(client.clone(), "fees_pct75".to_string()), + pct90: _1m1w1y24hPattern3::new(client.clone(), "fees_pct90".to_string()), dominance: _1m1w1y24hBpsPercentRatioPattern::new(client.clone(), "fee_dominance".to_string()), to_subsidy_ratio: SeriesTree_Mining_Rewards_Fees_ToSubsidyRatio::new(client.clone(), format!("{base_path}_to_subsidy_ratio")), } @@ -6160,7 +6159,7 @@ impl SeriesTree_Prices_Spot { pub struct SeriesTree_Supply { pub state: SeriesPattern18, pub circulating: BtcCentsSatsUsdPattern, - pub burned: BaseCumulativeSumPattern4, + pub burned: BaseCumulativeSumPattern3, pub inflation_rate: BpsPercentRatioPattern, pub velocity: SeriesTree_Supply_Velocity, pub market_cap: CentsDeltaUsdPattern, @@ -6173,7 +6172,7 @@ impl SeriesTree_Supply { Self { state: SeriesPattern18::new(client.clone(), "supply_state".to_string()), circulating: BtcCentsSatsUsdPattern::new(client.clone(), "circulating_supply".to_string()), - burned: BaseCumulativeSumPattern4::new(client.clone(), "unspendable_supply".to_string()), + burned: BaseCumulativeSumPattern3::new(client.clone(), "unspendable_supply".to_string()), inflation_rate: BpsPercentRatioPattern::new(client.clone(), "inflation_rate".to_string()), velocity: SeriesTree_Supply_Velocity::new(client.clone(), format!("{base_path}_velocity")), market_cap: CentsDeltaUsdPattern::new(client.clone(), "market_cap".to_string()), @@ -6301,7 +6300,7 @@ pub struct SeriesTree_Cohorts_Utxo_All_Activity { pub transfer_volume: BaseCumulativeInSumPattern, pub coindays_destroyed: BaseCumulativeSumPattern, pub coinyears_destroyed: SeriesPattern1, - pub dormancy: SeriesPattern1, + pub dormancy: _1m1w1y24hPattern, } impl SeriesTree_Cohorts_Utxo_All_Activity { @@ -6310,7 +6309,7 @@ impl SeriesTree_Cohorts_Utxo_All_Activity { transfer_volume: BaseCumulativeInSumPattern::new(client.clone(), "transfer_volume".to_string()), coindays_destroyed: BaseCumulativeSumPattern::new(client.clone(), "coindays_destroyed".to_string()), coinyears_destroyed: SeriesPattern1::new(client.clone(), "coinyears_destroyed".to_string()), - dormancy: SeriesPattern1::new(client.clone(), "dormancy".to_string()), + dormancy: _1m1w1y24hPattern::new(client.clone(), "dormancy".to_string()), } } } @@ -6322,9 +6321,9 @@ pub struct SeriesTree_Cohorts_Utxo_All_Realized { pub loss: SeriesTree_Cohorts_Utxo_All_Realized_Loss, pub price: SeriesTree_Cohorts_Utxo_All_Realized_Price, pub mvrv: SeriesPattern1, - pub sopr: SeriesTree_Cohorts_Utxo_All_Realized_Sopr, pub net_pnl: BaseChangeCumulativeDeltaSumToPattern, - pub gross_pnl: BaseCumulativeSumPattern3, + pub sopr: SeriesTree_Cohorts_Utxo_All_Realized_Sopr, + pub gross_pnl: BaseCumulativeSumPattern4, pub sell_side_risk_ratio: _1m1w1y24hPattern6, pub peak_regret: BaseCumulativeSumToPattern, pub investor: PricePattern, @@ -6339,9 +6338,9 @@ impl SeriesTree_Cohorts_Utxo_All_Realized { 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()), - sopr: SeriesTree_Cohorts_Utxo_All_Realized_Sopr::new(client.clone(), format!("{base_path}_sopr")), net_pnl: BaseChangeCumulativeDeltaSumToPattern::new(client.clone(), "net".to_string()), - gross_pnl: BaseCumulativeSumPattern3::new(client.clone(), "realized_gross_pnl".to_string()), + sopr: SeriesTree_Cohorts_Utxo_All_Realized_Sopr::new(client.clone(), format!("{base_path}_sopr")), + gross_pnl: BaseCumulativeSumPattern4::new(client.clone(), "realized_gross_pnl".to_string()), sell_side_risk_ratio: _1m1w1y24hPattern6::new(client.clone(), "sell_side_risk_ratio".to_string()), peak_regret: BaseCumulativeSumToPattern::new(client.clone(), "realized_peak_regret".to_string()), investor: PricePattern::new(client.clone(), "investor_price".to_string()), @@ -6354,7 +6353,7 @@ impl SeriesTree_Cohorts_Utxo_All_Realized { pub struct SeriesTree_Cohorts_Utxo_All_Realized_Loss { pub base: CentsUsdPattern2, pub cumulative: CentsUsdPattern2, - pub sum: _1m1w1y24hPattern4, + pub sum: _1m1w1y24hPattern5, pub negative: BaseSumPattern, pub to_rcap: BpsPercentRatioPattern4, } @@ -6364,7 +6363,7 @@ impl SeriesTree_Cohorts_Utxo_All_Realized_Loss { Self { base: CentsUsdPattern2::new(client.clone(), "realized_loss".to_string()), cumulative: CentsUsdPattern2::new(client.clone(), "realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern4::new(client.clone(), "realized_loss_sum".to_string()), + sum: _1m1w1y24hPattern5::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()), } @@ -6583,7 +6582,6 @@ impl SeriesTree_Cohorts_Utxo_All_Realized_Price_StdDev_1y { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_All_Realized_Sopr { - pub value_created: BaseCumulativeSumPattern, pub value_destroyed: BaseCumulativeSumPattern, pub ratio: _1m1w1y24hPattern, pub adjusted: SeriesTree_Cohorts_Utxo_All_Realized_Sopr_Adjusted, @@ -6592,7 +6590,6 @@ pub struct SeriesTree_Cohorts_Utxo_All_Realized_Sopr { impl SeriesTree_Cohorts_Utxo_All_Realized_Sopr { pub fn new(client: Arc, base_path: String) -> Self { Self { - value_created: BaseCumulativeSumPattern::new(client.clone(), "value_created".to_string()), value_destroyed: BaseCumulativeSumPattern::new(client.clone(), "value_destroyed".to_string()), ratio: _1m1w1y24hPattern::new(client.clone(), "sopr".to_string()), adjusted: SeriesTree_Cohorts_Utxo_All_Realized_Sopr_Adjusted::new(client.clone(), format!("{base_path}_adjusted")), @@ -6603,7 +6600,7 @@ impl SeriesTree_Cohorts_Utxo_All_Realized_Sopr { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_All_Realized_Sopr_Adjusted { pub ratio: _1m1w1y24hPattern, - pub value_created: BaseCumulativeSumPattern, + pub transfer_volume: BaseCumulativeSumPattern, pub value_destroyed: BaseCumulativeSumPattern, } @@ -6611,7 +6608,7 @@ impl SeriesTree_Cohorts_Utxo_All_Realized_Sopr_Adjusted { pub fn new(client: Arc, base_path: String) -> Self { Self { ratio: _1m1w1y24hPattern::new(client.clone(), "asopr".to_string()), - value_created: BaseCumulativeSumPattern::new(client.clone(), "adj_value_created".to_string()), + transfer_volume: BaseCumulativeSumPattern::new(client.clone(), "adj_value_created".to_string()), value_destroyed: BaseCumulativeSumPattern::new(client.clone(), "adj_value_destroyed".to_string()), } } @@ -6765,7 +6762,7 @@ pub struct SeriesTree_Cohorts_Utxo_Sth_Activity { pub transfer_volume: BaseCumulativeInSumPattern, pub coindays_destroyed: BaseCumulativeSumPattern, pub coinyears_destroyed: SeriesPattern1, - pub dormancy: SeriesPattern1, + pub dormancy: _1m1w1y24hPattern, } impl SeriesTree_Cohorts_Utxo_Sth_Activity { @@ -6774,7 +6771,7 @@ impl SeriesTree_Cohorts_Utxo_Sth_Activity { transfer_volume: BaseCumulativeInSumPattern::new(client.clone(), "sth_transfer_volume".to_string()), coindays_destroyed: BaseCumulativeSumPattern::new(client.clone(), "sth_coindays_destroyed".to_string()), coinyears_destroyed: SeriesPattern1::new(client.clone(), "sth_coinyears_destroyed".to_string()), - dormancy: SeriesPattern1::new(client.clone(), "sth_dormancy".to_string()), + dormancy: _1m1w1y24hPattern::new(client.clone(), "sth_dormancy".to_string()), } } } @@ -6786,9 +6783,9 @@ pub struct SeriesTree_Cohorts_Utxo_Sth_Realized { pub loss: SeriesTree_Cohorts_Utxo_Sth_Realized_Loss, pub price: SeriesTree_Cohorts_Utxo_Sth_Realized_Price, pub mvrv: SeriesPattern1, - pub sopr: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr, pub net_pnl: BaseChangeCumulativeDeltaSumToPattern, - pub gross_pnl: BaseCumulativeSumPattern3, + pub sopr: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr, + pub gross_pnl: BaseCumulativeSumPattern4, pub sell_side_risk_ratio: _1m1w1y24hPattern6, pub peak_regret: BaseCumulativeSumToPattern, pub investor: PricePattern, @@ -6803,9 +6800,9 @@ impl SeriesTree_Cohorts_Utxo_Sth_Realized { 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()), - sopr: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr::new(client.clone(), format!("{base_path}_sopr")), net_pnl: BaseChangeCumulativeDeltaSumToPattern::new(client.clone(), "sth_net".to_string()), - gross_pnl: BaseCumulativeSumPattern3::new(client.clone(), "sth_realized_gross_pnl".to_string()), + sopr: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr::new(client.clone(), format!("{base_path}_sopr")), + gross_pnl: BaseCumulativeSumPattern4::new(client.clone(), "sth_realized_gross_pnl".to_string()), sell_side_risk_ratio: _1m1w1y24hPattern6::new(client.clone(), "sth_sell_side_risk_ratio".to_string()), peak_regret: BaseCumulativeSumToPattern::new(client.clone(), "sth_realized_peak_regret".to_string()), investor: PricePattern::new(client.clone(), "sth_investor_price".to_string()), @@ -6818,7 +6815,7 @@ impl SeriesTree_Cohorts_Utxo_Sth_Realized { pub struct SeriesTree_Cohorts_Utxo_Sth_Realized_Loss { pub base: CentsUsdPattern2, pub cumulative: CentsUsdPattern2, - pub sum: _1m1w1y24hPattern4, + pub sum: _1m1w1y24hPattern5, pub negative: BaseSumPattern, pub to_rcap: BpsPercentRatioPattern4, } @@ -6828,7 +6825,7 @@ impl SeriesTree_Cohorts_Utxo_Sth_Realized_Loss { Self { base: CentsUsdPattern2::new(client.clone(), "sth_realized_loss".to_string()), cumulative: CentsUsdPattern2::new(client.clone(), "sth_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern4::new(client.clone(), "sth_realized_loss_sum".to_string()), + sum: _1m1w1y24hPattern5::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()), } @@ -7047,7 +7044,6 @@ impl SeriesTree_Cohorts_Utxo_Sth_Realized_Price_StdDev_1y { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr { - pub value_created: BaseCumulativeSumPattern, pub value_destroyed: BaseCumulativeSumPattern, pub ratio: _1m1w1y24hPattern, pub adjusted: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr_Adjusted, @@ -7056,7 +7052,6 @@ pub struct SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr { impl SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr { pub fn new(client: Arc, base_path: String) -> Self { Self { - value_created: BaseCumulativeSumPattern::new(client.clone(), "sth_value_created".to_string()), value_destroyed: BaseCumulativeSumPattern::new(client.clone(), "sth_value_destroyed".to_string()), ratio: _1m1w1y24hPattern::new(client.clone(), "sth_sopr".to_string()), adjusted: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr_Adjusted::new(client.clone(), format!("{base_path}_adjusted")), @@ -7067,7 +7062,7 @@ impl SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr_Adjusted { pub ratio: _1m1w1y24hPattern, - pub value_created: BaseCumulativeSumPattern, + pub transfer_volume: BaseCumulativeSumPattern, pub value_destroyed: BaseCumulativeSumPattern, } @@ -7075,7 +7070,7 @@ impl SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr_Adjusted { pub fn new(client: Arc, base_path: String) -> Self { Self { ratio: _1m1w1y24hPattern::new(client.clone(), "sth_asopr".to_string()), - value_created: BaseCumulativeSumPattern::new(client.clone(), "sth_adj_value_created".to_string()), + transfer_volume: BaseCumulativeSumPattern::new(client.clone(), "sth_adj_value_created".to_string()), value_destroyed: BaseCumulativeSumPattern::new(client.clone(), "sth_adj_value_destroyed".to_string()), } } @@ -7172,7 +7167,7 @@ pub struct SeriesTree_Cohorts_Utxo_Lth_Activity { pub transfer_volume: BaseCumulativeInSumPattern, pub coindays_destroyed: BaseCumulativeSumPattern, pub coinyears_destroyed: SeriesPattern1, - pub dormancy: SeriesPattern1, + pub dormancy: _1m1w1y24hPattern, } impl SeriesTree_Cohorts_Utxo_Lth_Activity { @@ -7181,7 +7176,7 @@ impl SeriesTree_Cohorts_Utxo_Lth_Activity { transfer_volume: BaseCumulativeInSumPattern::new(client.clone(), "lth_transfer_volume".to_string()), coindays_destroyed: BaseCumulativeSumPattern::new(client.clone(), "lth_coindays_destroyed".to_string()), coinyears_destroyed: SeriesPattern1::new(client.clone(), "lth_coinyears_destroyed".to_string()), - dormancy: SeriesPattern1::new(client.clone(), "lth_dormancy".to_string()), + dormancy: _1m1w1y24hPattern::new(client.clone(), "lth_dormancy".to_string()), } } } @@ -7193,9 +7188,9 @@ pub struct SeriesTree_Cohorts_Utxo_Lth_Realized { pub loss: SeriesTree_Cohorts_Utxo_Lth_Realized_Loss, pub price: SeriesTree_Cohorts_Utxo_Lth_Realized_Price, pub mvrv: SeriesPattern1, - pub sopr: SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr, pub net_pnl: BaseChangeCumulativeDeltaSumToPattern, - pub gross_pnl: BaseCumulativeSumPattern3, + pub sopr: SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr, + pub gross_pnl: BaseCumulativeSumPattern4, pub sell_side_risk_ratio: _1m1w1y24hPattern6, pub peak_regret: BaseCumulativeSumToPattern, pub investor: PricePattern, @@ -7210,9 +7205,9 @@ impl SeriesTree_Cohorts_Utxo_Lth_Realized { 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()), - sopr: SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr::new(client.clone(), format!("{base_path}_sopr")), net_pnl: BaseChangeCumulativeDeltaSumToPattern::new(client.clone(), "lth_net".to_string()), - gross_pnl: BaseCumulativeSumPattern3::new(client.clone(), "lth_realized_gross_pnl".to_string()), + sopr: SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr::new(client.clone(), format!("{base_path}_sopr")), + gross_pnl: BaseCumulativeSumPattern4::new(client.clone(), "lth_realized_gross_pnl".to_string()), sell_side_risk_ratio: _1m1w1y24hPattern6::new(client.clone(), "lth_sell_side_risk_ratio".to_string()), peak_regret: BaseCumulativeSumToPattern::new(client.clone(), "lth_realized_peak_regret".to_string()), investor: PricePattern::new(client.clone(), "lth_investor_price".to_string()), @@ -7225,7 +7220,7 @@ impl SeriesTree_Cohorts_Utxo_Lth_Realized { pub struct SeriesTree_Cohorts_Utxo_Lth_Realized_Loss { pub base: CentsUsdPattern2, pub cumulative: CentsUsdPattern2, - pub sum: _1m1w1y24hPattern4, + pub sum: _1m1w1y24hPattern5, pub negative: BaseSumPattern, pub to_rcap: BpsPercentRatioPattern4, } @@ -7235,7 +7230,7 @@ impl SeriesTree_Cohorts_Utxo_Lth_Realized_Loss { Self { base: CentsUsdPattern2::new(client.clone(), "lth_realized_loss".to_string()), cumulative: CentsUsdPattern2::new(client.clone(), "lth_realized_loss_cumulative".to_string()), - sum: _1m1w1y24hPattern4::new(client.clone(), "lth_realized_loss_sum".to_string()), + sum: _1m1w1y24hPattern5::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()), } @@ -7454,7 +7449,6 @@ impl SeriesTree_Cohorts_Utxo_Lth_Realized_Price_StdDev_1y { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr { - pub value_created: BaseCumulativeSumPattern, pub value_destroyed: BaseCumulativeSumPattern, pub ratio: _1m1w1y24hPattern, } @@ -7462,7 +7456,6 @@ pub struct SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr { impl SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr { pub fn new(client: Arc, base_path: String) -> Self { Self { - value_created: BaseCumulativeSumPattern::new(client.clone(), "lth_value_created".to_string()), value_destroyed: BaseCumulativeSumPattern::new(client.clone(), "lth_value_destroyed".to_string()), ratio: _1m1w1y24hPattern::new(client.clone(), "lth_sopr".to_string()), } @@ -7749,148 +7742,148 @@ impl SeriesTree_Cohorts_Utxo_Class { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_OverAmount { - pub _1sat: OutputsRealizedSupplyUnrealizedPattern, - pub _10sats: OutputsRealizedSupplyUnrealizedPattern, - pub _100sats: OutputsRealizedSupplyUnrealizedPattern, - pub _1k_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _10k_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _100k_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _1m_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _10m_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _1btc: OutputsRealizedSupplyUnrealizedPattern, - pub _10btc: OutputsRealizedSupplyUnrealizedPattern, - pub _100btc: OutputsRealizedSupplyUnrealizedPattern, - pub _1k_btc: OutputsRealizedSupplyUnrealizedPattern, - pub _10k_btc: OutputsRealizedSupplyUnrealizedPattern, + pub _1sat: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, } impl SeriesTree_Cohorts_Utxo_OverAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _1sat: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1sat".to_string()), - _10sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_10sats".to_string()), - _100sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_100sats".to_string()), - _1k_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1k_sats".to_string()), - _10k_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_10k_sats".to_string()), - _100k_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_100k_sats".to_string()), - _1m_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1m_sats".to_string()), - _10m_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_10m_sats".to_string()), - _1btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1btc".to_string()), - _10btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_10btc".to_string()), - _100btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_100btc".to_string()), - _1k_btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_1k_btc".to_string()), - _10k_btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_10k_btc".to_string()), + _1sat: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1sat".to_string()), + _10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_10sats".to_string()), + _100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_100sats".to_string()), + _1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1k_sats".to_string()), + _10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_10k_sats".to_string()), + _100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_100k_sats".to_string()), + _1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1m_sats".to_string()), + _10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_10m_sats".to_string()), + _1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1btc".to_string()), + _10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_10btc".to_string()), + _100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_100btc".to_string()), + _1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_1k_btc".to_string()), + _10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_10k_btc".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_AmountRange { - pub _0sats: OutputsRealizedSupplyUnrealizedPattern, - pub _1sat_to_10sats: OutputsRealizedSupplyUnrealizedPattern, - pub _10sats_to_100sats: OutputsRealizedSupplyUnrealizedPattern, - pub _100sats_to_1k_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _1k_sats_to_10k_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _10k_sats_to_100k_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _100k_sats_to_1m_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _1m_sats_to_10m_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _10m_sats_to_1btc: OutputsRealizedSupplyUnrealizedPattern, - pub _1btc_to_10btc: OutputsRealizedSupplyUnrealizedPattern, - pub _10btc_to_100btc: OutputsRealizedSupplyUnrealizedPattern, - pub _100btc_to_1k_btc: OutputsRealizedSupplyUnrealizedPattern, - pub _1k_btc_to_10k_btc: OutputsRealizedSupplyUnrealizedPattern, - pub _10k_btc_to_100k_btc: OutputsRealizedSupplyUnrealizedPattern, - pub over_100k_btc: OutputsRealizedSupplyUnrealizedPattern, + pub _0sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1sat_to_10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10sats_to_100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _100sats_to_1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1k_sats_to_10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10k_sats_to_100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _100k_sats_to_1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1m_sats_to_10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10m_sats_to_1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1btc_to_10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10btc_to_100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _100btc_to_1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1k_btc_to_10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10k_btc_to_100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub over_100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, } impl SeriesTree_Cohorts_Utxo_AmountRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - _0sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_0sats".to_string()), - _1sat_to_10sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1sat_to_10sats".to_string()), - _10sats_to_100sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_10sats_to_100sats".to_string()), - _100sats_to_1k_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_100sats_to_1k_sats".to_string()), - _1k_sats_to_10k_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1k_sats_to_10k_sats".to_string()), - _10k_sats_to_100k_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_10k_sats_to_100k_sats".to_string()), - _100k_sats_to_1m_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_100k_sats_to_1m_sats".to_string()), - _1m_sats_to_10m_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1m_sats_to_10m_sats".to_string()), - _10m_sats_to_1btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_10m_sats_to_1btc".to_string()), - _1btc_to_10btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1btc_to_10btc".to_string()), - _10btc_to_100btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_10btc_to_100btc".to_string()), - _100btc_to_1k_btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_100btc_to_1k_btc".to_string()), - _1k_btc_to_10k_btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_1k_btc_to_10k_btc".to_string()), - _10k_btc_to_100k_btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_10k_btc_to_100k_btc".to_string()), - over_100k_btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_over_100k_btc".to_string()), + _0sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_0sats".to_string()), + _1sat_to_10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_1sat_to_10sats".to_string()), + _10sats_to_100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_10sats_to_100sats".to_string()), + _100sats_to_1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_100sats_to_1k_sats".to_string()), + _1k_sats_to_10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_1k_sats_to_10k_sats".to_string()), + _10k_sats_to_100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_10k_sats_to_100k_sats".to_string()), + _100k_sats_to_1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_100k_sats_to_1m_sats".to_string()), + _1m_sats_to_10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_1m_sats_to_10m_sats".to_string()), + _10m_sats_to_1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_10m_sats_to_1btc".to_string()), + _1btc_to_10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_1btc_to_10btc".to_string()), + _10btc_to_100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_10btc_to_100btc".to_string()), + _100btc_to_1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_100btc_to_1k_btc".to_string()), + _1k_btc_to_10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_1k_btc_to_10k_btc".to_string()), + _10k_btc_to_100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_10k_btc_to_100k_btc".to_string()), + over_100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_over_100k_btc".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_UnderAmount { - pub _10sats: OutputsRealizedSupplyUnrealizedPattern, - pub _100sats: OutputsRealizedSupplyUnrealizedPattern, - pub _1k_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _10k_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _100k_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _1m_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _10m_sats: OutputsRealizedSupplyUnrealizedPattern, - pub _1btc: OutputsRealizedSupplyUnrealizedPattern, - pub _10btc: OutputsRealizedSupplyUnrealizedPattern, - pub _100btc: OutputsRealizedSupplyUnrealizedPattern, - pub _1k_btc: OutputsRealizedSupplyUnrealizedPattern, - pub _10k_btc: OutputsRealizedSupplyUnrealizedPattern, - pub _100k_btc: OutputsRealizedSupplyUnrealizedPattern, + pub _10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, + pub _100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2, } impl SeriesTree_Cohorts_Utxo_UnderAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _10sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_10sats".to_string()), - _100sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_100sats".to_string()), - _1k_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1k_sats".to_string()), - _10k_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_10k_sats".to_string()), - _100k_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_100k_sats".to_string()), - _1m_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1m_sats".to_string()), - _10m_sats: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_10m_sats".to_string()), - _1btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1btc".to_string()), - _10btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_10btc".to_string()), - _100btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_100btc".to_string()), - _1k_btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_1k_btc".to_string()), - _10k_btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_10k_btc".to_string()), - _100k_btc: OutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "utxos_under_100k_btc".to_string()), + _10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_10sats".to_string()), + _100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_100sats".to_string()), + _1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_1k_sats".to_string()), + _10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_10k_sats".to_string()), + _100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_100k_sats".to_string()), + _1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_1m_sats".to_string()), + _10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_10m_sats".to_string()), + _1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_1btc".to_string()), + _10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_10btc".to_string()), + _100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_100btc".to_string()), + _1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_1k_btc".to_string()), + _10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_10k_btc".to_string()), + _100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "utxos_under_100k_btc".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Type { - pub p2pk65: OutputsRealizedSupplyUnrealizedPattern2, - pub p2pk33: OutputsRealizedSupplyUnrealizedPattern2, - pub p2pkh: OutputsRealizedSupplyUnrealizedPattern2, - pub p2ms: OutputsRealizedSupplyUnrealizedPattern2, - pub p2sh: OutputsRealizedSupplyUnrealizedPattern2, - pub p2wpkh: OutputsRealizedSupplyUnrealizedPattern2, - pub p2wsh: OutputsRealizedSupplyUnrealizedPattern2, - pub p2tr: OutputsRealizedSupplyUnrealizedPattern2, - pub p2a: OutputsRealizedSupplyUnrealizedPattern2, - pub unknown: OutputsRealizedSupplyUnrealizedPattern2, - pub empty: OutputsRealizedSupplyUnrealizedPattern2, + pub p2pk65: ActivityOutputsRealizedSupplyUnrealizedPattern3, + pub p2pk33: ActivityOutputsRealizedSupplyUnrealizedPattern3, + pub p2pkh: ActivityOutputsRealizedSupplyUnrealizedPattern3, + pub p2ms: ActivityOutputsRealizedSupplyUnrealizedPattern3, + pub p2sh: ActivityOutputsRealizedSupplyUnrealizedPattern3, + pub p2wpkh: ActivityOutputsRealizedSupplyUnrealizedPattern3, + pub p2wsh: ActivityOutputsRealizedSupplyUnrealizedPattern3, + pub p2tr: ActivityOutputsRealizedSupplyUnrealizedPattern3, + pub p2a: ActivityOutputsRealizedSupplyUnrealizedPattern3, + pub unknown: ActivityOutputsRealizedSupplyUnrealizedPattern3, + pub empty: ActivityOutputsRealizedSupplyUnrealizedPattern3, } impl SeriesTree_Cohorts_Utxo_Type { pub fn new(client: Arc, base_path: String) -> Self { Self { - p2pk65: OutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "p2pk65".to_string()), - p2pk33: OutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "p2pk33".to_string()), - p2pkh: OutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "p2pkh".to_string()), - p2ms: OutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "p2ms".to_string()), - p2sh: OutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "p2sh".to_string()), - p2wpkh: OutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "p2wpkh".to_string()), - p2wsh: OutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "p2wsh".to_string()), - p2tr: OutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "p2tr".to_string()), - p2a: OutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "p2a".to_string()), - unknown: OutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "unknown_outputs".to_string()), - empty: OutputsRealizedSupplyUnrealizedPattern2::new(client.clone(), "empty_outputs".to_string()), + p2pk65: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2pk65".to_string()), + p2pk33: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2pk33".to_string()), + p2pkh: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2pkh".to_string()), + p2ms: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2ms".to_string()), + p2sh: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2sh".to_string()), + p2wpkh: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2wpkh".to_string()), + p2wsh: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2wsh".to_string()), + p2tr: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2tr".to_string()), + p2a: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "p2a".to_string()), + unknown: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "unknown_outputs".to_string()), + empty: ActivityOutputsRealizedSupplyUnrealizedPattern3::new(client.clone(), "empty_outputs".to_string()), } } } @@ -8043,53 +8036,53 @@ impl SeriesTree_Cohorts_Utxo_Profitability_Loss { /// Series tree node. pub struct SeriesTree_Cohorts_Utxo_Matured { - pub under_1h: BaseCumulativeSumPattern4, - pub _1h_to_1d: BaseCumulativeSumPattern4, - pub _1d_to_1w: BaseCumulativeSumPattern4, - pub _1w_to_1m: BaseCumulativeSumPattern4, - pub _1m_to_2m: BaseCumulativeSumPattern4, - pub _2m_to_3m: BaseCumulativeSumPattern4, - pub _3m_to_4m: BaseCumulativeSumPattern4, - pub _4m_to_5m: BaseCumulativeSumPattern4, - pub _5m_to_6m: BaseCumulativeSumPattern4, - pub _6m_to_1y: BaseCumulativeSumPattern4, - pub _1y_to_2y: BaseCumulativeSumPattern4, - pub _2y_to_3y: BaseCumulativeSumPattern4, - pub _3y_to_4y: BaseCumulativeSumPattern4, - pub _4y_to_5y: BaseCumulativeSumPattern4, - pub _5y_to_6y: BaseCumulativeSumPattern4, - pub _6y_to_7y: BaseCumulativeSumPattern4, - pub _7y_to_8y: BaseCumulativeSumPattern4, - pub _8y_to_10y: BaseCumulativeSumPattern4, - pub _10y_to_12y: BaseCumulativeSumPattern4, - pub _12y_to_15y: BaseCumulativeSumPattern4, - pub over_15y: BaseCumulativeSumPattern4, + pub under_1h: BaseCumulativeSumPattern3, + pub _1h_to_1d: BaseCumulativeSumPattern3, + pub _1d_to_1w: BaseCumulativeSumPattern3, + pub _1w_to_1m: BaseCumulativeSumPattern3, + pub _1m_to_2m: BaseCumulativeSumPattern3, + pub _2m_to_3m: BaseCumulativeSumPattern3, + pub _3m_to_4m: BaseCumulativeSumPattern3, + pub _4m_to_5m: BaseCumulativeSumPattern3, + pub _5m_to_6m: BaseCumulativeSumPattern3, + pub _6m_to_1y: BaseCumulativeSumPattern3, + pub _1y_to_2y: BaseCumulativeSumPattern3, + pub _2y_to_3y: BaseCumulativeSumPattern3, + pub _3y_to_4y: BaseCumulativeSumPattern3, + pub _4y_to_5y: BaseCumulativeSumPattern3, + pub _5y_to_6y: BaseCumulativeSumPattern3, + pub _6y_to_7y: BaseCumulativeSumPattern3, + pub _7y_to_8y: BaseCumulativeSumPattern3, + pub _8y_to_10y: BaseCumulativeSumPattern3, + pub _10y_to_12y: BaseCumulativeSumPattern3, + pub _12y_to_15y: BaseCumulativeSumPattern3, + pub over_15y: BaseCumulativeSumPattern3, } impl SeriesTree_Cohorts_Utxo_Matured { pub fn new(client: Arc, base_path: String) -> Self { Self { - under_1h: BaseCumulativeSumPattern4::new(client.clone(), "utxos_under_1h_old_matured_supply".to_string()), - _1h_to_1d: BaseCumulativeSumPattern4::new(client.clone(), "utxos_1h_to_1d_old_matured_supply".to_string()), - _1d_to_1w: BaseCumulativeSumPattern4::new(client.clone(), "utxos_1d_to_1w_old_matured_supply".to_string()), - _1w_to_1m: BaseCumulativeSumPattern4::new(client.clone(), "utxos_1w_to_1m_old_matured_supply".to_string()), - _1m_to_2m: BaseCumulativeSumPattern4::new(client.clone(), "utxos_1m_to_2m_old_matured_supply".to_string()), - _2m_to_3m: BaseCumulativeSumPattern4::new(client.clone(), "utxos_2m_to_3m_old_matured_supply".to_string()), - _3m_to_4m: BaseCumulativeSumPattern4::new(client.clone(), "utxos_3m_to_4m_old_matured_supply".to_string()), - _4m_to_5m: BaseCumulativeSumPattern4::new(client.clone(), "utxos_4m_to_5m_old_matured_supply".to_string()), - _5m_to_6m: BaseCumulativeSumPattern4::new(client.clone(), "utxos_5m_to_6m_old_matured_supply".to_string()), - _6m_to_1y: BaseCumulativeSumPattern4::new(client.clone(), "utxos_6m_to_1y_old_matured_supply".to_string()), - _1y_to_2y: BaseCumulativeSumPattern4::new(client.clone(), "utxos_1y_to_2y_old_matured_supply".to_string()), - _2y_to_3y: BaseCumulativeSumPattern4::new(client.clone(), "utxos_2y_to_3y_old_matured_supply".to_string()), - _3y_to_4y: BaseCumulativeSumPattern4::new(client.clone(), "utxos_3y_to_4y_old_matured_supply".to_string()), - _4y_to_5y: BaseCumulativeSumPattern4::new(client.clone(), "utxos_4y_to_5y_old_matured_supply".to_string()), - _5y_to_6y: BaseCumulativeSumPattern4::new(client.clone(), "utxos_5y_to_6y_old_matured_supply".to_string()), - _6y_to_7y: BaseCumulativeSumPattern4::new(client.clone(), "utxos_6y_to_7y_old_matured_supply".to_string()), - _7y_to_8y: BaseCumulativeSumPattern4::new(client.clone(), "utxos_7y_to_8y_old_matured_supply".to_string()), - _8y_to_10y: BaseCumulativeSumPattern4::new(client.clone(), "utxos_8y_to_10y_old_matured_supply".to_string()), - _10y_to_12y: BaseCumulativeSumPattern4::new(client.clone(), "utxos_10y_to_12y_old_matured_supply".to_string()), - _12y_to_15y: BaseCumulativeSumPattern4::new(client.clone(), "utxos_12y_to_15y_old_matured_supply".to_string()), - over_15y: BaseCumulativeSumPattern4::new(client.clone(), "utxos_over_15y_old_matured_supply".to_string()), + under_1h: BaseCumulativeSumPattern3::new(client.clone(), "utxos_under_1h_old_matured_supply".to_string()), + _1h_to_1d: BaseCumulativeSumPattern3::new(client.clone(), "utxos_1h_to_1d_old_matured_supply".to_string()), + _1d_to_1w: BaseCumulativeSumPattern3::new(client.clone(), "utxos_1d_to_1w_old_matured_supply".to_string()), + _1w_to_1m: BaseCumulativeSumPattern3::new(client.clone(), "utxos_1w_to_1m_old_matured_supply".to_string()), + _1m_to_2m: BaseCumulativeSumPattern3::new(client.clone(), "utxos_1m_to_2m_old_matured_supply".to_string()), + _2m_to_3m: BaseCumulativeSumPattern3::new(client.clone(), "utxos_2m_to_3m_old_matured_supply".to_string()), + _3m_to_4m: BaseCumulativeSumPattern3::new(client.clone(), "utxos_3m_to_4m_old_matured_supply".to_string()), + _4m_to_5m: BaseCumulativeSumPattern3::new(client.clone(), "utxos_4m_to_5m_old_matured_supply".to_string()), + _5m_to_6m: BaseCumulativeSumPattern3::new(client.clone(), "utxos_5m_to_6m_old_matured_supply".to_string()), + _6m_to_1y: BaseCumulativeSumPattern3::new(client.clone(), "utxos_6m_to_1y_old_matured_supply".to_string()), + _1y_to_2y: BaseCumulativeSumPattern3::new(client.clone(), "utxos_1y_to_2y_old_matured_supply".to_string()), + _2y_to_3y: BaseCumulativeSumPattern3::new(client.clone(), "utxos_2y_to_3y_old_matured_supply".to_string()), + _3y_to_4y: BaseCumulativeSumPattern3::new(client.clone(), "utxos_3y_to_4y_old_matured_supply".to_string()), + _4y_to_5y: BaseCumulativeSumPattern3::new(client.clone(), "utxos_4y_to_5y_old_matured_supply".to_string()), + _5y_to_6y: BaseCumulativeSumPattern3::new(client.clone(), "utxos_5y_to_6y_old_matured_supply".to_string()), + _6y_to_7y: BaseCumulativeSumPattern3::new(client.clone(), "utxos_6y_to_7y_old_matured_supply".to_string()), + _7y_to_8y: BaseCumulativeSumPattern3::new(client.clone(), "utxos_7y_to_8y_old_matured_supply".to_string()), + _8y_to_10y: BaseCumulativeSumPattern3::new(client.clone(), "utxos_8y_to_10y_old_matured_supply".to_string()), + _10y_to_12y: BaseCumulativeSumPattern3::new(client.clone(), "utxos_10y_to_12y_old_matured_supply".to_string()), + _12y_to_15y: BaseCumulativeSumPattern3::new(client.clone(), "utxos_12y_to_15y_old_matured_supply".to_string()), + over_15y: BaseCumulativeSumPattern3::new(client.clone(), "utxos_over_15y_old_matured_supply".to_string()), } } } @@ -8113,115 +8106,115 @@ impl SeriesTree_Cohorts_Addr { /// Series tree node. pub struct SeriesTree_Cohorts_Addr_OverAmount { - pub _1sat: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _100sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _1k_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10k_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _100k_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _1m_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10m_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _1btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _100btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _1k_btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10k_btc: AddrOutputsRealizedSupplyUnrealizedPattern, + pub _1sat: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, } impl SeriesTree_Cohorts_Addr_OverAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _1sat: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1sat".to_string()), - _10sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10sats".to_string()), - _100sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_100sats".to_string()), - _1k_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1k_sats".to_string()), - _10k_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10k_sats".to_string()), - _100k_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_100k_sats".to_string()), - _1m_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1m_sats".to_string()), - _10m_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10m_sats".to_string()), - _1btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1btc".to_string()), - _10btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10btc".to_string()), - _100btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_100btc".to_string()), - _1k_btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1k_btc".to_string()), - _10k_btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10k_btc".to_string()), + _1sat: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1sat".to_string()), + _10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10sats".to_string()), + _100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_100sats".to_string()), + _1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1k_sats".to_string()), + _10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10k_sats".to_string()), + _100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_100k_sats".to_string()), + _1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1m_sats".to_string()), + _10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10m_sats".to_string()), + _1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1btc".to_string()), + _10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10btc".to_string()), + _100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_100btc".to_string()), + _1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_1k_btc".to_string()), + _10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_10k_btc".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Addr_AmountRange { - pub _0sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _1sat_to_10sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10sats_to_100sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _100sats_to_1k_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _1k_sats_to_10k_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10k_sats_to_100k_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _100k_sats_to_1m_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _1m_sats_to_10m_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10m_sats_to_1btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _1btc_to_10btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10btc_to_100btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _100btc_to_1k_btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _1k_btc_to_10k_btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10k_btc_to_100k_btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub over_100k_btc: AddrOutputsRealizedSupplyUnrealizedPattern, + pub _0sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1sat_to_10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10sats_to_100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _100sats_to_1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1k_sats_to_10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10k_sats_to_100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _100k_sats_to_1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1m_sats_to_10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10m_sats_to_1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1btc_to_10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10btc_to_100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _100btc_to_1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1k_btc_to_10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10k_btc_to_100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub over_100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, } impl SeriesTree_Cohorts_Addr_AmountRange { pub fn new(client: Arc, base_path: String) -> Self { Self { - _0sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_0sats".to_string()), - _1sat_to_10sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1sat_to_10sats".to_string()), - _10sats_to_100sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10sats_to_100sats".to_string()), - _100sats_to_1k_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_100sats_to_1k_sats".to_string()), - _1k_sats_to_10k_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1k_sats_to_10k_sats".to_string()), - _10k_sats_to_100k_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10k_sats_to_100k_sats".to_string()), - _100k_sats_to_1m_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_100k_sats_to_1m_sats".to_string()), - _1m_sats_to_10m_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1m_sats_to_10m_sats".to_string()), - _10m_sats_to_1btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10m_sats_to_1btc".to_string()), - _1btc_to_10btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1btc_to_10btc".to_string()), - _10btc_to_100btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10btc_to_100btc".to_string()), - _100btc_to_1k_btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_100btc_to_1k_btc".to_string()), - _1k_btc_to_10k_btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1k_btc_to_10k_btc".to_string()), - _10k_btc_to_100k_btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10k_btc_to_100k_btc".to_string()), - over_100k_btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_100k_btc".to_string()), + _0sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_0sats".to_string()), + _1sat_to_10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1sat_to_10sats".to_string()), + _10sats_to_100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10sats_to_100sats".to_string()), + _100sats_to_1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_100sats_to_1k_sats".to_string()), + _1k_sats_to_10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1k_sats_to_10k_sats".to_string()), + _10k_sats_to_100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10k_sats_to_100k_sats".to_string()), + _100k_sats_to_1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_100k_sats_to_1m_sats".to_string()), + _1m_sats_to_10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1m_sats_to_10m_sats".to_string()), + _10m_sats_to_1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10m_sats_to_1btc".to_string()), + _1btc_to_10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1btc_to_10btc".to_string()), + _10btc_to_100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10btc_to_100btc".to_string()), + _100btc_to_1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_100btc_to_1k_btc".to_string()), + _1k_btc_to_10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_1k_btc_to_10k_btc".to_string()), + _10k_btc_to_100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_10k_btc_to_100k_btc".to_string()), + over_100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_over_100k_btc".to_string()), } } } /// Series tree node. pub struct SeriesTree_Cohorts_Addr_UnderAmount { - pub _10sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _100sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _1k_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10k_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _100k_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _1m_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10m_sats: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _1btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _100btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _1k_btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _10k_btc: AddrOutputsRealizedSupplyUnrealizedPattern, - pub _100k_btc: AddrOutputsRealizedSupplyUnrealizedPattern, + pub _10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, + pub _100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern, } impl SeriesTree_Cohorts_Addr_UnderAmount { pub fn new(client: Arc, base_path: String) -> Self { Self { - _10sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10sats".to_string()), - _100sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_100sats".to_string()), - _1k_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_1k_sats".to_string()), - _10k_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10k_sats".to_string()), - _100k_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_100k_sats".to_string()), - _1m_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_1m_sats".to_string()), - _10m_sats: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10m_sats".to_string()), - _1btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_1btc".to_string()), - _10btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10btc".to_string()), - _100btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_100btc".to_string()), - _1k_btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_1k_btc".to_string()), - _10k_btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10k_btc".to_string()), - _100k_btc: AddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_100k_btc".to_string()), + _10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10sats".to_string()), + _100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_100sats".to_string()), + _1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_1k_sats".to_string()), + _10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10k_sats".to_string()), + _100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_100k_sats".to_string()), + _1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_1m_sats".to_string()), + _10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10m_sats".to_string()), + _1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_1btc".to_string()), + _10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10btc".to_string()), + _100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_100btc".to_string()), + _1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_1k_btc".to_string()), + _10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_10k_btc".to_string()), + _100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern::new(client.clone(), "addrs_under_100k_btc".to_string()), } } } diff --git a/crates/brk_computer/src/cointime/adjusted/compute.rs b/crates/brk_computer/src/cointime/adjusted/compute.rs index d38574333..69456946e 100644 --- a/crates/brk_computer/src/cointime/adjusted/compute.rs +++ b/crates/brk_computer/src/cointime/adjusted/compute.rs @@ -16,12 +16,12 @@ impl Vecs { ) -> Result<()> { self.inflation_rate.bps.height.compute_transform2( starting_indexes.height, - &activity.liveliness.height, + &activity.ratio.height, &supply.inflation_rate.bps.height, - |(h, liveliness, inflation, ..)| { + |(h, a2vr, inflation, ..)| { ( h, - BasisPointsSigned32::from(f64::from(liveliness) * f64::from(inflation)), + BasisPointsSigned32::from(f64::from(a2vr) * f64::from(inflation)), ) }, exit, diff --git a/crates/brk_computer/src/cointime/adjusted/import.rs b/crates/brk_computer/src/cointime/adjusted/import.rs index 4d29669e4..90c6e1e62 100644 --- a/crates/brk_computer/src/cointime/adjusted/import.rs +++ b/crates/brk_computer/src/cointime/adjusted/import.rs @@ -18,7 +18,7 @@ impl Vecs { inflation_rate: PercentPerBlock::forced_import( db, "cointime_adj_inflation_rate", - version, + version + Version::ONE, indexes, )?, tx_velocity_native: PerBlock::forced_import( diff --git a/crates/brk_computer/src/distribution/cohorts/addr/vecs.rs b/crates/brk_computer/src/distribution/cohorts/addr/vecs.rs index c63138afc..f5443907a 100644 --- a/crates/brk_computer/src/distribution/cohorts/addr/vecs.rs +++ b/crates/brk_computer/src/distribution/cohorts/addr/vecs.rs @@ -166,6 +166,7 @@ impl DynCohortVecs for AddrCohortVecs { .push(state.addr_count.into()); self.metrics.supply.push_state(&state.inner); self.metrics.outputs.push_state(&state.inner); + self.metrics.activity.push_state(&state.inner); self.metrics.realized.push_state(&state.inner); } } diff --git a/crates/brk_computer/src/distribution/cohorts/utxo/groups.rs b/crates/brk_computer/src/distribution/cohorts/utxo/groups.rs index 0f31d8c97..e45a4e103 100644 --- a/crates/brk_computer/src/distribution/cohorts/utxo/groups.rs +++ b/crates/brk_computer/src/distribution/cohorts/utxo/groups.rs @@ -540,8 +540,7 @@ impl UTXOCohorts { .age_range .under_1h .metrics - .realized - .minimal + .activity .transfer_volume .base .cents diff --git a/crates/brk_computer/src/distribution/cohorts/utxo/vecs/minimal.rs b/crates/brk_computer/src/distribution/cohorts/utxo/vecs/minimal.rs index 77cb24136..a4bb12e2f 100644 --- a/crates/brk_computer/src/distribution/cohorts/utxo/vecs/minimal.rs +++ b/crates/brk_computer/src/distribution/cohorts/utxo/vecs/minimal.rs @@ -39,6 +39,7 @@ impl DynCohortVecs for UTXOCohortVecs { if let Some(state) = self.state.as_ref() { self.metrics.supply.push_state(state); self.metrics.outputs.push_state(state); + self.metrics.activity.push_state(state); self.metrics.realized.push_state(state); } } diff --git a/crates/brk_computer/src/distribution/cohorts/utxo/vecs/type.rs b/crates/brk_computer/src/distribution/cohorts/utxo/vecs/type.rs index b3872bd58..c0996f7a9 100644 --- a/crates/brk_computer/src/distribution/cohorts/utxo/vecs/type.rs +++ b/crates/brk_computer/src/distribution/cohorts/utxo/vecs/type.rs @@ -36,6 +36,7 @@ impl DynCohortVecs for UTXOCohortVecs { if let Some(state) = self.state.as_ref() { self.metrics.supply.push_state(state); self.metrics.outputs.push_state(state); + self.metrics.activity.push_state(state); self.metrics.realized.push_state(state); } } diff --git a/crates/brk_computer/src/distribution/metrics/activity/core.rs b/crates/brk_computer/src/distribution/metrics/activity/core.rs index 170852732..846c71f9c 100644 --- a/crates/brk_computer/src/distribution/metrics/activity/core.rs +++ b/crates/brk_computer/src/distribution/metrics/activity/core.rs @@ -1,6 +1,7 @@ use brk_error::Result; use brk_traversable::Traversable; use brk_types::{Bitcoin, Indexes, StoredF64, Version}; +use derive_more::{Deref, DerefMut}; use vecdb::{AnyStoredVec, AnyVec, Exit, Rw, StorageMode, WritableVec}; use crate::{ @@ -9,9 +10,15 @@ use crate::{ prices, }; -#[derive(Traversable)] +use super::ActivityMinimal; + +#[derive(Deref, DerefMut, Traversable)] pub struct ActivityCore { - pub transfer_volume: AmountPerBlockCumulativeWithSums, + #[deref] + #[deref_mut] + #[traversable(flatten)] + pub minimal: ActivityMinimal, + pub coindays_destroyed: PerBlockCumulativeWithSums, #[traversable(wrap = "transfer_volume", rename = "in_profit")] pub transfer_volume_in_profit: AmountPerBlockCumulativeWithSums, @@ -23,7 +30,7 @@ impl ActivityCore { pub(crate) fn forced_import(cfg: &ImportConfig) -> Result { let v1 = Version::ONE; Ok(Self { - transfer_volume: cfg.import("transfer_volume", v1)?, + minimal: ActivityMinimal::forced_import(cfg)?, coindays_destroyed: cfg.import("coindays_destroyed", v1)?, transfer_volume_in_profit: cfg.import("transfer_volume_in_profit", v1)?, transfer_volume_in_loss: cfg.import("transfer_volume_in_loss", v1)?, @@ -31,11 +38,8 @@ impl ActivityCore { } pub(crate) fn min_len(&self) -> usize { - self.transfer_volume - .base - .sats - .height - .len() + self.minimal + .min_len() .min(self.coindays_destroyed.base.height.len()) .min(self.transfer_volume_in_profit.base.sats.height.len()) .min(self.transfer_volume_in_loss.base.sats.height.len()) @@ -46,7 +50,7 @@ impl ActivityCore { &mut self, state: &CohortState, ) { - self.transfer_volume.base.sats.height.push(state.sent); + self.minimal.push_state(state); self.coindays_destroyed.base.height.push( StoredF64::from(Bitcoin::from(state.satdays_destroyed)), ); @@ -63,15 +67,13 @@ impl ActivityCore { } pub(crate) fn collect_vecs_mut(&mut self) -> Vec<&mut dyn AnyStoredVec> { - vec![ - &mut self.transfer_volume.base.sats.height as &mut dyn AnyStoredVec, - &mut self.transfer_volume.base.cents.height, - &mut self.coindays_destroyed.base.height, - &mut self.transfer_volume_in_profit.base.sats.height, - &mut self.transfer_volume_in_profit.base.cents.height, - &mut self.transfer_volume_in_loss.base.sats.height, - &mut self.transfer_volume_in_loss.base.cents.height, - ] + let mut vecs = self.minimal.collect_vecs_mut(); + vecs.push(&mut self.coindays_destroyed.base.height); + vecs.push(&mut self.transfer_volume_in_profit.base.sats.height); + vecs.push(&mut self.transfer_volume_in_profit.base.cents.height); + vecs.push(&mut self.transfer_volume_in_loss.base.sats.height); + vecs.push(&mut self.transfer_volume_in_loss.base.cents.height); + vecs } pub(crate) fn validate_computed_versions(&mut self, _base_version: Version) -> Result<()> { @@ -84,14 +86,9 @@ impl ActivityCore { others: &[&Self], exit: &Exit, ) -> Result<()> { - self.transfer_volume.base.sats.height.compute_sum_of_others( - starting_indexes.height, - &others - .iter() - .map(|v| &v.transfer_volume.base.sats.height) - .collect::>(), - exit, - )?; + let minimal_refs: Vec<&ActivityMinimal> = others.iter().map(|o| &o.minimal).collect(); + self.minimal + .compute_from_stateful(starting_indexes, &minimal_refs, exit)?; sum_others!(self, starting_indexes, others, exit; coindays_destroyed.base.height); sum_others!(self, starting_indexes, others, exit; transfer_volume_in_profit.base.sats.height); @@ -106,8 +103,8 @@ impl ActivityCore { starting_indexes: &Indexes, exit: &Exit, ) -> Result<()> { - self.transfer_volume - .compute_rest(starting_indexes.height, prices, exit)?; + self.minimal + .compute_rest_part1(prices, starting_indexes, exit)?; self.coindays_destroyed .compute_rest(starting_indexes.height, exit)?; Ok(()) diff --git a/crates/brk_computer/src/distribution/metrics/activity/full.rs b/crates/brk_computer/src/distribution/metrics/activity/full.rs index aa1d06c41..e9f417119 100644 --- a/crates/brk_computer/src/distribution/metrics/activity/full.rs +++ b/crates/brk_computer/src/distribution/metrics/activity/full.rs @@ -1,10 +1,10 @@ use brk_error::Result; use brk_traversable::Traversable; -use brk_types::{Bitcoin, Indexes, StoredF32, StoredF64, Version}; +use brk_types::{Indexes, StoredF32, StoredF64, Version}; use derive_more::{Deref, DerefMut}; use vecdb::{AnyStoredVec, Exit, ReadableCloneableVec, Rw, StorageMode}; -use crate::internal::{Identity, LazyPerBlock, PerBlock}; +use crate::internal::{Identity, LazyPerBlock, PerBlock, Windows}; use crate::{ distribution::{metrics::ImportConfig, state::{CohortState, CostBasisOps, RealizedOps}}, @@ -22,7 +22,7 @@ pub struct ActivityFull { pub coinyears_destroyed: LazyPerBlock, - pub dormancy: PerBlock, + pub dormancy: Windows>, } impl ActivityFull { @@ -37,10 +37,19 @@ impl ActivityFull { cfg.indexes, ); + let dormancy = Windows::try_from_fn(|suffix| { + PerBlock::forced_import( + cfg.db, + &cfg.name(&format!("dormancy_{suffix}")), + cfg.version + v1, + cfg.indexes, + ) + })?; + Ok(Self { inner, coinyears_destroyed, - dormancy: cfg.import("dormancy", v1)?, + dormancy, }) } @@ -58,7 +67,9 @@ impl ActivityFull { pub(crate) fn collect_vecs_mut(&mut self) -> Vec<&mut dyn AnyStoredVec> { let mut vecs = self.inner.collect_vecs_mut(); - vecs.push(&mut self.dormancy.height); + for d in self.dormancy.as_mut_array() { + vecs.push(&mut d.height); + } vecs } @@ -86,20 +97,28 @@ impl ActivityFull { starting_indexes: &Indexes, exit: &Exit, ) -> Result<()> { - self.dormancy.height.compute_transform2( - starting_indexes.height, - &self.inner.coindays_destroyed.base.height, - &self.inner.transfer_volume.base.sats.height, - |(i, cdd, sent_sats, ..)| { - let sent_btc = f64::from(Bitcoin::from(sent_sats)); - if sent_btc == 0.0 { - (i, StoredF32::from(0.0f32)) - } else { - (i, StoredF32::from((f64::from(cdd) / sent_btc) as f32)) - } - }, - exit, - )?; + for ((dormancy, cdd_sum), tv_sum) in self + .dormancy + .as_mut_array() + .into_iter() + .zip(self.inner.coindays_destroyed.sum.as_array()) + .zip(self.inner.minimal.transfer_volume.sum.0.as_array()) + { + dormancy.height.compute_transform2( + starting_indexes.height, + &cdd_sum.height, + &tv_sum.btc.height, + |(i, rolling_cdd, rolling_btc, ..)| { + let btc = f64::from(rolling_btc); + if btc == 0.0 { + (i, StoredF32::from(0.0f32)) + } else { + (i, StoredF32::from((f64::from(rolling_cdd) / btc) as f32)) + } + }, + exit, + )?; + } Ok(()) } diff --git a/crates/brk_computer/src/distribution/metrics/activity/minimal.rs b/crates/brk_computer/src/distribution/metrics/activity/minimal.rs new file mode 100644 index 000000000..57f0409f7 --- /dev/null +++ b/crates/brk_computer/src/distribution/metrics/activity/minimal.rs @@ -0,0 +1,76 @@ +use brk_error::Result; +use brk_traversable::Traversable; +use brk_types::{Indexes, Version}; +use vecdb::{AnyStoredVec, AnyVec, Exit, Rw, StorageMode, WritableVec}; + +use crate::{ + distribution::{metrics::ImportConfig, state::{CohortState, CostBasisOps, RealizedOps}}, + internal::AmountPerBlockCumulativeWithSums, + prices, +}; + +#[derive(Traversable)] +pub struct ActivityMinimal { + pub transfer_volume: AmountPerBlockCumulativeWithSums, +} + +impl ActivityMinimal { + pub(crate) fn forced_import(cfg: &ImportConfig) -> Result { + let v1 = Version::ONE; + Ok(Self { + transfer_volume: cfg.import("transfer_volume", v1)?, + }) + } + + pub(crate) fn min_len(&self) -> usize { + self.transfer_volume + .base + .sats + .height + .len() + } + + #[inline(always)] + pub(crate) fn push_state( + &mut self, + state: &CohortState, + ) { + self.transfer_volume.base.sats.height.push(state.sent); + } + + pub(crate) fn collect_vecs_mut(&mut self) -> Vec<&mut dyn AnyStoredVec> { + vec![ + &mut self.transfer_volume.base.sats.height as &mut dyn AnyStoredVec, + &mut self.transfer_volume.base.cents.height, + ] + } + + pub(crate) fn compute_from_stateful( + &mut self, + starting_indexes: &Indexes, + others: &[&Self], + exit: &Exit, + ) -> Result<()> { + self.transfer_volume.base.sats.height.compute_sum_of_others( + starting_indexes.height, + &others + .iter() + .map(|v| &v.transfer_volume.base.sats.height) + .collect::>(), + exit, + )?; + + Ok(()) + } + + pub(crate) fn compute_rest_part1( + &mut self, + prices: &prices::Vecs, + starting_indexes: &Indexes, + exit: &Exit, + ) -> Result<()> { + self.transfer_volume + .compute_rest(starting_indexes.height, prices, exit)?; + Ok(()) + } +} diff --git a/crates/brk_computer/src/distribution/metrics/activity/mod.rs b/crates/brk_computer/src/distribution/metrics/activity/mod.rs index b610f436b..b61dd56f6 100644 --- a/crates/brk_computer/src/distribution/metrics/activity/mod.rs +++ b/crates/brk_computer/src/distribution/metrics/activity/mod.rs @@ -1,8 +1,10 @@ mod core; mod full; +mod minimal; pub use self::core::ActivityCore; pub use full::ActivityFull; +pub use minimal::ActivityMinimal; use brk_error::Result; use brk_types::{Indexes, Version}; diff --git a/crates/brk_computer/src/distribution/metrics/cohort/all.rs b/crates/brk_computer/src/distribution/metrics/cohort/all.rs index b413f27d8..03a2f6bdf 100644 --- a/crates/brk_computer/src/distribution/metrics/cohort/all.rs +++ b/crates/brk_computer/src/distribution/metrics/cohort/all.rs @@ -116,6 +116,7 @@ impl AllCohortMetrics { starting_indexes, &self.supply.total.btc.height, height_to_market_cap, + &self.activity.transfer_volume, exit, )?; @@ -128,7 +129,7 @@ impl AllCohortMetrics { self.asopr.compute_rest_part2( starting_indexes, - &self.realized.minimal.transfer_volume.base.cents.height, + &self.activity.transfer_volume.base.cents.height, &self.realized.core.sopr.value_destroyed.base.height, under_1h_value_created, under_1h_value_destroyed, diff --git a/crates/brk_computer/src/distribution/metrics/cohort/basic.rs b/crates/brk_computer/src/distribution/metrics/cohort/basic.rs index 7f454635c..1e4b66aee 100644 --- a/crates/brk_computer/src/distribution/metrics/cohort/basic.rs +++ b/crates/brk_computer/src/distribution/metrics/cohort/basic.rs @@ -75,6 +75,7 @@ impl BasicCohortMetrics { prices, starting_indexes, &self.supply.total.btc.height, + &self.activity.transfer_volume.sum._24h.cents.height, exit, )?; diff --git a/crates/brk_computer/src/distribution/metrics/cohort/core.rs b/crates/brk_computer/src/distribution/metrics/cohort/core.rs index 3f0e73d26..8a2366784 100644 --- a/crates/brk_computer/src/distribution/metrics/cohort/core.rs +++ b/crates/brk_computer/src/distribution/metrics/cohort/core.rs @@ -63,7 +63,7 @@ impl CoreCohortMetrics { vecs } - /// Aggregate Core-tier fields from CohortMetricsBase sources (e.g. age_range → under_age/over_age). + /// Aggregate Core-tier fields from CohortMetricsBase sources (e.g. age_range -> under_age/over_age). pub(crate) fn compute_from_base_sources( &mut self, starting_indexes: &Indexes, @@ -114,7 +114,7 @@ impl CoreCohortMetrics { .compute_sent_profitability(prices, starting_indexes, exit)?; self.realized - .compute_rest_part1(prices, starting_indexes, exit)?; + .compute_rest_part1(starting_indexes, exit)?; self.unrealized.compute_rest(starting_indexes, exit)?; @@ -132,6 +132,7 @@ impl CoreCohortMetrics { prices, starting_indexes, &self.supply.total.btc.height, + &self.activity.transfer_volume.sum._24h.cents.height, exit, )?; diff --git a/crates/brk_computer/src/distribution/metrics/cohort/extended.rs b/crates/brk_computer/src/distribution/metrics/cohort/extended.rs index 7d0037bdd..784e9a857 100644 --- a/crates/brk_computer/src/distribution/metrics/cohort/extended.rs +++ b/crates/brk_computer/src/distribution/metrics/cohort/extended.rs @@ -103,6 +103,7 @@ impl ExtendedCohortMetrics { starting_indexes, &self.supply.total.btc.height, height_to_market_cap, + &self.activity.transfer_volume, exit, )?; diff --git a/crates/brk_computer/src/distribution/metrics/cohort/extended_adjusted.rs b/crates/brk_computer/src/distribution/metrics/cohort/extended_adjusted.rs index 17de52390..fdc753fac 100644 --- a/crates/brk_computer/src/distribution/metrics/cohort/extended_adjusted.rs +++ b/crates/brk_computer/src/distribution/metrics/cohort/extended_adjusted.rs @@ -80,7 +80,7 @@ impl ExtendedAdjustedCohortMetrics { self.asopr.compute_rest_part2( starting_indexes, - &self.inner.realized.minimal.transfer_volume.base.cents.height, + &self.inner.activity.transfer_volume.base.cents.height, &self.inner.realized.core.sopr.value_destroyed.base.height, under_1h_value_created, under_1h_value_destroyed, diff --git a/crates/brk_computer/src/distribution/metrics/cohort/minimal.rs b/crates/brk_computer/src/distribution/metrics/cohort/minimal.rs index 0b8ca8972..47c2b1563 100644 --- a/crates/brk_computer/src/distribution/metrics/cohort/minimal.rs +++ b/crates/brk_computer/src/distribution/metrics/cohort/minimal.rs @@ -6,7 +6,7 @@ use vecdb::{AnyStoredVec, Exit, Rw, StorageMode}; use crate::{ distribution::metrics::{ - ImportConfig, OutputsBase, RealizedMinimal, SupplyBase, UnrealizedMinimal, + ActivityMinimal, ImportConfig, OutputsBase, RealizedMinimal, SupplyBase, UnrealizedMinimal, }, prices, }; @@ -21,6 +21,7 @@ pub struct MinimalCohortMetrics { pub filter: Filter, pub supply: Box>, pub outputs: Box>, + pub activity: Box>, pub realized: Box>, pub unrealized: Box>, } @@ -31,6 +32,7 @@ impl MinimalCohortMetrics { filter: cfg.filter.clone(), supply: Box::new(SupplyBase::forced_import(cfg)?), outputs: Box::new(OutputsBase::forced_import(cfg)?), + activity: Box::new(ActivityMinimal::forced_import(cfg)?), realized: Box::new(RealizedMinimal::forced_import(cfg)?), unrealized: Box::new(UnrealizedMinimal::forced_import(cfg)?), }) @@ -40,6 +42,7 @@ impl MinimalCohortMetrics { self.supply .min_len() .min(self.outputs.min_len()) + .min(self.activity.min_len()) .min(self.realized.min_stateful_len()) } @@ -47,6 +50,7 @@ impl MinimalCohortMetrics { let mut vecs: Vec<&mut dyn AnyStoredVec> = Vec::new(); vecs.extend(self.supply.collect_vecs_mut()); vecs.extend(self.outputs.collect_vecs_mut()); + vecs.extend(self.activity.collect_vecs_mut()); vecs.extend(self.realized.collect_vecs_mut()); vecs } @@ -71,6 +75,14 @@ impl MinimalCohortMetrics { .collect::>(), exit, )?; + self.activity.compute_from_stateful( + starting_indexes, + &others + .iter() + .map(|v| v.activity.as_ref()) + .collect::>(), + exit, + )?; self.realized.compute_from_stateful( starting_indexes, &others @@ -89,8 +101,10 @@ impl MinimalCohortMetrics { exit: &Exit, ) -> Result<()> { self.supply.compute(prices, starting_indexes.height, exit)?; - self.realized + self.activity .compute_rest_part1(prices, starting_indexes, exit)?; + self.realized + .compute_rest_part1(starting_indexes, exit)?; Ok(()) } diff --git a/crates/brk_computer/src/distribution/metrics/cohort/type.rs b/crates/brk_computer/src/distribution/metrics/cohort/type.rs index 2936b06aa..18e8a9567 100644 --- a/crates/brk_computer/src/distribution/metrics/cohort/type.rs +++ b/crates/brk_computer/src/distribution/metrics/cohort/type.rs @@ -6,7 +6,7 @@ use vecdb::{AnyStoredVec, Exit, Rw, StorageMode}; use crate::{ distribution::metrics::{ - ImportConfig, OutputsBase, RealizedMinimal, SupplyCore, UnrealizedBasic, + ActivityMinimal, ImportConfig, OutputsBase, RealizedMinimal, SupplyCore, UnrealizedBasic, }, prices, }; @@ -20,6 +20,7 @@ pub struct TypeCohortMetrics { pub filter: Filter, pub supply: Box>, pub outputs: Box>, + pub activity: Box>, pub realized: Box>, pub unrealized: Box>, } @@ -30,6 +31,7 @@ impl TypeCohortMetrics { filter: cfg.filter.clone(), supply: Box::new(SupplyCore::forced_import(cfg)?), outputs: Box::new(OutputsBase::forced_import(cfg)?), + activity: Box::new(ActivityMinimal::forced_import(cfg)?), realized: Box::new(RealizedMinimal::forced_import(cfg)?), unrealized: Box::new(UnrealizedBasic::forced_import(cfg)?), }) @@ -39,6 +41,7 @@ impl TypeCohortMetrics { self.supply .min_len() .min(self.outputs.min_len()) + .min(self.activity.min_len()) .min(self.realized.min_stateful_len()) .min(self.unrealized.min_stateful_len()) } @@ -47,6 +50,7 @@ impl TypeCohortMetrics { let mut vecs: Vec<&mut dyn AnyStoredVec> = Vec::new(); vecs.extend(self.supply.collect_vecs_mut()); vecs.extend(self.outputs.collect_vecs_mut()); + vecs.extend(self.activity.collect_vecs_mut()); vecs.extend(self.realized.collect_vecs_mut()); vecs.extend(self.unrealized.collect_vecs_mut()); vecs @@ -59,8 +63,10 @@ impl TypeCohortMetrics { exit: &Exit, ) -> Result<()> { self.supply.compute(prices, starting_indexes.height, exit)?; - self.realized + self.activity .compute_rest_part1(prices, starting_indexes, exit)?; + self.realized + .compute_rest_part1(starting_indexes, exit)?; Ok(()) } diff --git a/crates/brk_computer/src/distribution/metrics/mod.rs b/crates/brk_computer/src/distribution/metrics/mod.rs index b97a56605..1f3c2cbe8 100644 --- a/crates/brk_computer/src/distribution/metrics/mod.rs +++ b/crates/brk_computer/src/distribution/metrics/mod.rs @@ -64,7 +64,7 @@ mod relative; mod supply; mod unrealized; -pub use activity::{ActivityCore, ActivityFull, ActivityLike}; +pub use activity::{ActivityCore, ActivityFull, ActivityLike, ActivityMinimal}; pub use cohort::{ AllCohortMetrics, BasicCohortMetrics, CoreCohortMetrics, ExtendedAdjustedCohortMetrics, ExtendedCohortMetrics, MinimalCohortMetrics, TypeCohortMetrics, @@ -228,7 +228,7 @@ pub trait CohortMetricsBase: .compute_sent_profitability(prices, starting_indexes, exit)?; self.realized_mut() - .compute_rest_part1(prices, starting_indexes, exit)?; + .compute_rest_part1(starting_indexes, exit)?; self.unrealized_mut() .compute_rest(prices, starting_indexes, exit)?; diff --git a/crates/brk_computer/src/distribution/metrics/realized/core.rs b/crates/brk_computer/src/distribution/metrics/realized/core.rs index 7cc929863..10de3f027 100644 --- a/crates/brk_computer/src/distribution/metrics/realized/core.rs +++ b/crates/brk_computer/src/distribution/metrics/realized/core.rs @@ -132,12 +132,11 @@ impl RealizedCore { pub(crate) fn compute_rest_part1( &mut self, - prices: &prices::Vecs, starting_indexes: &Indexes, exit: &Exit, ) -> Result<()> { self.minimal - .compute_rest_part1(prices, starting_indexes, exit)?; + .compute_rest_part1(starting_indexes, exit)?; self.sopr .value_destroyed @@ -164,6 +163,7 @@ impl RealizedCore { prices: &prices::Vecs, starting_indexes: &Indexes, height_to_supply: &impl ReadableVec, + transfer_volume_sum_24h_cents: &impl ReadableVec, exit: &Exit, ) -> Result<()> { self.minimal @@ -177,7 +177,7 @@ impl RealizedCore { ._24h .compute_binary::( starting_indexes.height, - &self.minimal.transfer_volume.sum._24h.cents.height, + transfer_volume_sum_24h_cents, &self.sopr.value_destroyed.sum._24h.height, exit, )?; diff --git a/crates/brk_computer/src/distribution/metrics/realized/full.rs b/crates/brk_computer/src/distribution/metrics/realized/full.rs index e8ebf770e..3073f6d35 100644 --- a/crates/brk_computer/src/distribution/metrics/realized/full.rs +++ b/crates/brk_computer/src/distribution/metrics/realized/full.rs @@ -5,18 +5,14 @@ use brk_types::{ Dollars, Height, Indexes, StoredF64, Version, }; use derive_more::{Deref, DerefMut}; -use vecdb::{ - AnyStoredVec, AnyVec, BytesVec, Exit, ReadableVec, Rw, StorageMode, - WritableVec, -}; +use vecdb::{AnyStoredVec, AnyVec, BytesVec, Exit, ReadableVec, Rw, StorageMode, WritableVec}; use crate::{ blocks, - distribution::state::{WithCapital, CohortState, CostBasisData, RealizedState}, + distribution::state::{CohortState, CostBasisData, RealizedState, WithCapital}, internal::{ - FiatPerBlockCumulativeWithSums, - PercentPerBlock, PercentRollingWindows, - PriceWithRatioExtendedPerBlock, RatioCents64, RatioCentsBp32, + AmountPerBlockCumulativeWithSums, FiatPerBlockCumulativeWithSums, PercentPerBlock, + PercentRollingWindows, PriceWithRatioExtendedPerBlock, RatioCents64, RatioCentsBp32, RatioCentsSignedCentsBps32, RatioCentsSignedDollarsBps32, RatioDollarsBp32, RatioPerBlockPercentiles, RatioPerBlockStdDevBands, RatioSma, RollingWindows, RollingWindowsFrom1w, @@ -119,12 +115,9 @@ 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))?, + 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))?, }; // SOPR @@ -135,8 +128,7 @@ impl RealizedFull { // Peak regret let peak_regret = RealizedPeakRegret { value: cfg.import("realized_peak_regret", Version::new(2))?, - to_rcap: cfg - .import("realized_peak_regret_to_rcap", Version::new(2))?, + to_rcap: cfg.import("realized_peak_regret_to_rcap", Version::new(2))?, }; // Investor @@ -184,7 +176,11 @@ impl RealizedFull { } pub(crate) fn min_stateful_len(&self) -> usize { - self.investor.price.cents.height.len() + self.investor + .price + .cents + .height + .len() .min(self.cap_raw.len()) .min(self.investor.cap_raw.len()) .min(self.peak_regret.value.base.cents.height.len()) @@ -201,8 +197,7 @@ impl RealizedFull { .cents .height .push(state.realized.investor_price()); - self.cap_raw - .push(state.realized.cap_raw()); + self.cap_raw.push(state.realized.cap_raw()); self.investor .cap_raw .push(state.realized.investor_cap_raw()); @@ -236,15 +231,9 @@ impl RealizedFull { } #[inline(always)] - pub(crate) fn push_accum( - &mut self, - accum: &RealizedFullAccum, - ) { - self.cap_raw - .push(accum.cap_raw); - self.investor - .cap_raw - .push(accum.investor_cap_raw); + pub(crate) fn push_accum(&mut self, accum: &RealizedFullAccum) { + self.cap_raw.push(accum.cap_raw); + self.investor.cap_raw.push(accum.investor_cap_raw); let investor_price = { let cap = accum.cap_raw.as_u128(); @@ -254,11 +243,7 @@ impl RealizedFull { Cents::new((accum.investor_cap_raw / cap) as u64) } }; - self.investor - .price - .cents - .height - .push(investor_price); + self.investor.price.cents.height.push(investor_price); self.peak_regret .value @@ -270,12 +255,10 @@ impl RealizedFull { pub(crate) fn compute_rest_part1( &mut self, - prices: &prices::Vecs, starting_indexes: &Indexes, exit: &Exit, ) -> Result<()> { - self.core - .compute_rest_part1(prices, starting_indexes, exit)?; + self.core.compute_rest_part1(starting_indexes, exit)?; self.peak_regret .value @@ -283,6 +266,7 @@ impl RealizedFull { Ok(()) } + #[allow(clippy::too_many_arguments)] pub(crate) fn compute_rest_part2( &mut self, blocks: &blocks::Vecs, @@ -290,22 +274,24 @@ impl RealizedFull { starting_indexes: &Indexes, height_to_supply: &impl ReadableVec, height_to_market_cap: &impl ReadableVec, + activity_transfer_volume: &AmountPerBlockCumulativeWithSums, exit: &Exit, ) -> Result<()> { self.core.compute_rest_part2( prices, starting_indexes, height_to_supply, + &activity_transfer_volume.sum._24h.cents.height, exit, )?; - // SOPR ratios from lazy rolling sums + // SOPR ratios from lazy rolling sums (1w, 1m, 1y) for ((sopr, vc), vd) in self .sopr .ratio_extended .as_mut_array() .into_iter() - .zip(self.core.minimal.transfer_volume.sum.0.as_array()[1..].iter()) + .zip(activity_transfer_volume.sum.0.as_array()[1..].iter()) .zip(self.core.sopr.value_destroyed.sum.as_array()[1..].iter()) { sopr.compute_binary::( @@ -349,8 +335,7 @@ impl RealizedFull { &self.core.minimal.loss.base.cents.height, exit, )?; - self.gross_pnl - .compute_rest(starting_indexes.height, exit)?; + self.gross_pnl.compute_rest(starting_indexes.height, exit)?; // Net PnL 1m change relative to rcap and mcap self.net_pnl @@ -381,11 +366,9 @@ impl RealizedFull { )?; // Investor price ratio, percentiles and bands - self.investor.price.compute_rest( - prices, - starting_indexes, - exit, - )?; + self.investor + .price + .compute_rest(prices, starting_indexes, exit)?; // Sell-side risk ratios for (ssrr, rv) in self diff --git a/crates/brk_computer/src/distribution/metrics/realized/minimal.rs b/crates/brk_computer/src/distribution/metrics/realized/minimal.rs index 1b35404f6..9f049a5a1 100644 --- a/crates/brk_computer/src/distribution/metrics/realized/minimal.rs +++ b/crates/brk_computer/src/distribution/metrics/realized/minimal.rs @@ -11,7 +11,7 @@ use vecdb::{ use crate::{ distribution::state::{CohortState, CostBasisOps, RealizedOps}, internal::{ - AmountPerBlockCumulativeWithSums, FiatPerBlockCumulativeWithSums, + FiatPerBlockCumulativeWithSums, FiatPerBlockWithDeltas, Identity, LazyPerBlock, PriceWithRatioPerBlock, }, prices, @@ -26,8 +26,6 @@ pub struct RealizedMinimal { pub loss: FiatPerBlockCumulativeWithSums, pub price: PriceWithRatioPerBlock, pub mvrv: LazyPerBlock, - - pub transfer_volume: AmountPerBlockCumulativeWithSums, } impl RealizedMinimal { @@ -50,21 +48,12 @@ impl RealizedMinimal { &price.ratio, ); - let transfer_volume = AmountPerBlockCumulativeWithSums::forced_import( - cfg.db, - &cfg.name("transfer_volume"), - cfg.version, - cfg.indexes, - cfg.cached_starts, - )?; - Ok(Self { cap, profit: cfg.import("realized_profit", v1)?, loss: cfg.import("realized_loss", v1)?, price, mvrv, - transfer_volume, }) } @@ -75,7 +64,6 @@ impl RealizedMinimal { .len() .min(self.profit.base.cents.height.len()) .min(self.loss.base.cents.height.len()) - .min(self.transfer_volume.base.sats.height.len()) } #[inline(always)] @@ -83,7 +71,6 @@ impl RealizedMinimal { self.cap.cents.height.push(state.realized.cap()); self.profit.base.cents.height.push(state.realized.profit()); self.loss.base.cents.height.push(state.realized.loss()); - self.transfer_volume.base.sats.height.push(state.sent); } pub(crate) fn collect_vecs_mut(&mut self) -> Vec<&mut dyn AnyStoredVec> { @@ -91,7 +78,6 @@ impl RealizedMinimal { &mut self.cap.cents.height as &mut dyn AnyStoredVec, &mut self.profit.base.cents.height, &mut self.loss.base.cents.height, - &mut self.transfer_volume.base.sats.height, ] } @@ -104,20 +90,16 @@ impl RealizedMinimal { sum_others!(self, starting_indexes, others, exit; cap.cents.height); sum_others!(self, starting_indexes, others, exit; profit.base.cents.height); sum_others!(self, starting_indexes, others, exit; loss.base.cents.height); - sum_others!(self, starting_indexes, others, exit; transfer_volume.base.sats.height); Ok(()) } pub(crate) fn compute_rest_part1( &mut self, - prices: &prices::Vecs, starting_indexes: &Indexes, exit: &Exit, ) -> Result<()> { self.profit.compute_rest(starting_indexes.height, exit)?; self.loss.compute_rest(starting_indexes.height, exit)?; - self.transfer_volume - .compute_rest(starting_indexes.height, prices, exit)?; Ok(()) } diff --git a/crates/brk_computer/src/distribution/metrics/realized/mod.rs b/crates/brk_computer/src/distribution/metrics/realized/mod.rs index b272c5e40..70e39fe88 100644 --- a/crates/brk_computer/src/distribution/metrics/realized/mod.rs +++ b/crates/brk_computer/src/distribution/metrics/realized/mod.rs @@ -12,14 +12,14 @@ use brk_error::Result; use brk_types::Indexes; use vecdb::Exit; -use crate::{distribution::state::{WithCapital, CohortState, CostBasisData, RealizedState}, prices}; +use crate::distribution::state::{WithCapital, CohortState, CostBasisData, RealizedState}; pub trait RealizedLike: Send + Sync { fn as_core(&self) -> &RealizedCore; fn as_core_mut(&mut self) -> &mut RealizedCore; fn min_stateful_len(&self) -> usize; fn push_state(&mut self, state: &CohortState>); - fn compute_rest_part1(&mut self, prices: &prices::Vecs, starting_indexes: &Indexes, exit: &Exit) -> Result<()>; + fn compute_rest_part1(&mut self, starting_indexes: &Indexes, exit: &Exit) -> Result<()>; fn compute_from_stateful( &mut self, starting_indexes: &Indexes, @@ -36,8 +36,8 @@ impl RealizedLike for RealizedCore { fn push_state(&mut self, state: &CohortState>) { self.push_state(state) } - fn compute_rest_part1(&mut self, prices: &prices::Vecs, starting_indexes: &Indexes, exit: &Exit) -> Result<()> { - self.compute_rest_part1(prices, starting_indexes, exit) + fn compute_rest_part1(&mut self, starting_indexes: &Indexes, exit: &Exit) -> Result<()> { + self.compute_rest_part1(starting_indexes, exit) } fn compute_from_stateful(&mut self, starting_indexes: &Indexes, others: &[&RealizedCore], exit: &Exit) -> Result<()> { self.compute_from_stateful(starting_indexes, others, exit) @@ -52,8 +52,8 @@ impl RealizedLike for RealizedFull { fn push_state(&mut self, state: &CohortState>) { self.push_state(state) } - fn compute_rest_part1(&mut self, prices: &prices::Vecs, starting_indexes: &Indexes, exit: &Exit) -> Result<()> { - self.compute_rest_part1(prices, starting_indexes, exit) + fn compute_rest_part1(&mut self, starting_indexes: &Indexes, exit: &Exit) -> Result<()> { + self.compute_rest_part1(starting_indexes, exit) } fn compute_from_stateful(&mut self, starting_indexes: &Indexes, others: &[&RealizedCore], exit: &Exit) -> Result<()> { self.compute_from_stateful(starting_indexes, others, exit) diff --git a/crates/brk_computer/src/distribution/state/cost_basis/realized.rs b/crates/brk_computer/src/distribution/state/cost_basis/realized.rs index e47e08fdc..2f7ea6b50 100644 --- a/crates/brk_computer/src/distribution/state/cost_basis/realized.rs +++ b/crates/brk_computer/src/distribution/state/cost_basis/realized.rs @@ -71,7 +71,6 @@ impl RealizedOps for MinimalRealizedState { Cents::new((self.loss_raw / Sats::ONE_BTC_U128) as u64) } - #[inline] #[inline] fn value_destroyed(&self) -> Cents { if self.value_destroyed_raw == 0 { diff --git a/crates/brk_computer/src/indicators/compute.rs b/crates/brk_computer/src/indicators/compute.rs index 66dbc9344..9fd0b667d 100644 --- a/crates/brk_computer/src/indicators/compute.rs +++ b/crates/brk_computer/src/indicators/compute.rs @@ -128,7 +128,7 @@ impl Vecs { .height .compute_transform2( starting_indexes.height, - &all_activity.dormancy.height, + &all_activity.dormancy._24h.height, supply_total_sats, |(i, dormancy, supply_sats, ..)| { let supply = f64::from(Bitcoin::from(supply_sats)); @@ -164,7 +164,7 @@ impl Vecs { self.dormancy.flow.height.compute_transform2( starting_indexes.height, supply_total_sats, - &all_activity.dormancy.height, + &all_activity.dormancy._24h.height, |(i, supply_sats, dormancy, ..)| { let d = f64::from(dormancy); if d == 0.0 { diff --git a/modules/brk-client/index.js b/modules/brk-client/index.js index a4d3efa79..1e19a3ea4 100644 --- a/modules/brk-client/index.js +++ b/modules/brk-client/index.js @@ -1786,7 +1786,7 @@ function create_10y1m1w1y2y3m3y4y5y6m6y8yPattern3(client, acc) { /** * @typedef {Object} CapGrossInvestorLossMvrvNetPeakPriceProfitSellSoprPattern * @property {CentsDeltaToUsdPattern} cap - * @property {BaseCumulativeSumPattern3} grossPnl + * @property {BaseCumulativeSumPattern4} grossPnl * @property {PricePattern} investor * @property {BaseCumulativeNegativeSumToPattern} loss * @property {SeriesPattern1} mvrv @@ -2095,7 +2095,7 @@ function create_1m1w1y24hBpsPercentRatioPattern(client, acc) { * @property {SeriesPattern1} mvrv * @property {BaseCumulativeDeltaSumPattern} netPnl * @property {BpsCentsRatioSatsUsdPattern} price - * @property {BaseCumulativeSumPattern3} profit + * @property {BaseCumulativeSumPattern4} profit * @property {RatioValuePattern} sopr */ @@ -2112,7 +2112,7 @@ function createCapLossMvrvNetPriceProfitSoprPattern(client, acc) { mvrv: createSeriesPattern1(client, _m(acc, 'mvrv')), netPnl: createBaseCumulativeDeltaSumPattern(client, _m(acc, 'net_realized_pnl')), price: createBpsCentsRatioSatsUsdPattern(client, _m(acc, 'realized_price')), - profit: createBaseCumulativeSumPattern3(client, _m(acc, 'realized_profit')), + profit: createBaseCumulativeSumPattern4(client, _m(acc, 'realized_profit')), sopr: createRatioValuePattern(client, acc), }; } @@ -2155,13 +2155,40 @@ function create_1m1w1y2y4yAllPattern(client, acc) { }; } +/** + * @typedef {Object} ActivityAddrOutputsRealizedSupplyUnrealizedPattern + * @property {TransferPattern} activity + * @property {BaseDeltaPattern} addrCount + * @property {UnspentPattern} outputs + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {DeltaHalfTotalPattern} supply + * @property {NuplPattern} unrealized + */ + +/** + * Create a ActivityAddrOutputsRealizedSupplyUnrealizedPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated series name + * @returns {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} + */ +function createActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, acc) { + return { + activity: createTransferPattern(client, _m(acc, 'transfer_volume')), + addrCount: createBaseDeltaPattern(client, _m(acc, 'addr_count')), + outputs: createUnspentPattern(client, _m(acc, 'utxo_count')), + realized: createCapLossMvrvPriceProfitPattern(client, acc), + supply: createDeltaHalfTotalPattern(client, _m(acc, 'supply')), + unrealized: createNuplPattern(client, _m(acc, 'nupl')), + }; +} + /** * @typedef {Object} BaseChangeCumulativeDeltaSumToPattern * @property {CentsUsdPattern} base * @property {ToPattern} change1m * @property {CentsUsdPattern} cumulative * @property {AbsoluteRatePattern2} delta - * @property {_1m1w1y24hPattern3} sum + * @property {_1m1w1y24hPattern4} sum * @property {BpsPercentRatioPattern} toRcap */ @@ -2177,7 +2204,7 @@ function createBaseChangeCumulativeDeltaSumToPattern(client, acc) { 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_1m1w1y24hPattern3(client, _m(acc, 'realized_pnl_sum')), + sum: create_1m1w1y24hPattern4(client, _m(acc, 'realized_pnl_sum')), toRcap: createBpsPercentRatioPattern(client, _m(acc, 'realized_pnl_to_rcap')), }; } @@ -2236,33 +2263,6 @@ function createBtcCentsSatsToUsdPattern3(client, acc) { }; } -/** - * @typedef {Object} CapLossMvrvPriceProfitSoprPattern - * @property {CentsDeltaUsdPattern} cap - * @property {BaseCumulativeSumPattern3} loss - * @property {SeriesPattern1} mvrv - * @property {BpsCentsRatioSatsUsdPattern} price - * @property {BaseCumulativeSumPattern3} profit - * @property {ValuePattern} sopr - */ - -/** - * Create a CapLossMvrvPriceProfitSoprPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {CapLossMvrvPriceProfitSoprPattern} - */ -function createCapLossMvrvPriceProfitSoprPattern(client, acc) { - return { - cap: createCentsDeltaUsdPattern(client, _m(acc, 'realized_cap')), - loss: createBaseCumulativeSumPattern3(client, _m(acc, 'realized_loss')), - mvrv: createSeriesPattern1(client, _m(acc, 'mvrv')), - price: createBpsCentsRatioSatsUsdPattern(client, _m(acc, 'realized_price')), - profit: createBaseCumulativeSumPattern3(client, _m(acc, 'realized_profit')), - sopr: createValuePattern(client, _m(acc, 'value')), - }; -} - /** * @typedef {Object} CentsNegativeToUsdPattern2 * @property {SeriesPattern1} cents @@ -2397,25 +2397,50 @@ function createActivityOutputsRealizedSupplyUnrealizedPattern(client, acc) { } /** - * @typedef {Object} AddrOutputsRealizedSupplyUnrealizedPattern - * @property {BaseDeltaPattern} addrCount + * @typedef {Object} ActivityOutputsRealizedSupplyUnrealizedPattern3 + * @property {TransferPattern} activity * @property {UnspentPattern} outputs - * @property {CapLossMvrvPriceProfitSoprPattern} realized + * @property {CapLossMvrvPriceProfitPattern} realized + * @property {DeltaHalfInTotalPattern2} supply + * @property {LossNuplProfitPattern} unrealized + */ + +/** + * Create a ActivityOutputsRealizedSupplyUnrealizedPattern3 pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated series name + * @returns {ActivityOutputsRealizedSupplyUnrealizedPattern3} + */ +function createActivityOutputsRealizedSupplyUnrealizedPattern3(client, acc) { + return { + activity: createTransferPattern(client, _m(acc, 'transfer_volume')), + outputs: createUnspentPattern(client, _m(acc, 'utxo_count')), + realized: createCapLossMvrvPriceProfitPattern(client, acc), + supply: createDeltaHalfInTotalPattern2(client, _m(acc, 'supply')), + unrealized: createLossNuplProfitPattern(client, acc), + }; +} + +/** + * @typedef {Object} ActivityOutputsRealizedSupplyUnrealizedPattern2 + * @property {TransferPattern} activity + * @property {UnspentPattern} outputs + * @property {CapLossMvrvPriceProfitPattern} realized * @property {DeltaHalfTotalPattern} supply * @property {NuplPattern} unrealized */ /** - * Create a AddrOutputsRealizedSupplyUnrealizedPattern pattern node + * Create a ActivityOutputsRealizedSupplyUnrealizedPattern2 pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated series name - * @returns {AddrOutputsRealizedSupplyUnrealizedPattern} + * @returns {ActivityOutputsRealizedSupplyUnrealizedPattern2} */ -function createAddrOutputsRealizedSupplyUnrealizedPattern(client, acc) { +function createActivityOutputsRealizedSupplyUnrealizedPattern2(client, acc) { return { - addrCount: createBaseDeltaPattern(client, _m(acc, 'addr_count')), + activity: createTransferPattern(client, _m(acc, 'transfer_volume')), outputs: createUnspentPattern(client, _m(acc, 'utxo_count')), - realized: createCapLossMvrvPriceProfitSoprPattern(client, acc), + realized: createCapLossMvrvPriceProfitPattern(client, acc), supply: createDeltaHalfTotalPattern(client, _m(acc, 'supply')), unrealized: createNuplPattern(client, _m(acc, 'nupl')), }; @@ -2425,9 +2450,9 @@ function createAddrOutputsRealizedSupplyUnrealizedPattern(client, acc) { * @typedef {Object} BaseCumulativeInSumPattern * @property {BtcCentsSatsUsdPattern} base * @property {BtcCentsSatsUsdPattern} cumulative - * @property {BaseCumulativeSumPattern4} inLoss - * @property {BaseCumulativeSumPattern4} inProfit - * @property {_1m1w1y24hPattern5} sum + * @property {BaseCumulativeSumPattern3} inLoss + * @property {BaseCumulativeSumPattern3} inProfit + * @property {_1m1w1y24hPattern3} sum */ /** @@ -2440,9 +2465,9 @@ function createBaseCumulativeInSumPattern(client, acc) { return { base: createBtcCentsSatsUsdPattern(client, acc), cumulative: createBtcCentsSatsUsdPattern(client, _m(acc, 'cumulative')), - inLoss: createBaseCumulativeSumPattern4(client, _m(acc, 'in_loss')), - inProfit: createBaseCumulativeSumPattern4(client, _m(acc, 'in_profit')), - sum: create_1m1w1y24hPattern5(client, _m(acc, 'sum')), + inLoss: createBaseCumulativeSumPattern3(client, _m(acc, 'in_loss')), + inProfit: createBaseCumulativeSumPattern3(client, _m(acc, 'in_profit')), + sum: create_1m1w1y24hPattern3(client, _m(acc, 'sum')), }; } @@ -2451,7 +2476,7 @@ function createBaseCumulativeInSumPattern(client, acc) { * @property {CentsUsdPattern2} base * @property {CentsUsdPattern2} cumulative * @property {BaseSumPattern} negative - * @property {_1m1w1y24hPattern4} sum + * @property {_1m1w1y24hPattern5} sum * @property {BpsPercentRatioPattern4} toRcap */ @@ -2555,6 +2580,31 @@ function createBtcCentsSatsToUsdPattern2(client, acc) { }; } +/** + * @typedef {Object} CapLossMvrvPriceProfitPattern + * @property {CentsDeltaUsdPattern} cap + * @property {BaseCumulativeSumPattern4} loss + * @property {SeriesPattern1} mvrv + * @property {BpsCentsRatioSatsUsdPattern} price + * @property {BaseCumulativeSumPattern4} profit + */ + +/** + * Create a CapLossMvrvPriceProfitPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated series name + * @returns {CapLossMvrvPriceProfitPattern} + */ +function createCapLossMvrvPriceProfitPattern(client, acc) { + return { + cap: createCentsDeltaUsdPattern(client, _m(acc, 'realized_cap')), + loss: createBaseCumulativeSumPattern4(client, _m(acc, 'realized_loss')), + mvrv: createSeriesPattern1(client, _m(acc, 'mvrv')), + price: createBpsCentsRatioSatsUsdPattern(client, _m(acc, 'realized_price')), + profit: createBaseCumulativeSumPattern4(client, _m(acc, 'realized_profit')), + }; +} + /** * @typedef {Object} CentsToUsdPattern4 * @property {SeriesPattern1} cents @@ -2722,7 +2772,7 @@ function create_1m1w1y24hPattern6(client, acc) { } /** - * @typedef {Object} _1m1w1y24hPattern5 + * @typedef {Object} _1m1w1y24hPattern3 * @property {BtcCentsSatsUsdPattern} _1m * @property {BtcCentsSatsUsdPattern} _1w * @property {BtcCentsSatsUsdPattern} _1y @@ -2730,12 +2780,12 @@ function create_1m1w1y24hPattern6(client, acc) { */ /** - * Create a _1m1w1y24hPattern5 pattern node + * Create a _1m1w1y24hPattern3 pattern node * @param {BrkClientBase} client * @param {string} acc - Accumulated series name - * @returns {_1m1w1y24hPattern5} + * @returns {_1m1w1y24hPattern3} */ -function create_1m1w1y24hPattern5(client, acc) { +function create_1m1w1y24hPattern3(client, acc) { return { _1m: createBtcCentsSatsUsdPattern(client, _m(acc, '1m')), _1w: createBtcCentsSatsUsdPattern(client, _m(acc, '1w')), @@ -2768,36 +2818,13 @@ function create_1m1w1y2wPattern(client, acc) { } /** - * @typedef {Object} _1m1w1y24hPattern3 + * @typedef {Object} _1m1w1y24hPattern4 * @property {CentsUsdPattern} _1m * @property {CentsUsdPattern} _1w * @property {CentsUsdPattern} _1y * @property {CentsUsdPattern} _24h */ -/** - * Create a _1m1w1y24hPattern3 pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {_1m1w1y24hPattern3} - */ -function create_1m1w1y24hPattern3(client, acc) { - return { - _1m: createCentsUsdPattern(client, _m(acc, '1m')), - _1w: createCentsUsdPattern(client, _m(acc, '1w')), - _1y: createCentsUsdPattern(client, _m(acc, '1y')), - _24h: createCentsUsdPattern(client, _m(acc, '24h')), - }; -} - -/** - * @typedef {Object} _1m1w1y24hPattern4 - * @property {CentsUsdPattern2} _1m - * @property {CentsUsdPattern2} _1w - * @property {CentsUsdPattern2} _1y - * @property {CentsUsdPattern2} _24h - */ - /** * Create a _1m1w1y24hPattern4 pattern node * @param {BrkClientBase} client @@ -2805,6 +2832,29 @@ function create_1m1w1y24hPattern3(client, acc) { * @returns {_1m1w1y24hPattern4} */ function create_1m1w1y24hPattern4(client, acc) { + return { + _1m: createCentsUsdPattern(client, _m(acc, '1m')), + _1w: createCentsUsdPattern(client, _m(acc, '1w')), + _1y: createCentsUsdPattern(client, _m(acc, '1y')), + _24h: createCentsUsdPattern(client, _m(acc, '24h')), + }; +} + +/** + * @typedef {Object} _1m1w1y24hPattern5 + * @property {CentsUsdPattern2} _1m + * @property {CentsUsdPattern2} _1w + * @property {CentsUsdPattern2} _1y + * @property {CentsUsdPattern2} _24h + */ + +/** + * Create a _1m1w1y24hPattern5 pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated series name + * @returns {_1m1w1y24hPattern5} + */ +function create_1m1w1y24hPattern5(client, acc) { return { _1m: createCentsUsdPattern2(client, _m(acc, '1m')), _1w: createCentsUsdPattern2(client, _m(acc, '1w')), @@ -2821,20 +2871,12 @@ function create_1m1w1y24hPattern4(client, acc) { * @property {_0sdM0M1M1sdM2M2sdM3sdP0P1P1sdP2P2sdP3sdSdZscorePattern} all */ -/** - * @typedef {Object} AdjustedRatioValuePattern - * @property {RatioValuePattern2} adjusted - * @property {_1m1w1y24hPattern} ratio - * @property {BaseCumulativeSumPattern} valueCreated - * @property {BaseCumulativeSumPattern} valueDestroyed - */ - /** * @typedef {Object} BaseCumulativeDeltaSumPattern * @property {CentsUsdPattern} base * @property {CentsUsdPattern} cumulative * @property {AbsoluteRatePattern2} delta - * @property {_1m1w1y24hPattern3} sum + * @property {_1m1w1y24hPattern4} sum */ /** @@ -2848,7 +2890,7 @@ function createBaseCumulativeDeltaSumPattern(client, acc) { base: createCentsUsdPattern(client, acc), cumulative: createCentsUsdPattern(client, _m(acc, 'cumulative')), delta: createAbsoluteRatePattern2(client, _m(acc, 'delta')), - sum: create_1m1w1y24hPattern3(client, _m(acc, 'sum')), + sum: create_1m1w1y24hPattern4(client, _m(acc, 'sum')), }; } @@ -2857,7 +2899,7 @@ function createBaseCumulativeDeltaSumPattern(client, acc) { * @property {CentsUsdPattern2} base * @property {CentsUsdPattern2} cumulative * @property {BaseSumPattern} negative - * @property {_1m1w1y24hPattern4} sum + * @property {_1m1w1y24hPattern5} sum */ /** @@ -2871,7 +2913,7 @@ function createBaseCumulativeNegativeSumPattern(client, acc) { base: createCentsUsdPattern2(client, _m(acc, 'realized_loss')), cumulative: createCentsUsdPattern2(client, _m(acc, 'realized_loss_cumulative')), negative: createBaseSumPattern(client, _m(acc, 'neg_realized_loss')), - sum: create_1m1w1y24hPattern4(client, _m(acc, 'realized_loss_sum')), + sum: create_1m1w1y24hPattern5(client, _m(acc, 'realized_loss_sum')), }; } @@ -2879,7 +2921,7 @@ function createBaseCumulativeNegativeSumPattern(client, acc) { * @typedef {Object} BaseCumulativeSumToPattern * @property {CentsUsdPattern2} base * @property {CentsUsdPattern2} cumulative - * @property {_1m1w1y24hPattern4} sum + * @property {_1m1w1y24hPattern5} sum * @property {BpsPercentRatioPattern4} toRcap */ @@ -2893,7 +2935,7 @@ function createBaseCumulativeSumToPattern(client, acc) { return { base: createCentsUsdPattern2(client, acc), cumulative: createCentsUsdPattern2(client, _m(acc, 'cumulative')), - sum: create_1m1w1y24hPattern4(client, _m(acc, 'sum')), + sum: create_1m1w1y24hPattern5(client, _m(acc, 'sum')), toRcap: createBpsPercentRatioPattern4(client, _m(acc, 'to_rcap')), }; } @@ -2994,7 +3036,7 @@ function createCentsToUsdPattern3(client, acc) { * @typedef {Object} CoindaysCoinyearsDormancyTransferPattern * @property {BaseCumulativeSumPattern} coindaysDestroyed * @property {SeriesPattern1} coinyearsDestroyed - * @property {SeriesPattern1} dormancy + * @property {_1m1w1y24hPattern} dormancy * @property {BaseCumulativeInSumPattern} transferVolume */ @@ -3021,52 +3063,6 @@ function createLossNetNuplProfitPattern(client, acc) { }; } -/** - * @typedef {Object} OutputsRealizedSupplyUnrealizedPattern2 - * @property {UnspentPattern} outputs - * @property {CapLossMvrvPriceProfitSoprPattern} realized - * @property {DeltaHalfInTotalPattern2} supply - * @property {LossNuplProfitPattern} unrealized - */ - -/** - * Create a OutputsRealizedSupplyUnrealizedPattern2 pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {OutputsRealizedSupplyUnrealizedPattern2} - */ -function createOutputsRealizedSupplyUnrealizedPattern2(client, acc) { - return { - outputs: createUnspentPattern(client, _m(acc, 'utxo_count')), - realized: createCapLossMvrvPriceProfitSoprPattern(client, acc), - supply: createDeltaHalfInTotalPattern2(client, _m(acc, 'supply')), - unrealized: createLossNuplProfitPattern(client, acc), - }; -} - -/** - * @typedef {Object} OutputsRealizedSupplyUnrealizedPattern - * @property {UnspentPattern} outputs - * @property {CapLossMvrvPriceProfitSoprPattern} realized - * @property {DeltaHalfTotalPattern} supply - * @property {NuplPattern} unrealized - */ - -/** - * Create a OutputsRealizedSupplyUnrealizedPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {OutputsRealizedSupplyUnrealizedPattern} - */ -function createOutputsRealizedSupplyUnrealizedPattern(client, acc) { - return { - outputs: createUnspentPattern(client, _m(acc, 'utxo_count')), - realized: createCapLossMvrvPriceProfitSoprPattern(client, acc), - supply: createDeltaHalfTotalPattern(client, _m(acc, 'supply')), - unrealized: createNuplPattern(client, _m(acc, 'nupl')), - }; -} - /** * @template T * @typedef {Object} _1m1w1y24hPattern @@ -3093,9 +3089,37 @@ function create_1m1w1y24hPattern(client, acc) { } /** - * @typedef {Object} BaseCumulativeSumPattern4 + * @typedef {Object} AdjustedRatioValuePattern + * @property {RatioTransferValuePattern} adjusted + * @property {_1m1w1y24hPattern} ratio + * @property {BaseCumulativeSumPattern} valueDestroyed + */ + +/** + * @typedef {Object} BaseCumulativeSumPattern3 * @property {BtcCentsSatsUsdPattern} base * @property {BtcCentsSatsUsdPattern} cumulative + * @property {_1m1w1y24hPattern3} sum + */ + +/** + * Create a BaseCumulativeSumPattern3 pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated series name + * @returns {BaseCumulativeSumPattern3} + */ +function createBaseCumulativeSumPattern3(client, acc) { + return { + base: createBtcCentsSatsUsdPattern(client, acc), + cumulative: createBtcCentsSatsUsdPattern(client, _m(acc, 'cumulative')), + sum: create_1m1w1y24hPattern3(client, _m(acc, 'sum')), + }; +} + +/** + * @typedef {Object} BaseCumulativeSumPattern4 + * @property {CentsUsdPattern2} base + * @property {CentsUsdPattern2} cumulative * @property {_1m1w1y24hPattern5} sum */ @@ -3106,31 +3130,10 @@ function create_1m1w1y24hPattern(client, acc) { * @returns {BaseCumulativeSumPattern4} */ function createBaseCumulativeSumPattern4(client, acc) { - return { - base: createBtcCentsSatsUsdPattern(client, acc), - cumulative: createBtcCentsSatsUsdPattern(client, _m(acc, 'cumulative')), - sum: create_1m1w1y24hPattern5(client, _m(acc, 'sum')), - }; -} - -/** - * @typedef {Object} BaseCumulativeSumPattern3 - * @property {CentsUsdPattern2} base - * @property {CentsUsdPattern2} cumulative - * @property {_1m1w1y24hPattern4} sum - */ - -/** - * Create a BaseCumulativeSumPattern3 pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {BaseCumulativeSumPattern3} - */ -function createBaseCumulativeSumPattern3(client, acc) { return { base: createCentsUsdPattern2(client, acc), cumulative: createCentsUsdPattern2(client, _m(acc, 'cumulative')), - sum: create_1m1w1y24hPattern4(client, _m(acc, 'sum')), + sum: create_1m1w1y24hPattern5(client, _m(acc, 'sum')), }; } @@ -3159,7 +3162,7 @@ function createBaseCumulativeSumPattern2(client, acc) { * @typedef {Object} BlocksDominanceRewardsPattern * @property {BaseCumulativeSumPattern2} blocksMined * @property {_1m1w1y24hBpsPercentRatioPattern} dominance - * @property {BaseCumulativeSumPattern4} rewards + * @property {BaseCumulativeSumPattern3} rewards */ /** @@ -3172,7 +3175,7 @@ function createBlocksDominanceRewardsPattern(client, acc) { return { blocksMined: createBaseCumulativeSumPattern2(client, _m(acc, 'blocks_mined')), dominance: create_1m1w1y24hBpsPercentRatioPattern(client, _m(acc, 'dominance')), - rewards: createBaseCumulativeSumPattern4(client, _m(acc, 'rewards')), + rewards: createBaseCumulativeSumPattern3(client, _m(acc, 'rewards')), }; } @@ -3458,33 +3461,12 @@ function createNuplRealizedSupplyPattern(client, acc) { } /** - * @typedef {Object} RatioValuePattern2 + * @typedef {Object} RatioTransferValuePattern * @property {_1m1w1y24hPattern} ratio - * @property {BaseCumulativeSumPattern} valueCreated + * @property {BaseCumulativeSumPattern} transferVolume * @property {BaseCumulativeSumPattern} valueDestroyed */ -/** - * @typedef {Object} RatioValuePattern - * @property {_24hPattern} ratio - * @property {BaseCumulativeSumPattern} valueCreated - * @property {BaseCumulativeSumPattern} valueDestroyed - */ - -/** - * Create a RatioValuePattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {RatioValuePattern} - */ -function createRatioValuePattern(client, acc) { - return { - ratio: create_24hPattern(client, _m(acc, 'sopr_24h')), - valueCreated: createBaseCumulativeSumPattern(client, _m(acc, 'value_created')), - valueDestroyed: createBaseCumulativeSumPattern(client, _m(acc, 'value_destroyed')), - }; -} - /** * @template T * @typedef {Object} _6bBlockTxPattern @@ -3552,7 +3534,7 @@ function createAbsoluteRatePattern(client, acc) { /** * @typedef {Object} AbsoluteRatePattern2 - * @property {_1m1w1y24hPattern3} absolute + * @property {_1m1w1y24hPattern4} absolute * @property {_1m1w1y24hPattern2} rate */ @@ -3564,7 +3546,7 @@ function createAbsoluteRatePattern(client, acc) { */ function createAbsoluteRatePattern2(client, acc) { return { - absolute: create_1m1w1y24hPattern3(client, acc), + absolute: create_1m1w1y24hPattern4(client, acc), rate: create_1m1w1y24hPattern2(client, acc), }; } @@ -3798,6 +3780,25 @@ function createPriceRatioPattern(client, acc, disc) { }; } +/** + * @typedef {Object} RatioValuePattern + * @property {_24hPattern} ratio + * @property {BaseCumulativeSumPattern} valueDestroyed + */ + +/** + * Create a RatioValuePattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated series name + * @returns {RatioValuePattern} + */ +function createRatioValuePattern(client, acc) { + return { + ratio: create_24hPattern(client, _m(acc, 'sopr_24h')), + valueDestroyed: createBaseCumulativeSumPattern(client, _m(acc, 'value_destroyed')), + }; +} + /** * @typedef {Object} SdSmaPattern * @property {SeriesPattern1} sd @@ -3823,25 +3824,6 @@ function createToPattern(client, acc) { }; } -/** - * @typedef {Object} ValuePattern - * @property {BaseCumulativeSumPattern} valueCreated - * @property {BaseCumulativeSumPattern} valueDestroyed - */ - -/** - * Create a ValuePattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated series name - * @returns {ValuePattern} - */ -function createValuePattern(client, acc) { - return { - valueCreated: createBaseCumulativeSumPattern(client, _m(acc, 'created')), - valueDestroyed: createBaseCumulativeSumPattern(client, _m(acc, 'destroyed')), - }; -} - /** * @typedef {Object} _24hPattern * @property {SeriesPattern1} _24h @@ -3893,6 +3875,23 @@ function createPricePattern(client, acc) { }; } +/** + * @typedef {Object} TransferPattern + * @property {BaseCumulativeSumPattern3} transferVolume + */ + +/** + * Create a TransferPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated series name + * @returns {TransferPattern} + */ +function createTransferPattern(client, acc) { + return { + transferVolume: createBaseCumulativeSumPattern3(client, acc), + }; +} + /** * @typedef {Object} UnspentPattern * @property {BaseDeltaPattern} unspentCount @@ -4122,7 +4121,7 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Transactions_Volume - * @property {BaseCumulativeSumPattern4} transferVolume + * @property {BaseCumulativeSumPattern3} transferVolume * @property {_1m1w1y24hPattern} txPerSec * @property {_1m1w1y24hPattern} outputsPerSec * @property {_1m1w1y24hPattern} inputsPerSec @@ -4366,7 +4365,7 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Scripts_Value - * @property {BaseCumulativeSumPattern4} opReturn + * @property {BaseCumulativeSumPattern3} opReturn */ /** @@ -4377,7 +4376,7 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Mining_Rewards - * @property {BaseCumulativeSumPattern4} coinbase + * @property {BaseCumulativeSumPattern3} coinbase * @property {SeriesTree_Mining_Rewards_Subsidy} subsidy * @property {SeriesTree_Mining_Rewards_Fees} fees * @property {SeriesTree_Mining_Rewards_Unclaimed} unclaimed @@ -4395,15 +4394,15 @@ function createUnspentPattern(client, acc) { * @typedef {Object} SeriesTree_Mining_Rewards_Fees * @property {BtcCentsSatsUsdPattern} base * @property {BtcCentsSatsUsdPattern} cumulative - * @property {_1m1w1y24hPattern5} sum - * @property {_1m1w1y24hPattern5} average - * @property {_1m1w1y24hPattern5} min - * @property {_1m1w1y24hPattern5} max - * @property {_1m1w1y24hPattern5} pct10 - * @property {_1m1w1y24hPattern5} pct25 - * @property {_1m1w1y24hPattern5} median - * @property {_1m1w1y24hPattern5} pct75 - * @property {_1m1w1y24hPattern5} pct90 + * @property {_1m1w1y24hPattern3} sum + * @property {_1m1w1y24hPattern3} average + * @property {_1m1w1y24hPattern3} min + * @property {_1m1w1y24hPattern3} max + * @property {_1m1w1y24hPattern3} pct10 + * @property {_1m1w1y24hPattern3} pct25 + * @property {_1m1w1y24hPattern3} median + * @property {_1m1w1y24hPattern3} pct75 + * @property {_1m1w1y24hPattern3} pct90 * @property {_1m1w1y24hBpsPercentRatioPattern} dominance * @property {SeriesTree_Mining_Rewards_Fees_ToSubsidyRatio} toSubsidyRatio */ @@ -5324,7 +5323,7 @@ function createUnspentPattern(client, acc) { * @typedef {Object} SeriesTree_Supply * @property {SeriesPattern18} state * @property {BtcCentsSatsUsdPattern} circulating - * @property {BaseCumulativeSumPattern4} burned + * @property {BaseCumulativeSumPattern3} burned * @property {BpsPercentRatioPattern} inflationRate * @property {SeriesTree_Supply_Velocity} velocity * @property {CentsDeltaUsdPattern} marketCap @@ -5386,7 +5385,7 @@ function createUnspentPattern(client, acc) { * @property {BaseCumulativeInSumPattern} transferVolume * @property {BaseCumulativeSumPattern} coindaysDestroyed * @property {SeriesPattern1} coinyearsDestroyed - * @property {SeriesPattern1} dormancy + * @property {_1m1w1y24hPattern} dormancy */ /** @@ -5396,9 +5395,9 @@ function createUnspentPattern(client, acc) { * @property {SeriesTree_Cohorts_Utxo_All_Realized_Loss} loss * @property {SeriesTree_Cohorts_Utxo_All_Realized_Price} price * @property {SeriesPattern1} mvrv - * @property {SeriesTree_Cohorts_Utxo_All_Realized_Sopr} sopr * @property {BaseChangeCumulativeDeltaSumToPattern} netPnl - * @property {BaseCumulativeSumPattern3} grossPnl + * @property {SeriesTree_Cohorts_Utxo_All_Realized_Sopr} sopr + * @property {BaseCumulativeSumPattern4} grossPnl * @property {_1m1w1y24hPattern6} sellSideRiskRatio * @property {BaseCumulativeSumToPattern} peakRegret * @property {PricePattern} investor @@ -5409,7 +5408,7 @@ function createUnspentPattern(client, acc) { * @typedef {Object} SeriesTree_Cohorts_Utxo_All_Realized_Loss * @property {CentsUsdPattern2} base * @property {CentsUsdPattern2} cumulative - * @property {_1m1w1y24hPattern4} sum + * @property {_1m1w1y24hPattern5} sum * @property {BaseSumPattern} negative * @property {BpsPercentRatioPattern4} toRcap */ @@ -5512,7 +5511,6 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_All_Realized_Sopr - * @property {BaseCumulativeSumPattern} valueCreated * @property {BaseCumulativeSumPattern} valueDestroyed * @property {_1m1w1y24hPattern} ratio * @property {SeriesTree_Cohorts_Utxo_All_Realized_Sopr_Adjusted} adjusted @@ -5521,7 +5519,7 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_All_Realized_Sopr_Adjusted * @property {_1m1w1y24hPattern} ratio - * @property {BaseCumulativeSumPattern} valueCreated + * @property {BaseCumulativeSumPattern} transferVolume * @property {BaseCumulativeSumPattern} valueDestroyed */ @@ -5591,7 +5589,7 @@ function createUnspentPattern(client, acc) { * @property {BaseCumulativeInSumPattern} transferVolume * @property {BaseCumulativeSumPattern} coindaysDestroyed * @property {SeriesPattern1} coinyearsDestroyed - * @property {SeriesPattern1} dormancy + * @property {_1m1w1y24hPattern} dormancy */ /** @@ -5601,9 +5599,9 @@ function createUnspentPattern(client, acc) { * @property {SeriesTree_Cohorts_Utxo_Sth_Realized_Loss} loss * @property {SeriesTree_Cohorts_Utxo_Sth_Realized_Price} price * @property {SeriesPattern1} mvrv - * @property {SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr} sopr * @property {BaseChangeCumulativeDeltaSumToPattern} netPnl - * @property {BaseCumulativeSumPattern3} grossPnl + * @property {SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr} sopr + * @property {BaseCumulativeSumPattern4} grossPnl * @property {_1m1w1y24hPattern6} sellSideRiskRatio * @property {BaseCumulativeSumToPattern} peakRegret * @property {PricePattern} investor @@ -5614,7 +5612,7 @@ function createUnspentPattern(client, acc) { * @typedef {Object} SeriesTree_Cohorts_Utxo_Sth_Realized_Loss * @property {CentsUsdPattern2} base * @property {CentsUsdPattern2} cumulative - * @property {_1m1w1y24hPattern4} sum + * @property {_1m1w1y24hPattern5} sum * @property {BaseSumPattern} negative * @property {BpsPercentRatioPattern4} toRcap */ @@ -5717,7 +5715,6 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr - * @property {BaseCumulativeSumPattern} valueCreated * @property {BaseCumulativeSumPattern} valueDestroyed * @property {_1m1w1y24hPattern} ratio * @property {SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr_Adjusted} adjusted @@ -5726,7 +5723,7 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr_Adjusted * @property {_1m1w1y24hPattern} ratio - * @property {BaseCumulativeSumPattern} valueCreated + * @property {BaseCumulativeSumPattern} transferVolume * @property {BaseCumulativeSumPattern} valueDestroyed */ @@ -5772,7 +5769,7 @@ function createUnspentPattern(client, acc) { * @property {BaseCumulativeInSumPattern} transferVolume * @property {BaseCumulativeSumPattern} coindaysDestroyed * @property {SeriesPattern1} coinyearsDestroyed - * @property {SeriesPattern1} dormancy + * @property {_1m1w1y24hPattern} dormancy */ /** @@ -5782,9 +5779,9 @@ function createUnspentPattern(client, acc) { * @property {SeriesTree_Cohorts_Utxo_Lth_Realized_Loss} loss * @property {SeriesTree_Cohorts_Utxo_Lth_Realized_Price} price * @property {SeriesPattern1} mvrv - * @property {SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr} sopr * @property {BaseChangeCumulativeDeltaSumToPattern} netPnl - * @property {BaseCumulativeSumPattern3} grossPnl + * @property {SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr} sopr + * @property {BaseCumulativeSumPattern4} grossPnl * @property {_1m1w1y24hPattern6} sellSideRiskRatio * @property {BaseCumulativeSumToPattern} peakRegret * @property {PricePattern} investor @@ -5795,7 +5792,7 @@ function createUnspentPattern(client, acc) { * @typedef {Object} SeriesTree_Cohorts_Utxo_Lth_Realized_Loss * @property {CentsUsdPattern2} base * @property {CentsUsdPattern2} cumulative - * @property {_1m1w1y24hPattern4} sum + * @property {_1m1w1y24hPattern5} sum * @property {BaseSumPattern} negative * @property {BpsPercentRatioPattern4} toRcap */ @@ -5898,7 +5895,6 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr - * @property {BaseCumulativeSumPattern} valueCreated * @property {BaseCumulativeSumPattern} valueDestroyed * @property {_1m1w1y24hPattern} ratio */ @@ -6032,70 +6028,70 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_OverAmount - * @property {OutputsRealizedSupplyUnrealizedPattern} _1sat - * @property {OutputsRealizedSupplyUnrealizedPattern} _10sats - * @property {OutputsRealizedSupplyUnrealizedPattern} _100sats - * @property {OutputsRealizedSupplyUnrealizedPattern} _1kSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _10kSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _100kSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _1mSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _10mSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _1btc - * @property {OutputsRealizedSupplyUnrealizedPattern} _10btc - * @property {OutputsRealizedSupplyUnrealizedPattern} _100btc - * @property {OutputsRealizedSupplyUnrealizedPattern} _1kBtc - * @property {OutputsRealizedSupplyUnrealizedPattern} _10kBtc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1sat + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10sats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100sats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1kSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10kSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100kSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1mSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10mSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1btc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10btc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100btc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1kBtc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10kBtc */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_AmountRange - * @property {OutputsRealizedSupplyUnrealizedPattern} _0sats - * @property {OutputsRealizedSupplyUnrealizedPattern} _1satTo10sats - * @property {OutputsRealizedSupplyUnrealizedPattern} _10satsTo100sats - * @property {OutputsRealizedSupplyUnrealizedPattern} _100satsTo1kSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _1kSatsTo10kSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _10kSatsTo100kSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _100kSatsTo1mSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _1mSatsTo10mSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _10mSatsTo1btc - * @property {OutputsRealizedSupplyUnrealizedPattern} _1btcTo10btc - * @property {OutputsRealizedSupplyUnrealizedPattern} _10btcTo100btc - * @property {OutputsRealizedSupplyUnrealizedPattern} _100btcTo1kBtc - * @property {OutputsRealizedSupplyUnrealizedPattern} _1kBtcTo10kBtc - * @property {OutputsRealizedSupplyUnrealizedPattern} _10kBtcTo100kBtc - * @property {OutputsRealizedSupplyUnrealizedPattern} over100kBtc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _0sats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1satTo10sats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10satsTo100sats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100satsTo1kSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1kSatsTo10kSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10kSatsTo100kSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100kSatsTo1mSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1mSatsTo10mSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10mSatsTo1btc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1btcTo10btc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10btcTo100btc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100btcTo1kBtc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1kBtcTo10kBtc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10kBtcTo100kBtc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} over100kBtc */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_UnderAmount - * @property {OutputsRealizedSupplyUnrealizedPattern} _10sats - * @property {OutputsRealizedSupplyUnrealizedPattern} _100sats - * @property {OutputsRealizedSupplyUnrealizedPattern} _1kSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _10kSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _100kSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _1mSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _10mSats - * @property {OutputsRealizedSupplyUnrealizedPattern} _1btc - * @property {OutputsRealizedSupplyUnrealizedPattern} _10btc - * @property {OutputsRealizedSupplyUnrealizedPattern} _100btc - * @property {OutputsRealizedSupplyUnrealizedPattern} _1kBtc - * @property {OutputsRealizedSupplyUnrealizedPattern} _10kBtc - * @property {OutputsRealizedSupplyUnrealizedPattern} _100kBtc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10sats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100sats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1kSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10kSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100kSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1mSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10mSats + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1btc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10btc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100btc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _1kBtc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _10kBtc + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern2} _100kBtc */ /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Type - * @property {OutputsRealizedSupplyUnrealizedPattern2} p2pk65 - * @property {OutputsRealizedSupplyUnrealizedPattern2} p2pk33 - * @property {OutputsRealizedSupplyUnrealizedPattern2} p2pkh - * @property {OutputsRealizedSupplyUnrealizedPattern2} p2ms - * @property {OutputsRealizedSupplyUnrealizedPattern2} p2sh - * @property {OutputsRealizedSupplyUnrealizedPattern2} p2wpkh - * @property {OutputsRealizedSupplyUnrealizedPattern2} p2wsh - * @property {OutputsRealizedSupplyUnrealizedPattern2} p2tr - * @property {OutputsRealizedSupplyUnrealizedPattern2} p2a - * @property {OutputsRealizedSupplyUnrealizedPattern2} unknown - * @property {OutputsRealizedSupplyUnrealizedPattern2} empty + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2pk65 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2pk33 + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2pkh + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2ms + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2sh + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2wpkh + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2wsh + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2tr + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} p2a + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} unknown + * @property {ActivityOutputsRealizedSupplyUnrealizedPattern3} empty */ /** @@ -6167,27 +6163,27 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Utxo_Matured - * @property {BaseCumulativeSumPattern4} under1h - * @property {BaseCumulativeSumPattern4} _1hTo1d - * @property {BaseCumulativeSumPattern4} _1dTo1w - * @property {BaseCumulativeSumPattern4} _1wTo1m - * @property {BaseCumulativeSumPattern4} _1mTo2m - * @property {BaseCumulativeSumPattern4} _2mTo3m - * @property {BaseCumulativeSumPattern4} _3mTo4m - * @property {BaseCumulativeSumPattern4} _4mTo5m - * @property {BaseCumulativeSumPattern4} _5mTo6m - * @property {BaseCumulativeSumPattern4} _6mTo1y - * @property {BaseCumulativeSumPattern4} _1yTo2y - * @property {BaseCumulativeSumPattern4} _2yTo3y - * @property {BaseCumulativeSumPattern4} _3yTo4y - * @property {BaseCumulativeSumPattern4} _4yTo5y - * @property {BaseCumulativeSumPattern4} _5yTo6y - * @property {BaseCumulativeSumPattern4} _6yTo7y - * @property {BaseCumulativeSumPattern4} _7yTo8y - * @property {BaseCumulativeSumPattern4} _8yTo10y - * @property {BaseCumulativeSumPattern4} _10yTo12y - * @property {BaseCumulativeSumPattern4} _12yTo15y - * @property {BaseCumulativeSumPattern4} over15y + * @property {BaseCumulativeSumPattern3} under1h + * @property {BaseCumulativeSumPattern3} _1hTo1d + * @property {BaseCumulativeSumPattern3} _1dTo1w + * @property {BaseCumulativeSumPattern3} _1wTo1m + * @property {BaseCumulativeSumPattern3} _1mTo2m + * @property {BaseCumulativeSumPattern3} _2mTo3m + * @property {BaseCumulativeSumPattern3} _3mTo4m + * @property {BaseCumulativeSumPattern3} _4mTo5m + * @property {BaseCumulativeSumPattern3} _5mTo6m + * @property {BaseCumulativeSumPattern3} _6mTo1y + * @property {BaseCumulativeSumPattern3} _1yTo2y + * @property {BaseCumulativeSumPattern3} _2yTo3y + * @property {BaseCumulativeSumPattern3} _3yTo4y + * @property {BaseCumulativeSumPattern3} _4yTo5y + * @property {BaseCumulativeSumPattern3} _5yTo6y + * @property {BaseCumulativeSumPattern3} _6yTo7y + * @property {BaseCumulativeSumPattern3} _7yTo8y + * @property {BaseCumulativeSumPattern3} _8yTo10y + * @property {BaseCumulativeSumPattern3} _10yTo12y + * @property {BaseCumulativeSumPattern3} _12yTo15y + * @property {BaseCumulativeSumPattern3} over15y */ /** @@ -6199,55 +6195,55 @@ function createUnspentPattern(client, acc) { /** * @typedef {Object} SeriesTree_Cohorts_Addr_OverAmount - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1sat - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10sats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _100sats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1kSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10kSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _100kSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1mSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10mSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1btc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10btc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _100btc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1kBtc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10kBtc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1sat + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10sats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100sats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1kSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10kSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100kSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1mSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10mSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1btc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10btc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100btc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1kBtc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10kBtc */ /** * @typedef {Object} SeriesTree_Cohorts_Addr_AmountRange - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _0sats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1satTo10sats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10satsTo100sats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _100satsTo1kSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1kSatsTo10kSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10kSatsTo100kSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _100kSatsTo1mSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1mSatsTo10mSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10mSatsTo1btc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1btcTo10btc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10btcTo100btc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _100btcTo1kBtc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1kBtcTo10kBtc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10kBtcTo100kBtc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} over100kBtc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _0sats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1satTo10sats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10satsTo100sats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100satsTo1kSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1kSatsTo10kSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10kSatsTo100kSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100kSatsTo1mSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1mSatsTo10mSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10mSatsTo1btc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1btcTo10btc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10btcTo100btc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100btcTo1kBtc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1kBtcTo10kBtc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10kBtcTo100kBtc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} over100kBtc */ /** * @typedef {Object} SeriesTree_Cohorts_Addr_UnderAmount - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10sats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _100sats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1kSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10kSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _100kSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1mSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10mSats - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1btc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10btc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _100btc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _1kBtc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _10kBtc - * @property {AddrOutputsRealizedSupplyUnrealizedPattern} _100kBtc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10sats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100sats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1kSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10kSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100kSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1mSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10mSats + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1btc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10btc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100btc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _1kBtc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _10kBtc + * @property {ActivityAddrOutputsRealizedSupplyUnrealizedPattern} _100kBtc */ /** @@ -7584,7 +7580,7 @@ class BrkClient extends BrkClientBase { v3: createBaseCumulativeSumPattern(this, 'tx_v3'), }, volume: { - transferVolume: createBaseCumulativeSumPattern4(this, 'transfer_volume_bis'), + transferVolume: createBaseCumulativeSumPattern3(this, 'transfer_volume_bis'), txPerSec: create_1m1w1y24hPattern(this, 'tx_per_sec'), outputsPerSec: create_1m1w1y24hPattern(this, 'outputs_per_sec'), inputsPerSec: create_1m1w1y24hPattern(this, 'inputs_per_sec'), @@ -7742,12 +7738,12 @@ class BrkClient extends BrkClientBase { unknownOutput: createBaseCumulativeSumPattern(this, 'unknown_output_count'), }, value: { - opReturn: createBaseCumulativeSumPattern4(this, 'op_return_value'), + opReturn: createBaseCumulativeSumPattern3(this, 'op_return_value'), }, }, mining: { rewards: { - coinbase: createBaseCumulativeSumPattern4(this, 'coinbase'), + coinbase: createBaseCumulativeSumPattern3(this, 'coinbase'), subsidy: { base: createBtcCentsSatsUsdPattern(this, 'subsidy'), cumulative: createBtcCentsSatsUsdPattern(this, 'subsidy_cumulative'), @@ -7757,15 +7753,15 @@ class BrkClient extends BrkClientBase { fees: { base: createBtcCentsSatsUsdPattern(this, 'fees'), cumulative: createBtcCentsSatsUsdPattern(this, 'fees_cumulative'), - sum: create_1m1w1y24hPattern5(this, 'fees_sum'), - average: create_1m1w1y24hPattern5(this, 'fees_average'), - min: create_1m1w1y24hPattern5(this, 'fees_min'), - max: create_1m1w1y24hPattern5(this, 'fees_max'), - pct10: create_1m1w1y24hPattern5(this, 'fees_pct10'), - pct25: create_1m1w1y24hPattern5(this, 'fees_pct25'), - median: create_1m1w1y24hPattern5(this, 'fees_median'), - pct75: create_1m1w1y24hPattern5(this, 'fees_pct75'), - pct90: create_1m1w1y24hPattern5(this, 'fees_pct90'), + sum: create_1m1w1y24hPattern3(this, 'fees_sum'), + average: create_1m1w1y24hPattern3(this, 'fees_average'), + min: create_1m1w1y24hPattern3(this, 'fees_min'), + max: create_1m1w1y24hPattern3(this, 'fees_max'), + pct10: create_1m1w1y24hPattern3(this, 'fees_pct10'), + pct25: create_1m1w1y24hPattern3(this, 'fees_pct25'), + median: create_1m1w1y24hPattern3(this, 'fees_median'), + pct75: create_1m1w1y24hPattern3(this, 'fees_pct75'), + pct90: create_1m1w1y24hPattern3(this, 'fees_pct90'), dominance: create_1m1w1y24hBpsPercentRatioPattern(this, 'fee_dominance'), toSubsidyRatio: { _24h: createBpsRatioPattern2(this, 'fee_to_subsidy_ratio_24h'), @@ -8438,7 +8434,7 @@ class BrkClient extends BrkClientBase { supply: { state: createSeriesPattern18(this, 'supply_state'), circulating: createBtcCentsSatsUsdPattern(this, 'circulating_supply'), - burned: createBaseCumulativeSumPattern4(this, 'unspendable_supply'), + burned: createBaseCumulativeSumPattern3(this, 'unspendable_supply'), inflationRate: createBpsPercentRatioPattern(this, 'inflation_rate'), velocity: { native: createSeriesPattern1(this, 'velocity'), @@ -8463,7 +8459,7 @@ class BrkClient extends BrkClientBase { transferVolume: createBaseCumulativeInSumPattern(this, 'transfer_volume'), coindaysDestroyed: createBaseCumulativeSumPattern(this, 'coindays_destroyed'), coinyearsDestroyed: createSeriesPattern1(this, 'coinyears_destroyed'), - dormancy: createSeriesPattern1(this, 'dormancy'), + dormancy: create_1m1w1y24hPattern(this, 'dormancy'), }, realized: { cap: createCentsDeltaToUsdPattern(this, 'realized_cap'), @@ -8471,7 +8467,7 @@ class BrkClient extends BrkClientBase { loss: { base: createCentsUsdPattern2(this, 'realized_loss'), cumulative: createCentsUsdPattern2(this, 'realized_loss_cumulative'), - sum: create_1m1w1y24hPattern4(this, 'realized_loss_sum'), + sum: create_1m1w1y24hPattern5(this, 'realized_loss_sum'), negative: createBaseSumPattern(this, 'neg_realized_loss'), toRcap: createBpsPercentRatioPattern4(this, 'realized_loss_to_rcap'), }, @@ -8555,18 +8551,17 @@ class BrkClient extends BrkClientBase { }, }, mvrv: createSeriesPattern1(this, 'mvrv'), + netPnl: createBaseChangeCumulativeDeltaSumToPattern(this, 'net'), sopr: { - valueCreated: createBaseCumulativeSumPattern(this, 'value_created'), valueDestroyed: createBaseCumulativeSumPattern(this, 'value_destroyed'), ratio: create_1m1w1y24hPattern(this, 'sopr'), adjusted: { ratio: create_1m1w1y24hPattern(this, 'asopr'), - valueCreated: createBaseCumulativeSumPattern(this, 'adj_value_created'), + transferVolume: createBaseCumulativeSumPattern(this, 'adj_value_created'), valueDestroyed: createBaseCumulativeSumPattern(this, 'adj_value_destroyed'), }, }, - netPnl: createBaseChangeCumulativeDeltaSumToPattern(this, 'net'), - grossPnl: createBaseCumulativeSumPattern3(this, 'realized_gross_pnl'), + grossPnl: createBaseCumulativeSumPattern4(this, 'realized_gross_pnl'), sellSideRiskRatio: create_1m1w1y24hPattern6(this, 'sell_side_risk_ratio'), peakRegret: createBaseCumulativeSumToPattern(this, 'realized_peak_regret'), investor: createPricePattern(this, 'investor_price'), @@ -8615,7 +8610,7 @@ class BrkClient extends BrkClientBase { transferVolume: createBaseCumulativeInSumPattern(this, 'sth_transfer_volume'), coindaysDestroyed: createBaseCumulativeSumPattern(this, 'sth_coindays_destroyed'), coinyearsDestroyed: createSeriesPattern1(this, 'sth_coinyears_destroyed'), - dormancy: createSeriesPattern1(this, 'sth_dormancy'), + dormancy: create_1m1w1y24hPattern(this, 'sth_dormancy'), }, realized: { cap: createCentsDeltaToUsdPattern(this, 'sth_realized_cap'), @@ -8623,7 +8618,7 @@ class BrkClient extends BrkClientBase { loss: { base: createCentsUsdPattern2(this, 'sth_realized_loss'), cumulative: createCentsUsdPattern2(this, 'sth_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern4(this, 'sth_realized_loss_sum'), + sum: create_1m1w1y24hPattern5(this, 'sth_realized_loss_sum'), negative: createBaseSumPattern(this, 'sth_neg_realized_loss'), toRcap: createBpsPercentRatioPattern4(this, 'sth_realized_loss_to_rcap'), }, @@ -8707,18 +8702,17 @@ class BrkClient extends BrkClientBase { }, }, mvrv: createSeriesPattern1(this, 'sth_mvrv'), + netPnl: createBaseChangeCumulativeDeltaSumToPattern(this, 'sth_net'), sopr: { - valueCreated: createBaseCumulativeSumPattern(this, 'sth_value_created'), valueDestroyed: createBaseCumulativeSumPattern(this, 'sth_value_destroyed'), ratio: create_1m1w1y24hPattern(this, 'sth_sopr'), adjusted: { ratio: create_1m1w1y24hPattern(this, 'sth_asopr'), - valueCreated: createBaseCumulativeSumPattern(this, 'sth_adj_value_created'), + transferVolume: createBaseCumulativeSumPattern(this, 'sth_adj_value_created'), valueDestroyed: createBaseCumulativeSumPattern(this, 'sth_adj_value_destroyed'), }, }, - netPnl: createBaseChangeCumulativeDeltaSumToPattern(this, 'sth_net'), - grossPnl: createBaseCumulativeSumPattern3(this, 'sth_realized_gross_pnl'), + grossPnl: createBaseCumulativeSumPattern4(this, 'sth_realized_gross_pnl'), sellSideRiskRatio: create_1m1w1y24hPattern6(this, 'sth_sell_side_risk_ratio'), peakRegret: createBaseCumulativeSumToPattern(this, 'sth_realized_peak_regret'), investor: createPricePattern(this, 'sth_investor_price'), @@ -8752,7 +8746,7 @@ class BrkClient extends BrkClientBase { transferVolume: createBaseCumulativeInSumPattern(this, 'lth_transfer_volume'), coindaysDestroyed: createBaseCumulativeSumPattern(this, 'lth_coindays_destroyed'), coinyearsDestroyed: createSeriesPattern1(this, 'lth_coinyears_destroyed'), - dormancy: createSeriesPattern1(this, 'lth_dormancy'), + dormancy: create_1m1w1y24hPattern(this, 'lth_dormancy'), }, realized: { cap: createCentsDeltaToUsdPattern(this, 'lth_realized_cap'), @@ -8760,7 +8754,7 @@ class BrkClient extends BrkClientBase { loss: { base: createCentsUsdPattern2(this, 'lth_realized_loss'), cumulative: createCentsUsdPattern2(this, 'lth_realized_loss_cumulative'), - sum: create_1m1w1y24hPattern4(this, 'lth_realized_loss_sum'), + sum: create_1m1w1y24hPattern5(this, 'lth_realized_loss_sum'), negative: createBaseSumPattern(this, 'lth_neg_realized_loss'), toRcap: createBpsPercentRatioPattern4(this, 'lth_realized_loss_to_rcap'), }, @@ -8844,13 +8838,12 @@ class BrkClient extends BrkClientBase { }, }, mvrv: createSeriesPattern1(this, 'lth_mvrv'), + netPnl: createBaseChangeCumulativeDeltaSumToPattern(this, 'lth_net'), sopr: { - valueCreated: createBaseCumulativeSumPattern(this, 'lth_value_created'), valueDestroyed: createBaseCumulativeSumPattern(this, 'lth_value_destroyed'), ratio: create_1m1w1y24hPattern(this, 'lth_sopr'), }, - netPnl: createBaseChangeCumulativeDeltaSumToPattern(this, 'lth_net'), - grossPnl: createBaseCumulativeSumPattern3(this, 'lth_realized_gross_pnl'), + grossPnl: createBaseCumulativeSumPattern4(this, 'lth_realized_gross_pnl'), sellSideRiskRatio: create_1m1w1y24hPattern6(this, 'lth_sell_side_risk_ratio'), peakRegret: createBaseCumulativeSumToPattern(this, 'lth_realized_peak_regret'), investor: createPricePattern(this, 'lth_investor_price'), @@ -8968,64 +8961,64 @@ class BrkClient extends BrkClientBase { _2026: createActivityOutputsRealizedSupplyUnrealizedPattern(this, 'class_2026'), }, overAmount: { - _1sat: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1sat'), - _10sats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_10sats'), - _100sats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_100sats'), - _1kSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1k_sats'), - _10kSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_10k_sats'), - _100kSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_100k_sats'), - _1mSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1m_sats'), - _10mSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_10m_sats'), - _1btc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1btc'), - _10btc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_10btc'), - _100btc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_100btc'), - _1kBtc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_1k_btc'), - _10kBtc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_10k_btc'), + _1sat: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_1sat'), + _10sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_10sats'), + _100sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_100sats'), + _1kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_1k_sats'), + _10kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_10k_sats'), + _100kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_100k_sats'), + _1mSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_1m_sats'), + _10mSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_10m_sats'), + _1btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_1btc'), + _10btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_10btc'), + _100btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_100btc'), + _1kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_1k_btc'), + _10kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_10k_btc'), }, amountRange: { - _0sats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_0sats'), - _1satTo10sats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1sat_to_10sats'), - _10satsTo100sats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_10sats_to_100sats'), - _100satsTo1kSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_100sats_to_1k_sats'), - _1kSatsTo10kSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1k_sats_to_10k_sats'), - _10kSatsTo100kSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_10k_sats_to_100k_sats'), - _100kSatsTo1mSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_100k_sats_to_1m_sats'), - _1mSatsTo10mSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1m_sats_to_10m_sats'), - _10mSatsTo1btc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_10m_sats_to_1btc'), - _1btcTo10btc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1btc_to_10btc'), - _10btcTo100btc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_10btc_to_100btc'), - _100btcTo1kBtc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_100btc_to_1k_btc'), - _1kBtcTo10kBtc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_1k_btc_to_10k_btc'), - _10kBtcTo100kBtc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_10k_btc_to_100k_btc'), - over100kBtc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_over_100k_btc'), + _0sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_0sats'), + _1satTo10sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_1sat_to_10sats'), + _10satsTo100sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_10sats_to_100sats'), + _100satsTo1kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_100sats_to_1k_sats'), + _1kSatsTo10kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_1k_sats_to_10k_sats'), + _10kSatsTo100kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_10k_sats_to_100k_sats'), + _100kSatsTo1mSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_100k_sats_to_1m_sats'), + _1mSatsTo10mSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_1m_sats_to_10m_sats'), + _10mSatsTo1btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_10m_sats_to_1btc'), + _1btcTo10btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_1btc_to_10btc'), + _10btcTo100btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_10btc_to_100btc'), + _100btcTo1kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_100btc_to_1k_btc'), + _1kBtcTo10kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_1k_btc_to_10k_btc'), + _10kBtcTo100kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_10k_btc_to_100k_btc'), + over100kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_over_100k_btc'), }, underAmount: { - _10sats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_10sats'), - _100sats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_100sats'), - _1kSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_1k_sats'), - _10kSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_10k_sats'), - _100kSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_100k_sats'), - _1mSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_1m_sats'), - _10mSats: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_10m_sats'), - _1btc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_1btc'), - _10btc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_10btc'), - _100btc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_100btc'), - _1kBtc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_1k_btc'), - _10kBtc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_10k_btc'), - _100kBtc: createOutputsRealizedSupplyUnrealizedPattern(this, 'utxos_under_100k_btc'), + _10sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_10sats'), + _100sats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_100sats'), + _1kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_1k_sats'), + _10kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_10k_sats'), + _100kSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_100k_sats'), + _1mSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_1m_sats'), + _10mSats: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_10m_sats'), + _1btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_1btc'), + _10btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_10btc'), + _100btc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_100btc'), + _1kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_1k_btc'), + _10kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_10k_btc'), + _100kBtc: createActivityOutputsRealizedSupplyUnrealizedPattern2(this, 'utxos_under_100k_btc'), }, type: { - p2pk65: createOutputsRealizedSupplyUnrealizedPattern2(this, 'p2pk65'), - p2pk33: createOutputsRealizedSupplyUnrealizedPattern2(this, 'p2pk33'), - p2pkh: createOutputsRealizedSupplyUnrealizedPattern2(this, 'p2pkh'), - p2ms: createOutputsRealizedSupplyUnrealizedPattern2(this, 'p2ms'), - p2sh: createOutputsRealizedSupplyUnrealizedPattern2(this, 'p2sh'), - p2wpkh: createOutputsRealizedSupplyUnrealizedPattern2(this, 'p2wpkh'), - p2wsh: createOutputsRealizedSupplyUnrealizedPattern2(this, 'p2wsh'), - p2tr: createOutputsRealizedSupplyUnrealizedPattern2(this, 'p2tr'), - p2a: createOutputsRealizedSupplyUnrealizedPattern2(this, 'p2a'), - unknown: createOutputsRealizedSupplyUnrealizedPattern2(this, 'unknown_outputs'), - empty: createOutputsRealizedSupplyUnrealizedPattern2(this, 'empty_outputs'), + p2pk65: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2pk65'), + p2pk33: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2pk33'), + p2pkh: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2pkh'), + p2ms: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2ms'), + p2sh: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2sh'), + p2wpkh: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2wpkh'), + p2wsh: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2wsh'), + p2tr: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2tr'), + p2a: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'p2a'), + unknown: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'unknown_outputs'), + empty: createActivityOutputsRealizedSupplyUnrealizedPattern3(this, 'empty_outputs'), }, profitability: { range: { @@ -9084,76 +9077,76 @@ class BrkClient extends BrkClientBase { }, }, matured: { - under1h: createBaseCumulativeSumPattern4(this, 'utxos_under_1h_old_matured_supply'), - _1hTo1d: createBaseCumulativeSumPattern4(this, 'utxos_1h_to_1d_old_matured_supply'), - _1dTo1w: createBaseCumulativeSumPattern4(this, 'utxos_1d_to_1w_old_matured_supply'), - _1wTo1m: createBaseCumulativeSumPattern4(this, 'utxos_1w_to_1m_old_matured_supply'), - _1mTo2m: createBaseCumulativeSumPattern4(this, 'utxos_1m_to_2m_old_matured_supply'), - _2mTo3m: createBaseCumulativeSumPattern4(this, 'utxos_2m_to_3m_old_matured_supply'), - _3mTo4m: createBaseCumulativeSumPattern4(this, 'utxos_3m_to_4m_old_matured_supply'), - _4mTo5m: createBaseCumulativeSumPattern4(this, 'utxos_4m_to_5m_old_matured_supply'), - _5mTo6m: createBaseCumulativeSumPattern4(this, 'utxos_5m_to_6m_old_matured_supply'), - _6mTo1y: createBaseCumulativeSumPattern4(this, 'utxos_6m_to_1y_old_matured_supply'), - _1yTo2y: createBaseCumulativeSumPattern4(this, 'utxos_1y_to_2y_old_matured_supply'), - _2yTo3y: createBaseCumulativeSumPattern4(this, 'utxos_2y_to_3y_old_matured_supply'), - _3yTo4y: createBaseCumulativeSumPattern4(this, 'utxos_3y_to_4y_old_matured_supply'), - _4yTo5y: createBaseCumulativeSumPattern4(this, 'utxos_4y_to_5y_old_matured_supply'), - _5yTo6y: createBaseCumulativeSumPattern4(this, 'utxos_5y_to_6y_old_matured_supply'), - _6yTo7y: createBaseCumulativeSumPattern4(this, 'utxos_6y_to_7y_old_matured_supply'), - _7yTo8y: createBaseCumulativeSumPattern4(this, 'utxos_7y_to_8y_old_matured_supply'), - _8yTo10y: createBaseCumulativeSumPattern4(this, 'utxos_8y_to_10y_old_matured_supply'), - _10yTo12y: createBaseCumulativeSumPattern4(this, 'utxos_10y_to_12y_old_matured_supply'), - _12yTo15y: createBaseCumulativeSumPattern4(this, 'utxos_12y_to_15y_old_matured_supply'), - over15y: createBaseCumulativeSumPattern4(this, 'utxos_over_15y_old_matured_supply'), + under1h: createBaseCumulativeSumPattern3(this, 'utxos_under_1h_old_matured_supply'), + _1hTo1d: createBaseCumulativeSumPattern3(this, 'utxos_1h_to_1d_old_matured_supply'), + _1dTo1w: createBaseCumulativeSumPattern3(this, 'utxos_1d_to_1w_old_matured_supply'), + _1wTo1m: createBaseCumulativeSumPattern3(this, 'utxos_1w_to_1m_old_matured_supply'), + _1mTo2m: createBaseCumulativeSumPattern3(this, 'utxos_1m_to_2m_old_matured_supply'), + _2mTo3m: createBaseCumulativeSumPattern3(this, 'utxos_2m_to_3m_old_matured_supply'), + _3mTo4m: createBaseCumulativeSumPattern3(this, 'utxos_3m_to_4m_old_matured_supply'), + _4mTo5m: createBaseCumulativeSumPattern3(this, 'utxos_4m_to_5m_old_matured_supply'), + _5mTo6m: createBaseCumulativeSumPattern3(this, 'utxos_5m_to_6m_old_matured_supply'), + _6mTo1y: createBaseCumulativeSumPattern3(this, 'utxos_6m_to_1y_old_matured_supply'), + _1yTo2y: createBaseCumulativeSumPattern3(this, 'utxos_1y_to_2y_old_matured_supply'), + _2yTo3y: createBaseCumulativeSumPattern3(this, 'utxos_2y_to_3y_old_matured_supply'), + _3yTo4y: createBaseCumulativeSumPattern3(this, 'utxos_3y_to_4y_old_matured_supply'), + _4yTo5y: createBaseCumulativeSumPattern3(this, 'utxos_4y_to_5y_old_matured_supply'), + _5yTo6y: createBaseCumulativeSumPattern3(this, 'utxos_5y_to_6y_old_matured_supply'), + _6yTo7y: createBaseCumulativeSumPattern3(this, 'utxos_6y_to_7y_old_matured_supply'), + _7yTo8y: createBaseCumulativeSumPattern3(this, 'utxos_7y_to_8y_old_matured_supply'), + _8yTo10y: createBaseCumulativeSumPattern3(this, 'utxos_8y_to_10y_old_matured_supply'), + _10yTo12y: createBaseCumulativeSumPattern3(this, 'utxos_10y_to_12y_old_matured_supply'), + _12yTo15y: createBaseCumulativeSumPattern3(this, 'utxos_12y_to_15y_old_matured_supply'), + over15y: createBaseCumulativeSumPattern3(this, 'utxos_over_15y_old_matured_supply'), }, }, addr: { overAmount: { - _1sat: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1sat'), - _10sats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10sats'), - _100sats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_100sats'), - _1kSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1k_sats'), - _10kSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10k_sats'), - _100kSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_100k_sats'), - _1mSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1m_sats'), - _10mSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10m_sats'), - _1btc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1btc'), - _10btc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10btc'), - _100btc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_100btc'), - _1kBtc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1k_btc'), - _10kBtc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10k_btc'), + _1sat: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1sat'), + _10sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10sats'), + _100sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_100sats'), + _1kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1k_sats'), + _10kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10k_sats'), + _100kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_100k_sats'), + _1mSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1m_sats'), + _10mSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10m_sats'), + _1btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1btc'), + _10btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10btc'), + _100btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_100btc'), + _1kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_1k_btc'), + _10kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_10k_btc'), }, amountRange: { - _0sats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_0sats'), - _1satTo10sats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1sat_to_10sats'), - _10satsTo100sats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10sats_to_100sats'), - _100satsTo1kSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_100sats_to_1k_sats'), - _1kSatsTo10kSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1k_sats_to_10k_sats'), - _10kSatsTo100kSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10k_sats_to_100k_sats'), - _100kSatsTo1mSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_100k_sats_to_1m_sats'), - _1mSatsTo10mSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1m_sats_to_10m_sats'), - _10mSatsTo1btc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10m_sats_to_1btc'), - _1btcTo10btc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1btc_to_10btc'), - _10btcTo100btc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10btc_to_100btc'), - _100btcTo1kBtc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_100btc_to_1k_btc'), - _1kBtcTo10kBtc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1k_btc_to_10k_btc'), - _10kBtcTo100kBtc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10k_btc_to_100k_btc'), - over100kBtc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_100k_btc'), + _0sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_0sats'), + _1satTo10sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1sat_to_10sats'), + _10satsTo100sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10sats_to_100sats'), + _100satsTo1kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_100sats_to_1k_sats'), + _1kSatsTo10kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1k_sats_to_10k_sats'), + _10kSatsTo100kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10k_sats_to_100k_sats'), + _100kSatsTo1mSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_100k_sats_to_1m_sats'), + _1mSatsTo10mSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1m_sats_to_10m_sats'), + _10mSatsTo1btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10m_sats_to_1btc'), + _1btcTo10btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1btc_to_10btc'), + _10btcTo100btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10btc_to_100btc'), + _100btcTo1kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_100btc_to_1k_btc'), + _1kBtcTo10kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_1k_btc_to_10k_btc'), + _10kBtcTo100kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_10k_btc_to_100k_btc'), + over100kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_over_100k_btc'), }, underAmount: { - _10sats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10sats'), - _100sats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_100sats'), - _1kSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_1k_sats'), - _10kSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10k_sats'), - _100kSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_100k_sats'), - _1mSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_1m_sats'), - _10mSats: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10m_sats'), - _1btc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_1btc'), - _10btc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10btc'), - _100btc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_100btc'), - _1kBtc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_1k_btc'), - _10kBtc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10k_btc'), - _100kBtc: createAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_100k_btc'), + _10sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10sats'), + _100sats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_100sats'), + _1kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_1k_sats'), + _10kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10k_sats'), + _100kSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_100k_sats'), + _1mSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_1m_sats'), + _10mSats: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10m_sats'), + _1btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_1btc'), + _10btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10btc'), + _100btc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_100btc'), + _1kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_1k_btc'), + _10kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_10k_btc'), + _100kBtc: createActivityAddrOutputsRealizedSupplyUnrealizedPattern(this, 'addrs_under_100k_btc'), }, }, }, diff --git a/packages/brk_client/brk_client/__init__.py b/packages/brk_client/brk_client/__init__.py index 2656e3fae..5ef40691c 100644 --- a/packages/brk_client/brk_client/__init__.py +++ b/packages/brk_client/brk_client/__init__.py @@ -2360,7 +2360,7 @@ class CapLossMvrvNetPriceProfitSoprPattern: self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'mvrv')) self.net_pnl: BaseCumulativeDeltaSumPattern = BaseCumulativeDeltaSumPattern(client, _m(acc, 'net_realized_pnl')) self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, _m(acc, 'realized_price')) - self.profit: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, _m(acc, 'realized_profit')) + self.profit: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, _m(acc, 'realized_profit')) self.sopr: RatioValuePattern = RatioValuePattern(client, acc) class GrossInvestedLossNetNuplProfitSentimentPattern2: @@ -2379,6 +2379,18 @@ class _1m1w1y2y4yAllPattern: self._4y: BpsRatioPattern2 = BpsRatioPattern2(client, _m(acc, '4y')) self.all: BpsRatioPattern2 = BpsRatioPattern2(client, _m(acc, 'all')) +class ActivityAddrOutputsRealizedSupplyUnrealizedPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated series name.""" + self.activity: TransferPattern = TransferPattern(client, _m(acc, 'transfer_volume')) + self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, _m(acc, 'addr_count')) + self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count')) + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, acc) + self.supply: DeltaHalfTotalPattern = DeltaHalfTotalPattern(client, _m(acc, 'supply')) + self.unrealized: NuplPattern = NuplPattern(client, _m(acc, 'nupl')) + class BaseChangeCumulativeDeltaSumToPattern: """Pattern struct for repeated tree structure.""" @@ -2388,7 +2400,7 @@ class BaseChangeCumulativeDeltaSumToPattern: 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: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, _m(acc, 'realized_pnl_sum')) + self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, _m(acc, 'realized_pnl_sum')) self.to_rcap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'realized_pnl_to_rcap')) class BpsCentsPercentilesRatioSatsUsdPattern: @@ -2415,18 +2427,6 @@ class BtcCentsSatsToUsdPattern3: self.to_own: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'to_own')) self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'usd')) -class CapLossMvrvPriceProfitSoprPattern: - """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: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, _m(acc, 'realized_loss')) - self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'mvrv')) - self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, _m(acc, 'realized_price')) - self.profit: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, _m(acc, 'realized_profit')) - self.sopr: ValuePattern = ValuePattern(client, _m(acc, 'value')) - class CentsNegativeToUsdPattern2: """Pattern struct for repeated tree structure.""" @@ -2486,14 +2486,25 @@ class ActivityOutputsRealizedSupplyUnrealizedPattern: self.supply: DeltaHalfInToTotalPattern = DeltaHalfInToTotalPattern(client, _m(acc, 'supply')) self.unrealized: LossNetNuplProfitPattern = LossNetNuplProfitPattern(client, acc) -class AddrOutputsRealizedSupplyUnrealizedPattern: +class ActivityOutputsRealizedSupplyUnrealizedPattern3: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated series name.""" - self.addr_count: BaseDeltaPattern = BaseDeltaPattern(client, _m(acc, 'addr_count')) + self.activity: TransferPattern = TransferPattern(client, _m(acc, 'transfer_volume')) self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count')) - self.realized: CapLossMvrvPriceProfitSoprPattern = CapLossMvrvPriceProfitSoprPattern(client, acc) + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, acc) + self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, _m(acc, 'supply')) + self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, acc) + +class ActivityOutputsRealizedSupplyUnrealizedPattern2: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated series name.""" + self.activity: TransferPattern = TransferPattern(client, _m(acc, 'transfer_volume')) + self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count')) + self.realized: CapLossMvrvPriceProfitPattern = CapLossMvrvPriceProfitPattern(client, acc) self.supply: DeltaHalfTotalPattern = DeltaHalfTotalPattern(client, _m(acc, 'supply')) self.unrealized: NuplPattern = NuplPattern(client, _m(acc, 'nupl')) @@ -2504,9 +2515,9 @@ class BaseCumulativeInSumPattern: """Create pattern node with accumulated series name.""" self.base: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, acc) self.cumulative: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'cumulative')) - self.in_loss: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, _m(acc, 'in_loss')) - self.in_profit: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, _m(acc, 'in_profit')) - self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, _m(acc, 'sum')) + self.in_loss: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, _m(acc, 'in_loss')) + self.in_profit: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, _m(acc, 'in_profit')) + self.sum: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, _m(acc, 'sum')) class BaseCumulativeNegativeSumToPattern: """Pattern struct for repeated tree structure.""" @@ -2556,6 +2567,17 @@ class BtcCentsSatsToUsdPattern2: self.to_own: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, _m(acc, 'to_own')) self.usd: SeriesPattern1[Dollars] = SeriesPattern1(client, _m(acc, 'usd')) +class CapLossMvrvPriceProfitPattern: + """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: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, _m(acc, 'realized_loss')) + self.mvrv: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, 'mvrv')) + self.price: BpsCentsRatioSatsUsdPattern = BpsCentsRatioSatsUsdPattern(client, _m(acc, 'realized_price')) + self.profit: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, _m(acc, 'realized_profit')) + class CentsToUsdPattern4: """Pattern struct for repeated tree structure.""" @@ -2628,7 +2650,7 @@ class _1m1w1y24hPattern6: self._1y: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, _m(acc, '1y')) self._24h: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, _m(acc, '24h')) -class _1m1w1y24hPattern5: +class _1m1w1y24hPattern3: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): @@ -2648,7 +2670,7 @@ class _1m1w1y2wPattern: self._1y: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, '1y')) self._2w: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, '2w')) -class _1m1w1y24hPattern3: +class _1m1w1y24hPattern4: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): @@ -2658,7 +2680,7 @@ class _1m1w1y24hPattern3: self._1y: CentsUsdPattern = CentsUsdPattern(client, _m(acc, '1y')) self._24h: CentsUsdPattern = CentsUsdPattern(client, _m(acc, '24h')) -class _1m1w1y24hPattern4: +class _1m1w1y24hPattern5: """Pattern struct for repeated tree structure.""" def __init__(self, client: BrkClientBase, acc: str): @@ -2672,10 +2694,6 @@ class _1y2y4yAllPattern: """Pattern struct for repeated tree structure.""" pass -class AdjustedRatioValuePattern: - """Pattern struct for repeated tree structure.""" - pass - class BaseCumulativeDeltaSumPattern: """Pattern struct for repeated tree structure.""" @@ -2684,7 +2702,7 @@ class BaseCumulativeDeltaSumPattern: self.base: CentsUsdPattern = CentsUsdPattern(client, acc) self.cumulative: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'cumulative')) self.delta: AbsoluteRatePattern2 = AbsoluteRatePattern2(client, _m(acc, 'delta')) - self.sum: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, _m(acc, 'sum')) + self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, _m(acc, 'sum')) class BaseCumulativeNegativeSumPattern: """Pattern struct for repeated tree structure.""" @@ -2694,7 +2712,7 @@ class BaseCumulativeNegativeSumPattern: self.base: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, 'realized_loss')) self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, 'realized_loss_cumulative')) self.negative: BaseSumPattern = BaseSumPattern(client, _m(acc, 'neg_realized_loss')) - self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, _m(acc, 'realized_loss_sum')) + self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, _m(acc, 'realized_loss_sum')) class BaseCumulativeSumToPattern: """Pattern struct for repeated tree structure.""" @@ -2703,7 +2721,7 @@ class BaseCumulativeSumToPattern: """Create pattern node with accumulated series name.""" self.base: CentsUsdPattern2 = CentsUsdPattern2(client, acc) self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, 'cumulative')) - self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, _m(acc, 'sum')) + self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, _m(acc, 'sum')) self.to_rcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, _m(acc, 'to_rcap')) class BothReactivatedReceivingSendingPattern: @@ -2760,26 +2778,6 @@ class LossNetNuplProfitPattern: self.nupl: BpsRatioPattern = BpsRatioPattern(client, _m(acc, 'nupl')) self.profit: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, 'unrealized_profit')) -class OutputsRealizedSupplyUnrealizedPattern2: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count')) - self.realized: CapLossMvrvPriceProfitSoprPattern = CapLossMvrvPriceProfitSoprPattern(client, acc) - self.supply: DeltaHalfInTotalPattern2 = DeltaHalfInTotalPattern2(client, _m(acc, 'supply')) - self.unrealized: LossNuplProfitPattern = LossNuplProfitPattern(client, acc) - -class OutputsRealizedSupplyUnrealizedPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.outputs: UnspentPattern = UnspentPattern(client, _m(acc, 'utxo_count')) - self.realized: CapLossMvrvPriceProfitSoprPattern = CapLossMvrvPriceProfitSoprPattern(client, acc) - self.supply: DeltaHalfTotalPattern = DeltaHalfTotalPattern(client, _m(acc, 'supply')) - self.unrealized: NuplPattern = NuplPattern(client, _m(acc, 'nupl')) - class _1m1w1y24hPattern(Generic[T]): """Pattern struct for repeated tree structure.""" @@ -2790,23 +2788,27 @@ class _1m1w1y24hPattern(Generic[T]): self._1y: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, '1y')) self._24h: SeriesPattern1[T] = SeriesPattern1(client, _m(acc, '24h')) -class BaseCumulativeSumPattern4: +class AdjustedRatioValuePattern: """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.base: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, acc) - self.cumulative: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'cumulative')) - self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, _m(acc, 'sum')) + pass class BaseCumulativeSumPattern3: """Pattern struct for repeated tree structure.""" + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated series name.""" + self.base: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, acc) + self.cumulative: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'cumulative')) + self.sum: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, _m(acc, 'sum')) + +class BaseCumulativeSumPattern4: + """Pattern struct for repeated tree structure.""" + def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated series name.""" self.base: CentsUsdPattern2 = CentsUsdPattern2(client, acc) self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, _m(acc, 'cumulative')) - self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, _m(acc, 'sum')) + self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, _m(acc, 'sum')) class BaseCumulativeSumPattern2: """Pattern struct for repeated tree structure.""" @@ -2824,7 +2826,7 @@ class BlocksDominanceRewardsPattern: """Create pattern node with accumulated series name.""" self.blocks_mined: BaseCumulativeSumPattern2 = BaseCumulativeSumPattern2(client, _m(acc, 'blocks_mined')) self.dominance: _1m1w1y24hBpsPercentRatioPattern = _1m1w1y24hBpsPercentRatioPattern(client, _m(acc, 'dominance')) - self.rewards: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, _m(acc, 'rewards')) + self.rewards: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, _m(acc, 'rewards')) class BpsPercentRatioPattern3: """Pattern struct for repeated tree structure.""" @@ -2947,19 +2949,10 @@ class NuplRealizedSupplyPattern: self.realized_cap: AllSthPattern = AllSthPattern(client, acc) self.supply: AllSthPattern2 = AllSthPattern2(client, acc) -class RatioValuePattern2: +class RatioTransferValuePattern: """Pattern struct for repeated tree structure.""" pass -class RatioValuePattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.ratio: _24hPattern = _24hPattern(client, _m(acc, 'sopr_24h')) - self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, _m(acc, 'value_created')) - self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, _m(acc, 'value_destroyed')) - class _6bBlockTxPattern(Generic[T]): """Pattern struct for repeated tree structure.""" @@ -2991,7 +2984,7 @@ class AbsoluteRatePattern2: def __init__(self, client: BrkClientBase, acc: str): """Create pattern node with accumulated series name.""" - self.absolute: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, acc) + self.absolute: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, acc) self.rate: _1m1w1y24hPattern2 = _1m1w1y24hPattern2(client, acc) class AllSthPattern2: @@ -3090,6 +3083,14 @@ class PriceRatioPattern: self.price: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, disc)) self.ratio: SeriesPattern1[StoredF32] = SeriesPattern1(client, _m(acc, f'ratio_{disc}')) +class RatioValuePattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated series name.""" + self.ratio: _24hPattern = _24hPattern(client, _m(acc, 'sopr_24h')) + self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, _m(acc, 'value_destroyed')) + class SdSmaPattern: """Pattern struct for repeated tree structure.""" pass @@ -3102,14 +3103,6 @@ class ToPattern: self.to_mcap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'mcap')) self.to_rcap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'rcap')) -class ValuePattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated series name.""" - self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, _m(acc, 'created')) - self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, _m(acc, 'destroyed')) - class _24hPattern: """Pattern struct for repeated tree structure.""" @@ -3131,6 +3124,13 @@ class PricePattern: """Create pattern node with accumulated series name.""" self.price: BpsCentsPercentilesRatioSatsUsdPattern = BpsCentsPercentilesRatioSatsUsdPattern(client, acc) +class TransferPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated series name.""" + self.transfer_volume: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, acc) + class UnspentPattern: """Pattern struct for repeated tree structure.""" @@ -3336,7 +3336,7 @@ class SeriesTree_Transactions_Volume: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.transfer_volume: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'transfer_volume_bis') + self.transfer_volume: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'transfer_volume_bis') self.tx_per_sec: _1m1w1y24hPattern[StoredF32] = _1m1w1y24hPattern(client, 'tx_per_sec') self.outputs_per_sec: _1m1w1y24hPattern[StoredF32] = _1m1w1y24hPattern(client, 'outputs_per_sec') self.inputs_per_sec: _1m1w1y24hPattern[StoredF32] = _1m1w1y24hPattern(client, 'inputs_per_sec') @@ -3613,7 +3613,7 @@ class SeriesTree_Scripts_Value: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.op_return: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'op_return_value') + self.op_return: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'op_return_value') class SeriesTree_Scripts: """Series tree node.""" @@ -3647,15 +3647,15 @@ class SeriesTree_Mining_Rewards_Fees: def __init__(self, client: BrkClientBase, base_path: str = ''): self.base: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'fees') self.cumulative: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'fees_cumulative') - self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_sum') - self.average: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_average') - self.min: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_min') - self.max: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_max') - self.pct10: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_pct10') - self.pct25: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_pct25') - self.median: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_median') - self.pct75: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_pct75') - self.pct90: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'fees_pct90') + self.sum: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, 'fees_sum') + self.average: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, 'fees_average') + self.min: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, 'fees_min') + self.max: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, 'fees_max') + self.pct10: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, 'fees_pct10') + self.pct25: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, 'fees_pct25') + self.median: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, 'fees_median') + self.pct75: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, 'fees_pct75') + self.pct90: _1m1w1y24hPattern3 = _1m1w1y24hPattern3(client, 'fees_pct90') self.dominance: _1m1w1y24hBpsPercentRatioPattern = _1m1w1y24hBpsPercentRatioPattern(client, 'fee_dominance') self.to_subsidy_ratio: SeriesTree_Mining_Rewards_Fees_ToSubsidyRatio = SeriesTree_Mining_Rewards_Fees_ToSubsidyRatio(client) @@ -3670,7 +3670,7 @@ class SeriesTree_Mining_Rewards: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.coinbase: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'coinbase') + self.coinbase: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'coinbase') self.subsidy: SeriesTree_Mining_Rewards_Subsidy = SeriesTree_Mining_Rewards_Subsidy(client) self.fees: SeriesTree_Mining_Rewards_Fees = SeriesTree_Mining_Rewards_Fees(client) self.unclaimed: SeriesTree_Mining_Rewards_Unclaimed = SeriesTree_Mining_Rewards_Unclaimed(client) @@ -4677,7 +4677,7 @@ class SeriesTree_Supply: def __init__(self, client: BrkClientBase, base_path: str = ''): self.state: SeriesPattern18[SupplyState] = SeriesPattern18(client, 'supply_state') self.circulating: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'circulating_supply') - self.burned: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'unspendable_supply') + self.burned: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'unspendable_supply') self.inflation_rate: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'inflation_rate') self.velocity: SeriesTree_Supply_Velocity = SeriesTree_Supply_Velocity(client) self.market_cap: CentsDeltaUsdPattern = CentsDeltaUsdPattern(client, 'market_cap') @@ -4701,7 +4701,7 @@ class SeriesTree_Cohorts_Utxo_All_Activity: self.transfer_volume: BaseCumulativeInSumPattern = BaseCumulativeInSumPattern(client, 'transfer_volume') self.coindays_destroyed: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, 'coindays_destroyed') self.coinyears_destroyed: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'coinyears_destroyed') - self.dormancy: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'dormancy') + self.dormancy: _1m1w1y24hPattern[StoredF32] = _1m1w1y24hPattern(client, 'dormancy') class SeriesTree_Cohorts_Utxo_All_Realized_Loss: """Series tree node.""" @@ -4709,7 +4709,7 @@ class SeriesTree_Cohorts_Utxo_All_Realized_Loss: def __init__(self, client: BrkClientBase, base_path: str = ''): self.base: CentsUsdPattern2 = CentsUsdPattern2(client, 'realized_loss') self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, 'realized_loss_cumulative') - self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, 'realized_loss_sum') + self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, 'realized_loss_sum') self.negative: BaseSumPattern = BaseSumPattern(client, 'neg_realized_loss') self.to_rcap: BpsPercentRatioPattern4 = BpsPercentRatioPattern4(client, 'realized_loss_to_rcap') @@ -4820,14 +4820,13 @@ class SeriesTree_Cohorts_Utxo_All_Realized_Sopr_Adjusted: def __init__(self, client: BrkClientBase, base_path: str = ''): self.ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'asopr') - self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'adj_value_created') + self.transfer_volume: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'adj_value_created') self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'adj_value_destroyed') class SeriesTree_Cohorts_Utxo_All_Realized_Sopr: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'value_created') self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'value_destroyed') self.ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'sopr') self.adjusted: SeriesTree_Cohorts_Utxo_All_Realized_Sopr_Adjusted = SeriesTree_Cohorts_Utxo_All_Realized_Sopr_Adjusted(client) @@ -4841,9 +4840,9 @@ class SeriesTree_Cohorts_Utxo_All_Realized: 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.sopr: SeriesTree_Cohorts_Utxo_All_Realized_Sopr = SeriesTree_Cohorts_Utxo_All_Realized_Sopr(client) self.net_pnl: BaseChangeCumulativeDeltaSumToPattern = BaseChangeCumulativeDeltaSumToPattern(client, 'net') - self.gross_pnl: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'realized_gross_pnl') + self.sopr: SeriesTree_Cohorts_Utxo_All_Realized_Sopr = SeriesTree_Cohorts_Utxo_All_Realized_Sopr(client) + self.gross_pnl: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'realized_gross_pnl') self.sell_side_risk_ratio: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'sell_side_risk_ratio') self.peak_regret: BaseCumulativeSumToPattern = BaseCumulativeSumToPattern(client, 'realized_peak_regret') self.investor: PricePattern = PricePattern(client, 'investor_price') @@ -4924,7 +4923,7 @@ class SeriesTree_Cohorts_Utxo_Sth_Activity: self.transfer_volume: BaseCumulativeInSumPattern = BaseCumulativeInSumPattern(client, 'sth_transfer_volume') self.coindays_destroyed: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, 'sth_coindays_destroyed') self.coinyears_destroyed: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'sth_coinyears_destroyed') - self.dormancy: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'sth_dormancy') + self.dormancy: _1m1w1y24hPattern[StoredF32] = _1m1w1y24hPattern(client, 'sth_dormancy') class SeriesTree_Cohorts_Utxo_Sth_Realized_Loss: """Series tree node.""" @@ -4932,7 +4931,7 @@ class SeriesTree_Cohorts_Utxo_Sth_Realized_Loss: def __init__(self, client: BrkClientBase, base_path: str = ''): self.base: CentsUsdPattern2 = CentsUsdPattern2(client, 'sth_realized_loss') self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, 'sth_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, 'sth_realized_loss_sum') + self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(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') @@ -5043,14 +5042,13 @@ class SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr_Adjusted: def __init__(self, client: BrkClientBase, base_path: str = ''): self.ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'sth_asopr') - self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'sth_adj_value_created') + self.transfer_volume: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'sth_adj_value_created') self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'sth_adj_value_destroyed') class SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'sth_value_created') self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'sth_value_destroyed') self.ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'sth_sopr') self.adjusted: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr_Adjusted = SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr_Adjusted(client) @@ -5064,9 +5062,9 @@ class SeriesTree_Cohorts_Utxo_Sth_Realized: 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.sopr: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr = SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr(client) self.net_pnl: BaseChangeCumulativeDeltaSumToPattern = BaseChangeCumulativeDeltaSumToPattern(client, 'sth_net') - self.gross_pnl: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'sth_realized_gross_pnl') + self.sopr: SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr = SeriesTree_Cohorts_Utxo_Sth_Realized_Sopr(client) + self.gross_pnl: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'sth_realized_gross_pnl') self.sell_side_risk_ratio: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'sth_sell_side_risk_ratio') self.peak_regret: BaseCumulativeSumToPattern = BaseCumulativeSumToPattern(client, 'sth_realized_peak_regret') self.investor: PricePattern = PricePattern(client, 'sth_investor_price') @@ -5120,7 +5118,7 @@ class SeriesTree_Cohorts_Utxo_Lth_Activity: self.transfer_volume: BaseCumulativeInSumPattern = BaseCumulativeInSumPattern(client, 'lth_transfer_volume') self.coindays_destroyed: BaseCumulativeSumPattern[StoredF64] = BaseCumulativeSumPattern(client, 'lth_coindays_destroyed') self.coinyears_destroyed: SeriesPattern1[StoredF64] = SeriesPattern1(client, 'lth_coinyears_destroyed') - self.dormancy: SeriesPattern1[StoredF32] = SeriesPattern1(client, 'lth_dormancy') + self.dormancy: _1m1w1y24hPattern[StoredF32] = _1m1w1y24hPattern(client, 'lth_dormancy') class SeriesTree_Cohorts_Utxo_Lth_Realized_Loss: """Series tree node.""" @@ -5128,7 +5126,7 @@ class SeriesTree_Cohorts_Utxo_Lth_Realized_Loss: def __init__(self, client: BrkClientBase, base_path: str = ''): self.base: CentsUsdPattern2 = CentsUsdPattern2(client, 'lth_realized_loss') self.cumulative: CentsUsdPattern2 = CentsUsdPattern2(client, 'lth_realized_loss_cumulative') - self.sum: _1m1w1y24hPattern4 = _1m1w1y24hPattern4(client, 'lth_realized_loss_sum') + self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(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') @@ -5238,7 +5236,6 @@ class SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.value_created: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'lth_value_created') self.value_destroyed: BaseCumulativeSumPattern[Cents] = BaseCumulativeSumPattern(client, 'lth_value_destroyed') self.ratio: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, 'lth_sopr') @@ -5251,9 +5248,9 @@ class SeriesTree_Cohorts_Utxo_Lth_Realized: 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.sopr: SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr = SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr(client) self.net_pnl: BaseChangeCumulativeDeltaSumToPattern = BaseChangeCumulativeDeltaSumToPattern(client, 'lth_net') - self.gross_pnl: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'lth_realized_gross_pnl') + self.sopr: SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr = SeriesTree_Cohorts_Utxo_Lth_Realized_Sopr(client) + self.gross_pnl: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'lth_realized_gross_pnl') self.sell_side_risk_ratio: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, 'lth_sell_side_risk_ratio') self.peak_regret: BaseCumulativeSumToPattern = BaseCumulativeSumToPattern(client, 'lth_realized_peak_regret') self.investor: PricePattern = PricePattern(client, 'lth_investor_price') @@ -5409,73 +5406,73 @@ class SeriesTree_Cohorts_Utxo_OverAmount: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._1sat: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1sat') - self._10sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_10sats') - self._100sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_100sats') - self._1k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1k_sats') - self._10k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_10k_sats') - self._100k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_100k_sats') - self._1m_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1m_sats') - self._10m_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_10m_sats') - self._1btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1btc') - self._10btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_10btc') - self._100btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_100btc') - self._1k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_1k_btc') - self._10k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_10k_btc') + self._1sat: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_1sat') + self._10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_10sats') + self._100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_100sats') + self._1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_1k_sats') + self._10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_10k_sats') + self._100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_100k_sats') + self._1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_1m_sats') + self._10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_10m_sats') + self._1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_1btc') + self._10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_10btc') + self._100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_100btc') + self._1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_1k_btc') + self._10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_10k_btc') class SeriesTree_Cohorts_Utxo_AmountRange: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._0sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_0sats') - self._1sat_to_10sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1sat_to_10sats') - self._10sats_to_100sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_10sats_to_100sats') - self._100sats_to_1k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_100sats_to_1k_sats') - self._1k_sats_to_10k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1k_sats_to_10k_sats') - self._10k_sats_to_100k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_10k_sats_to_100k_sats') - self._100k_sats_to_1m_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_100k_sats_to_1m_sats') - self._1m_sats_to_10m_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1m_sats_to_10m_sats') - self._10m_sats_to_1btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_10m_sats_to_1btc') - self._1btc_to_10btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1btc_to_10btc') - self._10btc_to_100btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_10btc_to_100btc') - self._100btc_to_1k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_100btc_to_1k_btc') - self._1k_btc_to_10k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_1k_btc_to_10k_btc') - self._10k_btc_to_100k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_10k_btc_to_100k_btc') - self.over_100k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_over_100k_btc') + self._0sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_0sats') + self._1sat_to_10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_1sat_to_10sats') + self._10sats_to_100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_10sats_to_100sats') + self._100sats_to_1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_100sats_to_1k_sats') + self._1k_sats_to_10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_1k_sats_to_10k_sats') + self._10k_sats_to_100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_10k_sats_to_100k_sats') + self._100k_sats_to_1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_100k_sats_to_1m_sats') + self._1m_sats_to_10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_1m_sats_to_10m_sats') + self._10m_sats_to_1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_10m_sats_to_1btc') + self._1btc_to_10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_1btc_to_10btc') + self._10btc_to_100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_10btc_to_100btc') + self._100btc_to_1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_100btc_to_1k_btc') + self._1k_btc_to_10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_1k_btc_to_10k_btc') + self._10k_btc_to_100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_10k_btc_to_100k_btc') + self.over_100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_over_100k_btc') class SeriesTree_Cohorts_Utxo_UnderAmount: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._10sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_10sats') - self._100sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_100sats') - self._1k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1k_sats') - self._10k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_10k_sats') - self._100k_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_100k_sats') - self._1m_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1m_sats') - self._10m_sats: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_10m_sats') - self._1btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1btc') - self._10btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_10btc') - self._100btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_100btc') - self._1k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_1k_btc') - self._10k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_10k_btc') - self._100k_btc: OutputsRealizedSupplyUnrealizedPattern = OutputsRealizedSupplyUnrealizedPattern(client, 'utxos_under_100k_btc') + self._10sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_10sats') + self._100sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_100sats') + self._1k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_1k_sats') + self._10k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_10k_sats') + self._100k_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_100k_sats') + self._1m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_1m_sats') + self._10m_sats: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_10m_sats') + self._1btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_1btc') + self._10btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_10btc') + self._100btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_100btc') + self._1k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_1k_btc') + self._10k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_10k_btc') + self._100k_btc: ActivityOutputsRealizedSupplyUnrealizedPattern2 = ActivityOutputsRealizedSupplyUnrealizedPattern2(client, 'utxos_under_100k_btc') class SeriesTree_Cohorts_Utxo_Type: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.p2pk65: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2pk65') - self.p2pk33: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2pk33') - self.p2pkh: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2pkh') - self.p2ms: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2ms') - self.p2sh: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2sh') - self.p2wpkh: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2wpkh') - self.p2wsh: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2wsh') - self.p2tr: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2tr') - self.p2a: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'p2a') - self.unknown: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'unknown_outputs') - self.empty: OutputsRealizedSupplyUnrealizedPattern2 = OutputsRealizedSupplyUnrealizedPattern2(client, 'empty_outputs') + self.p2pk65: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2pk65') + self.p2pk33: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2pk33') + self.p2pkh: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2pkh') + self.p2ms: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2ms') + self.p2sh: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2sh') + self.p2wpkh: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2wpkh') + self.p2wsh: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2wsh') + self.p2tr: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2tr') + self.p2a: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'p2a') + self.unknown: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'unknown_outputs') + self.empty: ActivityOutputsRealizedSupplyUnrealizedPattern3 = ActivityOutputsRealizedSupplyUnrealizedPattern3(client, 'empty_outputs') class SeriesTree_Cohorts_Utxo_Profitability_Range: """Series tree node.""" @@ -5552,27 +5549,27 @@ class SeriesTree_Cohorts_Utxo_Matured: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.under_1h: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_under_1h_old_matured_supply') - self._1h_to_1d: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_1h_to_1d_old_matured_supply') - self._1d_to_1w: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_1d_to_1w_old_matured_supply') - self._1w_to_1m: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_1w_to_1m_old_matured_supply') - self._1m_to_2m: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_1m_to_2m_old_matured_supply') - self._2m_to_3m: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_2m_to_3m_old_matured_supply') - self._3m_to_4m: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_3m_to_4m_old_matured_supply') - self._4m_to_5m: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_4m_to_5m_old_matured_supply') - self._5m_to_6m: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_5m_to_6m_old_matured_supply') - self._6m_to_1y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_6m_to_1y_old_matured_supply') - self._1y_to_2y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_1y_to_2y_old_matured_supply') - self._2y_to_3y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_2y_to_3y_old_matured_supply') - self._3y_to_4y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_3y_to_4y_old_matured_supply') - self._4y_to_5y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_4y_to_5y_old_matured_supply') - self._5y_to_6y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_5y_to_6y_old_matured_supply') - self._6y_to_7y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_6y_to_7y_old_matured_supply') - self._7y_to_8y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_7y_to_8y_old_matured_supply') - self._8y_to_10y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_8y_to_10y_old_matured_supply') - self._10y_to_12y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_10y_to_12y_old_matured_supply') - self._12y_to_15y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_12y_to_15y_old_matured_supply') - self.over_15y: BaseCumulativeSumPattern4 = BaseCumulativeSumPattern4(client, 'utxos_over_15y_old_matured_supply') + self.under_1h: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_under_1h_old_matured_supply') + self._1h_to_1d: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_1h_to_1d_old_matured_supply') + self._1d_to_1w: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_1d_to_1w_old_matured_supply') + self._1w_to_1m: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_1w_to_1m_old_matured_supply') + self._1m_to_2m: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_1m_to_2m_old_matured_supply') + self._2m_to_3m: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_2m_to_3m_old_matured_supply') + self._3m_to_4m: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_3m_to_4m_old_matured_supply') + self._4m_to_5m: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_4m_to_5m_old_matured_supply') + self._5m_to_6m: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_5m_to_6m_old_matured_supply') + self._6m_to_1y: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_6m_to_1y_old_matured_supply') + self._1y_to_2y: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_1y_to_2y_old_matured_supply') + self._2y_to_3y: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_2y_to_3y_old_matured_supply') + self._3y_to_4y: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_3y_to_4y_old_matured_supply') + self._4y_to_5y: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_4y_to_5y_old_matured_supply') + self._5y_to_6y: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_5y_to_6y_old_matured_supply') + self._6y_to_7y: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_6y_to_7y_old_matured_supply') + self._7y_to_8y: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_7y_to_8y_old_matured_supply') + self._8y_to_10y: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_8y_to_10y_old_matured_supply') + self._10y_to_12y: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_10y_to_12y_old_matured_supply') + self._12y_to_15y: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_12y_to_15y_old_matured_supply') + self.over_15y: BaseCumulativeSumPattern3 = BaseCumulativeSumPattern3(client, 'utxos_over_15y_old_matured_supply') class SeriesTree_Cohorts_Utxo: """Series tree node.""" @@ -5597,57 +5594,57 @@ class SeriesTree_Cohorts_Addr_OverAmount: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._1sat: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1sat') - self._10sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10sats') - self._100sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100sats') - self._1k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1k_sats') - self._10k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10k_sats') - self._100k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100k_sats') - self._1m_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1m_sats') - self._10m_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10m_sats') - self._1btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1btc') - self._10btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10btc') - self._100btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100btc') - self._1k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1k_btc') - self._10k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10k_btc') + self._1sat: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1sat') + self._10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10sats') + self._100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100sats') + self._1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1k_sats') + self._10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10k_sats') + self._100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100k_sats') + self._1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1m_sats') + self._10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10m_sats') + self._1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1btc') + self._10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10btc') + self._100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100btc') + self._1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_1k_btc') + self._10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_10k_btc') class SeriesTree_Cohorts_Addr_AmountRange: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._0sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_0sats') - self._1sat_to_10sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1sat_to_10sats') - self._10sats_to_100sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10sats_to_100sats') - self._100sats_to_1k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_100sats_to_1k_sats') - self._1k_sats_to_10k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1k_sats_to_10k_sats') - self._10k_sats_to_100k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10k_sats_to_100k_sats') - self._100k_sats_to_1m_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_100k_sats_to_1m_sats') - self._1m_sats_to_10m_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1m_sats_to_10m_sats') - self._10m_sats_to_1btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10m_sats_to_1btc') - self._1btc_to_10btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1btc_to_10btc') - self._10btc_to_100btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10btc_to_100btc') - self._100btc_to_1k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_100btc_to_1k_btc') - self._1k_btc_to_10k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1k_btc_to_10k_btc') - self._10k_btc_to_100k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10k_btc_to_100k_btc') - self.over_100k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100k_btc') + self._0sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_0sats') + self._1sat_to_10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1sat_to_10sats') + self._10sats_to_100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10sats_to_100sats') + self._100sats_to_1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_100sats_to_1k_sats') + self._1k_sats_to_10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1k_sats_to_10k_sats') + self._10k_sats_to_100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10k_sats_to_100k_sats') + self._100k_sats_to_1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_100k_sats_to_1m_sats') + self._1m_sats_to_10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1m_sats_to_10m_sats') + self._10m_sats_to_1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10m_sats_to_1btc') + self._1btc_to_10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1btc_to_10btc') + self._10btc_to_100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10btc_to_100btc') + self._100btc_to_1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_100btc_to_1k_btc') + self._1k_btc_to_10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_1k_btc_to_10k_btc') + self._10k_btc_to_100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_10k_btc_to_100k_btc') + self.over_100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_over_100k_btc') class SeriesTree_Cohorts_Addr_UnderAmount: """Series tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self._10sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10sats') - self._100sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100sats') - self._1k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1k_sats') - self._10k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10k_sats') - self._100k_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100k_sats') - self._1m_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1m_sats') - self._10m_sats: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10m_sats') - self._1btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1btc') - self._10btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10btc') - self._100btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100btc') - self._1k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1k_btc') - self._10k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10k_btc') - self._100k_btc: AddrOutputsRealizedSupplyUnrealizedPattern = AddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100k_btc') + self._10sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10sats') + self._100sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100sats') + self._1k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1k_sats') + self._10k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10k_sats') + self._100k_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100k_sats') + self._1m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1m_sats') + self._10m_sats: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10m_sats') + self._1btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1btc') + self._10btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10btc') + self._100btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100btc') + self._1k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_1k_btc') + self._10k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_10k_btc') + self._100k_btc: ActivityAddrOutputsRealizedSupplyUnrealizedPattern = ActivityAddrOutputsRealizedSupplyUnrealizedPattern(client, 'addrs_under_100k_btc') class SeriesTree_Cohorts_Addr: """Series tree node.""" diff --git a/website/scripts/options/distribution/activity.js b/website/scripts/options/distribution/activity.js index db6ddcc90..6bead00f4 100644 --- a/website/scripts/options/distribution/activity.js +++ b/website/scripts/options/distribution/activity.js @@ -9,7 +9,7 @@ */ import { Unit } from "../../utils/units.js"; -import { line, baseline, dotsBaseline, percentRatio, chartsFromCount, ROLLING_WINDOWS } from "../series.js"; +import { line, baseline, dotsBaseline, percentRatio, chartsFromCount, averagesTree, ROLLING_WINDOWS } from "../series.js"; import { satsBtcUsdFullTree, mapCohortsWithAll, @@ -90,11 +90,7 @@ function fullVolumeTree(activity, color, title) { return [ ...volumeAndCoinsTree(activity, color, title), ...sentProfitLossTree(activity.transferVolume, title), - { - name: "Dormancy", - title: title("Dormancy"), - bottom: [line({ series: activity.dormancy, name: "Dormancy", color, unit: Unit.days })], - }, + averagesTree({ windows: activity.dormancy, title: title("Dormancy"), unit: Unit.days, name: "Dormancy" }), ]; } @@ -239,10 +235,10 @@ export function createActivitySectionWithActivity({ cohort, title }) { export function createActivitySectionMinimal({ cohort, title }) { return { name: "Activity", - tree: chartsFromCount({ - pattern: cohort.tree.realized.sopr.valueCreated, + tree: satsBtcUsdFullTree({ + pattern: cohort.tree.activity.transferVolume, + name: "Volume", title: title("Volume"), - unit: Unit.usd, }), }; } @@ -259,7 +255,7 @@ export function createGroupedActivitySectionMinimal({ list, all, title }) { name: w.name, title: title(`Volume (${w.title})`), bottom: mapCohortsWithAll(list, all, ({ name, color, tree }) => - line({ series: tree.realized.sopr.valueCreated.sum[w.key], name, color, unit: Unit.usd }), + line({ series: tree.activity.transferVolume.sum[w.key].sats, name, color, unit: Unit.sats }), ), })), }; diff --git a/website/scripts/options/series.js b/website/scripts/options/series.js index 0882bd46d..3132687e7 100644 --- a/website/scripts/options/series.js +++ b/website/scripts/options/series.js @@ -887,41 +887,6 @@ export function simpleDeltaTree({ delta, title, unit }) { // ============================================================================ // These split patterns into separate Sum/Distribution/Cumulative charts -/** - * Create btc/sats/usd series from patterns - * @param {Object} args - * @param {{ btc: AnySeriesPattern, sats: AnySeriesPattern, usd: AnySeriesPattern }} args.patterns - * @param {string} args.name - * @param {Color} [args.color] - * @param {boolean} [args.defaultActive] - * @returns {AnyFetchedSeriesBlueprint[]} - */ -function btcSatsUsdSeries({ patterns, name, color, defaultActive }) { - return [ - { - series: patterns.btc, - title: name, - color, - unit: Unit.btc, - defaultActive, - }, - { - series: patterns.sats, - title: name, - color, - unit: Unit.sats, - defaultActive, - }, - { - series: patterns.usd, - title: name, - color, - unit: Unit.usd, - defaultActive, - }, - ]; -} - /** * Split flat per-block pattern into charts (Sum/Rolling/Distribution/Cumulative) * Pattern has: .height, .cumulative, .sum (windowed), .average/.pct10/... (windowed, flat) @@ -1137,34 +1102,3 @@ export function multiSeriesTree({ entries, title, unit }) { ]; } -/** - * Split BaseCumulativeRollingPattern into 3 charts (Sum/Distribution/Cumulative) - * @param {Object} args - * @param {CoinbasePattern} args.pattern - * @param {string} args.title - * @returns {PartialOptionsTree} - */ -export function chartsFromValueFull({ pattern, title }) { - return [ - { - name: "Sum", - title, - bottom: [ - ...btcSatsUsdSeries({ patterns: pattern.base, name: "sum" }), - ...btcSatsUsdSeries({ - patterns: pattern.sum._24h, - name: "24h sum", - defaultActive: false, - }), - ], - }, - { - name: "Cumulative", - title: `${title} (Total)`, - bottom: btcSatsUsdSeries({ - patterns: pattern.cumulative, - name: "all-time", - }), - }, - ]; -} diff --git a/website/scripts/types.js b/website/scripts/types.js index 36de5bf81..f9cb1c255 100644 --- a/website/scripts/types.js +++ b/website/scripts/types.js @@ -45,23 +45,21 @@ * Brk pattern types (using new pattern names) * @typedef {Brk.ActivityOutputsRealizedSupplyUnrealizedPattern} MaxAgePattern * @typedef {Brk.ActivityOutputsRealizedSupplyUnrealizedPattern} AgeRangePattern - * @typedef {Brk.OutputsRealizedSupplyUnrealizedPattern} UtxoAmountPattern - * @typedef {Brk.AddrOutputsRealizedSupplyUnrealizedPattern} AddrAmountPattern + * @typedef {Brk.ActivityOutputsRealizedSupplyUnrealizedPattern2} UtxoAmountPattern + * @typedef {Brk.ActivityAddrOutputsRealizedSupplyUnrealizedPattern} AddrAmountPattern * @typedef {Brk.ActivityOutputsRealizedSupplyUnrealizedPattern} BasicUtxoPattern * @typedef {Brk.ActivityOutputsRealizedSupplyUnrealizedPattern} EpochPattern - * @typedef {Brk.OutputsRealizedSupplyUnrealizedPattern2} EmptyPattern + * @typedef {Brk.ActivityOutputsRealizedSupplyUnrealizedPattern3} EmptyPattern * @typedef {Brk._0sdM0M1M1sdM2M2sdM3sdP0P1P1sdP2P2sdP3sdSdZscorePattern} Ratio1ySdPattern * @typedef {Brk.Dollars} Dollars - * CoinbasePattern: base + cumulative + rolling windows (flattened) - * @typedef {Brk.BaseCumulativeSumPattern4} CoinbasePattern * ActivePriceRatioPattern: ratio pattern with price (extended) * @typedef {Brk.BpsPriceRatioPattern} ActivePriceRatioPattern * PriceRatioPercentilesPattern: price pattern with ratio + percentiles (no SMAs/stdDev) * @typedef {Brk.BpsCentsPercentilesRatioSatsUsdPattern} PriceRatioPercentilesPattern * AnyRatioPattern: full ratio pattern with percentiles, SMAs, and std dev bands * @typedef {Brk.BpsCentsPercentilesRatioSatsSmaStdUsdPattern} AnyRatioPattern - * FullValuePattern: base + cumulative + rolling windows (flattened) - * @typedef {Brk.BaseCumulativeSumPattern4} FullValuePattern + * FullValuePattern: base + cumulative + rolling windows (sats/btc/cents/usd) + * @typedef {Brk.BaseCumulativeSumPattern3} FullValuePattern * RollingWindowSlot: a single rolling window with stats (average, pct10, pct25, median, pct75, pct90, max, min) per unit * @typedef {Brk.AverageMaxMedianMinPct10Pct25Pct75Pct90Pattern} RollingWindowSlot * @typedef {Brk.AnySeriesPattern} AnySeriesPattern @@ -91,8 +89,8 @@ * Transfer volume pattern (base + cumulative + inProfit/inLoss + sum windows) * @typedef {Brk.BaseCumulativeInSumPattern} TransferVolumePattern * - * Realized profit/loss pattern (base + cumulative + sum windows) - * @typedef {Brk.BaseCumulativeSumPattern3} RealizedProfitLossPattern + * Realized profit/loss pattern (base + cumulative + sum windows, cents/usd) + * @typedef {Brk.BaseCumulativeSumPattern4} RealizedProfitLossPattern * * Full activity pattern (coindays, coinyears, dormancy, transfer volume) * @typedef {Brk.CoindaysCoinyearsDormancyTransferPattern} FullActivityPattern @@ -113,8 +111,8 @@ * Mid realized pattern (cap + loss + MVRV + net + price + profit + SOPR) * @typedef {Brk.CapLossMvrvNetPriceProfitSoprPattern} MidRealizedPattern * - * Basic realized pattern (cap + loss + MVRV + price + profit + SOPR, no net) - * @typedef {Brk.CapLossMvrvPriceProfitSoprPattern} BasicRealizedPattern + * Basic realized pattern (cap + loss + MVRV + price + profit, no net/sopr) + * @typedef {Brk.CapLossMvrvPriceProfitPattern} BasicRealizedPattern * * Moving average price ratio pattern (bps + cents + ratio + sats + usd) * @typedef {Brk.BpsCentsRatioSatsUsdPattern} MaPriceRatioPattern