diff --git a/crates/brk_client/src/lib.rs b/crates/brk_client/src/lib.rs index 331aa0093..7147059c0 100644 --- a/crates/brk_client/src/lib.rs +++ b/crates/brk_client/src/lib.rs @@ -1127,62 +1127,6 @@ impl _0sdM0M1M1sdM2M2sdM3sdP0P1P1sdP2P2sdP3sdSdSmaZscorePattern { } } -/// Pattern struct for repeated tree structure. -pub struct GrossMvrvNegNetRealizedSentSoprValuePattern { - pub gross_pnl: CentsUsdPattern, - pub mvrv: MetricPattern1, - pub neg_realized_loss: MetricPattern1, - pub net_realized_pnl: CumulativeHeightPattern, - pub net_realized_pnl_rel_to_realized_cap: BpsPercentRatioPattern, - pub realized_cap: MetricPattern1, - pub realized_cap_cents: MetricPattern1, - pub realized_cap_change_1m: MetricPattern1, - pub realized_loss: CumulativeHeightPattern, - pub realized_loss_rel_to_realized_cap: BpsPercentRatioPattern, - pub realized_price: CentsSatsUsdPattern, - pub realized_price_ratio: BpsRatioPattern, - pub realized_price_ratio_percentiles: RatioPattern, - pub realized_profit: CumulativeHeightPattern, - pub realized_profit_rel_to_realized_cap: BpsPercentRatioPattern, - pub sent_in_loss: BaseCumulativePattern, - pub sent_in_profit: BaseCumulativePattern, - pub sopr: _1m1w1y24hPattern, - pub value_created: MetricPattern1, - pub value_created_sum: _1m1w1y24hPattern, - pub value_destroyed: MetricPattern1, - pub value_destroyed_sum: _1m1w1y24hPattern, -} - -impl GrossMvrvNegNetRealizedSentSoprValuePattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - gross_pnl: CentsUsdPattern::new(client.clone(), _m(&acc, "realized_gross_pnl")), - mvrv: MetricPattern1::new(client.clone(), _m(&acc, "mvrv")), - neg_realized_loss: MetricPattern1::new(client.clone(), _m(&acc, "neg_realized_loss")), - net_realized_pnl: CumulativeHeightPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), - net_realized_pnl_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), - realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), - realized_cap_cents: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap_cents")), - realized_cap_change_1m: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap_change_1m")), - realized_loss: CumulativeHeightPattern::new(client.clone(), _m(&acc, "realized_loss")), - realized_loss_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "realized_loss_rel_to_realized_cap")), - realized_price: CentsSatsUsdPattern::new(client.clone(), _m(&acc, "realized_price")), - realized_price_ratio: BpsRatioPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), - realized_price_ratio_percentiles: RatioPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), - realized_profit: CumulativeHeightPattern::new(client.clone(), _m(&acc, "realized_profit")), - realized_profit_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "realized_profit_rel_to_realized_cap")), - sent_in_loss: BaseCumulativePattern::new(client.clone(), _m(&acc, "sent_in_loss")), - sent_in_profit: BaseCumulativePattern::new(client.clone(), _m(&acc, "sent_in_profit")), - sopr: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "sopr")), - value_created: MetricPattern1::new(client.clone(), _m(&acc, "value_created")), - value_created_sum: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "value_created")), - value_destroyed: MetricPattern1::new(client.clone(), _m(&acc, "value_destroyed")), - value_destroyed_sum: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "value_destroyed")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct InvestedNegNetNuplSupplyUnrealizedPattern3 { pub invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern, @@ -1235,6 +1179,56 @@ impl InvestedNegNetNuplSupplyUnrealizedPattern3 { } } +/// Pattern struct for repeated tree structure. +pub struct GrossMvrvNegNetRealizedSentSoprValuePattern { + pub gross_pnl: CentsUsdPattern, + pub mvrv: MetricPattern1, + pub neg_realized_loss: MetricPattern1, + pub net_realized_pnl: CumulativeHeightPattern, + pub realized_cap: MetricPattern1, + pub realized_cap_cents: MetricPattern1, + pub realized_cap_change_1m: MetricPattern1, + pub realized_loss: CumulativeHeightPattern, + pub realized_price: CentsSatsUsdPattern, + pub realized_price_ratio: BpsRatioPattern, + pub realized_price_ratio_percentiles: RatioPattern, + pub realized_profit: CumulativeHeightPattern, + pub sent_in_loss: BaseCumulativePattern, + pub sent_in_profit: BaseCumulativePattern, + pub sopr: _1m1w1y24hPattern, + pub value_created: MetricPattern1, + pub value_created_sum: _1m1w1y24hPattern, + pub value_destroyed: MetricPattern1, + pub value_destroyed_sum: _1m1w1y24hPattern, +} + +impl GrossMvrvNegNetRealizedSentSoprValuePattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + gross_pnl: CentsUsdPattern::new(client.clone(), _m(&acc, "realized_gross_pnl")), + mvrv: MetricPattern1::new(client.clone(), _m(&acc, "mvrv")), + neg_realized_loss: MetricPattern1::new(client.clone(), _m(&acc, "neg_realized_loss")), + net_realized_pnl: CumulativeHeightPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), + realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), + realized_cap_cents: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap_cents")), + realized_cap_change_1m: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap_change_1m")), + realized_loss: CumulativeHeightPattern::new(client.clone(), _m(&acc, "realized_loss")), + realized_price: CentsSatsUsdPattern::new(client.clone(), _m(&acc, "realized_price")), + realized_price_ratio: BpsRatioPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), + realized_price_ratio_percentiles: RatioPattern::new(client.clone(), _m(&acc, "realized_price_ratio")), + realized_profit: CumulativeHeightPattern::new(client.clone(), _m(&acc, "realized_profit")), + sent_in_loss: BaseCumulativePattern::new(client.clone(), _m(&acc, "sent_in_loss")), + sent_in_profit: BaseCumulativePattern::new(client.clone(), _m(&acc, "sent_in_profit")), + sopr: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "sopr")), + value_created: MetricPattern1::new(client.clone(), _m(&acc, "value_created")), + value_created_sum: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "value_created")), + value_destroyed: MetricPattern1::new(client.clone(), _m(&acc, "value_destroyed")), + value_destroyed_sum: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "value_destroyed")), + } + } +} + /// Pattern struct for repeated tree structure. pub struct Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern { pub pct05: CentsSatsUsdPattern, @@ -1521,6 +1515,40 @@ impl InvestedNegNetNuplSupplyUnrealizedPattern { } } +/// Pattern struct for repeated tree structure. +pub struct _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern { + pub _1m: BpsPercentRatioPattern, + pub _1w: BpsPercentRatioPattern, + pub _1y: BpsPercentRatioPattern, + pub _24h: BpsPercentRatioPattern, + pub base: BtcCentsSatsUsdPattern, + pub bps: MetricPattern1, + pub cumulative: BaseBtcCentsSatsUsdPattern, + pub height: MetricPattern18, + pub percent: MetricPattern1, + pub ratio: MetricPattern1, + pub sum: _1m1w1y24hPattern6, +} + +impl _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + _1m: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "dominance_1m")), + _1w: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "dominance_1w")), + _1y: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "dominance_1y")), + _24h: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "dominance_24h")), + base: BtcCentsSatsUsdPattern::new(client.clone(), _m(&acc, "rewards")), + bps: MetricPattern1::new(client.clone(), _m(&acc, "dominance_bps")), + cumulative: BaseBtcCentsSatsUsdPattern::new(client.clone(), acc.clone()), + height: MetricPattern18::new(client.clone(), _m(&acc, "blocks_mined")), + percent: MetricPattern1::new(client.clone(), _m(&acc, "dominance")), + ratio: MetricPattern1::new(client.clone(), _m(&acc, "dominance_ratio")), + sum: _1m1w1y24hPattern6::new(client.clone(), acc.clone()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct AverageCumulativeMaxMedianMinPct10Pct25Pct75Pct90RollingSumPattern { pub average: MetricPattern18, @@ -1621,38 +1649,6 @@ impl AverageGainsLossesRsiStochPattern { } } -/// Pattern struct for repeated tree structure. -pub struct NegNetNuplSupplyUnrealizedPattern { - pub neg_unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern, - pub net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern, - pub nupl: MetricPattern1, - pub supply_in_loss_rel_to_circulating_supply: BpsPercentRatioPattern, - pub supply_in_loss_rel_to_own_supply: BpsPercentRatioPattern, - pub supply_in_profit_rel_to_circulating_supply: BpsPercentRatioPattern, - pub supply_in_profit_rel_to_own_supply: BpsPercentRatioPattern, - pub supply_rel_to_circulating_supply: BpsPercentRatioPattern, - pub unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern, - pub unrealized_profit_rel_to_market_cap: BpsPercentRatioPattern, -} - -impl NegNetNuplSupplyUnrealizedPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - neg_unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_market_cap")), - net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_market_cap")), - nupl: MetricPattern1::new(client.clone(), _m(&acc, "nupl")), - supply_in_loss_rel_to_circulating_supply: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_circulating_supply")), - supply_in_loss_rel_to_own_supply: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_own_supply")), - supply_in_profit_rel_to_circulating_supply: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_circulating_supply")), - supply_in_profit_rel_to_own_supply: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_own_supply")), - supply_rel_to_circulating_supply: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "supply_rel_to_circulating_supply")), - unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_market_cap")), - unrealized_profit_rel_to_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_market_cap")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct AllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern { pub all: ChangeCountPattern, @@ -1990,7 +1986,7 @@ pub struct ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 { pub activity: SentPattern, pub outputs: UtxoPattern, pub realized: GrossMvrvNegNetRealizedSentSoprValuePattern, - pub relative: NegNetNuplSupplyUnrealizedPattern, + pub relative: SupplyPattern3, pub supply: ChangeHalvedTotalPattern, pub unrealized: GrossNegNetSupplyUnrealizedPattern, } @@ -2002,7 +1998,7 @@ impl ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 { activity: SentPattern::new(client.clone(), _m(&acc, "sent")), outputs: UtxoPattern::new(client.clone(), _m(&acc, "utxo_count")), realized: GrossMvrvNegNetRealizedSentSoprValuePattern::new(client.clone(), acc.clone()), - relative: NegNetNuplSupplyUnrealizedPattern::new(client.clone(), acc.clone()), + relative: SupplyPattern3::new(client.clone(), _m(&acc, "supply")), supply: ChangeHalvedTotalPattern::new(client.clone(), _m(&acc, "supply")), unrealized: GrossNegNetSupplyUnrealizedPattern::new(client.clone(), acc.clone()), } @@ -2057,6 +2053,28 @@ impl BalanceBothReactivatedReceivingSendingPattern { } } +/// Pattern struct for repeated tree structure. +pub struct BaseBtcCentsSatsUsdPattern { + pub base: MetricPattern1, + pub btc: MetricPattern1, + pub cents: MetricPattern1, + pub sats: MetricPattern1, + pub usd: MetricPattern1, +} + +impl BaseBtcCentsSatsUsdPattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + base: MetricPattern1::new(client.clone(), _m(&acc, "blocks_mined_cumulative")), + btc: MetricPattern1::new(client.clone(), _m(&acc, "rewards_cumulative_btc")), + cents: MetricPattern1::new(client.clone(), _m(&acc, "rewards_cumulative_cents")), + sats: MetricPattern1::new(client.clone(), _m(&acc, "rewards_cumulative")), + usd: MetricPattern1::new(client.clone(), _m(&acc, "rewards_cumulative_usd")), + } + } +} + /// Pattern struct for repeated tree structure. pub struct EmaHistogramLineSignalPattern { pub ema_fast: MetricPattern1, @@ -2079,6 +2097,48 @@ impl EmaHistogramLineSignalPattern { } } +/// Pattern struct for repeated tree structure. +pub struct SupplyPattern3 { + pub supply_in_loss_rel_to_circulating_supply: BpsPercentRatioPattern, + pub supply_in_loss_rel_to_own_supply: BpsPercentRatioPattern, + pub supply_in_profit_rel_to_circulating_supply: BpsPercentRatioPattern, + pub supply_in_profit_rel_to_own_supply: BpsPercentRatioPattern, + pub supply_rel_to_circulating_supply: BpsPercentRatioPattern, +} + +impl SupplyPattern3 { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + supply_in_loss_rel_to_circulating_supply: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "in_loss_rel_to_circulating_supply")), + supply_in_loss_rel_to_own_supply: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "in_loss_rel_to_own_supply")), + supply_in_profit_rel_to_circulating_supply: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "in_profit_rel_to_circulating_supply")), + supply_in_profit_rel_to_own_supply: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "in_profit_rel_to_own_supply")), + supply_rel_to_circulating_supply: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "rel_to_circulating_supply")), + } + } +} + +/// Pattern struct for repeated tree structure. +pub struct _1m1w1y24hPattern6 { + pub _1m: BaseBtcCentsSatsUsdPattern, + pub _1w: BaseBtcCentsSatsUsdPattern, + pub _1y: BaseBtcCentsSatsUsdPattern, + pub _24h: BaseBtcCentsSatsUsdPattern, +} + +impl _1m1w1y24hPattern6 { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + _1m: BaseBtcCentsSatsUsdPattern::new(client.clone(), acc.clone()), + _1w: BaseBtcCentsSatsUsdPattern::new(client.clone(), acc.clone()), + _1y: BaseBtcCentsSatsUsdPattern::new(client.clone(), acc.clone()), + _24h: BaseBtcCentsSatsUsdPattern::new(client.clone(), acc.clone()), + } + } +} + /// Pattern struct for repeated tree structure. pub struct _1m1w1y24hPattern2 { pub _1m: BpsPercentRatioPattern, @@ -2119,26 +2179,6 @@ impl _1m1w1y24hPattern5 { } } -/// Pattern struct for repeated tree structure. -pub struct BlocksDominanceRewardsPattern { - pub blocks_mined: CumulativeHeightSumPattern, - pub dominance: BpsPercentRatioPattern, - pub dominance_rolling: _1m1w1y24hPattern2, - pub rewards: BaseCumulativeSumPattern, -} - -impl BlocksDominanceRewardsPattern { - /// Create a new pattern node with accumulated metric name. - pub fn new(client: Arc, acc: String) -> Self { - Self { - blocks_mined: CumulativeHeightSumPattern::new(client.clone(), _m(&acc, "blocks_mined")), - dominance: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "dominance")), - dominance_rolling: _1m1w1y24hPattern2::new(client.clone(), _m(&acc, "dominance")), - rewards: BaseCumulativeSumPattern::new(client.clone(), _m(&acc, "rewards")), - } - } -} - /// Pattern struct for repeated tree structure. pub struct BtcCentsSatsUsdPattern { pub btc: MetricPattern1, @@ -2449,6 +2489,22 @@ impl BaseCumulativePattern { } } +/// Pattern struct for repeated tree structure. +pub struct BlocksDominancePattern { + pub blocks_mined: CumulativeHeightPattern, + pub dominance: BpsPercentRatioPattern, +} + +impl BlocksDominancePattern { + /// Create a new pattern node with accumulated metric name. + pub fn new(client: Arc, acc: String) -> Self { + Self { + blocks_mined: CumulativeHeightPattern::new(client.clone(), _m(&acc, "blocks_mined")), + dominance: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "dominance")), + } + } +} + /// Pattern struct for repeated tree structure. pub struct BpsRatioPattern { pub bps: MetricPattern1, @@ -4876,349 +4932,362 @@ impl MetricsTree_Market_Indicators_Macd_1y { /// Metrics tree node. pub struct MetricsTree_Pools { pub height_to_pool: MetricPattern18, - pub vecs: MetricsTree_Pools_Vecs, + pub major: MetricsTree_Pools_Major, + pub minor: MetricsTree_Pools_Minor, } impl MetricsTree_Pools { pub fn new(client: Arc, base_path: String) -> Self { Self { height_to_pool: MetricPattern18::new(client.clone(), "pool".to_string()), - vecs: MetricsTree_Pools_Vecs::new(client.clone(), format!("{base_path}_vecs")), + major: MetricsTree_Pools_Major::new(client.clone(), format!("{base_path}_major")), + minor: MetricsTree_Pools_Minor::new(client.clone(), format!("{base_path}_minor")), } } } /// Metrics tree node. -pub struct MetricsTree_Pools_Vecs { - pub unknown: BlocksDominanceRewardsPattern, - pub blockfills: BlocksDominanceRewardsPattern, - pub ultimuspool: BlocksDominanceRewardsPattern, - pub terrapool: BlocksDominanceRewardsPattern, - pub luxor: BlocksDominanceRewardsPattern, - pub onethash: BlocksDominanceRewardsPattern, - pub btccom: BlocksDominanceRewardsPattern, - pub bitfarms: BlocksDominanceRewardsPattern, - pub huobipool: BlocksDominanceRewardsPattern, - pub wayicn: BlocksDominanceRewardsPattern, - pub canoepool: BlocksDominanceRewardsPattern, - pub btctop: BlocksDominanceRewardsPattern, - pub bitcoincom: BlocksDominanceRewardsPattern, - pub pool175btc: BlocksDominanceRewardsPattern, - pub gbminers: BlocksDominanceRewardsPattern, - pub axbt: BlocksDominanceRewardsPattern, - pub asicminer: BlocksDominanceRewardsPattern, - pub bitminter: BlocksDominanceRewardsPattern, - pub bitcoinrussia: BlocksDominanceRewardsPattern, - pub btcserv: BlocksDominanceRewardsPattern, - pub simplecoinus: BlocksDominanceRewardsPattern, - pub btcguild: BlocksDominanceRewardsPattern, - pub eligius: BlocksDominanceRewardsPattern, - pub ozcoin: BlocksDominanceRewardsPattern, - pub eclipsemc: BlocksDominanceRewardsPattern, - pub maxbtc: BlocksDominanceRewardsPattern, - pub triplemining: BlocksDominanceRewardsPattern, - pub coinlab: BlocksDominanceRewardsPattern, - pub pool50btc: BlocksDominanceRewardsPattern, - pub ghashio: BlocksDominanceRewardsPattern, - pub stminingcorp: BlocksDominanceRewardsPattern, - pub bitparking: BlocksDominanceRewardsPattern, - pub mmpool: BlocksDominanceRewardsPattern, - pub polmine: BlocksDominanceRewardsPattern, - pub kncminer: BlocksDominanceRewardsPattern, - pub bitalo: BlocksDominanceRewardsPattern, - pub f2pool: BlocksDominanceRewardsPattern, - pub hhtt: BlocksDominanceRewardsPattern, - pub megabigpower: BlocksDominanceRewardsPattern, - pub mtred: BlocksDominanceRewardsPattern, - pub nmcbit: BlocksDominanceRewardsPattern, - pub yourbtcnet: BlocksDominanceRewardsPattern, - pub givemecoins: BlocksDominanceRewardsPattern, - pub braiinspool: BlocksDominanceRewardsPattern, - pub antpool: BlocksDominanceRewardsPattern, - pub multicoinco: BlocksDominanceRewardsPattern, - pub bcpoolio: BlocksDominanceRewardsPattern, - pub cointerra: BlocksDominanceRewardsPattern, - pub kanopool: BlocksDominanceRewardsPattern, - pub solock: BlocksDominanceRewardsPattern, - pub ckpool: BlocksDominanceRewardsPattern, - pub nicehash: BlocksDominanceRewardsPattern, - pub bitclub: BlocksDominanceRewardsPattern, - pub bitcoinaffiliatenetwork: BlocksDominanceRewardsPattern, - pub btcc: BlocksDominanceRewardsPattern, - pub bwpool: BlocksDominanceRewardsPattern, - pub exxbw: BlocksDominanceRewardsPattern, - pub bitsolo: BlocksDominanceRewardsPattern, - pub bitfury: BlocksDominanceRewardsPattern, - pub twentyoneinc: BlocksDominanceRewardsPattern, - pub digitalbtc: BlocksDominanceRewardsPattern, - pub eightbaochi: BlocksDominanceRewardsPattern, - pub mybtccoinpool: BlocksDominanceRewardsPattern, - pub tbdice: BlocksDominanceRewardsPattern, - pub hashpool: BlocksDominanceRewardsPattern, - pub nexious: BlocksDominanceRewardsPattern, - pub bravomining: BlocksDominanceRewardsPattern, - pub hotpool: BlocksDominanceRewardsPattern, - pub okexpool: BlocksDominanceRewardsPattern, - pub bcmonster: BlocksDominanceRewardsPattern, - pub onehash: BlocksDominanceRewardsPattern, - pub bixin: BlocksDominanceRewardsPattern, - pub tatmaspool: BlocksDominanceRewardsPattern, - pub viabtc: BlocksDominanceRewardsPattern, - pub connectbtc: BlocksDominanceRewardsPattern, - pub batpool: BlocksDominanceRewardsPattern, - pub waterhole: BlocksDominanceRewardsPattern, - pub dcexploration: BlocksDominanceRewardsPattern, - pub dcex: BlocksDominanceRewardsPattern, - pub btpool: BlocksDominanceRewardsPattern, - pub fiftyeightcoin: BlocksDominanceRewardsPattern, - pub bitcoinindia: BlocksDominanceRewardsPattern, - pub shawnp0wers: BlocksDominanceRewardsPattern, - pub phashio: BlocksDominanceRewardsPattern, - pub rigpool: BlocksDominanceRewardsPattern, - pub haozhuzhu: BlocksDominanceRewardsPattern, - pub sevenpool: BlocksDominanceRewardsPattern, - pub miningkings: BlocksDominanceRewardsPattern, - pub hashbx: BlocksDominanceRewardsPattern, - pub dpool: BlocksDominanceRewardsPattern, - pub rawpool: BlocksDominanceRewardsPattern, - pub haominer: BlocksDominanceRewardsPattern, - pub helix: BlocksDominanceRewardsPattern, - pub bitcoinukraine: BlocksDominanceRewardsPattern, - pub poolin: BlocksDominanceRewardsPattern, - pub secretsuperstar: BlocksDominanceRewardsPattern, - pub tigerpoolnet: BlocksDominanceRewardsPattern, - pub sigmapoolcom: BlocksDominanceRewardsPattern, - pub okpooltop: BlocksDominanceRewardsPattern, - pub hummerpool: BlocksDominanceRewardsPattern, - pub tangpool: BlocksDominanceRewardsPattern, - pub bytepool: BlocksDominanceRewardsPattern, - pub spiderpool: BlocksDominanceRewardsPattern, - pub novablock: BlocksDominanceRewardsPattern, - pub miningcity: BlocksDominanceRewardsPattern, - pub binancepool: BlocksDominanceRewardsPattern, - pub minerium: BlocksDominanceRewardsPattern, - pub lubiancom: BlocksDominanceRewardsPattern, - pub okkong: BlocksDominanceRewardsPattern, - pub aaopool: BlocksDominanceRewardsPattern, - pub emcdpool: BlocksDominanceRewardsPattern, - pub foundryusa: BlocksDominanceRewardsPattern, - pub sbicrypto: BlocksDominanceRewardsPattern, - pub arkpool: BlocksDominanceRewardsPattern, - pub purebtccom: BlocksDominanceRewardsPattern, - pub marapool: BlocksDominanceRewardsPattern, - pub kucoinpool: BlocksDominanceRewardsPattern, - pub entrustcharitypool: BlocksDominanceRewardsPattern, - pub okminer: BlocksDominanceRewardsPattern, - pub titan: BlocksDominanceRewardsPattern, - pub pegapool: BlocksDominanceRewardsPattern, - pub btcnuggets: BlocksDominanceRewardsPattern, - pub cloudhashing: BlocksDominanceRewardsPattern, - pub digitalxmintsy: BlocksDominanceRewardsPattern, - pub telco214: BlocksDominanceRewardsPattern, - pub btcpoolparty: BlocksDominanceRewardsPattern, - pub multipool: BlocksDominanceRewardsPattern, - pub transactioncoinmining: BlocksDominanceRewardsPattern, - pub btcdig: BlocksDominanceRewardsPattern, - pub trickysbtcpool: BlocksDominanceRewardsPattern, - pub btcmp: BlocksDominanceRewardsPattern, - pub eobot: BlocksDominanceRewardsPattern, - pub unomp: BlocksDominanceRewardsPattern, - pub patels: BlocksDominanceRewardsPattern, - pub gogreenlight: BlocksDominanceRewardsPattern, - pub bitcoinindiapool: BlocksDominanceRewardsPattern, - pub ekanembtc: BlocksDominanceRewardsPattern, - pub canoe: BlocksDominanceRewardsPattern, - pub tiger: BlocksDominanceRewardsPattern, - pub onem1x: BlocksDominanceRewardsPattern, - pub zulupool: BlocksDominanceRewardsPattern, - pub secpool: BlocksDominanceRewardsPattern, - pub ocean: BlocksDominanceRewardsPattern, - pub whitepool: BlocksDominanceRewardsPattern, - pub wiz: BlocksDominanceRewardsPattern, - pub wk057: BlocksDominanceRewardsPattern, - pub futurebitapollosolo: BlocksDominanceRewardsPattern, - pub carbonnegative: BlocksDominanceRewardsPattern, - pub portlandhodl: BlocksDominanceRewardsPattern, - pub phoenix: BlocksDominanceRewardsPattern, - pub neopool: BlocksDominanceRewardsPattern, - pub maxipool: BlocksDominanceRewardsPattern, - pub bitfufupool: BlocksDominanceRewardsPattern, - pub gdpool: BlocksDominanceRewardsPattern, - pub miningdutch: BlocksDominanceRewardsPattern, - pub publicpool: BlocksDominanceRewardsPattern, - pub miningsquared: BlocksDominanceRewardsPattern, - pub innopolistech: BlocksDominanceRewardsPattern, - pub btclab: BlocksDominanceRewardsPattern, - pub parasite: BlocksDominanceRewardsPattern, - pub redrockpool: BlocksDominanceRewardsPattern, - pub est3lar: BlocksDominanceRewardsPattern, +pub struct MetricsTree_Pools_Major { + pub unknown: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub ultimuspool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub terrapool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub luxor: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub onethash: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub btccom: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub huobipool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub wayicn: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub canoepool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub btctop: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub bitcoincom: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub gbminers: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub asicminer: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub bitminter: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub bitcoinrussia: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub btcguild: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub eligius: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub ozcoin: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub eclipsemc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub maxbtc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub triplemining: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub coinlab: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub pool50btc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub ghashio: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub bitparking: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub polmine: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub kncminer: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub f2pool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub hhtt: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub megabigpower: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub nmcbit: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub yourbtcnet: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub braiinspool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub antpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub kanopool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub solock: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub nicehash: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub bitclub: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub bitcoinaffiliatenetwork: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub btcc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub bwpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub exxbw: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub bitfury: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub digitalbtc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub okexpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub bixin: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub tatmaspool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub viabtc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub connectbtc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub batpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub btpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub fiftyeightcoin: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub bitcoinindia: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub dpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub poolin: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub secretsuperstar: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub tigerpoolnet: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub sigmapoolcom: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub okpooltop: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub tangpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub bytepool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub spiderpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub novablock: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub binancepool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub lubiancom: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub okkong: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub emcdpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub foundryusa: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub sbicrypto: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub marapool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub kucoinpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub pegapool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub secpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub ocean: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, + pub whitepool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern, } -impl MetricsTree_Pools_Vecs { +impl MetricsTree_Pools_Major { pub fn new(client: Arc, base_path: String) -> Self { Self { - unknown: BlocksDominanceRewardsPattern::new(client.clone(), "unknown".to_string()), - blockfills: BlocksDominanceRewardsPattern::new(client.clone(), "blockfills".to_string()), - ultimuspool: BlocksDominanceRewardsPattern::new(client.clone(), "ultimuspool".to_string()), - terrapool: BlocksDominanceRewardsPattern::new(client.clone(), "terrapool".to_string()), - luxor: BlocksDominanceRewardsPattern::new(client.clone(), "luxor".to_string()), - onethash: BlocksDominanceRewardsPattern::new(client.clone(), "onethash".to_string()), - btccom: BlocksDominanceRewardsPattern::new(client.clone(), "btccom".to_string()), - bitfarms: BlocksDominanceRewardsPattern::new(client.clone(), "bitfarms".to_string()), - huobipool: BlocksDominanceRewardsPattern::new(client.clone(), "huobipool".to_string()), - wayicn: BlocksDominanceRewardsPattern::new(client.clone(), "wayicn".to_string()), - canoepool: BlocksDominanceRewardsPattern::new(client.clone(), "canoepool".to_string()), - btctop: BlocksDominanceRewardsPattern::new(client.clone(), "btctop".to_string()), - bitcoincom: BlocksDominanceRewardsPattern::new(client.clone(), "bitcoincom".to_string()), - pool175btc: BlocksDominanceRewardsPattern::new(client.clone(), "pool175btc".to_string()), - gbminers: BlocksDominanceRewardsPattern::new(client.clone(), "gbminers".to_string()), - axbt: BlocksDominanceRewardsPattern::new(client.clone(), "axbt".to_string()), - asicminer: BlocksDominanceRewardsPattern::new(client.clone(), "asicminer".to_string()), - bitminter: BlocksDominanceRewardsPattern::new(client.clone(), "bitminter".to_string()), - bitcoinrussia: BlocksDominanceRewardsPattern::new(client.clone(), "bitcoinrussia".to_string()), - btcserv: BlocksDominanceRewardsPattern::new(client.clone(), "btcserv".to_string()), - simplecoinus: BlocksDominanceRewardsPattern::new(client.clone(), "simplecoinus".to_string()), - btcguild: BlocksDominanceRewardsPattern::new(client.clone(), "btcguild".to_string()), - eligius: BlocksDominanceRewardsPattern::new(client.clone(), "eligius".to_string()), - ozcoin: BlocksDominanceRewardsPattern::new(client.clone(), "ozcoin".to_string()), - eclipsemc: BlocksDominanceRewardsPattern::new(client.clone(), "eclipsemc".to_string()), - maxbtc: BlocksDominanceRewardsPattern::new(client.clone(), "maxbtc".to_string()), - triplemining: BlocksDominanceRewardsPattern::new(client.clone(), "triplemining".to_string()), - coinlab: BlocksDominanceRewardsPattern::new(client.clone(), "coinlab".to_string()), - pool50btc: BlocksDominanceRewardsPattern::new(client.clone(), "pool50btc".to_string()), - ghashio: BlocksDominanceRewardsPattern::new(client.clone(), "ghashio".to_string()), - stminingcorp: BlocksDominanceRewardsPattern::new(client.clone(), "stminingcorp".to_string()), - bitparking: BlocksDominanceRewardsPattern::new(client.clone(), "bitparking".to_string()), - mmpool: BlocksDominanceRewardsPattern::new(client.clone(), "mmpool".to_string()), - polmine: BlocksDominanceRewardsPattern::new(client.clone(), "polmine".to_string()), - kncminer: BlocksDominanceRewardsPattern::new(client.clone(), "kncminer".to_string()), - bitalo: BlocksDominanceRewardsPattern::new(client.clone(), "bitalo".to_string()), - f2pool: BlocksDominanceRewardsPattern::new(client.clone(), "f2pool".to_string()), - hhtt: BlocksDominanceRewardsPattern::new(client.clone(), "hhtt".to_string()), - megabigpower: BlocksDominanceRewardsPattern::new(client.clone(), "megabigpower".to_string()), - mtred: BlocksDominanceRewardsPattern::new(client.clone(), "mtred".to_string()), - nmcbit: BlocksDominanceRewardsPattern::new(client.clone(), "nmcbit".to_string()), - yourbtcnet: BlocksDominanceRewardsPattern::new(client.clone(), "yourbtcnet".to_string()), - givemecoins: BlocksDominanceRewardsPattern::new(client.clone(), "givemecoins".to_string()), - braiinspool: BlocksDominanceRewardsPattern::new(client.clone(), "braiinspool".to_string()), - antpool: BlocksDominanceRewardsPattern::new(client.clone(), "antpool".to_string()), - multicoinco: BlocksDominanceRewardsPattern::new(client.clone(), "multicoinco".to_string()), - bcpoolio: BlocksDominanceRewardsPattern::new(client.clone(), "bcpoolio".to_string()), - cointerra: BlocksDominanceRewardsPattern::new(client.clone(), "cointerra".to_string()), - kanopool: BlocksDominanceRewardsPattern::new(client.clone(), "kanopool".to_string()), - solock: BlocksDominanceRewardsPattern::new(client.clone(), "solock".to_string()), - ckpool: BlocksDominanceRewardsPattern::new(client.clone(), "ckpool".to_string()), - nicehash: BlocksDominanceRewardsPattern::new(client.clone(), "nicehash".to_string()), - bitclub: BlocksDominanceRewardsPattern::new(client.clone(), "bitclub".to_string()), - bitcoinaffiliatenetwork: BlocksDominanceRewardsPattern::new(client.clone(), "bitcoinaffiliatenetwork".to_string()), - btcc: BlocksDominanceRewardsPattern::new(client.clone(), "btcc".to_string()), - bwpool: BlocksDominanceRewardsPattern::new(client.clone(), "bwpool".to_string()), - exxbw: BlocksDominanceRewardsPattern::new(client.clone(), "exxbw".to_string()), - bitsolo: BlocksDominanceRewardsPattern::new(client.clone(), "bitsolo".to_string()), - bitfury: BlocksDominanceRewardsPattern::new(client.clone(), "bitfury".to_string()), - twentyoneinc: BlocksDominanceRewardsPattern::new(client.clone(), "twentyoneinc".to_string()), - digitalbtc: BlocksDominanceRewardsPattern::new(client.clone(), "digitalbtc".to_string()), - eightbaochi: BlocksDominanceRewardsPattern::new(client.clone(), "eightbaochi".to_string()), - mybtccoinpool: BlocksDominanceRewardsPattern::new(client.clone(), "mybtccoinpool".to_string()), - tbdice: BlocksDominanceRewardsPattern::new(client.clone(), "tbdice".to_string()), - hashpool: BlocksDominanceRewardsPattern::new(client.clone(), "hashpool".to_string()), - nexious: BlocksDominanceRewardsPattern::new(client.clone(), "nexious".to_string()), - bravomining: BlocksDominanceRewardsPattern::new(client.clone(), "bravomining".to_string()), - hotpool: BlocksDominanceRewardsPattern::new(client.clone(), "hotpool".to_string()), - okexpool: BlocksDominanceRewardsPattern::new(client.clone(), "okexpool".to_string()), - bcmonster: BlocksDominanceRewardsPattern::new(client.clone(), "bcmonster".to_string()), - onehash: BlocksDominanceRewardsPattern::new(client.clone(), "onehash".to_string()), - bixin: BlocksDominanceRewardsPattern::new(client.clone(), "bixin".to_string()), - tatmaspool: BlocksDominanceRewardsPattern::new(client.clone(), "tatmaspool".to_string()), - viabtc: BlocksDominanceRewardsPattern::new(client.clone(), "viabtc".to_string()), - connectbtc: BlocksDominanceRewardsPattern::new(client.clone(), "connectbtc".to_string()), - batpool: BlocksDominanceRewardsPattern::new(client.clone(), "batpool".to_string()), - waterhole: BlocksDominanceRewardsPattern::new(client.clone(), "waterhole".to_string()), - dcexploration: BlocksDominanceRewardsPattern::new(client.clone(), "dcexploration".to_string()), - dcex: BlocksDominanceRewardsPattern::new(client.clone(), "dcex".to_string()), - btpool: BlocksDominanceRewardsPattern::new(client.clone(), "btpool".to_string()), - fiftyeightcoin: BlocksDominanceRewardsPattern::new(client.clone(), "fiftyeightcoin".to_string()), - bitcoinindia: BlocksDominanceRewardsPattern::new(client.clone(), "bitcoinindia".to_string()), - shawnp0wers: BlocksDominanceRewardsPattern::new(client.clone(), "shawnp0wers".to_string()), - phashio: BlocksDominanceRewardsPattern::new(client.clone(), "phashio".to_string()), - rigpool: BlocksDominanceRewardsPattern::new(client.clone(), "rigpool".to_string()), - haozhuzhu: BlocksDominanceRewardsPattern::new(client.clone(), "haozhuzhu".to_string()), - sevenpool: BlocksDominanceRewardsPattern::new(client.clone(), "sevenpool".to_string()), - miningkings: BlocksDominanceRewardsPattern::new(client.clone(), "miningkings".to_string()), - hashbx: BlocksDominanceRewardsPattern::new(client.clone(), "hashbx".to_string()), - dpool: BlocksDominanceRewardsPattern::new(client.clone(), "dpool".to_string()), - rawpool: BlocksDominanceRewardsPattern::new(client.clone(), "rawpool".to_string()), - haominer: BlocksDominanceRewardsPattern::new(client.clone(), "haominer".to_string()), - helix: BlocksDominanceRewardsPattern::new(client.clone(), "helix".to_string()), - bitcoinukraine: BlocksDominanceRewardsPattern::new(client.clone(), "bitcoinukraine".to_string()), - poolin: BlocksDominanceRewardsPattern::new(client.clone(), "poolin".to_string()), - secretsuperstar: BlocksDominanceRewardsPattern::new(client.clone(), "secretsuperstar".to_string()), - tigerpoolnet: BlocksDominanceRewardsPattern::new(client.clone(), "tigerpoolnet".to_string()), - sigmapoolcom: BlocksDominanceRewardsPattern::new(client.clone(), "sigmapoolcom".to_string()), - okpooltop: BlocksDominanceRewardsPattern::new(client.clone(), "okpooltop".to_string()), - hummerpool: BlocksDominanceRewardsPattern::new(client.clone(), "hummerpool".to_string()), - tangpool: BlocksDominanceRewardsPattern::new(client.clone(), "tangpool".to_string()), - bytepool: BlocksDominanceRewardsPattern::new(client.clone(), "bytepool".to_string()), - spiderpool: BlocksDominanceRewardsPattern::new(client.clone(), "spiderpool".to_string()), - novablock: BlocksDominanceRewardsPattern::new(client.clone(), "novablock".to_string()), - miningcity: BlocksDominanceRewardsPattern::new(client.clone(), "miningcity".to_string()), - binancepool: BlocksDominanceRewardsPattern::new(client.clone(), "binancepool".to_string()), - minerium: BlocksDominanceRewardsPattern::new(client.clone(), "minerium".to_string()), - lubiancom: BlocksDominanceRewardsPattern::new(client.clone(), "lubiancom".to_string()), - okkong: BlocksDominanceRewardsPattern::new(client.clone(), "okkong".to_string()), - aaopool: BlocksDominanceRewardsPattern::new(client.clone(), "aaopool".to_string()), - emcdpool: BlocksDominanceRewardsPattern::new(client.clone(), "emcdpool".to_string()), - foundryusa: BlocksDominanceRewardsPattern::new(client.clone(), "foundryusa".to_string()), - sbicrypto: BlocksDominanceRewardsPattern::new(client.clone(), "sbicrypto".to_string()), - arkpool: BlocksDominanceRewardsPattern::new(client.clone(), "arkpool".to_string()), - purebtccom: BlocksDominanceRewardsPattern::new(client.clone(), "purebtccom".to_string()), - marapool: BlocksDominanceRewardsPattern::new(client.clone(), "marapool".to_string()), - kucoinpool: BlocksDominanceRewardsPattern::new(client.clone(), "kucoinpool".to_string()), - entrustcharitypool: BlocksDominanceRewardsPattern::new(client.clone(), "entrustcharitypool".to_string()), - okminer: BlocksDominanceRewardsPattern::new(client.clone(), "okminer".to_string()), - titan: BlocksDominanceRewardsPattern::new(client.clone(), "titan".to_string()), - pegapool: BlocksDominanceRewardsPattern::new(client.clone(), "pegapool".to_string()), - btcnuggets: BlocksDominanceRewardsPattern::new(client.clone(), "btcnuggets".to_string()), - cloudhashing: BlocksDominanceRewardsPattern::new(client.clone(), "cloudhashing".to_string()), - digitalxmintsy: BlocksDominanceRewardsPattern::new(client.clone(), "digitalxmintsy".to_string()), - telco214: BlocksDominanceRewardsPattern::new(client.clone(), "telco214".to_string()), - btcpoolparty: BlocksDominanceRewardsPattern::new(client.clone(), "btcpoolparty".to_string()), - multipool: BlocksDominanceRewardsPattern::new(client.clone(), "multipool".to_string()), - transactioncoinmining: BlocksDominanceRewardsPattern::new(client.clone(), "transactioncoinmining".to_string()), - btcdig: BlocksDominanceRewardsPattern::new(client.clone(), "btcdig".to_string()), - trickysbtcpool: BlocksDominanceRewardsPattern::new(client.clone(), "trickysbtcpool".to_string()), - btcmp: BlocksDominanceRewardsPattern::new(client.clone(), "btcmp".to_string()), - eobot: BlocksDominanceRewardsPattern::new(client.clone(), "eobot".to_string()), - unomp: BlocksDominanceRewardsPattern::new(client.clone(), "unomp".to_string()), - patels: BlocksDominanceRewardsPattern::new(client.clone(), "patels".to_string()), - gogreenlight: BlocksDominanceRewardsPattern::new(client.clone(), "gogreenlight".to_string()), - bitcoinindiapool: BlocksDominanceRewardsPattern::new(client.clone(), "bitcoinindiapool".to_string()), - ekanembtc: BlocksDominanceRewardsPattern::new(client.clone(), "ekanembtc".to_string()), - canoe: BlocksDominanceRewardsPattern::new(client.clone(), "canoe".to_string()), - tiger: BlocksDominanceRewardsPattern::new(client.clone(), "tiger".to_string()), - onem1x: BlocksDominanceRewardsPattern::new(client.clone(), "onem1x".to_string()), - zulupool: BlocksDominanceRewardsPattern::new(client.clone(), "zulupool".to_string()), - secpool: BlocksDominanceRewardsPattern::new(client.clone(), "secpool".to_string()), - ocean: BlocksDominanceRewardsPattern::new(client.clone(), "ocean".to_string()), - whitepool: BlocksDominanceRewardsPattern::new(client.clone(), "whitepool".to_string()), - wiz: BlocksDominanceRewardsPattern::new(client.clone(), "wiz".to_string()), - wk057: BlocksDominanceRewardsPattern::new(client.clone(), "wk057".to_string()), - futurebitapollosolo: BlocksDominanceRewardsPattern::new(client.clone(), "futurebitapollosolo".to_string()), - carbonnegative: BlocksDominanceRewardsPattern::new(client.clone(), "carbonnegative".to_string()), - portlandhodl: BlocksDominanceRewardsPattern::new(client.clone(), "portlandhodl".to_string()), - phoenix: BlocksDominanceRewardsPattern::new(client.clone(), "phoenix".to_string()), - neopool: BlocksDominanceRewardsPattern::new(client.clone(), "neopool".to_string()), - maxipool: BlocksDominanceRewardsPattern::new(client.clone(), "maxipool".to_string()), - bitfufupool: BlocksDominanceRewardsPattern::new(client.clone(), "bitfufupool".to_string()), - gdpool: BlocksDominanceRewardsPattern::new(client.clone(), "gdpool".to_string()), - miningdutch: BlocksDominanceRewardsPattern::new(client.clone(), "miningdutch".to_string()), - publicpool: BlocksDominanceRewardsPattern::new(client.clone(), "publicpool".to_string()), - miningsquared: BlocksDominanceRewardsPattern::new(client.clone(), "miningsquared".to_string()), - innopolistech: BlocksDominanceRewardsPattern::new(client.clone(), "innopolistech".to_string()), - btclab: BlocksDominanceRewardsPattern::new(client.clone(), "btclab".to_string()), - parasite: BlocksDominanceRewardsPattern::new(client.clone(), "parasite".to_string()), - redrockpool: BlocksDominanceRewardsPattern::new(client.clone(), "redrockpool".to_string()), - est3lar: BlocksDominanceRewardsPattern::new(client.clone(), "est3lar".to_string()), + unknown: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "unknown".to_string()), + ultimuspool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "ultimuspool".to_string()), + terrapool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "terrapool".to_string()), + luxor: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "luxor".to_string()), + onethash: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "onethash".to_string()), + btccom: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "btccom".to_string()), + huobipool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "huobipool".to_string()), + wayicn: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "wayicn".to_string()), + canoepool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "canoepool".to_string()), + btctop: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "btctop".to_string()), + bitcoincom: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "bitcoincom".to_string()), + gbminers: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "gbminers".to_string()), + asicminer: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "asicminer".to_string()), + bitminter: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "bitminter".to_string()), + bitcoinrussia: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "bitcoinrussia".to_string()), + btcguild: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "btcguild".to_string()), + eligius: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "eligius".to_string()), + ozcoin: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "ozcoin".to_string()), + eclipsemc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "eclipsemc".to_string()), + maxbtc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "maxbtc".to_string()), + triplemining: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "triplemining".to_string()), + coinlab: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "coinlab".to_string()), + pool50btc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "pool50btc".to_string()), + ghashio: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "ghashio".to_string()), + bitparking: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "bitparking".to_string()), + polmine: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "polmine".to_string()), + kncminer: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "kncminer".to_string()), + f2pool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "f2pool".to_string()), + hhtt: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "hhtt".to_string()), + megabigpower: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "megabigpower".to_string()), + nmcbit: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "nmcbit".to_string()), + yourbtcnet: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "yourbtcnet".to_string()), + braiinspool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "braiinspool".to_string()), + antpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "antpool".to_string()), + kanopool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "kanopool".to_string()), + solock: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "solock".to_string()), + nicehash: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "nicehash".to_string()), + bitclub: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "bitclub".to_string()), + bitcoinaffiliatenetwork: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "bitcoinaffiliatenetwork".to_string()), + btcc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "btcc".to_string()), + bwpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "bwpool".to_string()), + exxbw: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "exxbw".to_string()), + bitfury: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "bitfury".to_string()), + digitalbtc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "digitalbtc".to_string()), + okexpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "okexpool".to_string()), + bixin: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "bixin".to_string()), + tatmaspool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "tatmaspool".to_string()), + viabtc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "viabtc".to_string()), + connectbtc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "connectbtc".to_string()), + batpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "batpool".to_string()), + btpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "btpool".to_string()), + fiftyeightcoin: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "fiftyeightcoin".to_string()), + bitcoinindia: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "bitcoinindia".to_string()), + dpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "dpool".to_string()), + poolin: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "poolin".to_string()), + secretsuperstar: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "secretsuperstar".to_string()), + tigerpoolnet: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "tigerpoolnet".to_string()), + sigmapoolcom: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "sigmapoolcom".to_string()), + okpooltop: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "okpooltop".to_string()), + tangpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "tangpool".to_string()), + bytepool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "bytepool".to_string()), + spiderpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "spiderpool".to_string()), + novablock: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "novablock".to_string()), + binancepool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "binancepool".to_string()), + lubiancom: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "lubiancom".to_string()), + okkong: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "okkong".to_string()), + emcdpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "emcdpool".to_string()), + foundryusa: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "foundryusa".to_string()), + sbicrypto: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "sbicrypto".to_string()), + marapool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "marapool".to_string()), + kucoinpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "kucoinpool".to_string()), + pegapool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "pegapool".to_string()), + secpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "secpool".to_string()), + ocean: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "ocean".to_string()), + whitepool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern::new(client.clone(), "whitepool".to_string()), + } + } +} + +/// Metrics tree node. +pub struct MetricsTree_Pools_Minor { + pub blockfills: BlocksDominancePattern, + pub bitfarms: BlocksDominancePattern, + pub pool175btc: BlocksDominancePattern, + pub axbt: BlocksDominancePattern, + pub btcserv: BlocksDominancePattern, + pub simplecoinus: BlocksDominancePattern, + pub stminingcorp: BlocksDominancePattern, + pub mmpool: BlocksDominancePattern, + pub bitalo: BlocksDominancePattern, + pub mtred: BlocksDominancePattern, + pub givemecoins: BlocksDominancePattern, + pub multicoinco: BlocksDominancePattern, + pub bcpoolio: BlocksDominancePattern, + pub cointerra: BlocksDominancePattern, + pub ckpool: BlocksDominancePattern, + pub bitsolo: BlocksDominancePattern, + pub twentyoneinc: BlocksDominancePattern, + pub eightbaochi: BlocksDominancePattern, + pub mybtccoinpool: BlocksDominancePattern, + pub tbdice: BlocksDominancePattern, + pub hashpool: BlocksDominancePattern, + pub nexious: BlocksDominancePattern, + pub bravomining: BlocksDominancePattern, + pub hotpool: BlocksDominancePattern, + pub bcmonster: BlocksDominancePattern, + pub onehash: BlocksDominancePattern, + pub waterhole: BlocksDominancePattern, + pub dcexploration: BlocksDominancePattern, + pub dcex: BlocksDominancePattern, + pub shawnp0wers: BlocksDominancePattern, + pub phashio: BlocksDominancePattern, + pub rigpool: BlocksDominancePattern, + pub haozhuzhu: BlocksDominancePattern, + pub sevenpool: BlocksDominancePattern, + pub miningkings: BlocksDominancePattern, + pub hashbx: BlocksDominancePattern, + pub rawpool: BlocksDominancePattern, + pub haominer: BlocksDominancePattern, + pub helix: BlocksDominancePattern, + pub bitcoinukraine: BlocksDominancePattern, + pub hummerpool: BlocksDominancePattern, + pub miningcity: BlocksDominancePattern, + pub minerium: BlocksDominancePattern, + pub aaopool: BlocksDominancePattern, + pub arkpool: BlocksDominancePattern, + pub purebtccom: BlocksDominancePattern, + pub entrustcharitypool: BlocksDominancePattern, + pub okminer: BlocksDominancePattern, + pub titan: BlocksDominancePattern, + pub btcnuggets: BlocksDominancePattern, + pub cloudhashing: BlocksDominancePattern, + pub digitalxmintsy: BlocksDominancePattern, + pub telco214: BlocksDominancePattern, + pub btcpoolparty: BlocksDominancePattern, + pub multipool: BlocksDominancePattern, + pub transactioncoinmining: BlocksDominancePattern, + pub btcdig: BlocksDominancePattern, + pub trickysbtcpool: BlocksDominancePattern, + pub btcmp: BlocksDominancePattern, + pub eobot: BlocksDominancePattern, + pub unomp: BlocksDominancePattern, + pub patels: BlocksDominancePattern, + pub gogreenlight: BlocksDominancePattern, + pub bitcoinindiapool: BlocksDominancePattern, + pub ekanembtc: BlocksDominancePattern, + pub canoe: BlocksDominancePattern, + pub tiger: BlocksDominancePattern, + pub onem1x: BlocksDominancePattern, + pub zulupool: BlocksDominancePattern, + pub wiz: BlocksDominancePattern, + pub wk057: BlocksDominancePattern, + pub futurebitapollosolo: BlocksDominancePattern, + pub carbonnegative: BlocksDominancePattern, + pub portlandhodl: BlocksDominancePattern, + pub phoenix: BlocksDominancePattern, + pub neopool: BlocksDominancePattern, + pub maxipool: BlocksDominancePattern, + pub bitfufupool: BlocksDominancePattern, + pub gdpool: BlocksDominancePattern, + pub miningdutch: BlocksDominancePattern, + pub publicpool: BlocksDominancePattern, + pub miningsquared: BlocksDominancePattern, + pub innopolistech: BlocksDominancePattern, + pub btclab: BlocksDominancePattern, + pub parasite: BlocksDominancePattern, + pub redrockpool: BlocksDominancePattern, + pub est3lar: BlocksDominancePattern, +} + +impl MetricsTree_Pools_Minor { + pub fn new(client: Arc, base_path: String) -> Self { + Self { + blockfills: BlocksDominancePattern::new(client.clone(), "blockfills".to_string()), + bitfarms: BlocksDominancePattern::new(client.clone(), "bitfarms".to_string()), + pool175btc: BlocksDominancePattern::new(client.clone(), "pool175btc".to_string()), + axbt: BlocksDominancePattern::new(client.clone(), "axbt".to_string()), + btcserv: BlocksDominancePattern::new(client.clone(), "btcserv".to_string()), + simplecoinus: BlocksDominancePattern::new(client.clone(), "simplecoinus".to_string()), + stminingcorp: BlocksDominancePattern::new(client.clone(), "stminingcorp".to_string()), + mmpool: BlocksDominancePattern::new(client.clone(), "mmpool".to_string()), + bitalo: BlocksDominancePattern::new(client.clone(), "bitalo".to_string()), + mtred: BlocksDominancePattern::new(client.clone(), "mtred".to_string()), + givemecoins: BlocksDominancePattern::new(client.clone(), "givemecoins".to_string()), + multicoinco: BlocksDominancePattern::new(client.clone(), "multicoinco".to_string()), + bcpoolio: BlocksDominancePattern::new(client.clone(), "bcpoolio".to_string()), + cointerra: BlocksDominancePattern::new(client.clone(), "cointerra".to_string()), + ckpool: BlocksDominancePattern::new(client.clone(), "ckpool".to_string()), + bitsolo: BlocksDominancePattern::new(client.clone(), "bitsolo".to_string()), + twentyoneinc: BlocksDominancePattern::new(client.clone(), "twentyoneinc".to_string()), + eightbaochi: BlocksDominancePattern::new(client.clone(), "eightbaochi".to_string()), + mybtccoinpool: BlocksDominancePattern::new(client.clone(), "mybtccoinpool".to_string()), + tbdice: BlocksDominancePattern::new(client.clone(), "tbdice".to_string()), + hashpool: BlocksDominancePattern::new(client.clone(), "hashpool".to_string()), + nexious: BlocksDominancePattern::new(client.clone(), "nexious".to_string()), + bravomining: BlocksDominancePattern::new(client.clone(), "bravomining".to_string()), + hotpool: BlocksDominancePattern::new(client.clone(), "hotpool".to_string()), + bcmonster: BlocksDominancePattern::new(client.clone(), "bcmonster".to_string()), + onehash: BlocksDominancePattern::new(client.clone(), "onehash".to_string()), + waterhole: BlocksDominancePattern::new(client.clone(), "waterhole".to_string()), + dcexploration: BlocksDominancePattern::new(client.clone(), "dcexploration".to_string()), + dcex: BlocksDominancePattern::new(client.clone(), "dcex".to_string()), + shawnp0wers: BlocksDominancePattern::new(client.clone(), "shawnp0wers".to_string()), + phashio: BlocksDominancePattern::new(client.clone(), "phashio".to_string()), + rigpool: BlocksDominancePattern::new(client.clone(), "rigpool".to_string()), + haozhuzhu: BlocksDominancePattern::new(client.clone(), "haozhuzhu".to_string()), + sevenpool: BlocksDominancePattern::new(client.clone(), "sevenpool".to_string()), + miningkings: BlocksDominancePattern::new(client.clone(), "miningkings".to_string()), + hashbx: BlocksDominancePattern::new(client.clone(), "hashbx".to_string()), + rawpool: BlocksDominancePattern::new(client.clone(), "rawpool".to_string()), + haominer: BlocksDominancePattern::new(client.clone(), "haominer".to_string()), + helix: BlocksDominancePattern::new(client.clone(), "helix".to_string()), + bitcoinukraine: BlocksDominancePattern::new(client.clone(), "bitcoinukraine".to_string()), + hummerpool: BlocksDominancePattern::new(client.clone(), "hummerpool".to_string()), + miningcity: BlocksDominancePattern::new(client.clone(), "miningcity".to_string()), + minerium: BlocksDominancePattern::new(client.clone(), "minerium".to_string()), + aaopool: BlocksDominancePattern::new(client.clone(), "aaopool".to_string()), + arkpool: BlocksDominancePattern::new(client.clone(), "arkpool".to_string()), + purebtccom: BlocksDominancePattern::new(client.clone(), "purebtccom".to_string()), + entrustcharitypool: BlocksDominancePattern::new(client.clone(), "entrustcharitypool".to_string()), + okminer: BlocksDominancePattern::new(client.clone(), "okminer".to_string()), + titan: BlocksDominancePattern::new(client.clone(), "titan".to_string()), + btcnuggets: BlocksDominancePattern::new(client.clone(), "btcnuggets".to_string()), + cloudhashing: BlocksDominancePattern::new(client.clone(), "cloudhashing".to_string()), + digitalxmintsy: BlocksDominancePattern::new(client.clone(), "digitalxmintsy".to_string()), + telco214: BlocksDominancePattern::new(client.clone(), "telco214".to_string()), + btcpoolparty: BlocksDominancePattern::new(client.clone(), "btcpoolparty".to_string()), + multipool: BlocksDominancePattern::new(client.clone(), "multipool".to_string()), + transactioncoinmining: BlocksDominancePattern::new(client.clone(), "transactioncoinmining".to_string()), + btcdig: BlocksDominancePattern::new(client.clone(), "btcdig".to_string()), + trickysbtcpool: BlocksDominancePattern::new(client.clone(), "trickysbtcpool".to_string()), + btcmp: BlocksDominancePattern::new(client.clone(), "btcmp".to_string()), + eobot: BlocksDominancePattern::new(client.clone(), "eobot".to_string()), + unomp: BlocksDominancePattern::new(client.clone(), "unomp".to_string()), + patels: BlocksDominancePattern::new(client.clone(), "patels".to_string()), + gogreenlight: BlocksDominancePattern::new(client.clone(), "gogreenlight".to_string()), + bitcoinindiapool: BlocksDominancePattern::new(client.clone(), "bitcoinindiapool".to_string()), + ekanembtc: BlocksDominancePattern::new(client.clone(), "ekanembtc".to_string()), + canoe: BlocksDominancePattern::new(client.clone(), "canoe".to_string()), + tiger: BlocksDominancePattern::new(client.clone(), "tiger".to_string()), + onem1x: BlocksDominancePattern::new(client.clone(), "onem1x".to_string()), + zulupool: BlocksDominancePattern::new(client.clone(), "zulupool".to_string()), + wiz: BlocksDominancePattern::new(client.clone(), "wiz".to_string()), + wk057: BlocksDominancePattern::new(client.clone(), "wk057".to_string()), + futurebitapollosolo: BlocksDominancePattern::new(client.clone(), "futurebitapollosolo".to_string()), + carbonnegative: BlocksDominancePattern::new(client.clone(), "carbonnegative".to_string()), + portlandhodl: BlocksDominancePattern::new(client.clone(), "portlandhodl".to_string()), + phoenix: BlocksDominancePattern::new(client.clone(), "phoenix".to_string()), + neopool: BlocksDominancePattern::new(client.clone(), "neopool".to_string()), + maxipool: BlocksDominancePattern::new(client.clone(), "maxipool".to_string()), + bitfufupool: BlocksDominancePattern::new(client.clone(), "bitfufupool".to_string()), + gdpool: BlocksDominancePattern::new(client.clone(), "gdpool".to_string()), + miningdutch: BlocksDominancePattern::new(client.clone(), "miningdutch".to_string()), + publicpool: BlocksDominancePattern::new(client.clone(), "publicpool".to_string()), + miningsquared: BlocksDominancePattern::new(client.clone(), "miningsquared".to_string()), + innopolistech: BlocksDominancePattern::new(client.clone(), "innopolistech".to_string()), + btclab: BlocksDominancePattern::new(client.clone(), "btclab".to_string()), + parasite: BlocksDominancePattern::new(client.clone(), "parasite".to_string()), + redrockpool: BlocksDominancePattern::new(client.clone(), "redrockpool".to_string()), + est3lar: BlocksDominancePattern::new(client.clone(), "est3lar".to_string()), } } } @@ -5480,15 +5549,15 @@ impl MetricsTree_Distribution_UtxoCohorts_All_Adjusted { /// Metrics tree node. pub struct MetricsTree_Distribution_UtxoCohorts_All_Relative { - pub invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern, - pub invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern, - pub supply_in_profit_rel_to_own_supply: BpsPercentRatioPattern, - pub supply_in_loss_rel_to_own_supply: BpsPercentRatioPattern, pub unrealized_profit_rel_to_market_cap: BpsPercentRatioPattern, pub unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern, pub net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern, pub neg_unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern, pub nupl: MetricPattern1, + pub invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern, + pub invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern, + pub supply_in_profit_rel_to_own_supply: BpsPercentRatioPattern, + pub supply_in_loss_rel_to_own_supply: BpsPercentRatioPattern, pub unrealized_profit_rel_to_own_gross_pnl: BpsPercentRatioPattern, pub unrealized_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern, pub neg_unrealized_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern, @@ -5498,15 +5567,15 @@ pub struct MetricsTree_Distribution_UtxoCohorts_All_Relative { impl MetricsTree_Distribution_UtxoCohorts_All_Relative { pub fn new(client: Arc, base_path: String) -> Self { Self { - invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), "invested_capital_in_profit_rel_to_realized_cap".to_string()), - invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), "invested_capital_in_loss_rel_to_realized_cap".to_string()), - supply_in_profit_rel_to_own_supply: BpsPercentRatioPattern::new(client.clone(), "supply_in_profit_rel_to_own_supply".to_string()), - supply_in_loss_rel_to_own_supply: BpsPercentRatioPattern::new(client.clone(), "supply_in_loss_rel_to_own_supply".to_string()), unrealized_profit_rel_to_market_cap: BpsPercentRatioPattern::new(client.clone(), "unrealized_profit_rel_to_market_cap".to_string()), unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern::new(client.clone(), "unrealized_loss_rel_to_market_cap".to_string()), net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern::new(client.clone(), "net_unrealized_pnl_rel_to_market_cap".to_string()), neg_unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern::new(client.clone(), "neg_unrealized_loss_rel_to_market_cap".to_string()), nupl: MetricPattern1::new(client.clone(), "nupl".to_string()), + invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), "invested_capital_in_profit_rel_to_realized_cap".to_string()), + invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), "invested_capital_in_loss_rel_to_realized_cap".to_string()), + supply_in_profit_rel_to_own_supply: BpsPercentRatioPattern::new(client.clone(), "supply_in_profit_rel_to_own_supply".to_string()), + supply_in_loss_rel_to_own_supply: BpsPercentRatioPattern::new(client.clone(), "supply_in_loss_rel_to_own_supply".to_string()), unrealized_profit_rel_to_own_gross_pnl: BpsPercentRatioPattern::new(client.clone(), "unrealized_profit_rel_to_own_gross_pnl".to_string()), unrealized_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern::new(client.clone(), "unrealized_loss_rel_to_own_gross_pnl".to_string()), neg_unrealized_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern::new(client.clone(), "neg_unrealized_loss_rel_to_own_gross_pnl".to_string()), diff --git a/crates/brk_computer/src/distribution/cohorts/utxo/groups.rs b/crates/brk_computer/src/distribution/cohorts/utxo/groups.rs index 97b0e99ca..2167ed55d 100644 --- a/crates/brk_computer/src/distribution/cohorts/utxo/groups.rs +++ b/crates/brk_computer/src/distribution/cohorts/utxo/groups.rs @@ -528,7 +528,6 @@ impl UTXOCohorts { blocks, prices, starting_indexes, - height_to_market_cap, ss, exit, ) @@ -540,7 +539,6 @@ impl UTXOCohorts { blocks, prices, starting_indexes, - height_to_market_cap, ss, exit, ) @@ -557,7 +555,6 @@ impl UTXOCohorts { blocks, prices, starting_indexes, - height_to_market_cap, ss, exit, ) @@ -569,7 +566,6 @@ impl UTXOCohorts { blocks, prices, starting_indexes, - height_to_market_cap, ss, exit, ) diff --git a/crates/brk_computer/src/distribution/metrics/cohort/core.rs b/crates/brk_computer/src/distribution/metrics/cohort/core.rs index 02eb7de3d..8f935460d 100644 --- a/crates/brk_computer/src/distribution/metrics/cohort/core.rs +++ b/crates/brk_computer/src/distribution/metrics/cohort/core.rs @@ -1,7 +1,7 @@ use brk_cohort::Filter; use brk_error::Result; use brk_traversable::Traversable; -use brk_types::{Dollars, Height, Indexes, Sats, Version}; +use brk_types::{Height, Indexes, Sats, Version}; use vecdb::{AnyStoredVec, Exit, ReadableVec, Rw, StorageMode}; use crate::{blocks, prices}; @@ -133,7 +133,6 @@ impl CoreCohortMetrics { blocks: &blocks::Vecs, prices: &prices::Vecs, starting_indexes: &Indexes, - height_to_market_cap: &impl ReadableVec, all_supply_sats: &impl ReadableVec, exit: &Exit, ) -> Result<()> { @@ -149,7 +148,6 @@ impl CoreCohortMetrics { starting_indexes.height, &self.unrealized, &self.supply.total.sats.height, - height_to_market_cap, all_supply_sats, exit, )?; diff --git a/crates/brk_computer/src/distribution/metrics/realized/base.rs b/crates/brk_computer/src/distribution/metrics/realized/base.rs index 0b07d0fa1..d6add4968 100644 --- a/crates/brk_computer/src/distribution/metrics/realized/base.rs +++ b/crates/brk_computer/src/distribution/metrics/realized/base.rs @@ -1,9 +1,6 @@ use brk_error::Result; use brk_traversable::Traversable; -use brk_types::{ - BasisPoints32, BasisPointsSigned32, Bitcoin, Cents, CentsSigned, Dollars, Height, Indexes, - StoredF64, Version, -}; +use brk_types::{Bitcoin, Cents, CentsSigned, Dollars, Height, Indexes, StoredF64, Version}; use derive_more::{Deref, DerefMut}; use vecdb::{ AnyStoredVec, AnyVec, Exit, ReadableCloneableVec, ReadableVec, Rw, StorageMode, WritableVec, @@ -15,8 +12,8 @@ use crate::{ internal::{ ComputedFromHeight, ComputedFromHeightCumulative, ComputedFromHeightRatioPercentiles, FiatFromHeight, - LazyFromHeight, NegCentsUnsignedToDollars, PercentFromHeight, RatioCents64, - RatioCentsBp32, RatioCentsSignedCentsBps32, RollingWindows, ValueFromHeightCumulative, + LazyFromHeight, NegCentsUnsignedToDollars, RatioCents64, + RollingWindows, ValueFromHeightCumulative, }, prices, }; @@ -38,10 +35,6 @@ pub struct RealizedBase { pub net_realized_pnl: ComputedFromHeightCumulative, pub gross_pnl: FiatFromHeight, - pub realized_profit_rel_to_realized_cap: PercentFromHeight, - pub realized_loss_rel_to_realized_cap: PercentFromHeight, - pub net_realized_pnl_rel_to_realized_cap: PercentFromHeight, - pub value_created: ComputedFromHeight, pub value_destroyed: ComputedFromHeight, pub value_created_sum: RollingWindows, @@ -71,13 +64,6 @@ impl RealizedBase { let net_realized_pnl = cfg.import("net_realized_pnl", v0)?; let gross_pnl = cfg.import("realized_gross_pnl", v0)?; - let realized_profit_rel_to_realized_cap = - cfg.import("realized_profit_rel_to_realized_cap", Version::new(2))?; - let realized_loss_rel_to_realized_cap = - cfg.import("realized_loss_rel_to_realized_cap", Version::new(2))?; - let net_realized_pnl_rel_to_realized_cap = - cfg.import("net_realized_pnl_rel_to_realized_cap", Version::new(2))?; - let value_created = cfg.import("value_created", v0)?; let value_destroyed = cfg.import("value_destroyed", v0)?; let value_created_sum = cfg.import("value_created", v1)?; @@ -98,9 +84,6 @@ impl RealizedBase { neg_realized_loss, net_realized_pnl, gross_pnl, - realized_profit_rel_to_realized_cap, - realized_loss_rel_to_realized_cap, - net_realized_pnl_rel_to_realized_cap, value_created, value_destroyed, value_created_sum, @@ -221,28 +204,6 @@ impl RealizedBase { exit, )?; - self.realized_profit_rel_to_realized_cap - .compute_binary::( - starting_indexes.height, - &self.minimal.realized_profit.height, - &self.minimal.realized_cap_cents.height, - exit, - )?; - self.realized_loss_rel_to_realized_cap - .compute_binary::( - starting_indexes.height, - &self.minimal.realized_loss.height, - &self.minimal.realized_cap_cents.height, - exit, - )?; - self.net_realized_pnl_rel_to_realized_cap - .compute_binary::( - starting_indexes.height, - &self.net_realized_pnl.height, - &self.minimal.realized_cap_cents.height, - exit, - )?; - // SOPR: rolling sums of stateful value_created/destroyed, then ratio, then EMAs let window_starts = blocks.count.window_starts(); self.value_created_sum.compute_rolling_sum( diff --git a/crates/brk_computer/src/distribution/metrics/realized/full.rs b/crates/brk_computer/src/distribution/metrics/realized/full.rs index 0b0f241df..800658af8 100644 --- a/crates/brk_computer/src/distribution/metrics/realized/full.rs +++ b/crates/brk_computer/src/distribution/metrics/realized/full.rs @@ -35,6 +35,10 @@ pub struct RealizedFull { #[traversable(flatten)] pub core: RealizedBase, + pub realized_profit_rel_to_realized_cap: PercentFromHeight, + pub realized_loss_rel_to_realized_cap: PercentFromHeight, + pub net_realized_pnl_rel_to_realized_cap: PercentFromHeight, + pub profit_value_created: ComputedFromHeight, pub profit_value_destroyed: ComputedFromHeight, pub loss_value_created: ComputedFromHeight, @@ -134,6 +138,13 @@ impl RealizedFull { let investor_price_name = cfg.name("investor_price"); let investor_price_version = cfg.version; + let realized_profit_rel_to_realized_cap = + cfg.import("realized_profit_rel_to_realized_cap", Version::new(2))?; + let realized_loss_rel_to_realized_cap = + cfg.import("realized_loss_rel_to_realized_cap", Version::new(2))?; + let net_realized_pnl_rel_to_realized_cap = + cfg.import("net_realized_pnl_rel_to_realized_cap", Version::new(2))?; + let realized_profit_ema_1w = cfg.import("realized_profit_ema_1w", v0)?; let realized_loss_ema_1w = cfg.import("realized_loss_ema_1w", v0)?; let net_realized_pnl_ema_1w = cfg.import("net_realized_pnl_ema_1w", v0)?; @@ -143,6 +154,9 @@ impl RealizedFull { Ok(Self { core, + realized_profit_rel_to_realized_cap, + realized_loss_rel_to_realized_cap, + net_realized_pnl_rel_to_realized_cap, profit_value_created, profit_value_destroyed, loss_value_created, @@ -288,6 +302,29 @@ impl RealizedFull { exit, )?; + // Realized P/L rel to realized cap + self.realized_profit_rel_to_realized_cap + .compute_binary::( + starting_indexes.height, + &self.core.minimal.realized_profit.height, + &self.core.minimal.realized_cap_cents.height, + exit, + )?; + self.realized_loss_rel_to_realized_cap + .compute_binary::( + starting_indexes.height, + &self.core.minimal.realized_loss.height, + &self.core.minimal.realized_cap_cents.height, + exit, + )?; + self.net_realized_pnl_rel_to_realized_cap + .compute_binary::( + starting_indexes.height, + &self.core.net_realized_pnl.height, + &self.core.minimal.realized_cap_cents.height, + exit, + )?; + // EMAs self.realized_profit_ema_1w.height.compute_rolling_ema( starting_indexes.height, diff --git a/crates/brk_computer/src/distribution/metrics/relative/base.rs b/crates/brk_computer/src/distribution/metrics/relative/base.rs index 2015d5e4d..86f57ec6d 100644 --- a/crates/brk_computer/src/distribution/metrics/relative/base.rs +++ b/crates/brk_computer/src/distribution/metrics/relative/base.rs @@ -1,61 +1,28 @@ use brk_error::Result; use brk_traversable::Traversable; -use brk_types::{BasisPoints16, BasisPointsSigned32, Dollars, Height, Sats, StoredF32, Version}; -use vecdb::{Exit, ReadableCloneableVec, ReadableVec, Rw, StorageMode}; +use brk_types::{BasisPoints16, Height, Sats, Version}; +use vecdb::{Exit, ReadableVec, Rw, StorageMode}; -use crate::internal::{ - Bps32ToFloat, LazyFromHeight, NegRatioDollarsBps32, PercentFromHeight, RatioDollarsBp16, - RatioDollarsBps32, RatioSatsBp16, -}; +use crate::internal::{PercentFromHeight, RatioSatsBp16}; use crate::distribution::metrics::{ImportConfig, UnrealizedBase}; -/// Relative metrics for the Complete tier (~6 fields). -/// -/// Excludes source-only fields (invested_capital_in_profit/loss_rel_to_realized_cap). +/// Relative metrics for the Complete tier. #[derive(Traversable)] pub struct RelativeBase { pub supply_in_profit_rel_to_own_supply: PercentFromHeight, pub supply_in_loss_rel_to_own_supply: PercentFromHeight, - - pub unrealized_profit_rel_to_market_cap: PercentFromHeight, - pub unrealized_loss_rel_to_market_cap: PercentFromHeight, - pub net_unrealized_pnl_rel_to_market_cap: PercentFromHeight, - pub neg_unrealized_loss_rel_to_market_cap: PercentFromHeight, - pub nupl: LazyFromHeight, } impl RelativeBase { pub(crate) fn forced_import(cfg: &ImportConfig) -> Result { let v1 = Version::ONE; - let v2 = Version::new(2); - - let net_unrealized_pnl_rel_to_market_cap: PercentFromHeight = - cfg.import("net_unrealized_pnl_rel_to_market_cap", Version::new(3))?; - - let nupl = LazyFromHeight::from_computed::( - &cfg.name("nupl"), - cfg.version + Version::new(3), - net_unrealized_pnl_rel_to_market_cap - .bps - .height - .read_only_boxed_clone(), - &net_unrealized_pnl_rel_to_market_cap.bps, - ); Ok(Self { supply_in_profit_rel_to_own_supply: cfg .import("supply_in_profit_rel_to_own_supply", v1)?, supply_in_loss_rel_to_own_supply: cfg .import("supply_in_loss_rel_to_own_supply", v1)?, - unrealized_profit_rel_to_market_cap: cfg - .import("unrealized_profit_rel_to_market_cap", v2)?, - unrealized_loss_rel_to_market_cap: cfg - .import("unrealized_loss_rel_to_market_cap", v2)?, - net_unrealized_pnl_rel_to_market_cap, - neg_unrealized_loss_rel_to_market_cap: cfg - .import("neg_unrealized_loss_rel_to_market_cap", Version::new(3))?, - nupl, }) } @@ -64,7 +31,6 @@ impl RelativeBase { max_from: Height, unrealized: &UnrealizedBase, supply_total_sats: &impl ReadableVec, - market_cap: &impl ReadableVec, exit: &Exit, ) -> Result<()> { self.supply_in_profit_rel_to_own_supply @@ -81,34 +47,6 @@ impl RelativeBase { supply_total_sats, exit, )?; - self.unrealized_profit_rel_to_market_cap - .compute_binary::( - max_from, - &unrealized.unrealized_profit.usd.height, - market_cap, - exit, - )?; - self.unrealized_loss_rel_to_market_cap - .compute_binary::( - max_from, - &unrealized.unrealized_loss.usd.height, - market_cap, - exit, - )?; - self.net_unrealized_pnl_rel_to_market_cap - .compute_binary::( - max_from, - &unrealized.net_unrealized_pnl.usd.height, - market_cap, - exit, - )?; - self.neg_unrealized_loss_rel_to_market_cap - .compute_binary::( - max_from, - &unrealized.unrealized_loss.usd.height, - market_cap, - exit, - )?; Ok(()) } } diff --git a/crates/brk_computer/src/distribution/metrics/relative/full.rs b/crates/brk_computer/src/distribution/metrics/relative/full.rs index 62adc02b2..be2bb20f6 100644 --- a/crates/brk_computer/src/distribution/metrics/relative/full.rs +++ b/crates/brk_computer/src/distribution/metrics/relative/full.rs @@ -1,19 +1,21 @@ use brk_error::Result; use brk_traversable::Traversable; -use brk_types::{BasisPoints16, Dollars, Height, Sats, Version}; +use brk_types::{ + BasisPoints16, BasisPointsSigned32, Dollars, Height, Sats, StoredF32, Version, +}; use derive_more::{Deref, DerefMut}; -use vecdb::{Exit, ReadableVec, Rw, StorageMode}; +use vecdb::{Exit, ReadableCloneableVec, ReadableVec, Rw, StorageMode}; -use crate::internal::{PercentFromHeight, RatioDollarsBp16}; +use crate::internal::{ + Bps32ToFloat, LazyFromHeight, NegRatioDollarsBps32, PercentFromHeight, RatioDollarsBp16, + RatioDollarsBps32, +}; use crate::distribution::metrics::{ImportConfig, RealizedBase, UnrealizedFull}; use super::RelativeBase; /// Full relative metrics (Source/Extended tier). -/// -/// Contains all Complete-tier fields (via Deref to RelativeBase) plus: -/// - Source-only: invested_capital_in_profit/loss_rel_to_realized_cap #[derive(Deref, DerefMut, Traversable)] pub struct RelativeFull { #[deref] @@ -21,7 +23,12 @@ pub struct RelativeFull { #[traversable(flatten)] pub base: RelativeBase, - // --- Source-only fields --- + pub unrealized_profit_rel_to_market_cap: PercentFromHeight, + pub unrealized_loss_rel_to_market_cap: PercentFromHeight, + pub net_unrealized_pnl_rel_to_market_cap: PercentFromHeight, + pub neg_unrealized_loss_rel_to_market_cap: PercentFromHeight, + pub nupl: LazyFromHeight, + pub invested_capital_in_profit_rel_to_realized_cap: PercentFromHeight, pub invested_capital_in_loss_rel_to_realized_cap: PercentFromHeight, } @@ -30,8 +37,32 @@ impl RelativeFull { pub(crate) fn forced_import(cfg: &ImportConfig) -> Result { let base = RelativeBase::forced_import(cfg)?; + let v2 = Version::new(2); + let v3 = Version::new(3); + + let net_unrealized_pnl_rel_to_market_cap: PercentFromHeight = + cfg.import("net_unrealized_pnl_rel_to_market_cap", v3)?; + + let nupl = LazyFromHeight::from_computed::( + &cfg.name("nupl"), + cfg.version + v3, + net_unrealized_pnl_rel_to_market_cap + .bps + .height + .read_only_boxed_clone(), + &net_unrealized_pnl_rel_to_market_cap.bps, + ); + Ok(Self { base, + unrealized_profit_rel_to_market_cap: cfg + .import("unrealized_profit_rel_to_market_cap", v2)?, + unrealized_loss_rel_to_market_cap: cfg + .import("unrealized_loss_rel_to_market_cap", v2)?, + net_unrealized_pnl_rel_to_market_cap, + neg_unrealized_loss_rel_to_market_cap: cfg + .import("neg_unrealized_loss_rel_to_market_cap", v3)?, + nupl, invested_capital_in_profit_rel_to_realized_cap: cfg.import( "invested_capital_in_profit_rel_to_realized_cap", Version::ZERO, @@ -52,16 +83,42 @@ impl RelativeFull { market_cap: &impl ReadableVec, exit: &Exit, ) -> Result<()> { - // Compute Complete-tier fields self.base.compute( max_from, &unrealized.base, supply_total_sats, - market_cap, exit, )?; - // Source-only + self.unrealized_profit_rel_to_market_cap + .compute_binary::( + max_from, + &unrealized.unrealized_profit.usd.height, + market_cap, + exit, + )?; + self.unrealized_loss_rel_to_market_cap + .compute_binary::( + max_from, + &unrealized.unrealized_loss.usd.height, + market_cap, + exit, + )?; + self.net_unrealized_pnl_rel_to_market_cap + .compute_binary::( + max_from, + &unrealized.net_unrealized_pnl.usd.height, + market_cap, + exit, + )?; + self.neg_unrealized_loss_rel_to_market_cap + .compute_binary::( + max_from, + &unrealized.unrealized_loss.usd.height, + market_cap, + exit, + )?; + self.invested_capital_in_profit_rel_to_realized_cap .compute_binary::( max_from, diff --git a/crates/brk_computer/src/distribution/metrics/relative/with_rel_to_all_base.rs b/crates/brk_computer/src/distribution/metrics/relative/with_rel_to_all_base.rs index f6edd68d1..fbc6db65c 100644 --- a/crates/brk_computer/src/distribution/metrics/relative/with_rel_to_all_base.rs +++ b/crates/brk_computer/src/distribution/metrics/relative/with_rel_to_all_base.rs @@ -1,6 +1,6 @@ use brk_error::Result; use brk_traversable::Traversable; -use brk_types::{Dollars, Height, Sats}; +use brk_types::{Height, Sats}; use derive_more::{Deref, DerefMut}; use vecdb::{Exit, ReadableVec, Rw, StorageMode}; @@ -33,7 +33,6 @@ impl RelativeBaseWithRelToAll { max_from: Height, unrealized: &UnrealizedBase, supply_total_sats: &impl ReadableVec, - market_cap: &impl ReadableVec, all_supply_sats: &impl ReadableVec, exit: &Exit, ) -> Result<()> { @@ -41,7 +40,6 @@ impl RelativeBaseWithRelToAll { max_from, unrealized, supply_total_sats, - market_cap, exit, )?; self.rel_to_all.compute( diff --git a/crates/brk_computer/src/pools/vecs.rs b/crates/brk_computer/src/pools/major.rs similarity index 51% rename from crates/brk_computer/src/pools/vecs.rs rename to crates/brk_computer/src/pools/major.rs index 9f73b7964..7eeeb06ae 100644 --- a/crates/brk_computer/src/pools/vecs.rs +++ b/crates/brk_computer/src/pools/major.rs @@ -1,26 +1,31 @@ use brk_error::Result; use brk_traversable::Traversable; use brk_types::{BasisPoints16, Height, Indexes, PoolSlug, StoredU32}; -use vecdb::{ - BinaryTransform, Database, Exit, ReadableVec, Rw, StorageMode, Version, -}; +use derive_more::{Deref, DerefMut}; +use vecdb::{BinaryTransform, Database, Exit, ReadableVec, Rw, StorageMode, Version}; use crate::{ blocks, indexes, internal::{ - ComputedFromHeightCumulativeSum, MaskSats, PercentFromHeight, - PercentRollingWindows, RatioU32Bp16, ValueFromHeightCumulativeSum, + MaskSats, PercentRollingWindows, RatioU32Bp16, RollingWindows, + ValueFromHeightCumulativeSum, }, mining, prices, }; -#[derive(Traversable)] -pub struct Vecs { - slug: PoolSlug, +use super::minor; - pub blocks_mined: ComputedFromHeightCumulativeSum, +#[derive(Deref, DerefMut, Traversable)] +#[traversable(merge)] +pub struct Vecs { + #[deref] + #[deref_mut] + #[traversable(flatten)] + pub base: minor::Vecs, + + #[traversable(wrap = "blocks_mined", rename = "sum")] + pub blocks_mined_sum: RollingWindows, pub rewards: ValueFromHeightCumulativeSum, - pub dominance: PercentFromHeight, pub dominance_rolling: PercentRollingWindows, } @@ -28,33 +33,27 @@ impl Vecs { pub(crate) fn forced_import( db: &Database, slug: PoolSlug, - parent_version: Version, + version: Version, indexes: &indexes::Vecs, ) -> Result { let suffix = |s: &str| format!("{}_{s}", slug); - let version = parent_version; - let blocks_mined = ComputedFromHeightCumulativeSum::forced_import( - db, - &suffix("blocks_mined"), - version, - indexes, - )?; + let base = minor::Vecs::forced_import(db, slug, version, indexes)?; + + let blocks_mined_sum = + RollingWindows::forced_import(db, &suffix("blocks_mined"), version, indexes)?; let rewards = ValueFromHeightCumulativeSum::forced_import(db, &suffix("rewards"), version, indexes)?; - let dominance = - PercentFromHeight::forced_import(db, &suffix("dominance"), version, indexes)?; let dominance_rolling = PercentRollingWindows::forced_import(db, &suffix("dominance"), version, indexes)?; Ok(Self { - dominance, - dominance_rolling, - slug, - blocks_mined, + base, + blocks_mined_sum, rewards, + dominance_rolling, }) } @@ -68,42 +67,28 @@ impl Vecs { mining: &mining::Vecs, exit: &Exit, ) -> Result<()> { + self.base + .compute(starting_indexes, height_to_pool, blocks, exit)?; + let window_starts = blocks.count.window_starts(); - self.blocks_mined - .compute(starting_indexes.height, &window_starts, exit, |vec| { - vec.compute_transform( - starting_indexes.height, - height_to_pool, - |(h, id, ..)| { - ( - h, - if id == self.slug { - StoredU32::ONE - } else { - StoredU32::ZERO - }, - ) - }, - exit, - )?; - Ok(()) - })?; + self.blocks_mined_sum.compute_rolling_sum( + starting_indexes.height, + &window_starts, + &self.base.blocks_mined.height, + exit, + )?; - self.dominance - .compute_binary::( - starting_indexes.height, - &self.blocks_mined.cumulative.height, - &blocks.count.block_count.cumulative.height, - exit, - )?; - - for ((dom, mined), total) in self + for (dom, (mined, total)) in self .dominance_rolling .as_mut_array() .into_iter() - .zip(self.blocks_mined.sum.as_array()) - .zip(blocks.count.block_count_sum.as_array()) + .zip( + self.blocks_mined_sum + .as_array() + .into_iter() + .zip(blocks.count.block_count_sum.as_array()), + ) { dom.compute_binary::( starting_indexes.height, @@ -121,7 +106,7 @@ impl Vecs { |vec| { Ok(vec.compute_transform2( starting_indexes.height, - &self.blocks_mined.height, + &self.base.blocks_mined.height, &mining.rewards.coinbase.base.sats.height, |(h, mask, val, ..)| (h, MaskSats::apply(mask, val)), exit, diff --git a/crates/brk_computer/src/pools/minor.rs b/crates/brk_computer/src/pools/minor.rs new file mode 100644 index 000000000..5416adfa2 --- /dev/null +++ b/crates/brk_computer/src/pools/minor.rs @@ -0,0 +1,85 @@ +use brk_error::Result; +use brk_traversable::Traversable; +use brk_types::{BasisPoints16, Height, Indexes, PoolSlug, StoredU32}; +use vecdb::{ + Database, Exit, ReadableVec, Rw, StorageMode, Version, +}; + +use crate::{ + blocks, indexes, + internal::{ComputedFromHeightCumulative, PercentFromHeight, RatioU32Bp16}, +}; + +#[derive(Traversable)] +pub struct Vecs { + #[traversable(skip)] + slug: PoolSlug, + + pub blocks_mined: ComputedFromHeightCumulative, + pub dominance: PercentFromHeight, +} + +impl Vecs { + pub(crate) fn forced_import( + db: &Database, + slug: PoolSlug, + version: Version, + indexes: &indexes::Vecs, + ) -> Result { + let suffix = |s: &str| format!("{}_{s}", slug); + + let blocks_mined = ComputedFromHeightCumulative::forced_import( + db, + &suffix("blocks_mined"), + version, + indexes, + )?; + + let dominance = + PercentFromHeight::forced_import(db, &suffix("dominance"), version, indexes)?; + + Ok(Self { + slug, + blocks_mined, + dominance, + }) + } + + pub(crate) fn compute( + &mut self, + starting_indexes: &Indexes, + height_to_pool: &impl ReadableVec, + blocks: &blocks::Vecs, + exit: &Exit, + ) -> Result<()> { + self.blocks_mined + .compute(starting_indexes.height, exit, |vec| { + vec.compute_transform( + starting_indexes.height, + height_to_pool, + |(h, id, ..)| { + ( + h, + if id == self.slug { + StoredU32::ONE + } else { + StoredU32::ZERO + }, + ) + }, + exit, + )?; + Ok(()) + })?; + + self.dominance + .compute_binary::( + starting_indexes.height, + &self.blocks_mined.cumulative.height, + &blocks.count.block_count.cumulative.height, + exit, + )?; + + Ok(()) + } +} diff --git a/crates/brk_computer/src/pools/mod.rs b/crates/brk_computer/src/pools/mod.rs index 6ca6b0431..6837474fe 100644 --- a/crates/brk_computer/src/pools/mod.rs +++ b/crates/brk_computer/src/pools/mod.rs @@ -13,7 +13,8 @@ use vecdb::{ VecIndex, Version, WritableVec, }; -mod vecs; +pub mod major; +pub mod minor; use crate::{ blocks, indexes, @@ -29,7 +30,8 @@ pub struct Vecs { pools: &'static Pools, pub height_to_pool: M::Stored>, - pub vecs: BTreeMap>, + pub major: BTreeMap>, + pub minor: BTreeMap>, } impl Vecs { @@ -43,15 +45,27 @@ impl Vecs { let version = parent_version + Version::new(3) + Version::new(pools.len() as u32); + let mut major_map = BTreeMap::new(); + let mut minor_map = BTreeMap::new(); + + for pool in pools.iter() { + if pool.slug.is_major() { + major_map.insert( + pool.slug, + major::Vecs::forced_import(&db, pool.slug, version, indexes)?, + ); + } else { + minor_map.insert( + pool.slug, + minor::Vecs::forced_import(&db, pool.slug, version, indexes)?, + ); + } + } + let this = Self { height_to_pool: BytesVec::forced_import(&db, "pool", version)?, - vecs: pools - .iter() - .map(|pool| { - vecs::Vecs::forced_import(&db, pool.slug, version, indexes) - .map(|vecs| (pool.slug, vecs)) - }) - .collect::>>()?, + major: major_map, + minor: minor_map, pools, db, }; @@ -73,7 +87,7 @@ impl Vecs { ) -> Result<()> { self.compute_height_to_pool(indexer, indexes, starting_indexes, exit)?; - self.vecs.par_iter_mut().try_for_each(|(_, vecs)| { + self.major.par_iter_mut().try_for_each(|(_, vecs)| { vecs.compute( starting_indexes, &self.height_to_pool, @@ -84,6 +98,10 @@ impl Vecs { ) })?; + self.minor.par_iter_mut().try_for_each(|(_, vecs)| { + vecs.compute(starting_indexes, &self.height_to_pool, blocks, exit) + })?; + let _lock = exit.lock(); self.db.compact()?; Ok(()) diff --git a/crates/brk_query/src/impl/mining/pools.rs b/crates/brk_query/src/impl/mining/pools.rs index 276d8496a..a7a846ba9 100644 --- a/crates/brk_query/src/impl/mining/pools.rs +++ b/crates/brk_query/src/impl/mining/pools.rs @@ -29,9 +29,19 @@ impl Query { let mut pool_data: Vec<(&'static brk_types::Pool, u32)> = Vec::new(); // For each pool, get cumulative count at end and start, subtract to get range count - for (pool_id, pool_vecs) in &computer.pools.vecs { - let cumulative = &pool_vecs.blocks_mined.cumulative.height; - + for (pool_id, cumulative) in computer + .pools + .major + .iter() + .map(|(id, v)| (id, &v.blocks_mined.cumulative.height)) + .chain( + computer + .pools + .minor + .iter() + .map(|(id, v)| (id, &v.blocks_mined.cumulative.height)), + ) + { let count_at_end: u32 = *cumulative.collect_one(current_height).unwrap_or_default(); let count_at_start: u32 = if start == 0 { @@ -44,7 +54,6 @@ impl Query { let block_count = count_at_end.saturating_sub(count_at_start); - // Only include pools that mined at least one block in the period if block_count > 0 { pool_data.push((pools.get(*pool_id), block_count)); } @@ -91,15 +100,21 @@ impl Query { let pools_list = pools(); let pool = pools_list.get(slug); - // Get pool vecs for this specific pool - let pool_vecs = computer + // Get cumulative blocks for this pool (works for both major and minor) + let cumulative = computer .pools - .vecs + .major .get(&slug) + .map(|v| &v.blocks_mined.cumulative.height) + .or_else(|| { + computer + .pools + .minor + .get(&slug) + .map(|v| &v.blocks_mined.cumulative.height) + }) .ok_or_else(|| Error::NotFound("Pool data not found".into()))?; - let cumulative = &pool_vecs.blocks_mined.cumulative.height; - // Get total blocks (all time) let total_all: u32 = *cumulative.collect_one(current_height).unwrap_or_default(); diff --git a/crates/brk_types/src/poolslug.rs b/crates/brk_types/src/poolslug.rs index efc1d7275..78c71178d 100644 --- a/crates/brk_types/src/poolslug.rs +++ b/crates/brk_types/src/poolslug.rs @@ -376,6 +376,90 @@ pub enum PoolSlug { Dummy255, } +impl PoolSlug { + /// Pools with ≥0.01% all-time dominance get full metrics (rolling windows, rewards, etc.). + pub fn is_major(&self) -> bool { + matches!( + self, + Self::Unknown + | Self::AntPool + | Self::AsicMiner + | Self::BatPool + | Self::BinancePool + | Self::BitClub + | Self::BitcoinAffiliateNetwork + | Self::BitcoinCom + | Self::BitcoinIndia + | Self::BitcoinRussia + | Self::BitFury + | Self::BitMinter + | Self::Bitparking + | Self::Bixin + | Self::BraiinsPool + | Self::Btcc + | Self::BtcCom + | Self::BtcGuild + | Self::BtcTop + | Self::BtPool + | Self::BwPool + | Self::BytePool + | Self::CanoePool + | Self::CoinLab + | Self::ConnectBtc + | Self::DigitalBtc + | Self::DPool + | Self::EclipseMc + | Self::Eligius + | Self::EmcdPool + | Self::ExxBw + | Self::F2Pool + | Self::FiftyEightCoin + | Self::FoundryUsa + | Self::GbMiners + | Self::GhashIo + | Self::Hhtt + | Self::HuobiPool + | Self::KanoPool + | Self::KncMiner + | Self::KuCoinPool + | Self::LubianCom + | Self::Luxor + | Self::MaraPool + | Self::MaxBtc + | Self::MegaBigPower + | Self::NiceHash + | Self::NmcBit + | Self::NovaBlock + | Self::Ocean + | Self::OkExPool + | Self::Okkong + | Self::OkpoolTop + | Self::OneThash + | Self::OzCoin + | Self::PegaPool + | Self::Polmine + | Self::Pool50btc + | Self::Poolin + | Self::SbiCrypto + | Self::SecPool + | Self::SecretSuperstar + | Self::SigmapoolCom + | Self::SoloCk + | Self::SpiderPool + | Self::Tangpool + | Self::TatmasPool + | Self::TerraPool + | Self::TigerpoolNet + | Self::TripleMining + | Self::UltimusPool + | Self::ViaBtc + | Self::WayiCn + | Self::WhitePool + | Self::YourbtcNet + ) + } +} + impl Formattable for PoolSlug { #[inline(always)] fn fmt_csv(&self, f: &mut String) -> std::fmt::Result { diff --git a/modules/brk-client/index.js b/modules/brk-client/index.js index 35304cfc6..9e4042550 100644 --- a/modules/brk-client/index.js +++ b/modules/brk-client/index.js @@ -1763,65 +1763,6 @@ function create_0sdM0M1M1sdM2M2sdM3sdP0P1P1sdP2P2sdP3sdSdSmaZscorePattern(client }; } -/** - * @typedef {Object} GrossMvrvNegNetRealizedSentSoprValuePattern - * @property {CentsUsdPattern} grossPnl - * @property {MetricPattern1} mvrv - * @property {MetricPattern1} negRealizedLoss - * @property {CumulativeHeightPattern} netRealizedPnl - * @property {BpsPercentRatioPattern} netRealizedPnlRelToRealizedCap - * @property {MetricPattern1} realizedCap - * @property {MetricPattern1} realizedCapCents - * @property {MetricPattern1} realizedCapChange1m - * @property {CumulativeHeightPattern} realizedLoss - * @property {BpsPercentRatioPattern} realizedLossRelToRealizedCap - * @property {CentsSatsUsdPattern} realizedPrice - * @property {BpsRatioPattern} realizedPriceRatio - * @property {RatioPattern} realizedPriceRatioPercentiles - * @property {CumulativeHeightPattern} realizedProfit - * @property {BpsPercentRatioPattern} realizedProfitRelToRealizedCap - * @property {BaseCumulativePattern} sentInLoss - * @property {BaseCumulativePattern} sentInProfit - * @property {_1m1w1y24hPattern} sopr - * @property {MetricPattern1} valueCreated - * @property {_1m1w1y24hPattern} valueCreatedSum - * @property {MetricPattern1} valueDestroyed - * @property {_1m1w1y24hPattern} valueDestroyedSum - */ - -/** - * Create a GrossMvrvNegNetRealizedSentSoprValuePattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {GrossMvrvNegNetRealizedSentSoprValuePattern} - */ -function createGrossMvrvNegNetRealizedSentSoprValuePattern(client, acc) { - return { - grossPnl: createCentsUsdPattern(client, _m(acc, 'realized_gross_pnl')), - mvrv: createMetricPattern1(client, _m(acc, 'mvrv')), - negRealizedLoss: createMetricPattern1(client, _m(acc, 'neg_realized_loss')), - netRealizedPnl: createCumulativeHeightPattern(client, _m(acc, 'net_realized_pnl')), - netRealizedPnlRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')), - realizedCap: createMetricPattern1(client, _m(acc, 'realized_cap')), - realizedCapCents: createMetricPattern1(client, _m(acc, 'realized_cap_cents')), - realizedCapChange1m: createMetricPattern1(client, _m(acc, 'realized_cap_change_1m')), - realizedLoss: createCumulativeHeightPattern(client, _m(acc, 'realized_loss')), - realizedLossRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')), - realizedPrice: createCentsSatsUsdPattern(client, _m(acc, 'realized_price')), - realizedPriceRatio: createBpsRatioPattern(client, _m(acc, 'realized_price_ratio')), - realizedPriceRatioPercentiles: createRatioPattern(client, _m(acc, 'realized_price_ratio')), - realizedProfit: createCumulativeHeightPattern(client, _m(acc, 'realized_profit')), - realizedProfitRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')), - sentInLoss: createBaseCumulativePattern(client, _m(acc, 'sent_in_loss')), - sentInProfit: createBaseCumulativePattern(client, _m(acc, 'sent_in_profit')), - sopr: create_1m1w1y24hPattern(client, _m(acc, 'sopr')), - valueCreated: createMetricPattern1(client, _m(acc, 'value_created')), - valueCreatedSum: create_1m1w1y24hPattern(client, _m(acc, 'value_created')), - valueDestroyed: createMetricPattern1(client, _m(acc, 'value_destroyed')), - valueDestroyedSum: create_1m1w1y24hPattern(client, _m(acc, 'value_destroyed')), - }; -} - /** * @typedef {Object} InvestedNegNetNuplSupplyUnrealizedPattern3 * @property {BpsPercentRatioPattern} investedCapitalInLossRelToRealizedCap @@ -1877,6 +1818,59 @@ function createInvestedNegNetNuplSupplyUnrealizedPattern3(client, acc) { }; } +/** + * @typedef {Object} GrossMvrvNegNetRealizedSentSoprValuePattern + * @property {CentsUsdPattern} grossPnl + * @property {MetricPattern1} mvrv + * @property {MetricPattern1} negRealizedLoss + * @property {CumulativeHeightPattern} netRealizedPnl + * @property {MetricPattern1} realizedCap + * @property {MetricPattern1} realizedCapCents + * @property {MetricPattern1} realizedCapChange1m + * @property {CumulativeHeightPattern} realizedLoss + * @property {CentsSatsUsdPattern} realizedPrice + * @property {BpsRatioPattern} realizedPriceRatio + * @property {RatioPattern} realizedPriceRatioPercentiles + * @property {CumulativeHeightPattern} realizedProfit + * @property {BaseCumulativePattern} sentInLoss + * @property {BaseCumulativePattern} sentInProfit + * @property {_1m1w1y24hPattern} sopr + * @property {MetricPattern1} valueCreated + * @property {_1m1w1y24hPattern} valueCreatedSum + * @property {MetricPattern1} valueDestroyed + * @property {_1m1w1y24hPattern} valueDestroyedSum + */ + +/** + * Create a GrossMvrvNegNetRealizedSentSoprValuePattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {GrossMvrvNegNetRealizedSentSoprValuePattern} + */ +function createGrossMvrvNegNetRealizedSentSoprValuePattern(client, acc) { + return { + grossPnl: createCentsUsdPattern(client, _m(acc, 'realized_gross_pnl')), + mvrv: createMetricPattern1(client, _m(acc, 'mvrv')), + negRealizedLoss: createMetricPattern1(client, _m(acc, 'neg_realized_loss')), + netRealizedPnl: createCumulativeHeightPattern(client, _m(acc, 'net_realized_pnl')), + realizedCap: createMetricPattern1(client, _m(acc, 'realized_cap')), + realizedCapCents: createMetricPattern1(client, _m(acc, 'realized_cap_cents')), + realizedCapChange1m: createMetricPattern1(client, _m(acc, 'realized_cap_change_1m')), + realizedLoss: createCumulativeHeightPattern(client, _m(acc, 'realized_loss')), + realizedPrice: createCentsSatsUsdPattern(client, _m(acc, 'realized_price')), + realizedPriceRatio: createBpsRatioPattern(client, _m(acc, 'realized_price_ratio')), + realizedPriceRatioPercentiles: createRatioPattern(client, _m(acc, 'realized_price_ratio')), + realizedProfit: createCumulativeHeightPattern(client, _m(acc, 'realized_profit')), + sentInLoss: createBaseCumulativePattern(client, _m(acc, 'sent_in_loss')), + sentInProfit: createBaseCumulativePattern(client, _m(acc, 'sent_in_profit')), + sopr: create_1m1w1y24hPattern(client, _m(acc, 'sopr')), + valueCreated: createMetricPattern1(client, _m(acc, 'value_created')), + valueCreatedSum: create_1m1w1y24hPattern(client, _m(acc, 'value_created')), + valueDestroyed: createMetricPattern1(client, _m(acc, 'value_destroyed')), + valueDestroyedSum: create_1m1w1y24hPattern(client, _m(acc, 'value_destroyed')), + }; +} + /** * @typedef {Object} Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern * @property {CentsSatsUsdPattern} pct05 @@ -2184,6 +2178,43 @@ function createInvestedNegNetNuplSupplyUnrealizedPattern(client, acc) { }; } +/** + * @typedef {Object} _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern + * @property {BpsPercentRatioPattern} _1m + * @property {BpsPercentRatioPattern} _1w + * @property {BpsPercentRatioPattern} _1y + * @property {BpsPercentRatioPattern} _24h + * @property {BtcCentsSatsUsdPattern} base + * @property {MetricPattern1} bps + * @property {BaseBtcCentsSatsUsdPattern} cumulative + * @property {MetricPattern18} height + * @property {MetricPattern1} percent + * @property {MetricPattern1} ratio + * @property {_1m1w1y24hPattern6} sum + */ + +/** + * Create a _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} + */ +function create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, acc) { + return { + _1m: createBpsPercentRatioPattern(client, _m(acc, 'dominance_1m')), + _1w: createBpsPercentRatioPattern(client, _m(acc, 'dominance_1w')), + _1y: createBpsPercentRatioPattern(client, _m(acc, 'dominance_1y')), + _24h: createBpsPercentRatioPattern(client, _m(acc, 'dominance_24h')), + base: createBtcCentsSatsUsdPattern(client, _m(acc, 'rewards')), + bps: createMetricPattern1(client, _m(acc, 'dominance_bps')), + cumulative: createBaseBtcCentsSatsUsdPattern(client, acc), + height: createMetricPattern18(client, _m(acc, 'blocks_mined')), + percent: createMetricPattern1(client, _m(acc, 'dominance')), + ratio: createMetricPattern1(client, _m(acc, 'dominance_ratio')), + sum: create_1m1w1y24hPattern6(client, acc), + }; +} + /** * @typedef {Object} AverageCumulativeMaxMedianMinPct10Pct25Pct75Pct90RollingSumPattern * @property {MetricPattern18} average @@ -2293,41 +2324,6 @@ function createAverageGainsLossesRsiStochPattern(client, acc) { }; } -/** - * @typedef {Object} NegNetNuplSupplyUnrealizedPattern - * @property {BpsPercentRatioPattern} negUnrealizedLossRelToMarketCap - * @property {BpsPercentRatioPattern} netUnrealizedPnlRelToMarketCap - * @property {MetricPattern1} nupl - * @property {BpsPercentRatioPattern} supplyInLossRelToCirculatingSupply - * @property {BpsPercentRatioPattern} supplyInLossRelToOwnSupply - * @property {BpsPercentRatioPattern} supplyInProfitRelToCirculatingSupply - * @property {BpsPercentRatioPattern} supplyInProfitRelToOwnSupply - * @property {BpsPercentRatioPattern} supplyRelToCirculatingSupply - * @property {BpsPercentRatioPattern} unrealizedLossRelToMarketCap - * @property {BpsPercentRatioPattern} unrealizedProfitRelToMarketCap - */ - -/** - * Create a NegNetNuplSupplyUnrealizedPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {NegNetNuplSupplyUnrealizedPattern} - */ -function createNegNetNuplSupplyUnrealizedPattern(client, acc) { - return { - negUnrealizedLossRelToMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'neg_unrealized_loss_rel_to_market_cap')), - netUnrealizedPnlRelToMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_market_cap')), - nupl: createMetricPattern1(client, _m(acc, 'nupl')), - supplyInLossRelToCirculatingSupply: createBpsPercentRatioPattern(client, _m(acc, 'supply_in_loss_rel_to_circulating_supply')), - supplyInLossRelToOwnSupply: createBpsPercentRatioPattern(client, _m(acc, 'supply_in_loss_rel_to_own_supply')), - supplyInProfitRelToCirculatingSupply: createBpsPercentRatioPattern(client, _m(acc, 'supply_in_profit_rel_to_circulating_supply')), - supplyInProfitRelToOwnSupply: createBpsPercentRatioPattern(client, _m(acc, 'supply_in_profit_rel_to_own_supply')), - supplyRelToCirculatingSupply: createBpsPercentRatioPattern(client, _m(acc, 'supply_rel_to_circulating_supply')), - unrealizedLossRelToMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'unrealized_loss_rel_to_market_cap')), - unrealizedProfitRelToMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'unrealized_profit_rel_to_market_cap')), - }; -} - /** * @typedef {Object} AllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern * @property {ChangeCountPattern} all @@ -2705,7 +2701,7 @@ function create_1m1w1y24hBaseCumulativePattern(client, acc) { * @property {SentPattern} activity * @property {UtxoPattern} outputs * @property {GrossMvrvNegNetRealizedSentSoprValuePattern} realized - * @property {NegNetNuplSupplyUnrealizedPattern} relative + * @property {SupplyPattern3} relative * @property {ChangeHalvedTotalPattern} supply * @property {GrossNegNetSupplyUnrealizedPattern} unrealized */ @@ -2721,7 +2717,7 @@ function createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, a activity: createSentPattern(client, _m(acc, 'sent')), outputs: createUtxoPattern(client, _m(acc, 'utxo_count')), realized: createGrossMvrvNegNetRealizedSentSoprValuePattern(client, acc), - relative: createNegNetNuplSupplyUnrealizedPattern(client, acc), + relative: createSupplyPattern3(client, _m(acc, 'supply')), supply: createChangeHalvedTotalPattern(client, _m(acc, 'supply')), unrealized: createGrossNegNetSupplyUnrealizedPattern(client, acc), }; @@ -2781,6 +2777,31 @@ function createBalanceBothReactivatedReceivingSendingPattern(client, acc) { }; } +/** + * @typedef {Object} BaseBtcCentsSatsUsdPattern + * @property {MetricPattern1} base + * @property {MetricPattern1} btc + * @property {MetricPattern1} cents + * @property {MetricPattern1} sats + * @property {MetricPattern1} usd + */ + +/** + * Create a BaseBtcCentsSatsUsdPattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {BaseBtcCentsSatsUsdPattern} + */ +function createBaseBtcCentsSatsUsdPattern(client, acc) { + return { + base: createMetricPattern1(client, _m(acc, 'blocks_mined_cumulative')), + btc: createMetricPattern1(client, _m(acc, 'rewards_cumulative_btc')), + cents: createMetricPattern1(client, _m(acc, 'rewards_cumulative_cents')), + sats: createMetricPattern1(client, _m(acc, 'rewards_cumulative')), + usd: createMetricPattern1(client, _m(acc, 'rewards_cumulative_usd')), + }; +} + /** * @typedef {Object} EmaHistogramLineSignalPattern * @property {MetricPattern1} emaFast @@ -2806,6 +2827,54 @@ function createEmaHistogramLineSignalPattern(client, acc) { }; } +/** + * @typedef {Object} SupplyPattern3 + * @property {BpsPercentRatioPattern} supplyInLossRelToCirculatingSupply + * @property {BpsPercentRatioPattern} supplyInLossRelToOwnSupply + * @property {BpsPercentRatioPattern} supplyInProfitRelToCirculatingSupply + * @property {BpsPercentRatioPattern} supplyInProfitRelToOwnSupply + * @property {BpsPercentRatioPattern} supplyRelToCirculatingSupply + */ + +/** + * Create a SupplyPattern3 pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {SupplyPattern3} + */ +function createSupplyPattern3(client, acc) { + return { + supplyInLossRelToCirculatingSupply: createBpsPercentRatioPattern(client, _m(acc, 'in_loss_rel_to_circulating_supply')), + supplyInLossRelToOwnSupply: createBpsPercentRatioPattern(client, _m(acc, 'in_loss_rel_to_own_supply')), + supplyInProfitRelToCirculatingSupply: createBpsPercentRatioPattern(client, _m(acc, 'in_profit_rel_to_circulating_supply')), + supplyInProfitRelToOwnSupply: createBpsPercentRatioPattern(client, _m(acc, 'in_profit_rel_to_own_supply')), + supplyRelToCirculatingSupply: createBpsPercentRatioPattern(client, _m(acc, 'rel_to_circulating_supply')), + }; +} + +/** + * @typedef {Object} _1m1w1y24hPattern6 + * @property {BaseBtcCentsSatsUsdPattern} _1m + * @property {BaseBtcCentsSatsUsdPattern} _1w + * @property {BaseBtcCentsSatsUsdPattern} _1y + * @property {BaseBtcCentsSatsUsdPattern} _24h + */ + +/** + * Create a _1m1w1y24hPattern6 pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {_1m1w1y24hPattern6} + */ +function create_1m1w1y24hPattern6(client, acc) { + return { + _1m: createBaseBtcCentsSatsUsdPattern(client, acc), + _1w: createBaseBtcCentsSatsUsdPattern(client, acc), + _1y: createBaseBtcCentsSatsUsdPattern(client, acc), + _24h: createBaseBtcCentsSatsUsdPattern(client, acc), + }; +} + /** * @typedef {Object} _1m1w1y24hPattern2 * @property {BpsPercentRatioPattern} _1m @@ -2852,29 +2921,6 @@ function create_1m1w1y24hPattern5(client, acc) { }; } -/** - * @typedef {Object} BlocksDominanceRewardsPattern - * @property {CumulativeHeightSumPattern} blocksMined - * @property {BpsPercentRatioPattern} dominance - * @property {_1m1w1y24hPattern2} dominanceRolling - * @property {BaseCumulativeSumPattern} rewards - */ - -/** - * Create a BlocksDominanceRewardsPattern pattern node - * @param {BrkClientBase} client - * @param {string} acc - Accumulated metric name - * @returns {BlocksDominanceRewardsPattern} - */ -function createBlocksDominanceRewardsPattern(client, acc) { - return { - blocksMined: createCumulativeHeightSumPattern(client, _m(acc, 'blocks_mined')), - dominance: createBpsPercentRatioPattern(client, _m(acc, 'dominance')), - dominanceRolling: create_1m1w1y24hPattern2(client, _m(acc, 'dominance')), - rewards: createBaseCumulativeSumPattern(client, _m(acc, 'rewards')), - }; -} - /** * @typedef {Object} BtcCentsSatsUsdPattern * @property {MetricPattern1} btc @@ -3242,6 +3288,25 @@ function createBaseCumulativePattern(client, acc) { }; } +/** + * @typedef {Object} BlocksDominancePattern + * @property {CumulativeHeightPattern} blocksMined + * @property {BpsPercentRatioPattern} dominance + */ + +/** + * Create a BlocksDominancePattern pattern node + * @param {BrkClientBase} client + * @param {string} acc - Accumulated metric name + * @returns {BlocksDominancePattern} + */ +function createBlocksDominancePattern(client, acc) { + return { + blocksMined: createCumulativeHeightPattern(client, _m(acc, 'blocks_mined')), + dominance: createBpsPercentRatioPattern(client, _m(acc, 'dominance')), + }; +} + /** * @typedef {Object} BpsRatioPattern * @property {MetricPattern1} bps @@ -4439,173 +4504,178 @@ function create_2wPattern(client, acc) { /** * @typedef {Object} MetricsTree_Pools * @property {MetricPattern18} heightToPool - * @property {MetricsTree_Pools_Vecs} vecs + * @property {MetricsTree_Pools_Major} major + * @property {MetricsTree_Pools_Minor} minor */ /** - * @typedef {Object} MetricsTree_Pools_Vecs - * @property {BlocksDominanceRewardsPattern} unknown - * @property {BlocksDominanceRewardsPattern} blockfills - * @property {BlocksDominanceRewardsPattern} ultimuspool - * @property {BlocksDominanceRewardsPattern} terrapool - * @property {BlocksDominanceRewardsPattern} luxor - * @property {BlocksDominanceRewardsPattern} onethash - * @property {BlocksDominanceRewardsPattern} btccom - * @property {BlocksDominanceRewardsPattern} bitfarms - * @property {BlocksDominanceRewardsPattern} huobipool - * @property {BlocksDominanceRewardsPattern} wayicn - * @property {BlocksDominanceRewardsPattern} canoepool - * @property {BlocksDominanceRewardsPattern} btctop - * @property {BlocksDominanceRewardsPattern} bitcoincom - * @property {BlocksDominanceRewardsPattern} pool175btc - * @property {BlocksDominanceRewardsPattern} gbminers - * @property {BlocksDominanceRewardsPattern} axbt - * @property {BlocksDominanceRewardsPattern} asicminer - * @property {BlocksDominanceRewardsPattern} bitminter - * @property {BlocksDominanceRewardsPattern} bitcoinrussia - * @property {BlocksDominanceRewardsPattern} btcserv - * @property {BlocksDominanceRewardsPattern} simplecoinus - * @property {BlocksDominanceRewardsPattern} btcguild - * @property {BlocksDominanceRewardsPattern} eligius - * @property {BlocksDominanceRewardsPattern} ozcoin - * @property {BlocksDominanceRewardsPattern} eclipsemc - * @property {BlocksDominanceRewardsPattern} maxbtc - * @property {BlocksDominanceRewardsPattern} triplemining - * @property {BlocksDominanceRewardsPattern} coinlab - * @property {BlocksDominanceRewardsPattern} pool50btc - * @property {BlocksDominanceRewardsPattern} ghashio - * @property {BlocksDominanceRewardsPattern} stminingcorp - * @property {BlocksDominanceRewardsPattern} bitparking - * @property {BlocksDominanceRewardsPattern} mmpool - * @property {BlocksDominanceRewardsPattern} polmine - * @property {BlocksDominanceRewardsPattern} kncminer - * @property {BlocksDominanceRewardsPattern} bitalo - * @property {BlocksDominanceRewardsPattern} f2pool - * @property {BlocksDominanceRewardsPattern} hhtt - * @property {BlocksDominanceRewardsPattern} megabigpower - * @property {BlocksDominanceRewardsPattern} mtred - * @property {BlocksDominanceRewardsPattern} nmcbit - * @property {BlocksDominanceRewardsPattern} yourbtcnet - * @property {BlocksDominanceRewardsPattern} givemecoins - * @property {BlocksDominanceRewardsPattern} braiinspool - * @property {BlocksDominanceRewardsPattern} antpool - * @property {BlocksDominanceRewardsPattern} multicoinco - * @property {BlocksDominanceRewardsPattern} bcpoolio - * @property {BlocksDominanceRewardsPattern} cointerra - * @property {BlocksDominanceRewardsPattern} kanopool - * @property {BlocksDominanceRewardsPattern} solock - * @property {BlocksDominanceRewardsPattern} ckpool - * @property {BlocksDominanceRewardsPattern} nicehash - * @property {BlocksDominanceRewardsPattern} bitclub - * @property {BlocksDominanceRewardsPattern} bitcoinaffiliatenetwork - * @property {BlocksDominanceRewardsPattern} btcc - * @property {BlocksDominanceRewardsPattern} bwpool - * @property {BlocksDominanceRewardsPattern} exxbw - * @property {BlocksDominanceRewardsPattern} bitsolo - * @property {BlocksDominanceRewardsPattern} bitfury - * @property {BlocksDominanceRewardsPattern} twentyoneinc - * @property {BlocksDominanceRewardsPattern} digitalbtc - * @property {BlocksDominanceRewardsPattern} eightbaochi - * @property {BlocksDominanceRewardsPattern} mybtccoinpool - * @property {BlocksDominanceRewardsPattern} tbdice - * @property {BlocksDominanceRewardsPattern} hashpool - * @property {BlocksDominanceRewardsPattern} nexious - * @property {BlocksDominanceRewardsPattern} bravomining - * @property {BlocksDominanceRewardsPattern} hotpool - * @property {BlocksDominanceRewardsPattern} okexpool - * @property {BlocksDominanceRewardsPattern} bcmonster - * @property {BlocksDominanceRewardsPattern} onehash - * @property {BlocksDominanceRewardsPattern} bixin - * @property {BlocksDominanceRewardsPattern} tatmaspool - * @property {BlocksDominanceRewardsPattern} viabtc - * @property {BlocksDominanceRewardsPattern} connectbtc - * @property {BlocksDominanceRewardsPattern} batpool - * @property {BlocksDominanceRewardsPattern} waterhole - * @property {BlocksDominanceRewardsPattern} dcexploration - * @property {BlocksDominanceRewardsPattern} dcex - * @property {BlocksDominanceRewardsPattern} btpool - * @property {BlocksDominanceRewardsPattern} fiftyeightcoin - * @property {BlocksDominanceRewardsPattern} bitcoinindia - * @property {BlocksDominanceRewardsPattern} shawnp0wers - * @property {BlocksDominanceRewardsPattern} phashio - * @property {BlocksDominanceRewardsPattern} rigpool - * @property {BlocksDominanceRewardsPattern} haozhuzhu - * @property {BlocksDominanceRewardsPattern} sevenpool - * @property {BlocksDominanceRewardsPattern} miningkings - * @property {BlocksDominanceRewardsPattern} hashbx - * @property {BlocksDominanceRewardsPattern} dpool - * @property {BlocksDominanceRewardsPattern} rawpool - * @property {BlocksDominanceRewardsPattern} haominer - * @property {BlocksDominanceRewardsPattern} helix - * @property {BlocksDominanceRewardsPattern} bitcoinukraine - * @property {BlocksDominanceRewardsPattern} poolin - * @property {BlocksDominanceRewardsPattern} secretsuperstar - * @property {BlocksDominanceRewardsPattern} tigerpoolnet - * @property {BlocksDominanceRewardsPattern} sigmapoolcom - * @property {BlocksDominanceRewardsPattern} okpooltop - * @property {BlocksDominanceRewardsPattern} hummerpool - * @property {BlocksDominanceRewardsPattern} tangpool - * @property {BlocksDominanceRewardsPattern} bytepool - * @property {BlocksDominanceRewardsPattern} spiderpool - * @property {BlocksDominanceRewardsPattern} novablock - * @property {BlocksDominanceRewardsPattern} miningcity - * @property {BlocksDominanceRewardsPattern} binancepool - * @property {BlocksDominanceRewardsPattern} minerium - * @property {BlocksDominanceRewardsPattern} lubiancom - * @property {BlocksDominanceRewardsPattern} okkong - * @property {BlocksDominanceRewardsPattern} aaopool - * @property {BlocksDominanceRewardsPattern} emcdpool - * @property {BlocksDominanceRewardsPattern} foundryusa - * @property {BlocksDominanceRewardsPattern} sbicrypto - * @property {BlocksDominanceRewardsPattern} arkpool - * @property {BlocksDominanceRewardsPattern} purebtccom - * @property {BlocksDominanceRewardsPattern} marapool - * @property {BlocksDominanceRewardsPattern} kucoinpool - * @property {BlocksDominanceRewardsPattern} entrustcharitypool - * @property {BlocksDominanceRewardsPattern} okminer - * @property {BlocksDominanceRewardsPattern} titan - * @property {BlocksDominanceRewardsPattern} pegapool - * @property {BlocksDominanceRewardsPattern} btcnuggets - * @property {BlocksDominanceRewardsPattern} cloudhashing - * @property {BlocksDominanceRewardsPattern} digitalxmintsy - * @property {BlocksDominanceRewardsPattern} telco214 - * @property {BlocksDominanceRewardsPattern} btcpoolparty - * @property {BlocksDominanceRewardsPattern} multipool - * @property {BlocksDominanceRewardsPattern} transactioncoinmining - * @property {BlocksDominanceRewardsPattern} btcdig - * @property {BlocksDominanceRewardsPattern} trickysbtcpool - * @property {BlocksDominanceRewardsPattern} btcmp - * @property {BlocksDominanceRewardsPattern} eobot - * @property {BlocksDominanceRewardsPattern} unomp - * @property {BlocksDominanceRewardsPattern} patels - * @property {BlocksDominanceRewardsPattern} gogreenlight - * @property {BlocksDominanceRewardsPattern} bitcoinindiapool - * @property {BlocksDominanceRewardsPattern} ekanembtc - * @property {BlocksDominanceRewardsPattern} canoe - * @property {BlocksDominanceRewardsPattern} tiger - * @property {BlocksDominanceRewardsPattern} onem1x - * @property {BlocksDominanceRewardsPattern} zulupool - * @property {BlocksDominanceRewardsPattern} secpool - * @property {BlocksDominanceRewardsPattern} ocean - * @property {BlocksDominanceRewardsPattern} whitepool - * @property {BlocksDominanceRewardsPattern} wiz - * @property {BlocksDominanceRewardsPattern} wk057 - * @property {BlocksDominanceRewardsPattern} futurebitapollosolo - * @property {BlocksDominanceRewardsPattern} carbonnegative - * @property {BlocksDominanceRewardsPattern} portlandhodl - * @property {BlocksDominanceRewardsPattern} phoenix - * @property {BlocksDominanceRewardsPattern} neopool - * @property {BlocksDominanceRewardsPattern} maxipool - * @property {BlocksDominanceRewardsPattern} bitfufupool - * @property {BlocksDominanceRewardsPattern} gdpool - * @property {BlocksDominanceRewardsPattern} miningdutch - * @property {BlocksDominanceRewardsPattern} publicpool - * @property {BlocksDominanceRewardsPattern} miningsquared - * @property {BlocksDominanceRewardsPattern} innopolistech - * @property {BlocksDominanceRewardsPattern} btclab - * @property {BlocksDominanceRewardsPattern} parasite - * @property {BlocksDominanceRewardsPattern} redrockpool - * @property {BlocksDominanceRewardsPattern} est3lar + * @typedef {Object} MetricsTree_Pools_Major + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} unknown + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} ultimuspool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} terrapool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} luxor + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} onethash + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} btccom + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} huobipool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} wayicn + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} canoepool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} btctop + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} bitcoincom + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} gbminers + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} asicminer + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} bitminter + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} bitcoinrussia + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} btcguild + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} eligius + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} ozcoin + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} eclipsemc + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} maxbtc + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} triplemining + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} coinlab + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} pool50btc + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} ghashio + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} bitparking + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} polmine + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} kncminer + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} f2pool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} hhtt + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} megabigpower + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} nmcbit + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} yourbtcnet + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} braiinspool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} antpool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} kanopool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} solock + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} nicehash + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} bitclub + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} bitcoinaffiliatenetwork + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} btcc + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} bwpool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} exxbw + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} bitfury + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} digitalbtc + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} okexpool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} bixin + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} tatmaspool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} viabtc + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} connectbtc + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} batpool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} btpool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} fiftyeightcoin + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} bitcoinindia + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} dpool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} poolin + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} secretsuperstar + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} tigerpoolnet + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} sigmapoolcom + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} okpooltop + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} tangpool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} bytepool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} spiderpool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} novablock + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} binancepool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} lubiancom + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} okkong + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} emcdpool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} foundryusa + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} sbicrypto + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} marapool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} kucoinpool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} pegapool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} secpool + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} ocean + * @property {_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern} whitepool + */ + +/** + * @typedef {Object} MetricsTree_Pools_Minor + * @property {BlocksDominancePattern} blockfills + * @property {BlocksDominancePattern} bitfarms + * @property {BlocksDominancePattern} pool175btc + * @property {BlocksDominancePattern} axbt + * @property {BlocksDominancePattern} btcserv + * @property {BlocksDominancePattern} simplecoinus + * @property {BlocksDominancePattern} stminingcorp + * @property {BlocksDominancePattern} mmpool + * @property {BlocksDominancePattern} bitalo + * @property {BlocksDominancePattern} mtred + * @property {BlocksDominancePattern} givemecoins + * @property {BlocksDominancePattern} multicoinco + * @property {BlocksDominancePattern} bcpoolio + * @property {BlocksDominancePattern} cointerra + * @property {BlocksDominancePattern} ckpool + * @property {BlocksDominancePattern} bitsolo + * @property {BlocksDominancePattern} twentyoneinc + * @property {BlocksDominancePattern} eightbaochi + * @property {BlocksDominancePattern} mybtccoinpool + * @property {BlocksDominancePattern} tbdice + * @property {BlocksDominancePattern} hashpool + * @property {BlocksDominancePattern} nexious + * @property {BlocksDominancePattern} bravomining + * @property {BlocksDominancePattern} hotpool + * @property {BlocksDominancePattern} bcmonster + * @property {BlocksDominancePattern} onehash + * @property {BlocksDominancePattern} waterhole + * @property {BlocksDominancePattern} dcexploration + * @property {BlocksDominancePattern} dcex + * @property {BlocksDominancePattern} shawnp0wers + * @property {BlocksDominancePattern} phashio + * @property {BlocksDominancePattern} rigpool + * @property {BlocksDominancePattern} haozhuzhu + * @property {BlocksDominancePattern} sevenpool + * @property {BlocksDominancePattern} miningkings + * @property {BlocksDominancePattern} hashbx + * @property {BlocksDominancePattern} rawpool + * @property {BlocksDominancePattern} haominer + * @property {BlocksDominancePattern} helix + * @property {BlocksDominancePattern} bitcoinukraine + * @property {BlocksDominancePattern} hummerpool + * @property {BlocksDominancePattern} miningcity + * @property {BlocksDominancePattern} minerium + * @property {BlocksDominancePattern} aaopool + * @property {BlocksDominancePattern} arkpool + * @property {BlocksDominancePattern} purebtccom + * @property {BlocksDominancePattern} entrustcharitypool + * @property {BlocksDominancePattern} okminer + * @property {BlocksDominancePattern} titan + * @property {BlocksDominancePattern} btcnuggets + * @property {BlocksDominancePattern} cloudhashing + * @property {BlocksDominancePattern} digitalxmintsy + * @property {BlocksDominancePattern} telco214 + * @property {BlocksDominancePattern} btcpoolparty + * @property {BlocksDominancePattern} multipool + * @property {BlocksDominancePattern} transactioncoinmining + * @property {BlocksDominancePattern} btcdig + * @property {BlocksDominancePattern} trickysbtcpool + * @property {BlocksDominancePattern} btcmp + * @property {BlocksDominancePattern} eobot + * @property {BlocksDominancePattern} unomp + * @property {BlocksDominancePattern} patels + * @property {BlocksDominancePattern} gogreenlight + * @property {BlocksDominancePattern} bitcoinindiapool + * @property {BlocksDominancePattern} ekanembtc + * @property {BlocksDominancePattern} canoe + * @property {BlocksDominancePattern} tiger + * @property {BlocksDominancePattern} onem1x + * @property {BlocksDominancePattern} zulupool + * @property {BlocksDominancePattern} wiz + * @property {BlocksDominancePattern} wk057 + * @property {BlocksDominancePattern} futurebitapollosolo + * @property {BlocksDominancePattern} carbonnegative + * @property {BlocksDominancePattern} portlandhodl + * @property {BlocksDominancePattern} phoenix + * @property {BlocksDominancePattern} neopool + * @property {BlocksDominancePattern} maxipool + * @property {BlocksDominancePattern} bitfufupool + * @property {BlocksDominancePattern} gdpool + * @property {BlocksDominancePattern} miningdutch + * @property {BlocksDominancePattern} publicpool + * @property {BlocksDominancePattern} miningsquared + * @property {BlocksDominancePattern} innopolistech + * @property {BlocksDominancePattern} btclab + * @property {BlocksDominancePattern} parasite + * @property {BlocksDominancePattern} redrockpool + * @property {BlocksDominancePattern} est3lar */ /** @@ -4721,15 +4791,15 @@ function create_2wPattern(client, acc) { /** * @typedef {Object} MetricsTree_Distribution_UtxoCohorts_All_Relative - * @property {BpsPercentRatioPattern} investedCapitalInProfitRelToRealizedCap - * @property {BpsPercentRatioPattern} investedCapitalInLossRelToRealizedCap - * @property {BpsPercentRatioPattern} supplyInProfitRelToOwnSupply - * @property {BpsPercentRatioPattern} supplyInLossRelToOwnSupply * @property {BpsPercentRatioPattern} unrealizedProfitRelToMarketCap * @property {BpsPercentRatioPattern} unrealizedLossRelToMarketCap * @property {BpsPercentRatioPattern} netUnrealizedPnlRelToMarketCap * @property {BpsPercentRatioPattern} negUnrealizedLossRelToMarketCap * @property {MetricPattern1} nupl + * @property {BpsPercentRatioPattern} investedCapitalInProfitRelToRealizedCap + * @property {BpsPercentRatioPattern} investedCapitalInLossRelToRealizedCap + * @property {BpsPercentRatioPattern} supplyInProfitRelToOwnSupply + * @property {BpsPercentRatioPattern} supplyInLossRelToOwnSupply * @property {BpsPercentRatioPattern} unrealizedProfitRelToOwnGrossPnl * @property {BpsPercentRatioPattern} unrealizedLossRelToOwnGrossPnl * @property {BpsPercentRatioPattern} negUnrealizedLossRelToOwnGrossPnl @@ -6716,169 +6786,171 @@ class BrkClient extends BrkClientBase { }, pools: { heightToPool: createMetricPattern18(this, 'pool'), - vecs: { - unknown: createBlocksDominanceRewardsPattern(this, 'unknown'), - blockfills: createBlocksDominanceRewardsPattern(this, 'blockfills'), - ultimuspool: createBlocksDominanceRewardsPattern(this, 'ultimuspool'), - terrapool: createBlocksDominanceRewardsPattern(this, 'terrapool'), - luxor: createBlocksDominanceRewardsPattern(this, 'luxor'), - onethash: createBlocksDominanceRewardsPattern(this, 'onethash'), - btccom: createBlocksDominanceRewardsPattern(this, 'btccom'), - bitfarms: createBlocksDominanceRewardsPattern(this, 'bitfarms'), - huobipool: createBlocksDominanceRewardsPattern(this, 'huobipool'), - wayicn: createBlocksDominanceRewardsPattern(this, 'wayicn'), - canoepool: createBlocksDominanceRewardsPattern(this, 'canoepool'), - btctop: createBlocksDominanceRewardsPattern(this, 'btctop'), - bitcoincom: createBlocksDominanceRewardsPattern(this, 'bitcoincom'), - pool175btc: createBlocksDominanceRewardsPattern(this, 'pool175btc'), - gbminers: createBlocksDominanceRewardsPattern(this, 'gbminers'), - axbt: createBlocksDominanceRewardsPattern(this, 'axbt'), - asicminer: createBlocksDominanceRewardsPattern(this, 'asicminer'), - bitminter: createBlocksDominanceRewardsPattern(this, 'bitminter'), - bitcoinrussia: createBlocksDominanceRewardsPattern(this, 'bitcoinrussia'), - btcserv: createBlocksDominanceRewardsPattern(this, 'btcserv'), - simplecoinus: createBlocksDominanceRewardsPattern(this, 'simplecoinus'), - btcguild: createBlocksDominanceRewardsPattern(this, 'btcguild'), - eligius: createBlocksDominanceRewardsPattern(this, 'eligius'), - ozcoin: createBlocksDominanceRewardsPattern(this, 'ozcoin'), - eclipsemc: createBlocksDominanceRewardsPattern(this, 'eclipsemc'), - maxbtc: createBlocksDominanceRewardsPattern(this, 'maxbtc'), - triplemining: createBlocksDominanceRewardsPattern(this, 'triplemining'), - coinlab: createBlocksDominanceRewardsPattern(this, 'coinlab'), - pool50btc: createBlocksDominanceRewardsPattern(this, 'pool50btc'), - ghashio: createBlocksDominanceRewardsPattern(this, 'ghashio'), - stminingcorp: createBlocksDominanceRewardsPattern(this, 'stminingcorp'), - bitparking: createBlocksDominanceRewardsPattern(this, 'bitparking'), - mmpool: createBlocksDominanceRewardsPattern(this, 'mmpool'), - polmine: createBlocksDominanceRewardsPattern(this, 'polmine'), - kncminer: createBlocksDominanceRewardsPattern(this, 'kncminer'), - bitalo: createBlocksDominanceRewardsPattern(this, 'bitalo'), - f2pool: createBlocksDominanceRewardsPattern(this, 'f2pool'), - hhtt: createBlocksDominanceRewardsPattern(this, 'hhtt'), - megabigpower: createBlocksDominanceRewardsPattern(this, 'megabigpower'), - mtred: createBlocksDominanceRewardsPattern(this, 'mtred'), - nmcbit: createBlocksDominanceRewardsPattern(this, 'nmcbit'), - yourbtcnet: createBlocksDominanceRewardsPattern(this, 'yourbtcnet'), - givemecoins: createBlocksDominanceRewardsPattern(this, 'givemecoins'), - braiinspool: createBlocksDominanceRewardsPattern(this, 'braiinspool'), - antpool: createBlocksDominanceRewardsPattern(this, 'antpool'), - multicoinco: createBlocksDominanceRewardsPattern(this, 'multicoinco'), - bcpoolio: createBlocksDominanceRewardsPattern(this, 'bcpoolio'), - cointerra: createBlocksDominanceRewardsPattern(this, 'cointerra'), - kanopool: createBlocksDominanceRewardsPattern(this, 'kanopool'), - solock: createBlocksDominanceRewardsPattern(this, 'solock'), - ckpool: createBlocksDominanceRewardsPattern(this, 'ckpool'), - nicehash: createBlocksDominanceRewardsPattern(this, 'nicehash'), - bitclub: createBlocksDominanceRewardsPattern(this, 'bitclub'), - bitcoinaffiliatenetwork: createBlocksDominanceRewardsPattern(this, 'bitcoinaffiliatenetwork'), - btcc: createBlocksDominanceRewardsPattern(this, 'btcc'), - bwpool: createBlocksDominanceRewardsPattern(this, 'bwpool'), - exxbw: createBlocksDominanceRewardsPattern(this, 'exxbw'), - bitsolo: createBlocksDominanceRewardsPattern(this, 'bitsolo'), - bitfury: createBlocksDominanceRewardsPattern(this, 'bitfury'), - twentyoneinc: createBlocksDominanceRewardsPattern(this, 'twentyoneinc'), - digitalbtc: createBlocksDominanceRewardsPattern(this, 'digitalbtc'), - eightbaochi: createBlocksDominanceRewardsPattern(this, 'eightbaochi'), - mybtccoinpool: createBlocksDominanceRewardsPattern(this, 'mybtccoinpool'), - tbdice: createBlocksDominanceRewardsPattern(this, 'tbdice'), - hashpool: createBlocksDominanceRewardsPattern(this, 'hashpool'), - nexious: createBlocksDominanceRewardsPattern(this, 'nexious'), - bravomining: createBlocksDominanceRewardsPattern(this, 'bravomining'), - hotpool: createBlocksDominanceRewardsPattern(this, 'hotpool'), - okexpool: createBlocksDominanceRewardsPattern(this, 'okexpool'), - bcmonster: createBlocksDominanceRewardsPattern(this, 'bcmonster'), - onehash: createBlocksDominanceRewardsPattern(this, 'onehash'), - bixin: createBlocksDominanceRewardsPattern(this, 'bixin'), - tatmaspool: createBlocksDominanceRewardsPattern(this, 'tatmaspool'), - viabtc: createBlocksDominanceRewardsPattern(this, 'viabtc'), - connectbtc: createBlocksDominanceRewardsPattern(this, 'connectbtc'), - batpool: createBlocksDominanceRewardsPattern(this, 'batpool'), - waterhole: createBlocksDominanceRewardsPattern(this, 'waterhole'), - dcexploration: createBlocksDominanceRewardsPattern(this, 'dcexploration'), - dcex: createBlocksDominanceRewardsPattern(this, 'dcex'), - btpool: createBlocksDominanceRewardsPattern(this, 'btpool'), - fiftyeightcoin: createBlocksDominanceRewardsPattern(this, 'fiftyeightcoin'), - bitcoinindia: createBlocksDominanceRewardsPattern(this, 'bitcoinindia'), - shawnp0wers: createBlocksDominanceRewardsPattern(this, 'shawnp0wers'), - phashio: createBlocksDominanceRewardsPattern(this, 'phashio'), - rigpool: createBlocksDominanceRewardsPattern(this, 'rigpool'), - haozhuzhu: createBlocksDominanceRewardsPattern(this, 'haozhuzhu'), - sevenpool: createBlocksDominanceRewardsPattern(this, 'sevenpool'), - miningkings: createBlocksDominanceRewardsPattern(this, 'miningkings'), - hashbx: createBlocksDominanceRewardsPattern(this, 'hashbx'), - dpool: createBlocksDominanceRewardsPattern(this, 'dpool'), - rawpool: createBlocksDominanceRewardsPattern(this, 'rawpool'), - haominer: createBlocksDominanceRewardsPattern(this, 'haominer'), - helix: createBlocksDominanceRewardsPattern(this, 'helix'), - bitcoinukraine: createBlocksDominanceRewardsPattern(this, 'bitcoinukraine'), - poolin: createBlocksDominanceRewardsPattern(this, 'poolin'), - secretsuperstar: createBlocksDominanceRewardsPattern(this, 'secretsuperstar'), - tigerpoolnet: createBlocksDominanceRewardsPattern(this, 'tigerpoolnet'), - sigmapoolcom: createBlocksDominanceRewardsPattern(this, 'sigmapoolcom'), - okpooltop: createBlocksDominanceRewardsPattern(this, 'okpooltop'), - hummerpool: createBlocksDominanceRewardsPattern(this, 'hummerpool'), - tangpool: createBlocksDominanceRewardsPattern(this, 'tangpool'), - bytepool: createBlocksDominanceRewardsPattern(this, 'bytepool'), - spiderpool: createBlocksDominanceRewardsPattern(this, 'spiderpool'), - novablock: createBlocksDominanceRewardsPattern(this, 'novablock'), - miningcity: createBlocksDominanceRewardsPattern(this, 'miningcity'), - binancepool: createBlocksDominanceRewardsPattern(this, 'binancepool'), - minerium: createBlocksDominanceRewardsPattern(this, 'minerium'), - lubiancom: createBlocksDominanceRewardsPattern(this, 'lubiancom'), - okkong: createBlocksDominanceRewardsPattern(this, 'okkong'), - aaopool: createBlocksDominanceRewardsPattern(this, 'aaopool'), - emcdpool: createBlocksDominanceRewardsPattern(this, 'emcdpool'), - foundryusa: createBlocksDominanceRewardsPattern(this, 'foundryusa'), - sbicrypto: createBlocksDominanceRewardsPattern(this, 'sbicrypto'), - arkpool: createBlocksDominanceRewardsPattern(this, 'arkpool'), - purebtccom: createBlocksDominanceRewardsPattern(this, 'purebtccom'), - marapool: createBlocksDominanceRewardsPattern(this, 'marapool'), - kucoinpool: createBlocksDominanceRewardsPattern(this, 'kucoinpool'), - entrustcharitypool: createBlocksDominanceRewardsPattern(this, 'entrustcharitypool'), - okminer: createBlocksDominanceRewardsPattern(this, 'okminer'), - titan: createBlocksDominanceRewardsPattern(this, 'titan'), - pegapool: createBlocksDominanceRewardsPattern(this, 'pegapool'), - btcnuggets: createBlocksDominanceRewardsPattern(this, 'btcnuggets'), - cloudhashing: createBlocksDominanceRewardsPattern(this, 'cloudhashing'), - digitalxmintsy: createBlocksDominanceRewardsPattern(this, 'digitalxmintsy'), - telco214: createBlocksDominanceRewardsPattern(this, 'telco214'), - btcpoolparty: createBlocksDominanceRewardsPattern(this, 'btcpoolparty'), - multipool: createBlocksDominanceRewardsPattern(this, 'multipool'), - transactioncoinmining: createBlocksDominanceRewardsPattern(this, 'transactioncoinmining'), - btcdig: createBlocksDominanceRewardsPattern(this, 'btcdig'), - trickysbtcpool: createBlocksDominanceRewardsPattern(this, 'trickysbtcpool'), - btcmp: createBlocksDominanceRewardsPattern(this, 'btcmp'), - eobot: createBlocksDominanceRewardsPattern(this, 'eobot'), - unomp: createBlocksDominanceRewardsPattern(this, 'unomp'), - patels: createBlocksDominanceRewardsPattern(this, 'patels'), - gogreenlight: createBlocksDominanceRewardsPattern(this, 'gogreenlight'), - bitcoinindiapool: createBlocksDominanceRewardsPattern(this, 'bitcoinindiapool'), - ekanembtc: createBlocksDominanceRewardsPattern(this, 'ekanembtc'), - canoe: createBlocksDominanceRewardsPattern(this, 'canoe'), - tiger: createBlocksDominanceRewardsPattern(this, 'tiger'), - onem1x: createBlocksDominanceRewardsPattern(this, 'onem1x'), - zulupool: createBlocksDominanceRewardsPattern(this, 'zulupool'), - secpool: createBlocksDominanceRewardsPattern(this, 'secpool'), - ocean: createBlocksDominanceRewardsPattern(this, 'ocean'), - whitepool: createBlocksDominanceRewardsPattern(this, 'whitepool'), - wiz: createBlocksDominanceRewardsPattern(this, 'wiz'), - wk057: createBlocksDominanceRewardsPattern(this, 'wk057'), - futurebitapollosolo: createBlocksDominanceRewardsPattern(this, 'futurebitapollosolo'), - carbonnegative: createBlocksDominanceRewardsPattern(this, 'carbonnegative'), - portlandhodl: createBlocksDominanceRewardsPattern(this, 'portlandhodl'), - phoenix: createBlocksDominanceRewardsPattern(this, 'phoenix'), - neopool: createBlocksDominanceRewardsPattern(this, 'neopool'), - maxipool: createBlocksDominanceRewardsPattern(this, 'maxipool'), - bitfufupool: createBlocksDominanceRewardsPattern(this, 'bitfufupool'), - gdpool: createBlocksDominanceRewardsPattern(this, 'gdpool'), - miningdutch: createBlocksDominanceRewardsPattern(this, 'miningdutch'), - publicpool: createBlocksDominanceRewardsPattern(this, 'publicpool'), - miningsquared: createBlocksDominanceRewardsPattern(this, 'miningsquared'), - innopolistech: createBlocksDominanceRewardsPattern(this, 'innopolistech'), - btclab: createBlocksDominanceRewardsPattern(this, 'btclab'), - parasite: createBlocksDominanceRewardsPattern(this, 'parasite'), - redrockpool: createBlocksDominanceRewardsPattern(this, 'redrockpool'), - est3lar: createBlocksDominanceRewardsPattern(this, 'est3lar'), + major: { + unknown: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'unknown'), + ultimuspool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'ultimuspool'), + terrapool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'terrapool'), + luxor: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'luxor'), + onethash: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'onethash'), + btccom: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'btccom'), + huobipool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'huobipool'), + wayicn: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'wayicn'), + canoepool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'canoepool'), + btctop: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'btctop'), + bitcoincom: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'bitcoincom'), + gbminers: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'gbminers'), + asicminer: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'asicminer'), + bitminter: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'bitminter'), + bitcoinrussia: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'bitcoinrussia'), + btcguild: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'btcguild'), + eligius: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'eligius'), + ozcoin: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'ozcoin'), + eclipsemc: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'eclipsemc'), + maxbtc: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'maxbtc'), + triplemining: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'triplemining'), + coinlab: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'coinlab'), + pool50btc: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'pool50btc'), + ghashio: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'ghashio'), + bitparking: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'bitparking'), + polmine: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'polmine'), + kncminer: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'kncminer'), + f2pool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'f2pool'), + hhtt: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'hhtt'), + megabigpower: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'megabigpower'), + nmcbit: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'nmcbit'), + yourbtcnet: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'yourbtcnet'), + braiinspool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'braiinspool'), + antpool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'antpool'), + kanopool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'kanopool'), + solock: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'solock'), + nicehash: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'nicehash'), + bitclub: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'bitclub'), + bitcoinaffiliatenetwork: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'bitcoinaffiliatenetwork'), + btcc: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'btcc'), + bwpool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'bwpool'), + exxbw: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'exxbw'), + bitfury: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'bitfury'), + digitalbtc: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'digitalbtc'), + okexpool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'okexpool'), + bixin: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'bixin'), + tatmaspool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'tatmaspool'), + viabtc: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'viabtc'), + connectbtc: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'connectbtc'), + batpool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'batpool'), + btpool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'btpool'), + fiftyeightcoin: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'fiftyeightcoin'), + bitcoinindia: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'bitcoinindia'), + dpool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'dpool'), + poolin: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'poolin'), + secretsuperstar: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'secretsuperstar'), + tigerpoolnet: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'tigerpoolnet'), + sigmapoolcom: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'sigmapoolcom'), + okpooltop: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'okpooltop'), + tangpool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'tangpool'), + bytepool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'bytepool'), + spiderpool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'spiderpool'), + novablock: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'novablock'), + binancepool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'binancepool'), + lubiancom: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'lubiancom'), + okkong: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'okkong'), + emcdpool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'emcdpool'), + foundryusa: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'foundryusa'), + sbicrypto: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'sbicrypto'), + marapool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'marapool'), + kucoinpool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'kucoinpool'), + pegapool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'pegapool'), + secpool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'secpool'), + ocean: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'ocean'), + whitepool: create_1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(this, 'whitepool'), + }, + minor: { + blockfills: createBlocksDominancePattern(this, 'blockfills'), + bitfarms: createBlocksDominancePattern(this, 'bitfarms'), + pool175btc: createBlocksDominancePattern(this, 'pool175btc'), + axbt: createBlocksDominancePattern(this, 'axbt'), + btcserv: createBlocksDominancePattern(this, 'btcserv'), + simplecoinus: createBlocksDominancePattern(this, 'simplecoinus'), + stminingcorp: createBlocksDominancePattern(this, 'stminingcorp'), + mmpool: createBlocksDominancePattern(this, 'mmpool'), + bitalo: createBlocksDominancePattern(this, 'bitalo'), + mtred: createBlocksDominancePattern(this, 'mtred'), + givemecoins: createBlocksDominancePattern(this, 'givemecoins'), + multicoinco: createBlocksDominancePattern(this, 'multicoinco'), + bcpoolio: createBlocksDominancePattern(this, 'bcpoolio'), + cointerra: createBlocksDominancePattern(this, 'cointerra'), + ckpool: createBlocksDominancePattern(this, 'ckpool'), + bitsolo: createBlocksDominancePattern(this, 'bitsolo'), + twentyoneinc: createBlocksDominancePattern(this, 'twentyoneinc'), + eightbaochi: createBlocksDominancePattern(this, 'eightbaochi'), + mybtccoinpool: createBlocksDominancePattern(this, 'mybtccoinpool'), + tbdice: createBlocksDominancePattern(this, 'tbdice'), + hashpool: createBlocksDominancePattern(this, 'hashpool'), + nexious: createBlocksDominancePattern(this, 'nexious'), + bravomining: createBlocksDominancePattern(this, 'bravomining'), + hotpool: createBlocksDominancePattern(this, 'hotpool'), + bcmonster: createBlocksDominancePattern(this, 'bcmonster'), + onehash: createBlocksDominancePattern(this, 'onehash'), + waterhole: createBlocksDominancePattern(this, 'waterhole'), + dcexploration: createBlocksDominancePattern(this, 'dcexploration'), + dcex: createBlocksDominancePattern(this, 'dcex'), + shawnp0wers: createBlocksDominancePattern(this, 'shawnp0wers'), + phashio: createBlocksDominancePattern(this, 'phashio'), + rigpool: createBlocksDominancePattern(this, 'rigpool'), + haozhuzhu: createBlocksDominancePattern(this, 'haozhuzhu'), + sevenpool: createBlocksDominancePattern(this, 'sevenpool'), + miningkings: createBlocksDominancePattern(this, 'miningkings'), + hashbx: createBlocksDominancePattern(this, 'hashbx'), + rawpool: createBlocksDominancePattern(this, 'rawpool'), + haominer: createBlocksDominancePattern(this, 'haominer'), + helix: createBlocksDominancePattern(this, 'helix'), + bitcoinukraine: createBlocksDominancePattern(this, 'bitcoinukraine'), + hummerpool: createBlocksDominancePattern(this, 'hummerpool'), + miningcity: createBlocksDominancePattern(this, 'miningcity'), + minerium: createBlocksDominancePattern(this, 'minerium'), + aaopool: createBlocksDominancePattern(this, 'aaopool'), + arkpool: createBlocksDominancePattern(this, 'arkpool'), + purebtccom: createBlocksDominancePattern(this, 'purebtccom'), + entrustcharitypool: createBlocksDominancePattern(this, 'entrustcharitypool'), + okminer: createBlocksDominancePattern(this, 'okminer'), + titan: createBlocksDominancePattern(this, 'titan'), + btcnuggets: createBlocksDominancePattern(this, 'btcnuggets'), + cloudhashing: createBlocksDominancePattern(this, 'cloudhashing'), + digitalxmintsy: createBlocksDominancePattern(this, 'digitalxmintsy'), + telco214: createBlocksDominancePattern(this, 'telco214'), + btcpoolparty: createBlocksDominancePattern(this, 'btcpoolparty'), + multipool: createBlocksDominancePattern(this, 'multipool'), + transactioncoinmining: createBlocksDominancePattern(this, 'transactioncoinmining'), + btcdig: createBlocksDominancePattern(this, 'btcdig'), + trickysbtcpool: createBlocksDominancePattern(this, 'trickysbtcpool'), + btcmp: createBlocksDominancePattern(this, 'btcmp'), + eobot: createBlocksDominancePattern(this, 'eobot'), + unomp: createBlocksDominancePattern(this, 'unomp'), + patels: createBlocksDominancePattern(this, 'patels'), + gogreenlight: createBlocksDominancePattern(this, 'gogreenlight'), + bitcoinindiapool: createBlocksDominancePattern(this, 'bitcoinindiapool'), + ekanembtc: createBlocksDominancePattern(this, 'ekanembtc'), + canoe: createBlocksDominancePattern(this, 'canoe'), + tiger: createBlocksDominancePattern(this, 'tiger'), + onem1x: createBlocksDominancePattern(this, 'onem1x'), + zulupool: createBlocksDominancePattern(this, 'zulupool'), + wiz: createBlocksDominancePattern(this, 'wiz'), + wk057: createBlocksDominancePattern(this, 'wk057'), + futurebitapollosolo: createBlocksDominancePattern(this, 'futurebitapollosolo'), + carbonnegative: createBlocksDominancePattern(this, 'carbonnegative'), + portlandhodl: createBlocksDominancePattern(this, 'portlandhodl'), + phoenix: createBlocksDominancePattern(this, 'phoenix'), + neopool: createBlocksDominancePattern(this, 'neopool'), + maxipool: createBlocksDominancePattern(this, 'maxipool'), + bitfufupool: createBlocksDominancePattern(this, 'bitfufupool'), + gdpool: createBlocksDominancePattern(this, 'gdpool'), + miningdutch: createBlocksDominancePattern(this, 'miningdutch'), + publicpool: createBlocksDominancePattern(this, 'publicpool'), + miningsquared: createBlocksDominancePattern(this, 'miningsquared'), + innopolistech: createBlocksDominancePattern(this, 'innopolistech'), + btclab: createBlocksDominancePattern(this, 'btclab'), + parasite: createBlocksDominancePattern(this, 'parasite'), + redrockpool: createBlocksDominancePattern(this, 'redrockpool'), + est3lar: createBlocksDominancePattern(this, 'est3lar'), }, }, prices: { @@ -6936,15 +7008,15 @@ class BrkClient extends BrkClientBase { adjustedSoprEma: create_1m1wPattern(this, 'adjusted_sopr_24h_ema'), }, relative: { - investedCapitalInProfitRelToRealizedCap: createBpsPercentRatioPattern(this, 'invested_capital_in_profit_rel_to_realized_cap'), - investedCapitalInLossRelToRealizedCap: createBpsPercentRatioPattern(this, 'invested_capital_in_loss_rel_to_realized_cap'), - supplyInProfitRelToOwnSupply: createBpsPercentRatioPattern(this, 'supply_in_profit_rel_to_own_supply'), - supplyInLossRelToOwnSupply: createBpsPercentRatioPattern(this, 'supply_in_loss_rel_to_own_supply'), unrealizedProfitRelToMarketCap: createBpsPercentRatioPattern(this, 'unrealized_profit_rel_to_market_cap'), unrealizedLossRelToMarketCap: createBpsPercentRatioPattern(this, 'unrealized_loss_rel_to_market_cap'), netUnrealizedPnlRelToMarketCap: createBpsPercentRatioPattern(this, 'net_unrealized_pnl_rel_to_market_cap'), negUnrealizedLossRelToMarketCap: createBpsPercentRatioPattern(this, 'neg_unrealized_loss_rel_to_market_cap'), nupl: createMetricPattern1(this, 'nupl'), + investedCapitalInProfitRelToRealizedCap: createBpsPercentRatioPattern(this, 'invested_capital_in_profit_rel_to_realized_cap'), + investedCapitalInLossRelToRealizedCap: createBpsPercentRatioPattern(this, 'invested_capital_in_loss_rel_to_realized_cap'), + supplyInProfitRelToOwnSupply: createBpsPercentRatioPattern(this, 'supply_in_profit_rel_to_own_supply'), + supplyInLossRelToOwnSupply: createBpsPercentRatioPattern(this, 'supply_in_loss_rel_to_own_supply'), unrealizedProfitRelToOwnGrossPnl: createBpsPercentRatioPattern(this, 'unrealized_profit_rel_to_own_gross_pnl'), unrealizedLossRelToOwnGrossPnl: createBpsPercentRatioPattern(this, 'unrealized_loss_rel_to_own_gross_pnl'), negUnrealizedLossRelToOwnGrossPnl: createBpsPercentRatioPattern(this, 'neg_unrealized_loss_rel_to_own_gross_pnl'), diff --git a/packages/brk_client/brk_client/__init__.py b/packages/brk_client/brk_client/__init__.py index e4fd09e47..0fa5e3e43 100644 --- a/packages/brk_client/brk_client/__init__.py +++ b/packages/brk_client/brk_client/__init__.py @@ -2158,34 +2158,6 @@ class _0sdM0M1M1sdM2M2sdM3sdP0P1P1sdP2P2sdP3sdSdSmaZscorePattern: self.sma: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'sma_4y')) self.zscore: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'zscore_4y')) -class GrossMvrvNegNetRealizedSentSoprValuePattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.gross_pnl: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'realized_gross_pnl')) - self.mvrv: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'mvrv')) - self.neg_realized_loss: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'neg_realized_loss')) - self.net_realized_pnl: CumulativeHeightPattern[CentsSigned] = CumulativeHeightPattern(client, _m(acc, 'net_realized_pnl')) - self.net_realized_pnl_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')) - self.realized_cap: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_cap')) - self.realized_cap_cents: MetricPattern1[Cents] = MetricPattern1(client, _m(acc, 'realized_cap_cents')) - self.realized_cap_change_1m: MetricPattern1[CentsSigned] = MetricPattern1(client, _m(acc, 'realized_cap_change_1m')) - self.realized_loss: CumulativeHeightPattern[Cents] = CumulativeHeightPattern(client, _m(acc, 'realized_loss')) - self.realized_loss_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'realized_loss_rel_to_realized_cap')) - self.realized_price: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'realized_price')) - self.realized_price_ratio: BpsRatioPattern = BpsRatioPattern(client, _m(acc, 'realized_price_ratio')) - self.realized_price_ratio_percentiles: RatioPattern = RatioPattern(client, _m(acc, 'realized_price_ratio')) - self.realized_profit: CumulativeHeightPattern[Cents] = CumulativeHeightPattern(client, _m(acc, 'realized_profit')) - self.realized_profit_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'realized_profit_rel_to_realized_cap')) - self.sent_in_loss: BaseCumulativePattern = BaseCumulativePattern(client, _m(acc, 'sent_in_loss')) - self.sent_in_profit: BaseCumulativePattern = BaseCumulativePattern(client, _m(acc, 'sent_in_profit')) - self.sopr: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, _m(acc, 'sopr')) - self.value_created: MetricPattern1[Cents] = MetricPattern1(client, _m(acc, 'value_created')) - self.value_created_sum: _1m1w1y24hPattern[Cents] = _1m1w1y24hPattern(client, _m(acc, 'value_created')) - self.value_destroyed: MetricPattern1[Cents] = MetricPattern1(client, _m(acc, 'value_destroyed')) - self.value_destroyed_sum: _1m1w1y24hPattern[Cents] = _1m1w1y24hPattern(client, _m(acc, 'value_destroyed')) - class InvestedNegNetNuplSupplyUnrealizedPattern3: """Pattern struct for repeated tree structure.""" @@ -2212,6 +2184,31 @@ class InvestedNegNetNuplSupplyUnrealizedPattern3: self.unrealized_profit_rel_to_own_gross_pnl: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'unrealized_profit_rel_to_own_gross_pnl')) self.unrealized_profit_rel_to_own_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'unrealized_profit_rel_to_own_market_cap')) +class GrossMvrvNegNetRealizedSentSoprValuePattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.gross_pnl: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'realized_gross_pnl')) + self.mvrv: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'mvrv')) + self.neg_realized_loss: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'neg_realized_loss')) + self.net_realized_pnl: CumulativeHeightPattern[CentsSigned] = CumulativeHeightPattern(client, _m(acc, 'net_realized_pnl')) + self.realized_cap: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'realized_cap')) + self.realized_cap_cents: MetricPattern1[Cents] = MetricPattern1(client, _m(acc, 'realized_cap_cents')) + self.realized_cap_change_1m: MetricPattern1[CentsSigned] = MetricPattern1(client, _m(acc, 'realized_cap_change_1m')) + self.realized_loss: CumulativeHeightPattern[Cents] = CumulativeHeightPattern(client, _m(acc, 'realized_loss')) + self.realized_price: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'realized_price')) + self.realized_price_ratio: BpsRatioPattern = BpsRatioPattern(client, _m(acc, 'realized_price_ratio')) + self.realized_price_ratio_percentiles: RatioPattern = RatioPattern(client, _m(acc, 'realized_price_ratio')) + self.realized_profit: CumulativeHeightPattern[Cents] = CumulativeHeightPattern(client, _m(acc, 'realized_profit')) + self.sent_in_loss: BaseCumulativePattern = BaseCumulativePattern(client, _m(acc, 'sent_in_loss')) + self.sent_in_profit: BaseCumulativePattern = BaseCumulativePattern(client, _m(acc, 'sent_in_profit')) + self.sopr: _1m1w1y24hPattern[StoredF64] = _1m1w1y24hPattern(client, _m(acc, 'sopr')) + self.value_created: MetricPattern1[Cents] = MetricPattern1(client, _m(acc, 'value_created')) + self.value_created_sum: _1m1w1y24hPattern[Cents] = _1m1w1y24hPattern(client, _m(acc, 'value_created')) + self.value_destroyed: MetricPattern1[Cents] = MetricPattern1(client, _m(acc, 'value_destroyed')) + self.value_destroyed_sum: _1m1w1y24hPattern[Cents] = _1m1w1y24hPattern(client, _m(acc, 'value_destroyed')) + class Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75Pct80Pct85Pct90Pct95Pattern: """Pattern struct for repeated tree structure.""" @@ -2355,6 +2352,23 @@ class InvestedNegNetNuplSupplyUnrealizedPattern: self.unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'unrealized_loss_rel_to_market_cap')) self.unrealized_profit_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'unrealized_profit_rel_to_market_cap')) +class _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self._1m: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'dominance_1m')) + self._1w: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'dominance_1w')) + self._1y: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'dominance_1y')) + self._24h: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'dominance_24h')) + self.base: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'rewards')) + self.bps: MetricPattern1[BasisPoints16] = MetricPattern1(client, _m(acc, 'dominance_bps')) + self.cumulative: BaseBtcCentsSatsUsdPattern = BaseBtcCentsSatsUsdPattern(client, acc) + self.height: MetricPattern18[StoredU32] = MetricPattern18(client, _m(acc, 'blocks_mined')) + self.percent: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'dominance')) + self.ratio: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'dominance_ratio')) + self.sum: _1m1w1y24hPattern6 = _1m1w1y24hPattern6(client, acc) + class AverageCumulativeMaxMedianMinPct10Pct25Pct75Pct90RollingSumPattern: """Pattern struct for repeated tree structure.""" @@ -2405,22 +2419,6 @@ class AverageGainsLossesRsiStochPattern: self.stoch_rsi_d: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'stoch_d_24h')) self.stoch_rsi_k: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'stoch_k_24h')) -class NegNetNuplSupplyUnrealizedPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.neg_unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'neg_unrealized_loss_rel_to_market_cap')) - self.net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_market_cap')) - self.nupl: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'nupl')) - self.supply_in_loss_rel_to_circulating_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'supply_in_loss_rel_to_circulating_supply')) - self.supply_in_loss_rel_to_own_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'supply_in_loss_rel_to_own_supply')) - self.supply_in_profit_rel_to_circulating_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'supply_in_profit_rel_to_circulating_supply')) - self.supply_in_profit_rel_to_own_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'supply_in_profit_rel_to_own_supply')) - self.supply_rel_to_circulating_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'supply_rel_to_circulating_supply')) - self.unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'unrealized_loss_rel_to_market_cap')) - self.unrealized_profit_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'unrealized_profit_rel_to_market_cap')) - class AllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern: """Pattern struct for repeated tree structure.""" @@ -2595,7 +2593,7 @@ class ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2: self.activity: SentPattern = SentPattern(client, _m(acc, 'sent')) self.outputs: UtxoPattern = UtxoPattern(client, _m(acc, 'utxo_count')) self.realized: GrossMvrvNegNetRealizedSentSoprValuePattern = GrossMvrvNegNetRealizedSentSoprValuePattern(client, acc) - self.relative: NegNetNuplSupplyUnrealizedPattern = NegNetNuplSupplyUnrealizedPattern(client, acc) + self.relative: SupplyPattern3 = SupplyPattern3(client, _m(acc, 'supply')) self.supply: ChangeHalvedTotalPattern = ChangeHalvedTotalPattern(client, _m(acc, 'supply')) self.unrealized: GrossNegNetSupplyUnrealizedPattern = GrossNegNetSupplyUnrealizedPattern(client, acc) @@ -2623,6 +2621,17 @@ class BalanceBothReactivatedReceivingSendingPattern: self.receiving: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern[StoredU32] = AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'receiving')) self.sending: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern[StoredU32] = AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'sending')) +class BaseBtcCentsSatsUsdPattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.base: MetricPattern1[StoredU32] = MetricPattern1(client, _m(acc, 'blocks_mined_cumulative')) + self.btc: MetricPattern1[Bitcoin] = MetricPattern1(client, _m(acc, 'rewards_cumulative_btc')) + self.cents: MetricPattern1[Cents] = MetricPattern1(client, _m(acc, 'rewards_cumulative_cents')) + self.sats: MetricPattern1[Sats] = MetricPattern1(client, _m(acc, 'rewards_cumulative')) + self.usd: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'rewards_cumulative_usd')) + class EmaHistogramLineSignalPattern: """Pattern struct for repeated tree structure.""" @@ -2634,6 +2643,27 @@ class EmaHistogramLineSignalPattern: self.line: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'line_24h')) self.signal: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'signal_24h')) +class SupplyPattern3: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.supply_in_loss_rel_to_circulating_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'in_loss_rel_to_circulating_supply')) + self.supply_in_loss_rel_to_own_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'in_loss_rel_to_own_supply')) + self.supply_in_profit_rel_to_circulating_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'in_profit_rel_to_circulating_supply')) + self.supply_in_profit_rel_to_own_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'in_profit_rel_to_own_supply')) + self.supply_rel_to_circulating_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'rel_to_circulating_supply')) + +class _1m1w1y24hPattern6: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self._1m: BaseBtcCentsSatsUsdPattern = BaseBtcCentsSatsUsdPattern(client, acc) + self._1w: BaseBtcCentsSatsUsdPattern = BaseBtcCentsSatsUsdPattern(client, acc) + self._1y: BaseBtcCentsSatsUsdPattern = BaseBtcCentsSatsUsdPattern(client, acc) + self._24h: BaseBtcCentsSatsUsdPattern = BaseBtcCentsSatsUsdPattern(client, acc) + class _1m1w1y24hPattern2: """Pattern struct for repeated tree structure.""" @@ -2654,16 +2684,6 @@ class _1m1w1y24hPattern5: self._1y: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '1y')) self._24h: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '24h')) -class BlocksDominanceRewardsPattern: - """Pattern struct for repeated tree structure.""" - - def __init__(self, client: BrkClientBase, acc: str): - """Create pattern node with accumulated metric name.""" - self.blocks_mined: CumulativeHeightSumPattern[StoredU32] = CumulativeHeightSumPattern(client, _m(acc, 'blocks_mined')) - self.dominance: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'dominance')) - self.dominance_rolling: _1m1w1y24hPattern2 = _1m1w1y24hPattern2(client, _m(acc, 'dominance')) - self.rewards: BaseCumulativeSumPattern = BaseCumulativeSumPattern(client, _m(acc, 'rewards')) - class BtcCentsSatsUsdPattern: """Pattern struct for repeated tree structure.""" @@ -2819,6 +2839,14 @@ class BaseCumulativePattern: self.base: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, acc) self.cumulative: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'cumulative')) +class BlocksDominancePattern: + """Pattern struct for repeated tree structure.""" + + def __init__(self, client: BrkClientBase, acc: str): + """Create pattern node with accumulated metric name.""" + self.blocks_mined: CumulativeHeightPattern[StoredU32] = CumulativeHeightPattern(client, _m(acc, 'blocks_mined')) + self.dominance: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'dominance')) + class BpsRatioPattern: """Pattern struct for repeated tree structure.""" @@ -3964,179 +3992,185 @@ class MetricsTree_Market: self.dca: MetricsTree_Market_Dca = MetricsTree_Market_Dca(client) self.indicators: MetricsTree_Market_Indicators = MetricsTree_Market_Indicators(client) -class MetricsTree_Pools_Vecs: +class MetricsTree_Pools_Major: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.unknown: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'unknown') - self.blockfills: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'blockfills') - self.ultimuspool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'ultimuspool') - self.terrapool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'terrapool') - self.luxor: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'luxor') - self.onethash: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'onethash') - self.btccom: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btccom') - self.bitfarms: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitfarms') - self.huobipool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'huobipool') - self.wayicn: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'wayicn') - self.canoepool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'canoepool') - self.btctop: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btctop') - self.bitcoincom: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitcoincom') - self.pool175btc: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'pool175btc') - self.gbminers: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'gbminers') - self.axbt: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'axbt') - self.asicminer: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'asicminer') - self.bitminter: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitminter') - self.bitcoinrussia: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitcoinrussia') - self.btcserv: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btcserv') - self.simplecoinus: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'simplecoinus') - self.btcguild: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btcguild') - self.eligius: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'eligius') - self.ozcoin: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'ozcoin') - self.eclipsemc: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'eclipsemc') - self.maxbtc: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'maxbtc') - self.triplemining: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'triplemining') - self.coinlab: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'coinlab') - self.pool50btc: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'pool50btc') - self.ghashio: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'ghashio') - self.stminingcorp: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'stminingcorp') - self.bitparking: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitparking') - self.mmpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'mmpool') - self.polmine: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'polmine') - self.kncminer: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'kncminer') - self.bitalo: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitalo') - self.f2pool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'f2pool') - self.hhtt: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'hhtt') - self.megabigpower: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'megabigpower') - self.mtred: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'mtred') - self.nmcbit: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'nmcbit') - self.yourbtcnet: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'yourbtcnet') - self.givemecoins: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'givemecoins') - self.braiinspool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'braiinspool') - self.antpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'antpool') - self.multicoinco: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'multicoinco') - self.bcpoolio: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bcpoolio') - self.cointerra: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'cointerra') - self.kanopool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'kanopool') - self.solock: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'solock') - self.ckpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'ckpool') - self.nicehash: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'nicehash') - self.bitclub: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitclub') - self.bitcoinaffiliatenetwork: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitcoinaffiliatenetwork') - self.btcc: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btcc') - self.bwpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bwpool') - self.exxbw: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'exxbw') - self.bitsolo: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitsolo') - self.bitfury: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitfury') - self.twentyoneinc: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'twentyoneinc') - self.digitalbtc: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'digitalbtc') - self.eightbaochi: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'eightbaochi') - self.mybtccoinpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'mybtccoinpool') - self.tbdice: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'tbdice') - self.hashpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'hashpool') - self.nexious: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'nexious') - self.bravomining: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bravomining') - self.hotpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'hotpool') - self.okexpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'okexpool') - self.bcmonster: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bcmonster') - self.onehash: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'onehash') - self.bixin: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bixin') - self.tatmaspool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'tatmaspool') - self.viabtc: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'viabtc') - self.connectbtc: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'connectbtc') - self.batpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'batpool') - self.waterhole: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'waterhole') - self.dcexploration: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'dcexploration') - self.dcex: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'dcex') - self.btpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btpool') - self.fiftyeightcoin: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'fiftyeightcoin') - self.bitcoinindia: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitcoinindia') - self.shawnp0wers: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'shawnp0wers') - self.phashio: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'phashio') - self.rigpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'rigpool') - self.haozhuzhu: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'haozhuzhu') - self.sevenpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'sevenpool') - self.miningkings: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'miningkings') - self.hashbx: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'hashbx') - self.dpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'dpool') - self.rawpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'rawpool') - self.haominer: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'haominer') - self.helix: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'helix') - self.bitcoinukraine: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitcoinukraine') - self.poolin: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'poolin') - self.secretsuperstar: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'secretsuperstar') - self.tigerpoolnet: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'tigerpoolnet') - self.sigmapoolcom: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'sigmapoolcom') - self.okpooltop: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'okpooltop') - self.hummerpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'hummerpool') - self.tangpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'tangpool') - self.bytepool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bytepool') - self.spiderpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'spiderpool') - self.novablock: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'novablock') - self.miningcity: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'miningcity') - self.binancepool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'binancepool') - self.minerium: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'minerium') - self.lubiancom: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'lubiancom') - self.okkong: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'okkong') - self.aaopool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'aaopool') - self.emcdpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'emcdpool') - self.foundryusa: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'foundryusa') - self.sbicrypto: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'sbicrypto') - self.arkpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'arkpool') - self.purebtccom: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'purebtccom') - self.marapool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'marapool') - self.kucoinpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'kucoinpool') - self.entrustcharitypool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'entrustcharitypool') - self.okminer: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'okminer') - self.titan: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'titan') - self.pegapool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'pegapool') - self.btcnuggets: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btcnuggets') - self.cloudhashing: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'cloudhashing') - self.digitalxmintsy: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'digitalxmintsy') - self.telco214: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'telco214') - self.btcpoolparty: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btcpoolparty') - self.multipool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'multipool') - self.transactioncoinmining: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'transactioncoinmining') - self.btcdig: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btcdig') - self.trickysbtcpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'trickysbtcpool') - self.btcmp: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btcmp') - self.eobot: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'eobot') - self.unomp: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'unomp') - self.patels: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'patels') - self.gogreenlight: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'gogreenlight') - self.bitcoinindiapool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitcoinindiapool') - self.ekanembtc: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'ekanembtc') - self.canoe: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'canoe') - self.tiger: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'tiger') - self.onem1x: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'onem1x') - self.zulupool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'zulupool') - self.secpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'secpool') - self.ocean: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'ocean') - self.whitepool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'whitepool') - self.wiz: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'wiz') - self.wk057: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'wk057') - self.futurebitapollosolo: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'futurebitapollosolo') - self.carbonnegative: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'carbonnegative') - self.portlandhodl: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'portlandhodl') - self.phoenix: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'phoenix') - self.neopool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'neopool') - self.maxipool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'maxipool') - self.bitfufupool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'bitfufupool') - self.gdpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'gdpool') - self.miningdutch: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'miningdutch') - self.publicpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'publicpool') - self.miningsquared: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'miningsquared') - self.innopolistech: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'innopolistech') - self.btclab: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'btclab') - self.parasite: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'parasite') - self.redrockpool: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'redrockpool') - self.est3lar: BlocksDominanceRewardsPattern = BlocksDominanceRewardsPattern(client, 'est3lar') + self.unknown: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'unknown') + self.ultimuspool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'ultimuspool') + self.terrapool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'terrapool') + self.luxor: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'luxor') + self.onethash: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'onethash') + self.btccom: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'btccom') + self.huobipool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'huobipool') + self.wayicn: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'wayicn') + self.canoepool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'canoepool') + self.btctop: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'btctop') + self.bitcoincom: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'bitcoincom') + self.gbminers: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'gbminers') + self.asicminer: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'asicminer') + self.bitminter: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'bitminter') + self.bitcoinrussia: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'bitcoinrussia') + self.btcguild: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'btcguild') + self.eligius: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'eligius') + self.ozcoin: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'ozcoin') + self.eclipsemc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'eclipsemc') + self.maxbtc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'maxbtc') + self.triplemining: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'triplemining') + self.coinlab: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'coinlab') + self.pool50btc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'pool50btc') + self.ghashio: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'ghashio') + self.bitparking: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'bitparking') + self.polmine: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'polmine') + self.kncminer: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'kncminer') + self.f2pool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'f2pool') + self.hhtt: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'hhtt') + self.megabigpower: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'megabigpower') + self.nmcbit: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'nmcbit') + self.yourbtcnet: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'yourbtcnet') + self.braiinspool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'braiinspool') + self.antpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'antpool') + self.kanopool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'kanopool') + self.solock: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'solock') + self.nicehash: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'nicehash') + self.bitclub: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'bitclub') + self.bitcoinaffiliatenetwork: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'bitcoinaffiliatenetwork') + self.btcc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'btcc') + self.bwpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'bwpool') + self.exxbw: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'exxbw') + self.bitfury: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'bitfury') + self.digitalbtc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'digitalbtc') + self.okexpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'okexpool') + self.bixin: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'bixin') + self.tatmaspool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'tatmaspool') + self.viabtc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'viabtc') + self.connectbtc: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'connectbtc') + self.batpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'batpool') + self.btpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'btpool') + self.fiftyeightcoin: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'fiftyeightcoin') + self.bitcoinindia: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'bitcoinindia') + self.dpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'dpool') + self.poolin: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'poolin') + self.secretsuperstar: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'secretsuperstar') + self.tigerpoolnet: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'tigerpoolnet') + self.sigmapoolcom: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'sigmapoolcom') + self.okpooltop: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'okpooltop') + self.tangpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'tangpool') + self.bytepool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'bytepool') + self.spiderpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'spiderpool') + self.novablock: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'novablock') + self.binancepool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'binancepool') + self.lubiancom: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'lubiancom') + self.okkong: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'okkong') + self.emcdpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'emcdpool') + self.foundryusa: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'foundryusa') + self.sbicrypto: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'sbicrypto') + self.marapool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'marapool') + self.kucoinpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'kucoinpool') + self.pegapool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'pegapool') + self.secpool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'secpool') + self.ocean: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'ocean') + self.whitepool: _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern = _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern(client, 'whitepool') + +class MetricsTree_Pools_Minor: + """Metrics tree node.""" + + def __init__(self, client: BrkClientBase, base_path: str = ''): + self.blockfills: BlocksDominancePattern = BlocksDominancePattern(client, 'blockfills') + self.bitfarms: BlocksDominancePattern = BlocksDominancePattern(client, 'bitfarms') + self.pool175btc: BlocksDominancePattern = BlocksDominancePattern(client, 'pool175btc') + self.axbt: BlocksDominancePattern = BlocksDominancePattern(client, 'axbt') + self.btcserv: BlocksDominancePattern = BlocksDominancePattern(client, 'btcserv') + self.simplecoinus: BlocksDominancePattern = BlocksDominancePattern(client, 'simplecoinus') + self.stminingcorp: BlocksDominancePattern = BlocksDominancePattern(client, 'stminingcorp') + self.mmpool: BlocksDominancePattern = BlocksDominancePattern(client, 'mmpool') + self.bitalo: BlocksDominancePattern = BlocksDominancePattern(client, 'bitalo') + self.mtred: BlocksDominancePattern = BlocksDominancePattern(client, 'mtred') + self.givemecoins: BlocksDominancePattern = BlocksDominancePattern(client, 'givemecoins') + self.multicoinco: BlocksDominancePattern = BlocksDominancePattern(client, 'multicoinco') + self.bcpoolio: BlocksDominancePattern = BlocksDominancePattern(client, 'bcpoolio') + self.cointerra: BlocksDominancePattern = BlocksDominancePattern(client, 'cointerra') + self.ckpool: BlocksDominancePattern = BlocksDominancePattern(client, 'ckpool') + self.bitsolo: BlocksDominancePattern = BlocksDominancePattern(client, 'bitsolo') + self.twentyoneinc: BlocksDominancePattern = BlocksDominancePattern(client, 'twentyoneinc') + self.eightbaochi: BlocksDominancePattern = BlocksDominancePattern(client, 'eightbaochi') + self.mybtccoinpool: BlocksDominancePattern = BlocksDominancePattern(client, 'mybtccoinpool') + self.tbdice: BlocksDominancePattern = BlocksDominancePattern(client, 'tbdice') + self.hashpool: BlocksDominancePattern = BlocksDominancePattern(client, 'hashpool') + self.nexious: BlocksDominancePattern = BlocksDominancePattern(client, 'nexious') + self.bravomining: BlocksDominancePattern = BlocksDominancePattern(client, 'bravomining') + self.hotpool: BlocksDominancePattern = BlocksDominancePattern(client, 'hotpool') + self.bcmonster: BlocksDominancePattern = BlocksDominancePattern(client, 'bcmonster') + self.onehash: BlocksDominancePattern = BlocksDominancePattern(client, 'onehash') + self.waterhole: BlocksDominancePattern = BlocksDominancePattern(client, 'waterhole') + self.dcexploration: BlocksDominancePattern = BlocksDominancePattern(client, 'dcexploration') + self.dcex: BlocksDominancePattern = BlocksDominancePattern(client, 'dcex') + self.shawnp0wers: BlocksDominancePattern = BlocksDominancePattern(client, 'shawnp0wers') + self.phashio: BlocksDominancePattern = BlocksDominancePattern(client, 'phashio') + self.rigpool: BlocksDominancePattern = BlocksDominancePattern(client, 'rigpool') + self.haozhuzhu: BlocksDominancePattern = BlocksDominancePattern(client, 'haozhuzhu') + self.sevenpool: BlocksDominancePattern = BlocksDominancePattern(client, 'sevenpool') + self.miningkings: BlocksDominancePattern = BlocksDominancePattern(client, 'miningkings') + self.hashbx: BlocksDominancePattern = BlocksDominancePattern(client, 'hashbx') + self.rawpool: BlocksDominancePattern = BlocksDominancePattern(client, 'rawpool') + self.haominer: BlocksDominancePattern = BlocksDominancePattern(client, 'haominer') + self.helix: BlocksDominancePattern = BlocksDominancePattern(client, 'helix') + self.bitcoinukraine: BlocksDominancePattern = BlocksDominancePattern(client, 'bitcoinukraine') + self.hummerpool: BlocksDominancePattern = BlocksDominancePattern(client, 'hummerpool') + self.miningcity: BlocksDominancePattern = BlocksDominancePattern(client, 'miningcity') + self.minerium: BlocksDominancePattern = BlocksDominancePattern(client, 'minerium') + self.aaopool: BlocksDominancePattern = BlocksDominancePattern(client, 'aaopool') + self.arkpool: BlocksDominancePattern = BlocksDominancePattern(client, 'arkpool') + self.purebtccom: BlocksDominancePattern = BlocksDominancePattern(client, 'purebtccom') + self.entrustcharitypool: BlocksDominancePattern = BlocksDominancePattern(client, 'entrustcharitypool') + self.okminer: BlocksDominancePattern = BlocksDominancePattern(client, 'okminer') + self.titan: BlocksDominancePattern = BlocksDominancePattern(client, 'titan') + self.btcnuggets: BlocksDominancePattern = BlocksDominancePattern(client, 'btcnuggets') + self.cloudhashing: BlocksDominancePattern = BlocksDominancePattern(client, 'cloudhashing') + self.digitalxmintsy: BlocksDominancePattern = BlocksDominancePattern(client, 'digitalxmintsy') + self.telco214: BlocksDominancePattern = BlocksDominancePattern(client, 'telco214') + self.btcpoolparty: BlocksDominancePattern = BlocksDominancePattern(client, 'btcpoolparty') + self.multipool: BlocksDominancePattern = BlocksDominancePattern(client, 'multipool') + self.transactioncoinmining: BlocksDominancePattern = BlocksDominancePattern(client, 'transactioncoinmining') + self.btcdig: BlocksDominancePattern = BlocksDominancePattern(client, 'btcdig') + self.trickysbtcpool: BlocksDominancePattern = BlocksDominancePattern(client, 'trickysbtcpool') + self.btcmp: BlocksDominancePattern = BlocksDominancePattern(client, 'btcmp') + self.eobot: BlocksDominancePattern = BlocksDominancePattern(client, 'eobot') + self.unomp: BlocksDominancePattern = BlocksDominancePattern(client, 'unomp') + self.patels: BlocksDominancePattern = BlocksDominancePattern(client, 'patels') + self.gogreenlight: BlocksDominancePattern = BlocksDominancePattern(client, 'gogreenlight') + self.bitcoinindiapool: BlocksDominancePattern = BlocksDominancePattern(client, 'bitcoinindiapool') + self.ekanembtc: BlocksDominancePattern = BlocksDominancePattern(client, 'ekanembtc') + self.canoe: BlocksDominancePattern = BlocksDominancePattern(client, 'canoe') + self.tiger: BlocksDominancePattern = BlocksDominancePattern(client, 'tiger') + self.onem1x: BlocksDominancePattern = BlocksDominancePattern(client, 'onem1x') + self.zulupool: BlocksDominancePattern = BlocksDominancePattern(client, 'zulupool') + self.wiz: BlocksDominancePattern = BlocksDominancePattern(client, 'wiz') + self.wk057: BlocksDominancePattern = BlocksDominancePattern(client, 'wk057') + self.futurebitapollosolo: BlocksDominancePattern = BlocksDominancePattern(client, 'futurebitapollosolo') + self.carbonnegative: BlocksDominancePattern = BlocksDominancePattern(client, 'carbonnegative') + self.portlandhodl: BlocksDominancePattern = BlocksDominancePattern(client, 'portlandhodl') + self.phoenix: BlocksDominancePattern = BlocksDominancePattern(client, 'phoenix') + self.neopool: BlocksDominancePattern = BlocksDominancePattern(client, 'neopool') + self.maxipool: BlocksDominancePattern = BlocksDominancePattern(client, 'maxipool') + self.bitfufupool: BlocksDominancePattern = BlocksDominancePattern(client, 'bitfufupool') + self.gdpool: BlocksDominancePattern = BlocksDominancePattern(client, 'gdpool') + self.miningdutch: BlocksDominancePattern = BlocksDominancePattern(client, 'miningdutch') + self.publicpool: BlocksDominancePattern = BlocksDominancePattern(client, 'publicpool') + self.miningsquared: BlocksDominancePattern = BlocksDominancePattern(client, 'miningsquared') + self.innopolistech: BlocksDominancePattern = BlocksDominancePattern(client, 'innopolistech') + self.btclab: BlocksDominancePattern = BlocksDominancePattern(client, 'btclab') + self.parasite: BlocksDominancePattern = BlocksDominancePattern(client, 'parasite') + self.redrockpool: BlocksDominancePattern = BlocksDominancePattern(client, 'redrockpool') + self.est3lar: BlocksDominancePattern = BlocksDominancePattern(client, 'est3lar') class MetricsTree_Pools: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): self.height_to_pool: MetricPattern18[PoolSlug] = MetricPattern18(client, 'pool') - self.vecs: MetricsTree_Pools_Vecs = MetricsTree_Pools_Vecs(client) + self.major: MetricsTree_Pools_Major = MetricsTree_Pools_Major(client) + self.minor: MetricsTree_Pools_Minor = MetricsTree_Pools_Minor(client) class MetricsTree_Prices_Split_Close: """Metrics tree node.""" @@ -4214,15 +4248,15 @@ class MetricsTree_Distribution_UtxoCohorts_All_Relative: """Metrics tree node.""" def __init__(self, client: BrkClientBase, base_path: str = ''): - self.invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'invested_capital_in_profit_rel_to_realized_cap') - self.invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'invested_capital_in_loss_rel_to_realized_cap') - self.supply_in_profit_rel_to_own_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'supply_in_profit_rel_to_own_supply') - self.supply_in_loss_rel_to_own_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'supply_in_loss_rel_to_own_supply') self.unrealized_profit_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'unrealized_profit_rel_to_market_cap') self.unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'unrealized_loss_rel_to_market_cap') self.net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'net_unrealized_pnl_rel_to_market_cap') self.neg_unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'neg_unrealized_loss_rel_to_market_cap') self.nupl: MetricPattern1[StoredF32] = MetricPattern1(client, 'nupl') + self.invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'invested_capital_in_profit_rel_to_realized_cap') + self.invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'invested_capital_in_loss_rel_to_realized_cap') + self.supply_in_profit_rel_to_own_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'supply_in_profit_rel_to_own_supply') + self.supply_in_loss_rel_to_own_supply: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'supply_in_loss_rel_to_own_supply') self.unrealized_profit_rel_to_own_gross_pnl: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'unrealized_profit_rel_to_own_gross_pnl') self.unrealized_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'unrealized_loss_rel_to_own_gross_pnl') self.neg_unrealized_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'neg_unrealized_loss_rel_to_own_gross_pnl')