global: snapshot

This commit is contained in:
nym21
2026-03-07 11:42:11 +01:00
parent 5a73f1a88e
commit bf07570848
31 changed files with 1151 additions and 1009 deletions
+315 -299
View File
@@ -1127,108 +1127,6 @@ impl _0sdM0M1M1sdM2M2sdM3sdP0P1P1sdP2P2sdP3sdSdSmaZscorePattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct InvestedNegNetNuplSupplyUnrealizedPattern3 {
pub invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern,
pub invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern,
pub neg_unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern,
pub neg_unrealized_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern,
pub neg_unrealized_loss_rel_to_own_market_cap: BpsPercentRatioPattern,
pub net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern,
pub net_unrealized_pnl_rel_to_own_gross_pnl: BpsPercentRatioPattern,
pub net_unrealized_pnl_rel_to_own_market_cap: BpsPercentRatioPattern,
pub nupl: MetricPattern1<StoredF32>,
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_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern,
pub unrealized_loss_rel_to_own_market_cap: BpsPercentRatioPattern,
pub unrealized_profit_rel_to_market_cap: BpsPercentRatioPattern,
pub unrealized_profit_rel_to_own_gross_pnl: BpsPercentRatioPattern,
pub unrealized_profit_rel_to_own_market_cap: BpsPercentRatioPattern,
}
impl InvestedNegNetNuplSupplyUnrealizedPattern3 {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "invested_capital_in_loss_rel_to_realized_cap")),
invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "invested_capital_in_profit_rel_to_realized_cap")),
neg_unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_market_cap")),
neg_unrealized_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_gross_pnl")),
neg_unrealized_loss_rel_to_own_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_market_cap")),
net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_market_cap")),
net_unrealized_pnl_rel_to_own_gross_pnl: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_gross_pnl")),
net_unrealized_pnl_rel_to_own_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_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_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_gross_pnl")),
unrealized_loss_rel_to_own_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_market_cap")),
unrealized_profit_rel_to_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_market_cap")),
unrealized_profit_rel_to_own_gross_pnl: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_gross_pnl")),
unrealized_profit_rel_to_own_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_market_cap")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct GrossMvrvNegNetRealizedSentSoprValuePattern {
pub gross_pnl: CentsUsdPattern,
pub mvrv: MetricPattern1<StoredF32>,
pub neg_realized_loss: MetricPattern1<Dollars>,
pub net_realized_pnl: CumulativeHeightPattern<CentsSigned>,
pub realized_cap: MetricPattern1<Dollars>,
pub realized_cap_cents: MetricPattern1<Cents>,
pub realized_cap_change_1m: MetricPattern1<CentsSigned>,
pub realized_loss: CumulativeHeightPattern<Cents>,
pub realized_price: CentsSatsUsdPattern,
pub realized_price_ratio: BpsRatioPattern,
pub realized_price_ratio_percentiles: RatioPattern,
pub realized_profit: CumulativeHeightPattern<Cents>,
pub sent_in_loss: BaseCumulativePattern,
pub sent_in_profit: BaseCumulativePattern,
pub sopr: _1m1w1y24hPattern<StoredF64>,
pub value_created: MetricPattern1<Cents>,
pub value_created_sum: _1m1w1y24hPattern<Cents>,
pub value_destroyed: MetricPattern1<Cents>,
pub value_destroyed_sum: _1m1w1y24hPattern<Cents>,
}
impl GrossMvrvNegNetRealizedSentSoprValuePattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, 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,
@@ -1279,6 +1177,98 @@ impl Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75
}
}
/// Pattern struct for repeated tree structure.
pub struct InvestedNetNuplSupplyUnrealizedPattern3 {
pub invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern,
pub invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern,
pub net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern,
pub net_unrealized_pnl_rel_to_own_gross_pnl: BpsPercentRatioPattern,
pub net_unrealized_pnl_rel_to_own_market_cap: BpsPercentRatioPattern,
pub nupl: MetricPattern1<StoredF32>,
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_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern,
pub unrealized_loss_rel_to_own_market_cap: BpsPercentRatioPattern,
pub unrealized_profit_rel_to_market_cap: BpsPercentRatioPattern,
pub unrealized_profit_rel_to_own_gross_pnl: BpsPercentRatioPattern,
pub unrealized_profit_rel_to_own_market_cap: BpsPercentRatioPattern,
}
impl InvestedNetNuplSupplyUnrealizedPattern3 {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "invested_capital_in_loss_rel_to_realized_cap")),
invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "invested_capital_in_profit_rel_to_realized_cap")),
net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_market_cap")),
net_unrealized_pnl_rel_to_own_gross_pnl: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_gross_pnl")),
net_unrealized_pnl_rel_to_own_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_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_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_gross_pnl")),
unrealized_loss_rel_to_own_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_market_cap")),
unrealized_profit_rel_to_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_market_cap")),
unrealized_profit_rel_to_own_gross_pnl: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_gross_pnl")),
unrealized_profit_rel_to_own_market_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_market_cap")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct MvrvNegNetRealizedSentSoprValuePattern {
pub mvrv: MetricPattern1<StoredF32>,
pub neg_realized_loss: MetricPattern1<Dollars>,
pub net_realized_pnl: CumulativeHeightPattern<CentsSigned>,
pub realized_cap: MetricPattern1<Dollars>,
pub realized_cap_cents: MetricPattern1<Cents>,
pub realized_cap_change_1m: MetricPattern1<CentsSigned>,
pub realized_loss: CumulativeHeightPattern<Cents>,
pub realized_price: CentsSatsUsdPattern,
pub realized_price_ratio: BpsRatioPattern,
pub realized_profit: CumulativeHeightPattern<Cents>,
pub sent_in_loss: BaseCumulativePattern,
pub sent_in_profit: BaseCumulativePattern,
pub sopr: _1m1w1y24hPattern<StoredF64>,
pub value_created: MetricPattern1<Cents>,
pub value_created_sum: _1m1w1y24hPattern<Cents>,
pub value_destroyed: MetricPattern1<Cents>,
pub value_destroyed_sum: _1m1w1y24hPattern<Cents>,
}
impl MvrvNegNetRealizedSentSoprValuePattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
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_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 BpsRatioPattern2 {
pub bps: MetricPattern1<BasisPoints32>,
@@ -1479,42 +1469,6 @@ impl _10y1m1w1y2y3m3y4y5y6m6y8yPattern3 {
}
}
/// Pattern struct for repeated tree structure.
pub struct InvestedNegNetNuplSupplyUnrealizedPattern {
pub invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern,
pub invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern,
pub neg_unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern,
pub net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern,
pub nupl: MetricPattern1<StoredF32>,
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 InvestedNegNetNuplSupplyUnrealizedPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "invested_capital_in_loss_rel_to_realized_cap")),
invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "invested_capital_in_profit_rel_to_realized_cap")),
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 _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern {
pub _1m: BpsPercentRatioPattern,
@@ -1617,6 +1571,40 @@ impl AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct InvestedNetNuplSupplyUnrealizedPattern {
pub invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern,
pub invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern,
pub net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern,
pub nupl: MetricPattern1<StoredF32>,
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 InvestedNetNuplSupplyUnrealizedPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "invested_capital_in_loss_rel_to_realized_cap")),
invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "invested_capital_in_profit_rel_to_realized_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 AverageGainsLossesRsiStochPattern {
pub average_gain: MetricPattern1<StoredF32>,
@@ -1709,6 +1697,36 @@ impl AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2 {
}
}
/// Pattern struct for repeated tree structure.
pub struct AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern {
pub average: _1m1w1y24hPattern<BasisPoints16>,
pub height: MetricPattern18<BasisPoints16>,
pub max: _1m1w1y24hPattern<BasisPoints16>,
pub median: _1m1w1y24hPattern<BasisPoints16>,
pub min: _1m1w1y24hPattern<BasisPoints16>,
pub pct10: _1m1w1y24hPattern<BasisPoints16>,
pub pct25: _1m1w1y24hPattern<BasisPoints16>,
pub pct75: _1m1w1y24hPattern<BasisPoints16>,
pub pct90: _1m1w1y24hPattern<BasisPoints16>,
}
impl AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
average: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "average")),
height: MetricPattern18::new(client.clone(), acc.clone()),
max: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "max")),
median: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "median")),
min: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "min")),
pct10: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "p10")),
pct25: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "p25")),
pct75: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "p75")),
pct90: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "p90")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern {
pub average: _1m1w1y24hPattern<StoredU64>,
@@ -1739,36 +1757,6 @@ impl AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<T> {
pub average: _1m1w1y24hPattern<T>,
pub height: MetricPattern18<T>,
pub max: _1m1w1y24hPattern<T>,
pub median: _1m1w1y24hPattern<T>,
pub min: _1m1w1y24hPattern<T>,
pub pct10: _1m1w1y24hPattern<T>,
pub pct25: _1m1w1y24hPattern<T>,
pub pct75: _1m1w1y24hPattern<T>,
pub pct90: _1m1w1y24hPattern<T>,
}
impl<T: DeserializeOwned> AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<T> {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
average: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "average")),
height: MetricPattern18::new(client.clone(), acc.clone()),
max: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "max")),
median: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "median")),
min: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "min")),
pct10: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "p10")),
pct25: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "p25")),
pct75: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "p75")),
pct90: _1m1w1y24hPattern::new(client.clone(), _m(&acc, "p90")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _1m1w1y24hBtcCentsSatsUsdPattern {
pub _1m: BtcCentsSatsUsdPattern,
@@ -1884,8 +1872,8 @@ pub struct ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern {
pub activity: CoinblocksCoindaysSentPattern,
pub cost_basis: MaxMinPattern,
pub outputs: UtxoPattern,
pub realized: GrossMvrvNegNetRealizedSentSoprValuePattern,
pub relative: InvestedNegNetNuplSupplyUnrealizedPattern,
pub realized: MvrvNegNetRealizedSentSoprValuePattern,
pub relative: InvestedNetNuplSupplyUnrealizedPattern,
pub supply: ChangeHalvedTotalPattern,
pub unrealized: GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern,
}
@@ -1897,40 +1885,14 @@ impl ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern {
activity: CoinblocksCoindaysSentPattern::new(client.clone(), acc.clone()),
cost_basis: MaxMinPattern::new(client.clone(), _m(&acc, "cost_basis")),
outputs: UtxoPattern::new(client.clone(), _m(&acc, "utxo_count")),
realized: GrossMvrvNegNetRealizedSentSoprValuePattern::new(client.clone(), acc.clone()),
relative: InvestedNegNetNuplSupplyUnrealizedPattern::new(client.clone(), acc.clone()),
realized: MvrvNegNetRealizedSentSoprValuePattern::new(client.clone(), acc.clone()),
relative: InvestedNetNuplSupplyUnrealizedPattern::new(client.clone(), acc.clone()),
supply: ChangeHalvedTotalPattern::new(client.clone(), _m(&acc, "supply")),
unrealized: GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct GrossNegNetSupplyUnrealizedPattern {
pub gross_pnl: CentsUsdPattern,
pub neg_unrealized_loss: MetricPattern1<Dollars>,
pub net_unrealized_pnl: CentsUsdPattern,
pub supply_in_loss: BtcCentsSatsUsdPattern,
pub supply_in_profit: BtcCentsSatsUsdPattern,
pub unrealized_loss: CentsUsdPattern,
pub unrealized_profit: CentsUsdPattern,
}
impl GrossNegNetSupplyUnrealizedPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
gross_pnl: CentsUsdPattern::new(client.clone(), _m(&acc, "unrealized_gross_pnl")),
neg_unrealized_loss: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss")),
net_unrealized_pnl: CentsUsdPattern::new(client.clone(), _m(&acc, "net_unrealized_pnl")),
supply_in_loss: BtcCentsSatsUsdPattern::new(client.clone(), _m(&acc, "supply_in_loss")),
supply_in_profit: BtcCentsSatsUsdPattern::new(client.clone(), _m(&acc, "supply_in_profit")),
unrealized_loss: CentsUsdPattern::new(client.clone(), _m(&acc, "unrealized_loss")),
unrealized_profit: CentsUsdPattern::new(client.clone(), _m(&acc, "unrealized_profit")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct MvrvRealizedPattern {
pub mvrv: MetricPattern1<StoredF32>,
@@ -1957,38 +1919,14 @@ impl MvrvRealizedPattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct _1m1w1y24hBaseCumulativePattern {
pub _1m: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2,
pub _1w: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2,
pub _1y: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2,
pub _24h: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2,
pub base: BtcCentsSatsUsdPattern,
pub cumulative: BtcCentsSatsUsdPattern,
}
impl _1m1w1y24hBaseCumulativePattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
_1m: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2::new(client.clone(), _m(&acc, "1m")),
_1w: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2::new(client.clone(), _m(&acc, "1w")),
_1y: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2::new(client.clone(), _m(&acc, "1y")),
_24h: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2::new(client.clone(), _m(&acc, "24h")),
base: BtcCentsSatsUsdPattern::new(client.clone(), acc.clone()),
cumulative: BtcCentsSatsUsdPattern::new(client.clone(), _m(&acc, "cumulative")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 {
pub activity: SentPattern,
pub outputs: UtxoPattern,
pub realized: GrossMvrvNegNetRealizedSentSoprValuePattern,
pub realized: MvrvNegNetRealizedSentSoprValuePattern,
pub relative: SupplyPattern3,
pub supply: ChangeHalvedTotalPattern,
pub unrealized: GrossNegNetSupplyUnrealizedPattern,
pub unrealized: NegNetSupplyUnrealizedPattern,
}
impl ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 {
@@ -1997,10 +1935,10 @@ impl ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2 {
Self {
activity: SentPattern::new(client.clone(), _m(&acc, "sent")),
outputs: UtxoPattern::new(client.clone(), _m(&acc, "utxo_count")),
realized: GrossMvrvNegNetRealizedSentSoprValuePattern::new(client.clone(), acc.clone()),
realized: MvrvNegNetRealizedSentSoprValuePattern::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()),
unrealized: NegNetSupplyUnrealizedPattern::new(client.clone(), acc.clone()),
}
}
}
@@ -2030,25 +1968,25 @@ impl ActivityOutputsRealizedRelativeSupplyUnrealizedPattern {
}
/// Pattern struct for repeated tree structure.
pub struct BalanceBothReactivatedReceivingSendingPattern {
pub balance_decreased: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<StoredU32>,
pub balance_increased: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<StoredU32>,
pub both: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<StoredU32>,
pub reactivated: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<StoredU32>,
pub receiving: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<StoredU32>,
pub sending: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<StoredU32>,
pub struct NegNetSupplyUnrealizedPattern {
pub neg_unrealized_loss: MetricPattern1<Dollars>,
pub net_unrealized_pnl: CentsUsdPattern,
pub supply_in_loss: BtcCentsSatsUsdPattern,
pub supply_in_profit: BtcCentsSatsUsdPattern,
pub unrealized_loss: CentsUsdPattern,
pub unrealized_profit: CentsUsdPattern,
}
impl BalanceBothReactivatedReceivingSendingPattern {
impl NegNetSupplyUnrealizedPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
balance_decreased: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern::new(client.clone(), _m(&acc, "balance_decreased")),
balance_increased: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern::new(client.clone(), _m(&acc, "balance_increased")),
both: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern::new(client.clone(), _m(&acc, "both")),
reactivated: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern::new(client.clone(), _m(&acc, "reactivated")),
receiving: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern::new(client.clone(), _m(&acc, "receiving")),
sending: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern::new(client.clone(), _m(&acc, "sending")),
neg_unrealized_loss: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss")),
net_unrealized_pnl: CentsUsdPattern::new(client.clone(), _m(&acc, "net_unrealized_pnl")),
supply_in_loss: BtcCentsSatsUsdPattern::new(client.clone(), _m(&acc, "supply_in_loss")),
supply_in_profit: BtcCentsSatsUsdPattern::new(client.clone(), _m(&acc, "supply_in_profit")),
unrealized_loss: CentsUsdPattern::new(client.clone(), _m(&acc, "unrealized_loss")),
unrealized_profit: CentsUsdPattern::new(client.clone(), _m(&acc, "unrealized_profit")),
}
}
}
@@ -2119,6 +2057,28 @@ impl SupplyPattern3 {
}
}
/// Pattern struct for repeated tree structure.
pub struct _1m1w1y24hHeightPattern<T> {
pub _1m: MetricPattern1<T>,
pub _1w: MetricPattern1<T>,
pub _1y: MetricPattern1<T>,
pub _24h: MetricPattern1<T>,
pub height: MetricPattern18<T>,
}
impl<T: DeserializeOwned> _1m1w1y24hHeightPattern<T> {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
_1m: MetricPattern1::new(client.clone(), _m(&acc, "average_1m")),
_1w: MetricPattern1::new(client.clone(), _m(&acc, "average_1w")),
_1y: MetricPattern1::new(client.clone(), _m(&acc, "average_1y")),
_24h: MetricPattern1::new(client.clone(), _m(&acc, "average_24h")),
height: MetricPattern18::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _1m1w1y24hPattern6 {
pub _1m: BaseBtcCentsSatsUsdPattern,
@@ -2179,6 +2139,26 @@ impl _1m1w1y24hPattern5 {
}
}
/// Pattern struct for repeated tree structure.
pub struct BothReactivatedReceivingSendingPattern {
pub both: _1m1w1y24hHeightPattern<StoredU32>,
pub reactivated: _1m1w1y24hHeightPattern<StoredU32>,
pub receiving: _1m1w1y24hHeightPattern<StoredU32>,
pub sending: _1m1w1y24hHeightPattern<StoredU32>,
}
impl BothReactivatedReceivingSendingPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
both: _1m1w1y24hHeightPattern::new(client.clone(), _m(&acc, "both")),
reactivated: _1m1w1y24hHeightPattern::new(client.clone(), _m(&acc, "reactivated")),
receiving: _1m1w1y24hHeightPattern::new(client.clone(), _m(&acc, "receiving")),
sending: _1m1w1y24hHeightPattern::new(client.clone(), _m(&acc, "sending")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct BtcCentsSatsUsdPattern {
pub btc: MetricPattern1<Bitcoin>,
@@ -2298,13 +2278,13 @@ impl BaseCumulativeSumPattern {
}
/// Pattern struct for repeated tree structure.
pub struct BpsPercentRatioPattern2 {
pub bps: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<BasisPoints16>,
pub struct BpsPercentRatioPattern3 {
pub bps: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern,
pub percent: MetricPattern1<StoredF32>,
pub ratio: MetricPattern1<StoredF32>,
}
impl BpsPercentRatioPattern2 {
impl BpsPercentRatioPattern3 {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
@@ -2732,11 +2712,11 @@ pub struct MetricsTree_Blocks {
pub total_size: MetricPattern18<StoredU64>,
pub weight: MetricsTree_Blocks_Weight,
pub count: MetricsTree_Blocks_Count,
pub interval: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<Timestamp>,
pub interval: _1m1w1y24hHeightPattern<Timestamp>,
pub halving: MetricsTree_Blocks_Halving,
pub vbytes: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern,
pub size: MetricsTree_Blocks_Size,
pub fullness: BpsPercentRatioPattern2,
pub fullness: MetricsTree_Blocks_Fullness,
}
impl MetricsTree_Blocks {
@@ -2748,11 +2728,11 @@ impl MetricsTree_Blocks {
total_size: MetricPattern18::new(client.clone(), "total_size".to_string()),
weight: MetricsTree_Blocks_Weight::new(client.clone(), format!("{base_path}_weight")),
count: MetricsTree_Blocks_Count::new(client.clone(), format!("{base_path}_count")),
interval: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern::new(client.clone(), "block_interval".to_string()),
interval: _1m1w1y24hHeightPattern::new(client.clone(), "block_interval".to_string()),
halving: MetricsTree_Blocks_Halving::new(client.clone(), format!("{base_path}_halving")),
vbytes: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern::new(client.clone(), "block_vbytes".to_string()),
size: MetricsTree_Blocks_Size::new(client.clone(), format!("{base_path}_size")),
fullness: BpsPercentRatioPattern2::new(client.clone(), "block_fullness".to_string()),
fullness: MetricsTree_Blocks_Fullness::new(client.clone(), format!("{base_path}_fullness")),
}
}
}
@@ -2981,6 +2961,23 @@ impl MetricsTree_Blocks_Size {
}
}
/// Metrics tree node.
pub struct MetricsTree_Blocks_Fullness {
pub bps: _1m1w1y24hHeightPattern<BasisPoints16>,
pub ratio: MetricPattern1<StoredF32>,
pub percent: MetricPattern1<StoredF32>,
}
impl MetricsTree_Blocks_Fullness {
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
Self {
bps: _1m1w1y24hHeightPattern::new(client.clone(), "block_fullness_bps".to_string()),
ratio: MetricPattern1::new(client.clone(), "block_fullness_ratio".to_string()),
percent: MetricPattern1::new(client.clone(), "block_fullness".to_string()),
}
}
}
/// Metrics tree node.
pub struct MetricsTree_Transactions {
pub first_txindex: MetricPattern18<TxIndex>,
@@ -3319,13 +3316,13 @@ impl MetricsTree_Scripts_Count {
/// Metrics tree node.
pub struct MetricsTree_Scripts_Value {
pub opreturn: _1m1w1y24hBaseCumulativePattern,
pub opreturn: BaseCumulativePattern,
}
impl MetricsTree_Scripts_Value {
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
Self {
opreturn: _1m1w1y24hBaseCumulativePattern::new(client.clone(), "opreturn_value".to_string()),
opreturn: BaseCumulativePattern::new(client.clone(), "opreturn_value".to_string()),
}
}
}
@@ -3362,9 +3359,9 @@ impl MetricsTree_Mining {
/// Metrics tree node.
pub struct MetricsTree_Mining_Rewards {
pub coinbase: _1m1w1y24hBaseCumulativePattern,
pub subsidy: _1m1w1y24hBaseCumulativePattern,
pub fees: _1m1w1y24hBaseCumulativePattern,
pub coinbase: BaseCumulativeSumPattern,
pub subsidy: BaseCumulativePattern,
pub fees: MetricsTree_Mining_Rewards_Fees,
pub unclaimed_rewards: BaseCumulativeSumPattern,
pub fee_dominance: BpsPercentRatioPattern,
pub fee_dominance_rolling: _1m1w1y24hPattern2,
@@ -3376,9 +3373,9 @@ pub struct MetricsTree_Mining_Rewards {
impl MetricsTree_Mining_Rewards {
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
Self {
coinbase: _1m1w1y24hBaseCumulativePattern::new(client.clone(), "coinbase".to_string()),
subsidy: _1m1w1y24hBaseCumulativePattern::new(client.clone(), "subsidy".to_string()),
fees: _1m1w1y24hBaseCumulativePattern::new(client.clone(), "fees".to_string()),
coinbase: BaseCumulativeSumPattern::new(client.clone(), "coinbase".to_string()),
subsidy: BaseCumulativePattern::new(client.clone(), "subsidy".to_string()),
fees: MetricsTree_Mining_Rewards_Fees::new(client.clone(), format!("{base_path}_fees")),
unclaimed_rewards: BaseCumulativeSumPattern::new(client.clone(), "unclaimed_rewards".to_string()),
fee_dominance: BpsPercentRatioPattern::new(client.clone(), "fee_dominance".to_string()),
fee_dominance_rolling: _1m1w1y24hPattern2::new(client.clone(), "fee_dominance".to_string()),
@@ -3389,6 +3386,29 @@ impl MetricsTree_Mining_Rewards {
}
}
/// Metrics tree node.
pub struct MetricsTree_Mining_Rewards_Fees {
pub base: BtcCentsSatsUsdPattern,
pub cumulative: BtcCentsSatsUsdPattern,
pub _24h: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2,
pub _1w: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2,
pub _1m: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2,
pub _1y: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2,
}
impl MetricsTree_Mining_Rewards_Fees {
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
Self {
base: BtcCentsSatsUsdPattern::new(client.clone(), "fees".to_string()),
cumulative: BtcCentsSatsUsdPattern::new(client.clone(), "fees_cumulative".to_string()),
_24h: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2::new(client.clone(), "fees_24h".to_string()),
_1w: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2::new(client.clone(), "fees_1w".to_string()),
_1m: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2::new(client.clone(), "fees_1m".to_string()),
_1y: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2::new(client.clone(), "fees_1y".to_string()),
}
}
}
/// Metrics tree node.
pub struct MetricsTree_Mining_Hashrate {
pub hash_rate: MetricPattern1<StoredF64>,
@@ -5552,7 +5572,6 @@ pub struct MetricsTree_Distribution_UtxoCohorts_All_Relative {
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<StoredF32>,
pub invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern,
pub invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern,
@@ -5560,7 +5579,6 @@ pub struct MetricsTree_Distribution_UtxoCohorts_All_Relative {
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,
pub net_unrealized_pnl_rel_to_own_gross_pnl: BpsPercentRatioPattern,
}
@@ -5570,7 +5588,6 @@ impl MetricsTree_Distribution_UtxoCohorts_All_Relative {
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()),
@@ -5578,7 +5595,6 @@ impl MetricsTree_Distribution_UtxoCohorts_All_Relative {
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()),
net_unrealized_pnl_rel_to_own_gross_pnl: BpsPercentRatioPattern::new(client.clone(), "net_unrealized_pnl_rel_to_own_gross_pnl".to_string()),
}
}
@@ -5592,7 +5608,7 @@ pub struct MetricsTree_Distribution_UtxoCohorts_Sth {
pub realized: CapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprUpperValuePattern,
pub cost_basis: InvestedMaxMinPercentilesPattern,
pub unrealized: GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern,
pub relative: InvestedNegNetNuplSupplyUnrealizedPattern3,
pub relative: InvestedNetNuplSupplyUnrealizedPattern3,
pub dormancy: MetricPattern1<StoredF32>,
pub velocity: MetricPattern1<StoredF32>,
pub adjusted_value_created: MetricPattern1<Cents>,
@@ -5612,7 +5628,7 @@ impl MetricsTree_Distribution_UtxoCohorts_Sth {
realized: CapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprUpperValuePattern::new(client.clone(), "sth".to_string()),
cost_basis: InvestedMaxMinPercentilesPattern::new(client.clone(), "sth".to_string()),
unrealized: GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern::new(client.clone(), "sth".to_string()),
relative: InvestedNegNetNuplSupplyUnrealizedPattern3::new(client.clone(), "sth".to_string()),
relative: InvestedNetNuplSupplyUnrealizedPattern3::new(client.clone(), "sth".to_string()),
dormancy: MetricPattern1::new(client.clone(), "sth_dormancy".to_string()),
velocity: MetricPattern1::new(client.clone(), "sth_velocity".to_string()),
adjusted_value_created: MetricPattern1::new(client.clone(), "sth_adjusted_value_created".to_string()),
@@ -5633,7 +5649,7 @@ pub struct MetricsTree_Distribution_UtxoCohorts_Lth {
pub realized: CapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprUpperValuePattern,
pub cost_basis: InvestedMaxMinPercentilesPattern,
pub unrealized: GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern,
pub relative: InvestedNegNetNuplSupplyUnrealizedPattern3,
pub relative: InvestedNetNuplSupplyUnrealizedPattern3,
pub dormancy: MetricPattern1<StoredF32>,
pub velocity: MetricPattern1<StoredF32>,
}
@@ -5647,7 +5663,7 @@ impl MetricsTree_Distribution_UtxoCohorts_Lth {
realized: CapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprUpperValuePattern::new(client.clone(), "lth".to_string()),
cost_basis: InvestedMaxMinPercentilesPattern::new(client.clone(), "lth".to_string()),
unrealized: GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern::new(client.clone(), "lth".to_string()),
relative: InvestedNegNetNuplSupplyUnrealizedPattern3::new(client.clone(), "lth".to_string()),
relative: InvestedNetNuplSupplyUnrealizedPattern3::new(client.clone(), "lth".to_string()),
dormancy: MetricPattern1::new(client.clone(), "lth_dormancy".to_string()),
velocity: MetricPattern1::new(client.clone(), "lth_velocity".to_string()),
}
@@ -6151,29 +6167,29 @@ impl MetricsTree_Distribution_AddressCohorts_LtAmount {
/// Metrics tree node.
pub struct MetricsTree_Distribution_AddressActivity {
pub all: BalanceBothReactivatedReceivingSendingPattern,
pub p2pk65: BalanceBothReactivatedReceivingSendingPattern,
pub p2pk33: BalanceBothReactivatedReceivingSendingPattern,
pub p2pkh: BalanceBothReactivatedReceivingSendingPattern,
pub p2sh: BalanceBothReactivatedReceivingSendingPattern,
pub p2wpkh: BalanceBothReactivatedReceivingSendingPattern,
pub p2wsh: BalanceBothReactivatedReceivingSendingPattern,
pub p2tr: BalanceBothReactivatedReceivingSendingPattern,
pub p2a: BalanceBothReactivatedReceivingSendingPattern,
pub all: BothReactivatedReceivingSendingPattern,
pub p2pk65: BothReactivatedReceivingSendingPattern,
pub p2pk33: BothReactivatedReceivingSendingPattern,
pub p2pkh: BothReactivatedReceivingSendingPattern,
pub p2sh: BothReactivatedReceivingSendingPattern,
pub p2wpkh: BothReactivatedReceivingSendingPattern,
pub p2wsh: BothReactivatedReceivingSendingPattern,
pub p2tr: BothReactivatedReceivingSendingPattern,
pub p2a: BothReactivatedReceivingSendingPattern,
}
impl MetricsTree_Distribution_AddressActivity {
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
Self {
all: BalanceBothReactivatedReceivingSendingPattern::new(client.clone(), "address_activity".to_string()),
p2pk65: BalanceBothReactivatedReceivingSendingPattern::new(client.clone(), "p2pk65_address_activity".to_string()),
p2pk33: BalanceBothReactivatedReceivingSendingPattern::new(client.clone(), "p2pk33_address_activity".to_string()),
p2pkh: BalanceBothReactivatedReceivingSendingPattern::new(client.clone(), "p2pkh_address_activity".to_string()),
p2sh: BalanceBothReactivatedReceivingSendingPattern::new(client.clone(), "p2sh_address_activity".to_string()),
p2wpkh: BalanceBothReactivatedReceivingSendingPattern::new(client.clone(), "p2wpkh_address_activity".to_string()),
p2wsh: BalanceBothReactivatedReceivingSendingPattern::new(client.clone(), "p2wsh_address_activity".to_string()),
p2tr: BalanceBothReactivatedReceivingSendingPattern::new(client.clone(), "p2tr_address_activity".to_string()),
p2a: BalanceBothReactivatedReceivingSendingPattern::new(client.clone(), "p2a_address_activity".to_string()),
all: BothReactivatedReceivingSendingPattern::new(client.clone(), "address_activity".to_string()),
p2pk65: BothReactivatedReceivingSendingPattern::new(client.clone(), "p2pk65_address_activity".to_string()),
p2pk33: BothReactivatedReceivingSendingPattern::new(client.clone(), "p2pk33_address_activity".to_string()),
p2pkh: BothReactivatedReceivingSendingPattern::new(client.clone(), "p2pkh_address_activity".to_string()),
p2sh: BothReactivatedReceivingSendingPattern::new(client.clone(), "p2sh_address_activity".to_string()),
p2wpkh: BothReactivatedReceivingSendingPattern::new(client.clone(), "p2wpkh_address_activity".to_string()),
p2wsh: BothReactivatedReceivingSendingPattern::new(client.clone(), "p2wsh_address_activity".to_string()),
p2tr: BothReactivatedReceivingSendingPattern::new(client.clone(), "p2tr_address_activity".to_string()),
p2a: BothReactivatedReceivingSendingPattern::new(client.clone(), "p2a_address_activity".to_string()),
}
}
}
@@ -6238,29 +6254,29 @@ impl MetricsTree_Distribution_NewAddrCount {
/// Metrics tree node.
pub struct MetricsTree_Distribution_GrowthRate {
pub all: BpsPercentRatioPattern2,
pub p2pk65: BpsPercentRatioPattern2,
pub p2pk33: BpsPercentRatioPattern2,
pub p2pkh: BpsPercentRatioPattern2,
pub p2sh: BpsPercentRatioPattern2,
pub p2wpkh: BpsPercentRatioPattern2,
pub p2wsh: BpsPercentRatioPattern2,
pub p2tr: BpsPercentRatioPattern2,
pub p2a: BpsPercentRatioPattern2,
pub all: BpsPercentRatioPattern3,
pub p2pk65: BpsPercentRatioPattern3,
pub p2pk33: BpsPercentRatioPattern3,
pub p2pkh: BpsPercentRatioPattern3,
pub p2sh: BpsPercentRatioPattern3,
pub p2wpkh: BpsPercentRatioPattern3,
pub p2wsh: BpsPercentRatioPattern3,
pub p2tr: BpsPercentRatioPattern3,
pub p2a: BpsPercentRatioPattern3,
}
impl MetricsTree_Distribution_GrowthRate {
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
Self {
all: BpsPercentRatioPattern2::new(client.clone(), "growth_rate".to_string()),
p2pk65: BpsPercentRatioPattern2::new(client.clone(), "p2pk65_growth_rate".to_string()),
p2pk33: BpsPercentRatioPattern2::new(client.clone(), "p2pk33_growth_rate".to_string()),
p2pkh: BpsPercentRatioPattern2::new(client.clone(), "p2pkh_growth_rate".to_string()),
p2sh: BpsPercentRatioPattern2::new(client.clone(), "p2sh_growth_rate".to_string()),
p2wpkh: BpsPercentRatioPattern2::new(client.clone(), "p2wpkh_growth_rate".to_string()),
p2wsh: BpsPercentRatioPattern2::new(client.clone(), "p2wsh_growth_rate".to_string()),
p2tr: BpsPercentRatioPattern2::new(client.clone(), "p2tr_growth_rate".to_string()),
p2a: BpsPercentRatioPattern2::new(client.clone(), "p2a_growth_rate".to_string()),
all: BpsPercentRatioPattern3::new(client.clone(), "growth_rate".to_string()),
p2pk65: BpsPercentRatioPattern3::new(client.clone(), "p2pk65_growth_rate".to_string()),
p2pk33: BpsPercentRatioPattern3::new(client.clone(), "p2pk33_growth_rate".to_string()),
p2pkh: BpsPercentRatioPattern3::new(client.clone(), "p2pkh_growth_rate".to_string()),
p2sh: BpsPercentRatioPattern3::new(client.clone(), "p2sh_growth_rate".to_string()),
p2wpkh: BpsPercentRatioPattern3::new(client.clone(), "p2wpkh_growth_rate".to_string()),
p2wsh: BpsPercentRatioPattern3::new(client.clone(), "p2wsh_growth_rate".to_string()),
p2tr: BpsPercentRatioPattern3::new(client.clone(), "p2tr_growth_rate".to_string()),
p2a: BpsPercentRatioPattern3::new(client.clone(), "p2a_growth_rate".to_string()),
}
}
}
@@ -3,7 +3,7 @@ use brk_types::Version;
use vecdb::Database;
use super::Vecs;
use crate::{indexes, internal::ComputedFromHeightDistribution};
use crate::{indexes, internal::ComputedFromHeightRollingAverage};
impl Vecs {
pub(crate) fn forced_import(
@@ -11,8 +11,12 @@ impl Vecs {
version: Version,
indexes: &indexes::Vecs,
) -> Result<Self> {
let interval =
ComputedFromHeightDistribution::forced_import(db, "block_interval", version, indexes)?;
let interval = ComputedFromHeightRollingAverage::forced_import(
db,
"block_interval",
version,
indexes,
)?;
Ok(Self(interval))
}
@@ -4,9 +4,9 @@ use brk_traversable::Traversable;
use brk_types::Timestamp;
use vecdb::{Rw, StorageMode};
use crate::internal::ComputedFromHeightDistribution;
use crate::internal::ComputedFromHeightRollingAverage;
#[derive(Deref, DerefMut, Traversable)]
pub struct Vecs<M: StorageMode = Rw>(
#[traversable(flatten)] pub ComputedFromHeightDistribution<Timestamp, M>,
#[traversable(flatten)] pub ComputedFromHeightRollingAverage<Timestamp, M>,
);
@@ -5,7 +5,7 @@ use vecdb::Database;
use super::Vecs;
use crate::{
indexes,
internal::{ComputedHeightDerivedFull, PercentFromHeightDistribution},
internal::{ComputedHeightDerivedFull, PercentFromHeightRollingAverage},
};
impl Vecs {
@@ -17,8 +17,12 @@ impl Vecs {
let weight =
ComputedHeightDerivedFull::forced_import(db, "block_weight", version, indexes)?;
let fullness =
PercentFromHeightDistribution::forced_import(db, "block_fullness", version, indexes)?;
let fullness = PercentFromHeightRollingAverage::forced_import(
db,
"block_fullness",
version,
indexes,
)?;
Ok(Self { weight, fullness })
}
@@ -2,10 +2,10 @@ use brk_traversable::Traversable;
use brk_types::{BasisPoints16, Weight};
use vecdb::{Rw, StorageMode};
use crate::internal::{ComputedHeightDerivedFull, PercentFromHeightDistribution};
use crate::internal::{ComputedHeightDerivedFull, PercentFromHeightRollingAverage};
#[derive(Traversable)]
pub struct Vecs<M: StorageMode = Rw> {
pub weight: ComputedHeightDerivedFull<Weight, M>,
pub fullness: PercentFromHeightDistribution<BasisPoints16, M>,
pub fullness: PercentFromHeightRollingAverage<BasisPoints16, M>,
}
@@ -8,11 +8,6 @@
//! | `sending` | Unique addresses that sent this block |
//! | `reactivated` | Addresses that were empty and now have funds |
//! | `both` | Addresses that both sent AND received same block |
//! | `balance_increased` | Receive-only addresses (balance definitely increased) |
//! | `balance_decreased` | Send-only addresses (balance definitely decreased) |
//!
//! Note: `balance_increased` and `balance_decreased` exclude "both" addresses
//! since their net balance change requires more complex tracking.
use brk_cohort::ByAddressType;
use brk_error::Result;
@@ -24,14 +19,10 @@ use vecdb::{AnyStoredVec, AnyVec, Database, Exit, Rw, StorageMode, WritableVec};
use crate::{
indexes,
internal::{ComputedFromHeightDistribution, WindowStarts},
internal::{ComputedFromHeightRollingAverage, WindowStarts},
};
/// Per-block activity counts - reset each block.
///
/// Note: `balance_increased` and `balance_decreased` are derived:
/// - `balance_increased = receiving - both` (receive-only addresses)
/// - `balance_decreased = sending - both` (send-only addresses)
#[derive(Debug, Default, Clone)]
pub struct BlockActivityCounts {
pub reactivated: u32,
@@ -74,12 +65,10 @@ impl AddressTypeToActivityCounts {
/// Activity count vectors for a single category (e.g., one address type or "all").
#[derive(Traversable)]
pub struct ActivityCountVecs<M: StorageMode = Rw> {
pub reactivated: ComputedFromHeightDistribution<StoredU32, M>,
pub sending: ComputedFromHeightDistribution<StoredU32, M>,
pub receiving: ComputedFromHeightDistribution<StoredU32, M>,
pub balance_increased: ComputedFromHeightDistribution<StoredU32, M>,
pub balance_decreased: ComputedFromHeightDistribution<StoredU32, M>,
pub both: ComputedFromHeightDistribution<StoredU32, M>,
pub reactivated: ComputedFromHeightRollingAverage<StoredU32, M>,
pub sending: ComputedFromHeightRollingAverage<StoredU32, M>,
pub receiving: ComputedFromHeightRollingAverage<StoredU32, M>,
pub both: ComputedFromHeightRollingAverage<StoredU32, M>,
}
impl ActivityCountVecs {
@@ -90,37 +79,25 @@ impl ActivityCountVecs {
indexes: &indexes::Vecs,
) -> Result<Self> {
Ok(Self {
reactivated: ComputedFromHeightDistribution::forced_import(
reactivated: ComputedFromHeightRollingAverage::forced_import(
db,
&format!("{name}_reactivated"),
version,
indexes,
)?,
sending: ComputedFromHeightDistribution::forced_import(
sending: ComputedFromHeightRollingAverage::forced_import(
db,
&format!("{name}_sending"),
version,
indexes,
)?,
receiving: ComputedFromHeightDistribution::forced_import(
receiving: ComputedFromHeightRollingAverage::forced_import(
db,
&format!("{name}_receiving"),
version,
indexes,
)?,
balance_increased: ComputedFromHeightDistribution::forced_import(
db,
&format!("{name}_balance_increased"),
version,
indexes,
)?,
balance_decreased: ComputedFromHeightDistribution::forced_import(
db,
&format!("{name}_balance_decreased"),
version,
indexes,
)?,
both: ComputedFromHeightDistribution::forced_import(
both: ComputedFromHeightRollingAverage::forced_import(
db,
&format!("{name}_both"),
version,
@@ -135,8 +112,6 @@ impl ActivityCountVecs {
.len()
.min(self.sending.height.len())
.min(self.receiving.height.len())
.min(self.balance_increased.height.len())
.min(self.balance_decreased.height.len())
.min(self.both.height.len())
}
@@ -147,8 +122,6 @@ impl ActivityCountVecs {
&mut self.reactivated.height as &mut dyn AnyStoredVec,
&mut self.sending.height as &mut dyn AnyStoredVec,
&mut self.receiving.height as &mut dyn AnyStoredVec,
&mut self.balance_increased.height as &mut dyn AnyStoredVec,
&mut self.balance_decreased.height as &mut dyn AnyStoredVec,
&mut self.both.height as &mut dyn AnyStoredVec,
]
.into_par_iter()
@@ -158,8 +131,6 @@ impl ActivityCountVecs {
self.reactivated.height.reset()?;
self.sending.height.reset()?;
self.receiving.height.reset()?;
self.balance_increased.height.reset()?;
self.balance_decreased.height.reset()?;
self.both.height.reset()?;
Ok(())
}
@@ -178,14 +149,6 @@ impl ActivityCountVecs {
self.receiving
.height
.truncate_push(height, counts.receiving.into())?;
// Derived: balance_increased = receiving - both (receive-only addresses)
self.balance_increased
.height
.truncate_push(height, (counts.receiving - counts.both).into())?;
// Derived: balance_decreased = sending - both (send-only addresses)
self.balance_decreased
.height
.truncate_push(height, (counts.sending - counts.both).into())?;
self.both.height.truncate_push(height, counts.both.into())?;
Ok(())
}
@@ -199,10 +162,6 @@ impl ActivityCountVecs {
self.reactivated.compute_rest(max_from, windows, exit)?;
self.sending.compute_rest(max_from, windows, exit)?;
self.receiving.compute_rest(max_from, windows, exit)?;
self.balance_increased
.compute_rest(max_from, windows, exit)?;
self.balance_decreased
.compute_rest(max_from, windows, exit)?;
self.both.compute_rest(max_from, windows, exit)?;
Ok(())
}
@@ -254,8 +213,6 @@ impl AddressTypeToActivityCountVecs {
vecs.push(&mut type_vecs.reactivated.height);
vecs.push(&mut type_vecs.sending.height);
vecs.push(&mut type_vecs.receiving.height);
vecs.push(&mut type_vecs.balance_increased.height);
vecs.push(&mut type_vecs.balance_decreased.height);
vecs.push(&mut type_vecs.both.height);
}
vecs.into_par_iter()
@@ -11,7 +11,6 @@ use crate::{
distribution::state::RealizedOps,
internal::{
ComputedFromHeight, ComputedFromHeightCumulative,
ComputedFromHeightRatioPercentiles, FiatFromHeight,
LazyFromHeight, NegCentsUnsignedToDollars, RatioCents64,
RollingWindows, ValueFromHeightCumulative,
},
@@ -33,7 +32,6 @@ pub struct RealizedBase<M: StorageMode = Rw> {
pub neg_realized_loss: LazyFromHeight<Dollars, Cents>,
pub net_realized_pnl: ComputedFromHeightCumulative<CentsSigned, M>,
pub gross_pnl: FiatFromHeight<Cents, M>,
pub value_created: ComputedFromHeight<Cents, M>,
pub value_destroyed: ComputedFromHeight<Cents, M>,
@@ -41,8 +39,6 @@ pub struct RealizedBase<M: StorageMode = Rw> {
pub value_destroyed_sum: RollingWindows<Cents, M>,
pub sopr: RollingWindows<StoredF64, M>,
pub realized_price_ratio_percentiles: ComputedFromHeightRatioPercentiles<M>,
pub sent_in_profit: ValueFromHeightCumulative<M>,
pub sent_in_loss: ValueFromHeightCumulative<M>,
}
@@ -62,7 +58,6 @@ impl RealizedBase {
);
let net_realized_pnl = cfg.import("net_realized_pnl", v0)?;
let gross_pnl = cfg.import("realized_gross_pnl", v0)?;
let value_created = cfg.import("value_created", v0)?;
let value_destroyed = cfg.import("value_destroyed", v0)?;
@@ -70,26 +65,16 @@ impl RealizedBase {
let value_destroyed_sum = cfg.import("value_destroyed", v1)?;
let sopr = cfg.import("sopr", v1)?;
let realized_price_ratio_percentiles =
ComputedFromHeightRatioPercentiles::forced_import(
cfg.db,
&cfg.name("realized_price"),
cfg.version + v1,
cfg.indexes,
)?;
Ok(Self {
minimal,
realized_cap_change_1m: cfg.import("realized_cap_change_1m", v0)?,
neg_realized_loss,
net_realized_pnl,
gross_pnl,
value_created,
value_destroyed,
value_created_sum,
value_destroyed_sum,
sopr,
realized_price_ratio_percentiles,
sent_in_profit: cfg.import("sent_in_profit", v0)?,
sent_in_loss: cfg.import("sent_in_loss", v0)?,
})
@@ -176,13 +161,6 @@ impl RealizedBase {
Ok(())
})?;
self.gross_pnl.cents.height.compute_add(
starting_indexes.height,
&self.minimal.realized_profit.height,
&self.minimal.realized_loss.height,
exit,
)?;
Ok(())
}
@@ -234,15 +212,6 @@ impl RealizedBase {
)?;
}
// Realized price ratio percentiles
self.realized_price_ratio_percentiles.compute(
blocks,
starting_indexes,
exit,
&self.minimal.realized_price_ratio.ratio.height,
&self.minimal.realized_price.cents.height,
)?;
Ok(())
}
}
@@ -14,7 +14,7 @@ use crate::{
blocks,
distribution::state::RealizedState,
internal::{
CentsUnsignedToDollars, ComputedFromHeight, ComputedFromHeightCumulative,
CentsUnsignedToDollars, ComputedFromHeight, ComputedFromHeightCumulative, FiatFromHeight,
ComputedFromHeightRatio, ComputedFromHeightRatioPercentiles,
ComputedFromHeightRatioStdDevBands, LazyFromHeight, PercentFromHeight,
PercentRollingEmas1w1m, PercentRollingWindows, Price, RatioCents64, RatioCentsBp32,
@@ -35,6 +35,8 @@ pub struct RealizedFull<M: StorageMode = Rw> {
#[traversable(flatten)]
pub core: RealizedBase<M>,
pub gross_pnl: FiatFromHeight<Cents, M>,
pub realized_profit_rel_to_realized_cap: PercentFromHeight<BasisPoints32, M>,
pub realized_loss_rel_to_realized_cap: PercentFromHeight<BasisPoints32, M>,
pub net_realized_pnl_rel_to_realized_cap: PercentFromHeight<BasisPointsSigned32, M>,
@@ -83,6 +85,7 @@ pub struct RealizedFull<M: StorageMode = Rw> {
pub sent_in_profit_ema: RollingEmas2w<M>,
pub sent_in_loss_ema: RollingEmas2w<M>,
pub realized_price_ratio_percentiles: ComputedFromHeightRatioPercentiles<M>,
pub realized_price_ratio_std_dev: ComputedFromHeightRatioStdDevBands<M>,
pub investor_price_ratio_percentiles: ComputedFromHeightRatioPercentiles<M>,
}
@@ -94,6 +97,8 @@ impl RealizedFull {
let core = RealizedBase::forced_import(cfg)?;
let gross_pnl = cfg.import("realized_gross_pnl", v0)?;
let profit_value_created = cfg.import("profit_value_created", v0)?;
let profit_value_destroyed: ComputedFromHeight<Cents> =
cfg.import("profit_value_destroyed", v0)?;
@@ -154,6 +159,7 @@ impl RealizedFull {
Ok(Self {
core,
gross_pnl,
realized_profit_rel_to_realized_cap,
realized_loss_rel_to_realized_cap,
net_realized_pnl_rel_to_realized_cap,
@@ -191,6 +197,12 @@ impl RealizedFull {
sopr_24h_ema,
sent_in_profit_ema,
sent_in_loss_ema,
realized_price_ratio_percentiles: ComputedFromHeightRatioPercentiles::forced_import(
cfg.db,
&realized_price_name,
realized_price_version,
cfg.indexes,
)?,
realized_price_ratio_std_dev: ComputedFromHeightRatioStdDevBands::forced_import(
cfg.db,
&realized_price_name,
@@ -366,12 +378,19 @@ impl RealizedFull {
exit,
)?;
// Gross PnL rolling sum
// Gross PnL
self.gross_pnl.cents.height.compute_add(
starting_indexes.height,
&self.core.minimal.realized_profit.height,
&self.core.minimal.realized_loss.height,
exit,
)?;
let window_starts = blocks.count.window_starts();
self.gross_pnl_sum.compute_rolling_sum(
starting_indexes.height,
&window_starts,
&self.core.gross_pnl.cents.height,
&self.gross_pnl.cents.height,
exit,
)?;
@@ -510,7 +529,14 @@ impl RealizedFull {
)?;
}
// Realized price stddev bands
self.realized_price_ratio_percentiles.compute(
blocks,
starting_indexes,
exit,
&self.core.minimal.realized_price_ratio.ratio.height,
&self.core.minimal.realized_price.cents.height,
)?;
self.realized_price_ratio_std_dev.compute(
blocks,
starting_indexes,
@@ -3,9 +3,7 @@ use brk_traversable::Traversable;
use brk_types::{BasisPoints16, BasisPoints32, BasisPointsSigned32, Dollars, Height, Version};
use vecdb::{Exit, ReadableVec, Rw, StorageMode};
use crate::internal::{
NegRatioDollarsBps32, PercentFromHeight, RatioDollarsBp16, RatioDollarsBp32, RatioDollarsBps32,
};
use crate::internal::{PercentFromHeight, RatioDollarsBp16, RatioDollarsBp32, RatioDollarsBps32};
use crate::distribution::metrics::{ImportConfig, UnrealizedFull};
@@ -14,7 +12,6 @@ use crate::distribution::metrics::{ImportConfig, UnrealizedFull};
pub struct RelativeExtendedOwnMarketCap<M: StorageMode = Rw> {
pub unrealized_profit_rel_to_own_market_cap: PercentFromHeight<BasisPoints16, M>,
pub unrealized_loss_rel_to_own_market_cap: PercentFromHeight<BasisPoints32, M>,
pub neg_unrealized_loss_rel_to_own_market_cap: PercentFromHeight<BasisPointsSigned32, M>,
pub net_unrealized_pnl_rel_to_own_market_cap: PercentFromHeight<BasisPointsSigned32, M>,
}
@@ -27,8 +24,6 @@ impl RelativeExtendedOwnMarketCap {
.import("unrealized_profit_rel_to_own_market_cap", v2)?,
unrealized_loss_rel_to_own_market_cap: cfg
.import("unrealized_loss_rel_to_own_market_cap", Version::new(3))?,
neg_unrealized_loss_rel_to_own_market_cap: cfg
.import("neg_unrealized_loss_rel_to_own_market_cap", Version::new(3))?,
net_unrealized_pnl_rel_to_own_market_cap: cfg
.import("net_unrealized_pnl_rel_to_own_market_cap", Version::new(3))?,
})
@@ -55,13 +50,6 @@ impl RelativeExtendedOwnMarketCap {
own_market_cap,
exit,
)?;
self.neg_unrealized_loss_rel_to_own_market_cap
.compute_binary::<Dollars, Dollars, NegRatioDollarsBps32>(
max_from,
&unrealized.unrealized_loss.usd.height,
own_market_cap,
exit,
)?;
self.net_unrealized_pnl_rel_to_own_market_cap
.compute_binary::<Dollars, Dollars, RatioDollarsBps32>(
max_from,
@@ -3,9 +3,7 @@ use brk_traversable::Traversable;
use brk_types::{BasisPoints16, BasisPointsSigned32, Dollars, Height, Version};
use vecdb::{Exit, Rw, StorageMode};
use crate::internal::{
NegRatioDollarsBps32, PercentFromHeight, RatioDollarsBp16, RatioDollarsBps32,
};
use crate::internal::{PercentFromHeight, RatioDollarsBp16, RatioDollarsBps32};
use crate::distribution::metrics::{ImportConfig, UnrealizedFull};
@@ -14,7 +12,6 @@ use crate::distribution::metrics::{ImportConfig, UnrealizedFull};
pub struct RelativeExtendedOwnPnl<M: StorageMode = Rw> {
pub unrealized_profit_rel_to_own_gross_pnl: PercentFromHeight<BasisPoints16, M>,
pub unrealized_loss_rel_to_own_gross_pnl: PercentFromHeight<BasisPoints16, M>,
pub neg_unrealized_loss_rel_to_own_gross_pnl: PercentFromHeight<BasisPointsSigned32, M>,
pub net_unrealized_pnl_rel_to_own_gross_pnl: PercentFromHeight<BasisPointsSigned32, M>,
}
@@ -27,8 +24,6 @@ impl RelativeExtendedOwnPnl {
.import("unrealized_profit_rel_to_own_gross_pnl", v1)?,
unrealized_loss_rel_to_own_gross_pnl: cfg
.import("unrealized_loss_rel_to_own_gross_pnl", v1)?,
neg_unrealized_loss_rel_to_own_gross_pnl: cfg
.import("neg_unrealized_loss_rel_to_own_gross_pnl", Version::new(2))?,
net_unrealized_pnl_rel_to_own_gross_pnl: cfg
.import("net_unrealized_pnl_rel_to_own_gross_pnl", Version::new(3))?,
})
@@ -54,13 +49,6 @@ impl RelativeExtendedOwnPnl {
&unrealized.gross_pnl.usd.height,
exit,
)?;
self.neg_unrealized_loss_rel_to_own_gross_pnl
.compute_binary::<Dollars, Dollars, NegRatioDollarsBps32>(
max_from,
&unrealized.unrealized_loss.usd.height,
&unrealized.gross_pnl.usd.height,
exit,
)?;
self.net_unrealized_pnl_rel_to_own_gross_pnl
.compute_binary::<Dollars, Dollars, RatioDollarsBps32>(
max_from,
@@ -7,8 +7,7 @@ use derive_more::{Deref, DerefMut};
use vecdb::{Exit, ReadableCloneableVec, ReadableVec, Rw, StorageMode};
use crate::internal::{
Bps32ToFloat, LazyFromHeight, NegRatioDollarsBps32, PercentFromHeight, RatioDollarsBp16,
RatioDollarsBps32,
Bps32ToFloat, LazyFromHeight, PercentFromHeight, RatioDollarsBp16, RatioDollarsBps32,
};
use crate::distribution::metrics::{ImportConfig, RealizedBase, UnrealizedFull};
@@ -26,7 +25,6 @@ pub struct RelativeFull<M: StorageMode = Rw> {
pub unrealized_profit_rel_to_market_cap: PercentFromHeight<BasisPoints16, M>,
pub unrealized_loss_rel_to_market_cap: PercentFromHeight<BasisPoints16, M>,
pub net_unrealized_pnl_rel_to_market_cap: PercentFromHeight<BasisPointsSigned32, M>,
pub neg_unrealized_loss_rel_to_market_cap: PercentFromHeight<BasisPointsSigned32, M>,
pub nupl: LazyFromHeight<StoredF32, BasisPointsSigned32>,
pub invested_capital_in_profit_rel_to_realized_cap: PercentFromHeight<BasisPoints16, M>,
@@ -60,8 +58,6 @@ impl RelativeFull {
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",
@@ -111,14 +107,6 @@ impl RelativeFull {
market_cap,
exit,
)?;
self.neg_unrealized_loss_rel_to_market_cap
.compute_binary::<Dollars, Dollars, NegRatioDollarsBps32>(
max_from,
&unrealized.unrealized_loss.usd.height,
market_cap,
exit,
)?;
self.invested_capital_in_profit_rel_to_realized_cap
.compute_binary::<Dollars, Dollars, RatioDollarsBp16>(
max_from,
@@ -29,8 +29,6 @@ pub struct UnrealizedBase<M: StorageMode = Rw> {
pub neg_unrealized_loss: LazyFromHeight<Dollars, Cents>,
pub gross_pnl: FiatFromHeight<Cents, M>,
pub net_unrealized_pnl: FiatFromHeight<CentsSigned, M>,
}
@@ -50,8 +48,6 @@ impl UnrealizedBase {
&unrealized_loss.cents,
);
let gross_pnl = cfg.import("unrealized_gross_pnl", v0)?;
let net_unrealized_pnl = cfg.import("net_unrealized_pnl", v0)?;
Ok(Self {
@@ -60,7 +56,6 @@ impl UnrealizedBase {
unrealized_profit,
unrealized_loss,
neg_unrealized_loss,
gross_pnl,
net_unrealized_pnl,
})
}
@@ -131,13 +126,6 @@ impl UnrealizedBase {
starting_indexes: &Indexes,
exit: &Exit,
) -> Result<()> {
self.gross_pnl.cents.height.compute_add(
starting_indexes.height,
&self.unrealized_profit.cents.height,
&self.unrealized_loss.cents.height,
exit,
)?;
self.net_unrealized_pnl
.cents
.height
@@ -26,7 +26,8 @@ pub struct UnrealizedFull<M: StorageMode = Rw> {
#[traversable(flatten)]
pub base: UnrealizedBase<M>,
// --- Source-only fields ---
pub gross_pnl: FiatFromHeight<Cents, M>,
pub invested_capital_in_profit: FiatFromHeight<Cents, M>,
pub invested_capital_in_loss: FiatFromHeight<Cents, M>,
@@ -47,6 +48,8 @@ impl UnrealizedFull {
let base = UnrealizedBase::forced_import(cfg)?;
let gross_pnl = cfg.import("unrealized_gross_pnl", v0)?;
let invested_capital_in_profit = cfg.import("invested_capital_in_profit", v0)?;
let invested_capital_in_loss = cfg.import("invested_capital_in_loss", v0)?;
@@ -62,6 +65,7 @@ impl UnrealizedFull {
Ok(Self {
base,
gross_pnl,
invested_capital_in_profit,
invested_capital_in_loss,
invested_capital_in_profit_raw,
@@ -218,10 +222,16 @@ impl UnrealizedFull {
starting_indexes: &Indexes,
exit: &Exit,
) -> Result<()> {
// Complete-tier: net_unrealized_pnl
self.base.compute_rest(starting_indexes, exit)?;
// Extended-only: Pain index (investor_price_of_losers - spot)
self.gross_pnl.cents.height.compute_add(
starting_indexes.height,
&self.base.unrealized_profit.cents.height,
&self.base.unrealized_loss.cents.height,
exit,
)?;
// Pain index (investor_price_of_losers - spot)
self.pain_index.cents.height.compute_transform3(
starting_indexes.height,
&self.investor_cap_in_loss_raw,
@@ -3,9 +3,11 @@ mod cumulative;
mod cumulative_sum;
mod distribution;
mod full;
mod rolling_average;
pub use aggregated::*;
pub use cumulative::*;
pub use cumulative_sum::*;
pub use distribution::*;
pub use full::*;
pub use rolling_average::*;
@@ -0,0 +1,78 @@
//! ComputedFromHeight with rolling average (no distribution stats).
//!
//! Stored height data + 4-window rolling averages (24h, 1w, 1m, 1y).
//! Use instead of ComputedFromHeightDistribution when only the average
//! is analytically useful (e.g., block interval, activity counts).
use brk_error::Result;
use brk_traversable::Traversable;
use brk_types::{Height, Version};
use schemars::JsonSchema;
use vecdb::{Database, EagerVec, Exit, ImportableVec, PcoVec, Rw, StorageMode};
use crate::indexes;
use crate::internal::{NumericValue, RollingWindows, WindowStarts};
#[derive(Traversable)]
pub struct ComputedFromHeightRollingAverage<T, M: StorageMode = Rw>
where
T: NumericValue + JsonSchema,
{
pub height: M::Stored<EagerVec<PcoVec<Height, T>>>,
#[traversable(flatten)]
pub average: RollingWindows<T, M>,
}
impl<T> ComputedFromHeightRollingAverage<T>
where
T: NumericValue + JsonSchema,
{
pub(crate) fn forced_import(
db: &Database,
name: &str,
version: Version,
indexes: &indexes::Vecs,
) -> Result<Self> {
let height: EagerVec<PcoVec<Height, T>> = EagerVec::forced_import(db, name, version)?;
let average =
RollingWindows::forced_import(db, &format!("{name}_average"), version, indexes)?;
Ok(Self { height, average })
}
/// Compute height data via closure, then rolling averages.
pub(crate) fn compute(
&mut self,
max_from: Height,
windows: &WindowStarts<'_>,
exit: &Exit,
compute_height: impl FnOnce(&mut EagerVec<PcoVec<Height, T>>) -> Result<()>,
) -> Result<()>
where
T: Default,
f64: From<T>,
{
compute_height(&mut self.height)?;
self.compute_rest(max_from, windows, exit)
}
/// Compute rolling averages from already-populated height data.
pub(crate) fn compute_rest(
&mut self,
max_from: Height,
windows: &WindowStarts<'_>,
exit: &Exit,
) -> Result<()>
where
T: Default,
f64: From<T>,
{
for (w, starts) in self.average.0.as_mut_array().into_iter().zip(windows.as_array()) {
w.height
.compute_rolling_average(max_from, *starts, &self.height, exit)?;
}
Ok(())
}
}
@@ -1,5 +1,7 @@
mod base;
mod distribution;
mod rolling_average;
pub use base::*;
pub use distribution::*;
pub use rolling_average::*;
@@ -0,0 +1,69 @@
use brk_error::Result;
use brk_traversable::Traversable;
use brk_types::{Height, StoredF32, Version};
use vecdb::{Database, EagerVec, Exit, PcoVec, ReadableCloneableVec, Rw, StorageMode};
use crate::{
indexes,
internal::{BpsType, WindowStarts},
};
use crate::internal::{ComputedFromHeightRollingAverage, LazyFromHeight};
/// Like PercentFromHeight but with rolling average stats on the bps data.
#[derive(Traversable)]
pub struct PercentFromHeightRollingAverage<B: BpsType, M: StorageMode = Rw> {
pub bps: ComputedFromHeightRollingAverage<B, M>,
pub ratio: LazyFromHeight<StoredF32, B>,
pub percent: LazyFromHeight<StoredF32, B>,
}
impl<B: BpsType> PercentFromHeightRollingAverage<B> {
pub(crate) fn forced_import(
db: &Database,
name: &str,
version: Version,
indexes: &indexes::Vecs,
) -> Result<Self> {
let bps = ComputedFromHeightRollingAverage::forced_import(
db,
&format!("{name}_bps"),
version,
indexes,
)?;
let ratio = LazyFromHeight::from_height_source::<B::ToRatio>(
&format!("{name}_ratio"),
version,
bps.height.read_only_boxed_clone(),
indexes,
);
let percent = LazyFromHeight::from_height_source::<B::ToPercent>(
name,
version,
bps.height.read_only_boxed_clone(),
indexes,
);
Ok(Self {
bps,
ratio,
percent,
})
}
pub(crate) fn compute(
&mut self,
max_from: Height,
windows: &WindowStarts<'_>,
exit: &Exit,
compute_height: impl FnOnce(&mut EagerVec<PcoVec<Height, B>>) -> Result<()>,
) -> Result<()>
where
B: Default,
f64: From<B>,
{
self.bps.compute(max_from, windows, exit, compute_height)
}
}
@@ -1,7 +1,7 @@
use brk_error::Result;
use brk_traversable::Traversable;
use brk_types::{Cents, Height, Sats, Version};
use vecdb::{Database, Exit, Rw, StorageMode};
use vecdb::{Database, EagerVec, Exit, PcoVec, Rw, StorageMode};
use crate::{
indexes,
@@ -32,6 +32,17 @@ impl ValueFromHeightCumulative {
})
}
pub(crate) fn compute_with(
&mut self,
max_from: Height,
prices: &prices::Vecs,
exit: &Exit,
compute_sats: impl FnOnce(&mut EagerVec<PcoVec<Height, Sats>>) -> Result<()>,
) -> Result<()> {
compute_sats(&mut self.base.sats.height)?;
self.compute(prices, max_from, exit)
}
pub(crate) fn compute(
&mut self,
prices: &prices::Vecs,
@@ -23,7 +23,7 @@ pub use derived::{
RatioCents64, TimesSqrt,
};
pub use ratio::{
NegRatioDollarsBps32, RatioCentsBp32, RatioCentsSignedCentsBps32,
RatioCentsBp32, RatioCentsSignedCentsBps32,
RatioCentsSignedDollarsBps32, RatioDiffCentsBps32, RatioDiffDollarsBps32, RatioDiffF32Bps32,
RatioDollarsBp16, RatioDollarsBp32, RatioDollarsBps32, RatioSatsBp16, RatioU32Bp16,
RatioU64Bp16,
@@ -84,20 +84,6 @@ impl BinaryTransform<Dollars, Dollars, BasisPointsSigned32> for RatioDollarsBps3
}
}
pub struct NegRatioDollarsBps32;
impl BinaryTransform<Dollars, Dollars, BasisPointsSigned32> for NegRatioDollarsBps32 {
#[inline(always)]
fn apply(numerator: Dollars, denominator: Dollars) -> BasisPointsSigned32 {
let ratio = *(numerator / denominator);
if ratio.is_finite() {
BasisPointsSigned32::from(-ratio)
} else {
BasisPointsSigned32::ZERO
}
}
}
pub struct RatioCentsSignedCentsBps32;
impl BinaryTransform<CentsSigned, Cents, BasisPointsSigned32> for RatioCentsSignedCentsBps32 {
+2 -2
View File
@@ -32,8 +32,8 @@ impl Vecs {
self.hashrate.compute(
&blocks.count,
&blocks.difficulty,
&self.rewards.coinbase.rolling._24h.sum.sats.height,
&self.rewards.coinbase.rolling._24h.sum.usd.height,
&self.rewards.coinbase.sum._24h.sats.height,
&self.rewards.coinbase.sum._24h.usd.height,
starting_indexes,
exit,
)?;
@@ -76,29 +76,21 @@ impl Vecs {
},
)?;
self.subsidy.compute(
self.subsidy.base.sats.height.compute_transform2(
starting_indexes.height,
&window_starts,
prices,
exit,
|vec| {
vec.compute_transform2(
starting_indexes.height,
&self.coinbase.base.sats.height,
&self.fees.base.sats.height,
|(height, coinbase, fees, ..)| {
(
height,
coinbase.checked_sub(fees).unwrap_or_else(|| {
panic!("coinbase {coinbase:?} < fees {fees:?} at {height:?}")
}),
)
},
exit,
)?;
Ok(())
&self.coinbase.base.sats.height,
&self.fees.base.sats.height,
|(height, coinbase, fees, ..)| {
(
height,
coinbase.checked_sub(fees).unwrap_or_else(|| {
panic!("coinbase {coinbase:?} < fees {fees:?} at {height:?}")
}),
)
},
exit,
)?;
self.subsidy.compute(prices, starting_indexes.height, exit)?;
self.unclaimed_rewards.compute(
starting_indexes.height,
@@ -135,12 +127,12 @@ impl Vecs {
.as_mut_array()
.into_iter()
.zip(self.fees.rolling.as_array())
.zip(self.coinbase.rolling.as_array())
.zip(self.coinbase.sum.as_array())
{
fee_dom.compute_binary::<Sats, Sats, RatioSatsBp16>(
starting_indexes.height,
&fees_w.sum.sats.height,
&coinbase_w.sum.sats.height,
&coinbase_w.sats.height,
exit,
)?;
}
@@ -6,8 +6,8 @@ use super::Vecs;
use crate::{
indexes,
internal::{
FiatFromHeight, PercentFromHeight, PercentRollingWindows, ValueFromHeightCumulativeSum,
ValueFromHeightFull,
FiatFromHeight, PercentFromHeight, PercentRollingWindows, ValueFromHeightCumulative,
ValueFromHeightCumulativeSum, ValueFromHeightFull,
},
};
@@ -18,8 +18,8 @@ impl Vecs {
indexes: &indexes::Vecs,
) -> Result<Self> {
Ok(Self {
coinbase: ValueFromHeightFull::forced_import(db, "coinbase", version, indexes)?,
subsidy: ValueFromHeightFull::forced_import(db, "subsidy", version, indexes)?,
coinbase: ValueFromHeightCumulativeSum::forced_import(db, "coinbase", version, indexes)?,
subsidy: ValueFromHeightCumulative::forced_import(db, "subsidy", version, indexes)?,
fees: ValueFromHeightFull::forced_import(db, "fees", version, indexes)?,
unclaimed_rewards: ValueFromHeightCumulativeSum::forced_import(
db,
@@ -3,14 +3,14 @@ use brk_types::{BasisPoints16, Cents};
use vecdb::{Rw, StorageMode};
use crate::internal::{
FiatFromHeight, PercentFromHeight, PercentRollingWindows, ValueFromHeightCumulativeSum,
ValueFromHeightFull,
FiatFromHeight, PercentFromHeight, PercentRollingWindows, ValueFromHeightCumulative,
ValueFromHeightCumulativeSum, ValueFromHeightFull,
};
#[derive(Traversable)]
pub struct Vecs<M: StorageMode = Rw> {
pub coinbase: ValueFromHeightFull<M>,
pub subsidy: ValueFromHeightFull<M>,
pub coinbase: ValueFromHeightCumulativeSum<M>,
pub subsidy: ValueFromHeightCumulative<M>,
pub fees: ValueFromHeightFull<M>,
pub unclaimed_rewards: ValueFromHeightCumulativeSum<M>,
pub fee_dominance: PercentFromHeight<BasisPoints16, M>,
+1 -1
View File
@@ -21,7 +21,7 @@ impl Vecs {
.compute(indexer, &blocks.count, starting_indexes, exit)?;
self.value
.compute(indexer, &blocks.count, prices, starting_indexes, exit)?;
.compute(indexer, prices, starting_indexes, exit)?;
self.adoption
.compute(&self.count, &outputs.count, starting_indexes, exit)?;
@@ -4,22 +4,18 @@ use brk_types::{Height, Indexes, OutputType, Sats, TxOutIndex};
use vecdb::{AnyStoredVec, AnyVec, Exit, ReadableVec, VecIndex, WritableVec};
use super::Vecs;
use crate::{blocks, prices};
use crate::prices;
impl Vecs {
pub(crate) fn compute(
&mut self,
indexer: &Indexer,
count_vecs: &blocks::CountVecs,
prices: &prices::Vecs,
starting_indexes: &Indexes,
exit: &Exit,
) -> Result<()> {
let window_starts = count_vecs.window_starts();
self.opreturn.compute(
self.opreturn.compute_with(
starting_indexes.height,
&window_starts,
prices,
exit,
|height_vec| {
@@ -3,7 +3,7 @@ use brk_types::Version;
use vecdb::Database;
use super::Vecs;
use crate::{indexes, internal::ValueFromHeightFull};
use crate::{indexes, internal::ValueFromHeightCumulative};
impl Vecs {
pub(crate) fn forced_import(
@@ -12,7 +12,12 @@ impl Vecs {
indexes: &indexes::Vecs,
) -> Result<Self> {
Ok(Self {
opreturn: ValueFromHeightFull::forced_import(db, "opreturn_value", version, indexes)?,
opreturn: ValueFromHeightCumulative::forced_import(
db,
"opreturn_value",
version,
indexes,
)?,
})
}
}
@@ -1,9 +1,9 @@
use brk_traversable::Traversable;
use vecdb::{Rw, StorageMode};
use crate::internal::ValueFromHeightFull;
use crate::internal::ValueFromHeightCumulative;
#[derive(Traversable)]
pub struct Vecs<M: StorageMode = Rw> {
pub opreturn: ValueFromHeightFull<M>,
pub opreturn: ValueFromHeightCumulative<M>,
}
@@ -1,39 +1,91 @@
use brk_error::Result;
use brk_types::{BlockRewardsEntry, TimePeriod};
use vecdb::{ReadableOptionVec, VecIndex};
use brk_types::{BlockRewardsEntry, Height, Sats, TimePeriod};
use vecdb::{ReadableVec, VecIndex};
use super::day1_iter::Day1Iter;
use crate::Query;
impl Query {
pub fn block_rewards(&self, time_period: TimePeriod) -> Result<Vec<BlockRewardsEntry>> {
let computer = self.computer();
let current_height = self.height();
let start = current_height
.to_usize()
.saturating_sub(time_period.block_count());
let indexer = self.indexer();
let current_height = self.height().to_usize();
let start = current_height.saturating_sub(time_period.block_count());
let iter = Day1Iter::new(computer, start, current_height.to_usize());
let coinbase_vec = &computer.mining.rewards.coinbase.base.sats.height;
let timestamp_vec = &indexer.vecs.blocks.timestamp;
let rewards_vec = &computer
.mining
.rewards
.coinbase
.rolling
._24h
.distribution
.average
.sats
.day1;
match time_period {
// Per-block, exact rewards
TimePeriod::Day | TimePeriod::ThreeDays => {
let rewards: Vec<Sats> =
coinbase_vec.collect_range_at(start, current_height + 1);
let timestamps: Vec<brk_types::Timestamp> =
timestamp_vec.collect_range_at(start, current_height + 1);
Ok(iter.collect(|di, ts, h| {
rewards_vec
.collect_one_flat(di)
.map(|reward| BlockRewardsEntry {
avg_height: h.into(),
timestamp: *ts,
avg_rewards: *reward,
})
}))
Ok(rewards
.iter()
.zip(timestamps.iter())
.enumerate()
.map(|(i, (reward, ts))| BlockRewardsEntry {
avg_height: (start + i) as u32,
timestamp: **ts,
avg_rewards: **reward,
})
.collect())
}
// Daily averages, sampled to ~200 points
_ => {
let first_height_vec = &computer.indexes.day1.first_height;
let day1_vec = &computer.indexes.height.day1;
let start_di = day1_vec
.collect_one(Height::from(start))
.unwrap_or_default();
let end_di = day1_vec
.collect_one(Height::from(current_height))
.unwrap_or_default();
let total_days =
end_di.to_usize().saturating_sub(start_di.to_usize()) + 1;
let step = (total_days / 200).max(1);
let mut entries = Vec::with_capacity(total_days / step + 1);
let mut di = start_di.to_usize();
while di <= end_di.to_usize() {
let day = brk_types::Day1::from(di);
let next_day = brk_types::Day1::from(di + 1);
if let Some(first_h) = first_height_vec.collect_one(day) {
let next_h = first_height_vec
.collect_one(next_day)
.unwrap_or(Height::from(current_height + 1));
let block_count = next_h.to_usize() - first_h.to_usize();
if block_count > 0 {
let sum = coinbase_vec.fold_range(
first_h,
next_h,
Sats::ZERO,
|acc, v| acc + v,
);
let avg = *sum / block_count as u64;
if let Some(ts) = timestamp_vec.collect_one(first_h) {
entries.push(BlockRewardsEntry {
avg_height: first_h.to_usize() as u32,
timestamp: *ts,
avg_rewards: avg,
});
}
}
}
di += step;
}
Ok(entries)
}
}
}
}
+327 -323
View File
@@ -1763,114 +1763,6 @@ function create_0sdM0M1M1sdM2M2sdM3sdP0P1P1sdP2P2sdP3sdSdSmaZscorePattern(client
};
}
/**
* @typedef {Object} InvestedNegNetNuplSupplyUnrealizedPattern3
* @property {BpsPercentRatioPattern} investedCapitalInLossRelToRealizedCap
* @property {BpsPercentRatioPattern} investedCapitalInProfitRelToRealizedCap
* @property {BpsPercentRatioPattern} negUnrealizedLossRelToMarketCap
* @property {BpsPercentRatioPattern} negUnrealizedLossRelToOwnGrossPnl
* @property {BpsPercentRatioPattern} negUnrealizedLossRelToOwnMarketCap
* @property {BpsPercentRatioPattern} netUnrealizedPnlRelToMarketCap
* @property {BpsPercentRatioPattern} netUnrealizedPnlRelToOwnGrossPnl
* @property {BpsPercentRatioPattern} netUnrealizedPnlRelToOwnMarketCap
* @property {MetricPattern1<StoredF32>} nupl
* @property {BpsPercentRatioPattern} supplyInLossRelToCirculatingSupply
* @property {BpsPercentRatioPattern} supplyInLossRelToOwnSupply
* @property {BpsPercentRatioPattern} supplyInProfitRelToCirculatingSupply
* @property {BpsPercentRatioPattern} supplyInProfitRelToOwnSupply
* @property {BpsPercentRatioPattern} supplyRelToCirculatingSupply
* @property {BpsPercentRatioPattern} unrealizedLossRelToMarketCap
* @property {BpsPercentRatioPattern} unrealizedLossRelToOwnGrossPnl
* @property {BpsPercentRatioPattern} unrealizedLossRelToOwnMarketCap
* @property {BpsPercentRatioPattern} unrealizedProfitRelToMarketCap
* @property {BpsPercentRatioPattern} unrealizedProfitRelToOwnGrossPnl
* @property {BpsPercentRatioPattern} unrealizedProfitRelToOwnMarketCap
*/
/**
* Create a InvestedNegNetNuplSupplyUnrealizedPattern3 pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {InvestedNegNetNuplSupplyUnrealizedPattern3}
*/
function createInvestedNegNetNuplSupplyUnrealizedPattern3(client, acc) {
return {
investedCapitalInLossRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_loss_rel_to_realized_cap')),
investedCapitalInProfitRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_profit_rel_to_realized_cap')),
negUnrealizedLossRelToMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'neg_unrealized_loss_rel_to_market_cap')),
negUnrealizedLossRelToOwnGrossPnl: createBpsPercentRatioPattern(client, _m(acc, 'neg_unrealized_loss_rel_to_own_gross_pnl')),
negUnrealizedLossRelToOwnMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'neg_unrealized_loss_rel_to_own_market_cap')),
netUnrealizedPnlRelToMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_market_cap')),
netUnrealizedPnlRelToOwnGrossPnl: createBpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_own_gross_pnl')),
netUnrealizedPnlRelToOwnMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_own_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')),
unrealizedLossRelToOwnGrossPnl: createBpsPercentRatioPattern(client, _m(acc, 'unrealized_loss_rel_to_own_gross_pnl')),
unrealizedLossRelToOwnMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'unrealized_loss_rel_to_own_market_cap')),
unrealizedProfitRelToMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'unrealized_profit_rel_to_market_cap')),
unrealizedProfitRelToOwnGrossPnl: createBpsPercentRatioPattern(client, _m(acc, 'unrealized_profit_rel_to_own_gross_pnl')),
unrealizedProfitRelToOwnMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'unrealized_profit_rel_to_own_market_cap')),
};
}
/**
* @typedef {Object} GrossMvrvNegNetRealizedSentSoprValuePattern
* @property {CentsUsdPattern} grossPnl
* @property {MetricPattern1<StoredF32>} mvrv
* @property {MetricPattern1<Dollars>} negRealizedLoss
* @property {CumulativeHeightPattern<CentsSigned>} netRealizedPnl
* @property {MetricPattern1<Dollars>} realizedCap
* @property {MetricPattern1<Cents>} realizedCapCents
* @property {MetricPattern1<CentsSigned>} realizedCapChange1m
* @property {CumulativeHeightPattern<Cents>} realizedLoss
* @property {CentsSatsUsdPattern} realizedPrice
* @property {BpsRatioPattern} realizedPriceRatio
* @property {RatioPattern} realizedPriceRatioPercentiles
* @property {CumulativeHeightPattern<Cents>} realizedProfit
* @property {BaseCumulativePattern} sentInLoss
* @property {BaseCumulativePattern} sentInProfit
* @property {_1m1w1y24hPattern<StoredF64>} sopr
* @property {MetricPattern1<Cents>} valueCreated
* @property {_1m1w1y24hPattern<Cents>} valueCreatedSum
* @property {MetricPattern1<Cents>} valueDestroyed
* @property {_1m1w1y24hPattern<Cents>} 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
@@ -1924,6 +1816,104 @@ function createPct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65
};
}
/**
* @typedef {Object} InvestedNetNuplSupplyUnrealizedPattern3
* @property {BpsPercentRatioPattern} investedCapitalInLossRelToRealizedCap
* @property {BpsPercentRatioPattern} investedCapitalInProfitRelToRealizedCap
* @property {BpsPercentRatioPattern} netUnrealizedPnlRelToMarketCap
* @property {BpsPercentRatioPattern} netUnrealizedPnlRelToOwnGrossPnl
* @property {BpsPercentRatioPattern} netUnrealizedPnlRelToOwnMarketCap
* @property {MetricPattern1<StoredF32>} nupl
* @property {BpsPercentRatioPattern} supplyInLossRelToCirculatingSupply
* @property {BpsPercentRatioPattern} supplyInLossRelToOwnSupply
* @property {BpsPercentRatioPattern} supplyInProfitRelToCirculatingSupply
* @property {BpsPercentRatioPattern} supplyInProfitRelToOwnSupply
* @property {BpsPercentRatioPattern} supplyRelToCirculatingSupply
* @property {BpsPercentRatioPattern} unrealizedLossRelToMarketCap
* @property {BpsPercentRatioPattern} unrealizedLossRelToOwnGrossPnl
* @property {BpsPercentRatioPattern} unrealizedLossRelToOwnMarketCap
* @property {BpsPercentRatioPattern} unrealizedProfitRelToMarketCap
* @property {BpsPercentRatioPattern} unrealizedProfitRelToOwnGrossPnl
* @property {BpsPercentRatioPattern} unrealizedProfitRelToOwnMarketCap
*/
/**
* Create a InvestedNetNuplSupplyUnrealizedPattern3 pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {InvestedNetNuplSupplyUnrealizedPattern3}
*/
function createInvestedNetNuplSupplyUnrealizedPattern3(client, acc) {
return {
investedCapitalInLossRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_loss_rel_to_realized_cap')),
investedCapitalInProfitRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_profit_rel_to_realized_cap')),
netUnrealizedPnlRelToMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_market_cap')),
netUnrealizedPnlRelToOwnGrossPnl: createBpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_own_gross_pnl')),
netUnrealizedPnlRelToOwnMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_own_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')),
unrealizedLossRelToOwnGrossPnl: createBpsPercentRatioPattern(client, _m(acc, 'unrealized_loss_rel_to_own_gross_pnl')),
unrealizedLossRelToOwnMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'unrealized_loss_rel_to_own_market_cap')),
unrealizedProfitRelToMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'unrealized_profit_rel_to_market_cap')),
unrealizedProfitRelToOwnGrossPnl: createBpsPercentRatioPattern(client, _m(acc, 'unrealized_profit_rel_to_own_gross_pnl')),
unrealizedProfitRelToOwnMarketCap: createBpsPercentRatioPattern(client, _m(acc, 'unrealized_profit_rel_to_own_market_cap')),
};
}
/**
* @typedef {Object} MvrvNegNetRealizedSentSoprValuePattern
* @property {MetricPattern1<StoredF32>} mvrv
* @property {MetricPattern1<Dollars>} negRealizedLoss
* @property {CumulativeHeightPattern<CentsSigned>} netRealizedPnl
* @property {MetricPattern1<Dollars>} realizedCap
* @property {MetricPattern1<Cents>} realizedCapCents
* @property {MetricPattern1<CentsSigned>} realizedCapChange1m
* @property {CumulativeHeightPattern<Cents>} realizedLoss
* @property {CentsSatsUsdPattern} realizedPrice
* @property {BpsRatioPattern} realizedPriceRatio
* @property {CumulativeHeightPattern<Cents>} realizedProfit
* @property {BaseCumulativePattern} sentInLoss
* @property {BaseCumulativePattern} sentInProfit
* @property {_1m1w1y24hPattern<StoredF64>} sopr
* @property {MetricPattern1<Cents>} valueCreated
* @property {_1m1w1y24hPattern<Cents>} valueCreatedSum
* @property {MetricPattern1<Cents>} valueDestroyed
* @property {_1m1w1y24hPattern<Cents>} valueDestroyedSum
*/
/**
* Create a MvrvNegNetRealizedSentSoprValuePattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {MvrvNegNetRealizedSentSoprValuePattern}
*/
function createMvrvNegNetRealizedSentSoprValuePattern(client, acc) {
return {
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')),
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} BpsRatioPattern2
* @property {MetricPattern1<BasisPoints32>} bps
@@ -2139,45 +2129,6 @@ function create_10y1m1w1y2y3m3y4y5y6m6y8yPattern3(client, acc) {
};
}
/**
* @typedef {Object} InvestedNegNetNuplSupplyUnrealizedPattern
* @property {BpsPercentRatioPattern} investedCapitalInLossRelToRealizedCap
* @property {BpsPercentRatioPattern} investedCapitalInProfitRelToRealizedCap
* @property {BpsPercentRatioPattern} negUnrealizedLossRelToMarketCap
* @property {BpsPercentRatioPattern} netUnrealizedPnlRelToMarketCap
* @property {MetricPattern1<StoredF32>} nupl
* @property {BpsPercentRatioPattern} supplyInLossRelToCirculatingSupply
* @property {BpsPercentRatioPattern} supplyInLossRelToOwnSupply
* @property {BpsPercentRatioPattern} supplyInProfitRelToCirculatingSupply
* @property {BpsPercentRatioPattern} supplyInProfitRelToOwnSupply
* @property {BpsPercentRatioPattern} supplyRelToCirculatingSupply
* @property {BpsPercentRatioPattern} unrealizedLossRelToMarketCap
* @property {BpsPercentRatioPattern} unrealizedProfitRelToMarketCap
*/
/**
* Create a InvestedNegNetNuplSupplyUnrealizedPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {InvestedNegNetNuplSupplyUnrealizedPattern}
*/
function createInvestedNegNetNuplSupplyUnrealizedPattern(client, acc) {
return {
investedCapitalInLossRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_loss_rel_to_realized_cap')),
investedCapitalInProfitRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_profit_rel_to_realized_cap')),
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} _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern
* @property {BpsPercentRatioPattern} _1m
@@ -2289,6 +2240,43 @@ function createAverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern
};
}
/**
* @typedef {Object} InvestedNetNuplSupplyUnrealizedPattern
* @property {BpsPercentRatioPattern} investedCapitalInLossRelToRealizedCap
* @property {BpsPercentRatioPattern} investedCapitalInProfitRelToRealizedCap
* @property {BpsPercentRatioPattern} netUnrealizedPnlRelToMarketCap
* @property {MetricPattern1<StoredF32>} nupl
* @property {BpsPercentRatioPattern} supplyInLossRelToCirculatingSupply
* @property {BpsPercentRatioPattern} supplyInLossRelToOwnSupply
* @property {BpsPercentRatioPattern} supplyInProfitRelToCirculatingSupply
* @property {BpsPercentRatioPattern} supplyInProfitRelToOwnSupply
* @property {BpsPercentRatioPattern} supplyRelToCirculatingSupply
* @property {BpsPercentRatioPattern} unrealizedLossRelToMarketCap
* @property {BpsPercentRatioPattern} unrealizedProfitRelToMarketCap
*/
/**
* Create a InvestedNetNuplSupplyUnrealizedPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {InvestedNetNuplSupplyUnrealizedPattern}
*/
function createInvestedNetNuplSupplyUnrealizedPattern(client, acc) {
return {
investedCapitalInLossRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_loss_rel_to_realized_cap')),
investedCapitalInProfitRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_profit_rel_to_realized_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} AverageGainsLossesRsiStochPattern
* @property {MetricPattern1<StoredF32>} averageGain
@@ -2390,6 +2378,39 @@ function createAverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, acc) {
};
}
/**
* @typedef {Object} AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern
* @property {_1m1w1y24hPattern<BasisPoints16>} average
* @property {MetricPattern18<BasisPoints16>} height
* @property {_1m1w1y24hPattern<BasisPoints16>} max
* @property {_1m1w1y24hPattern<BasisPoints16>} median
* @property {_1m1w1y24hPattern<BasisPoints16>} min
* @property {_1m1w1y24hPattern<BasisPoints16>} pct10
* @property {_1m1w1y24hPattern<BasisPoints16>} pct25
* @property {_1m1w1y24hPattern<BasisPoints16>} pct75
* @property {_1m1w1y24hPattern<BasisPoints16>} pct90
*/
/**
* Create a AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern}
*/
function createAverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, acc) {
return {
average: create_1m1w1y24hPattern(client, _m(acc, 'average')),
height: createMetricPattern18(client, acc),
max: create_1m1w1y24hPattern(client, _m(acc, 'max')),
median: create_1m1w1y24hPattern(client, _m(acc, 'median')),
min: create_1m1w1y24hPattern(client, _m(acc, 'min')),
pct10: create_1m1w1y24hPattern(client, _m(acc, 'p10')),
pct25: create_1m1w1y24hPattern(client, _m(acc, 'p25')),
pct75: create_1m1w1y24hPattern(client, _m(acc, 'p75')),
pct90: create_1m1w1y24hPattern(client, _m(acc, 'p90')),
};
}
/**
* @typedef {Object} AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern
* @property {_1m1w1y24hPattern<StoredU64>} average
@@ -2423,41 +2444,6 @@ function createAverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern(client, acc) {
};
}
/**
* @template T
* @typedef {Object} AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern
* @property {_1m1w1y24hPattern<T>} average
* @property {MetricPattern18<T>} height
* @property {_1m1w1y24hPattern<T>} max
* @property {_1m1w1y24hPattern<T>} median
* @property {_1m1w1y24hPattern<T>} min
* @property {_1m1w1y24hPattern<T>} pct10
* @property {_1m1w1y24hPattern<T>} pct25
* @property {_1m1w1y24hPattern<T>} pct75
* @property {_1m1w1y24hPattern<T>} pct90
*/
/**
* Create a AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern pattern node
* @template T
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<T>}
*/
function createAverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, acc) {
return {
average: create_1m1w1y24hPattern(client, _m(acc, 'average')),
height: createMetricPattern18(client, acc),
max: create_1m1w1y24hPattern(client, _m(acc, 'max')),
median: create_1m1w1y24hPattern(client, _m(acc, 'median')),
min: create_1m1w1y24hPattern(client, _m(acc, 'min')),
pct10: create_1m1w1y24hPattern(client, _m(acc, 'p10')),
pct25: create_1m1w1y24hPattern(client, _m(acc, 'p25')),
pct75: create_1m1w1y24hPattern(client, _m(acc, 'p75')),
pct90: create_1m1w1y24hPattern(client, _m(acc, 'p90')),
};
}
/**
* @typedef {Object} _1m1w1y24hBtcCentsSatsUsdPattern
* @property {BtcCentsSatsUsdPattern} _1m
@@ -2587,8 +2573,8 @@ function create_10y2y3y4y5y6y8yPattern(client, acc) {
* @property {CoinblocksCoindaysSentPattern} activity
* @property {MaxMinPattern} costBasis
* @property {UtxoPattern} outputs
* @property {GrossMvrvNegNetRealizedSentSoprValuePattern} realized
* @property {InvestedNegNetNuplSupplyUnrealizedPattern} relative
* @property {MvrvNegNetRealizedSentSoprValuePattern} realized
* @property {InvestedNetNuplSupplyUnrealizedPattern} relative
* @property {ChangeHalvedTotalPattern} supply
* @property {GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern} unrealized
*/
@@ -2604,42 +2590,13 @@ function createActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern(client
activity: createCoinblocksCoindaysSentPattern(client, acc),
costBasis: createMaxMinPattern(client, _m(acc, 'cost_basis')),
outputs: createUtxoPattern(client, _m(acc, 'utxo_count')),
realized: createGrossMvrvNegNetRealizedSentSoprValuePattern(client, acc),
relative: createInvestedNegNetNuplSupplyUnrealizedPattern(client, acc),
realized: createMvrvNegNetRealizedSentSoprValuePattern(client, acc),
relative: createInvestedNetNuplSupplyUnrealizedPattern(client, acc),
supply: createChangeHalvedTotalPattern(client, _m(acc, 'supply')),
unrealized: createGreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern(client, acc),
};
}
/**
* @typedef {Object} GrossNegNetSupplyUnrealizedPattern
* @property {CentsUsdPattern} grossPnl
* @property {MetricPattern1<Dollars>} negUnrealizedLoss
* @property {CentsUsdPattern} netUnrealizedPnl
* @property {BtcCentsSatsUsdPattern} supplyInLoss
* @property {BtcCentsSatsUsdPattern} supplyInProfit
* @property {CentsUsdPattern} unrealizedLoss
* @property {CentsUsdPattern} unrealizedProfit
*/
/**
* Create a GrossNegNetSupplyUnrealizedPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {GrossNegNetSupplyUnrealizedPattern}
*/
function createGrossNegNetSupplyUnrealizedPattern(client, acc) {
return {
grossPnl: createCentsUsdPattern(client, _m(acc, 'unrealized_gross_pnl')),
negUnrealizedLoss: createMetricPattern1(client, _m(acc, 'neg_unrealized_loss')),
netUnrealizedPnl: createCentsUsdPattern(client, _m(acc, 'net_unrealized_pnl')),
supplyInLoss: createBtcCentsSatsUsdPattern(client, _m(acc, 'supply_in_loss')),
supplyInProfit: createBtcCentsSatsUsdPattern(client, _m(acc, 'supply_in_profit')),
unrealizedLoss: createCentsUsdPattern(client, _m(acc, 'unrealized_loss')),
unrealizedProfit: createCentsUsdPattern(client, _m(acc, 'unrealized_profit')),
};
}
/**
* @typedef {Object} MvrvRealizedPattern
* @property {MetricPattern1<StoredF32>} mvrv
@@ -2669,41 +2626,14 @@ function createMvrvRealizedPattern(client, acc) {
};
}
/**
* @typedef {Object} _1m1w1y24hBaseCumulativePattern
* @property {AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2} _1m
* @property {AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2} _1w
* @property {AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2} _1y
* @property {AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2} _24h
* @property {BtcCentsSatsUsdPattern} base
* @property {BtcCentsSatsUsdPattern} cumulative
*/
/**
* Create a _1m1w1y24hBaseCumulativePattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {_1m1w1y24hBaseCumulativePattern}
*/
function create_1m1w1y24hBaseCumulativePattern(client, acc) {
return {
_1m: createAverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, _m(acc, '1m')),
_1w: createAverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, _m(acc, '1w')),
_1y: createAverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, _m(acc, '1y')),
_24h: createAverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, _m(acc, '24h')),
base: createBtcCentsSatsUsdPattern(client, acc),
cumulative: createBtcCentsSatsUsdPattern(client, _m(acc, 'cumulative')),
};
}
/**
* @typedef {Object} ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2
* @property {SentPattern} activity
* @property {UtxoPattern} outputs
* @property {GrossMvrvNegNetRealizedSentSoprValuePattern} realized
* @property {MvrvNegNetRealizedSentSoprValuePattern} realized
* @property {SupplyPattern3} relative
* @property {ChangeHalvedTotalPattern} supply
* @property {GrossNegNetSupplyUnrealizedPattern} unrealized
* @property {NegNetSupplyUnrealizedPattern} unrealized
*/
/**
@@ -2716,10 +2646,10 @@ function createActivityOutputsRealizedRelativeSupplyUnrealizedPattern2(client, a
return {
activity: createSentPattern(client, _m(acc, 'sent')),
outputs: createUtxoPattern(client, _m(acc, 'utxo_count')),
realized: createGrossMvrvNegNetRealizedSentSoprValuePattern(client, acc),
realized: createMvrvNegNetRealizedSentSoprValuePattern(client, acc),
relative: createSupplyPattern3(client, _m(acc, 'supply')),
supply: createChangeHalvedTotalPattern(client, _m(acc, 'supply')),
unrealized: createGrossNegNetSupplyUnrealizedPattern(client, acc),
unrealized: createNegNetSupplyUnrealizedPattern(client, acc),
};
}
@@ -2751,29 +2681,29 @@ function createActivityOutputsRealizedRelativeSupplyUnrealizedPattern(client, ac
}
/**
* @typedef {Object} BalanceBothReactivatedReceivingSendingPattern
* @property {AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<StoredU32>} balanceDecreased
* @property {AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<StoredU32>} balanceIncreased
* @property {AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<StoredU32>} both
* @property {AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<StoredU32>} reactivated
* @property {AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<StoredU32>} receiving
* @property {AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<StoredU32>} sending
* @typedef {Object} NegNetSupplyUnrealizedPattern
* @property {MetricPattern1<Dollars>} negUnrealizedLoss
* @property {CentsUsdPattern} netUnrealizedPnl
* @property {BtcCentsSatsUsdPattern} supplyInLoss
* @property {BtcCentsSatsUsdPattern} supplyInProfit
* @property {CentsUsdPattern} unrealizedLoss
* @property {CentsUsdPattern} unrealizedProfit
*/
/**
* Create a BalanceBothReactivatedReceivingSendingPattern pattern node
* Create a NegNetSupplyUnrealizedPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {BalanceBothReactivatedReceivingSendingPattern}
* @returns {NegNetSupplyUnrealizedPattern}
*/
function createBalanceBothReactivatedReceivingSendingPattern(client, acc) {
function createNegNetSupplyUnrealizedPattern(client, acc) {
return {
balanceDecreased: createAverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'balance_decreased')),
balanceIncreased: createAverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'balance_increased')),
both: createAverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'both')),
reactivated: createAverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'reactivated')),
receiving: createAverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'receiving')),
sending: createAverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'sending')),
negUnrealizedLoss: createMetricPattern1(client, _m(acc, 'neg_unrealized_loss')),
netUnrealizedPnl: createCentsUsdPattern(client, _m(acc, 'net_unrealized_pnl')),
supplyInLoss: createBtcCentsSatsUsdPattern(client, _m(acc, 'supply_in_loss')),
supplyInProfit: createBtcCentsSatsUsdPattern(client, _m(acc, 'supply_in_profit')),
unrealizedLoss: createCentsUsdPattern(client, _m(acc, 'unrealized_loss')),
unrealizedProfit: createCentsUsdPattern(client, _m(acc, 'unrealized_profit')),
};
}
@@ -2852,6 +2782,33 @@ function createSupplyPattern3(client, acc) {
};
}
/**
* @template T
* @typedef {Object} _1m1w1y24hHeightPattern
* @property {MetricPattern1<T>} _1m
* @property {MetricPattern1<T>} _1w
* @property {MetricPattern1<T>} _1y
* @property {MetricPattern1<T>} _24h
* @property {MetricPattern18<T>} height
*/
/**
* Create a _1m1w1y24hHeightPattern pattern node
* @template T
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {_1m1w1y24hHeightPattern<T>}
*/
function create_1m1w1y24hHeightPattern(client, acc) {
return {
_1m: createMetricPattern1(client, _m(acc, 'average_1m')),
_1w: createMetricPattern1(client, _m(acc, 'average_1w')),
_1y: createMetricPattern1(client, _m(acc, 'average_1y')),
_24h: createMetricPattern1(client, _m(acc, 'average_24h')),
height: createMetricPattern18(client, acc),
};
}
/**
* @typedef {Object} _1m1w1y24hPattern6
* @property {BaseBtcCentsSatsUsdPattern} _1m
@@ -2921,6 +2878,29 @@ function create_1m1w1y24hPattern5(client, acc) {
};
}
/**
* @typedef {Object} BothReactivatedReceivingSendingPattern
* @property {_1m1w1y24hHeightPattern<StoredU32>} both
* @property {_1m1w1y24hHeightPattern<StoredU32>} reactivated
* @property {_1m1w1y24hHeightPattern<StoredU32>} receiving
* @property {_1m1w1y24hHeightPattern<StoredU32>} sending
*/
/**
* Create a BothReactivatedReceivingSendingPattern pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {BothReactivatedReceivingSendingPattern}
*/
function createBothReactivatedReceivingSendingPattern(client, acc) {
return {
both: create_1m1w1y24hHeightPattern(client, _m(acc, 'both')),
reactivated: create_1m1w1y24hHeightPattern(client, _m(acc, 'reactivated')),
receiving: create_1m1w1y24hHeightPattern(client, _m(acc, 'receiving')),
sending: create_1m1w1y24hHeightPattern(client, _m(acc, 'sending')),
};
}
/**
* @typedef {Object} BtcCentsSatsUsdPattern
* @property {MetricPattern1<Bitcoin>} btc
@@ -3060,19 +3040,19 @@ function createBaseCumulativeSumPattern(client, acc) {
}
/**
* @typedef {Object} BpsPercentRatioPattern2
* @property {AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<BasisPoints16>} bps
* @typedef {Object} BpsPercentRatioPattern3
* @property {AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern} bps
* @property {MetricPattern1<StoredF32>} percent
* @property {MetricPattern1<StoredF32>} ratio
*/
/**
* Create a BpsPercentRatioPattern2 pattern node
* Create a BpsPercentRatioPattern3 pattern node
* @param {BrkClientBase} client
* @param {string} acc - Accumulated metric name
* @returns {BpsPercentRatioPattern2}
* @returns {BpsPercentRatioPattern3}
*/
function createBpsPercentRatioPattern2(client, acc) {
function createBpsPercentRatioPattern3(client, acc) {
return {
bps: createAverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'bps')),
percent: createMetricPattern1(client, acc),
@@ -3546,11 +3526,11 @@ function create_2wPattern(client, acc) {
* @property {MetricPattern18<StoredU64>} totalSize
* @property {MetricsTree_Blocks_Weight} weight
* @property {MetricsTree_Blocks_Count} count
* @property {AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern<Timestamp>} interval
* @property {_1m1w1y24hHeightPattern<Timestamp>} interval
* @property {MetricsTree_Blocks_Halving} halving
* @property {AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern} vbytes
* @property {MetricsTree_Blocks_Size} size
* @property {BpsPercentRatioPattern2} fullness
* @property {MetricsTree_Blocks_Fullness} fullness
*/
/**
@@ -3656,6 +3636,13 @@ function create_2wPattern(client, acc) {
* @property {_1m1w1y24hPattern<StoredU64>} pct90
*/
/**
* @typedef {Object} MetricsTree_Blocks_Fullness
* @property {_1m1w1y24hHeightPattern<BasisPoints16>} bps
* @property {MetricPattern1<StoredF32>} ratio
* @property {MetricPattern1<StoredF32>} percent
*/
/**
* @typedef {Object} MetricsTree_Transactions
* @property {MetricPattern18<TxIndex>} firstTxindex
@@ -3805,7 +3792,7 @@ function create_2wPattern(client, acc) {
/**
* @typedef {Object} MetricsTree_Scripts_Value
* @property {_1m1w1y24hBaseCumulativePattern} opreturn
* @property {BaseCumulativePattern} opreturn
*/
/**
@@ -3822,9 +3809,9 @@ function create_2wPattern(client, acc) {
/**
* @typedef {Object} MetricsTree_Mining_Rewards
* @property {_1m1w1y24hBaseCumulativePattern} coinbase
* @property {_1m1w1y24hBaseCumulativePattern} subsidy
* @property {_1m1w1y24hBaseCumulativePattern} fees
* @property {BaseCumulativeSumPattern} coinbase
* @property {BaseCumulativePattern} subsidy
* @property {MetricsTree_Mining_Rewards_Fees} fees
* @property {BaseCumulativeSumPattern} unclaimedRewards
* @property {BpsPercentRatioPattern} feeDominance
* @property {_1m1w1y24hPattern2} feeDominanceRolling
@@ -3833,6 +3820,16 @@ function create_2wPattern(client, acc) {
* @property {CentsUsdPattern} subsidySma1y
*/
/**
* @typedef {Object} MetricsTree_Mining_Rewards_Fees
* @property {BtcCentsSatsUsdPattern} base
* @property {BtcCentsSatsUsdPattern} cumulative
* @property {AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2} _24h
* @property {AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2} _1w
* @property {AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2} _1m
* @property {AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2} _1y
*/
/**
* @typedef {Object} MetricsTree_Mining_Hashrate
* @property {MetricPattern1<StoredF64>} hashRate
@@ -4794,7 +4791,6 @@ function create_2wPattern(client, acc) {
* @property {BpsPercentRatioPattern} unrealizedProfitRelToMarketCap
* @property {BpsPercentRatioPattern} unrealizedLossRelToMarketCap
* @property {BpsPercentRatioPattern} netUnrealizedPnlRelToMarketCap
* @property {BpsPercentRatioPattern} negUnrealizedLossRelToMarketCap
* @property {MetricPattern1<StoredF32>} nupl
* @property {BpsPercentRatioPattern} investedCapitalInProfitRelToRealizedCap
* @property {BpsPercentRatioPattern} investedCapitalInLossRelToRealizedCap
@@ -4802,7 +4798,6 @@ function create_2wPattern(client, acc) {
* @property {BpsPercentRatioPattern} supplyInLossRelToOwnSupply
* @property {BpsPercentRatioPattern} unrealizedProfitRelToOwnGrossPnl
* @property {BpsPercentRatioPattern} unrealizedLossRelToOwnGrossPnl
* @property {BpsPercentRatioPattern} negUnrealizedLossRelToOwnGrossPnl
* @property {BpsPercentRatioPattern} netUnrealizedPnlRelToOwnGrossPnl
*/
@@ -4814,7 +4809,7 @@ function create_2wPattern(client, acc) {
* @property {CapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprUpperValuePattern} realized
* @property {InvestedMaxMinPercentilesPattern} costBasis
* @property {GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern} unrealized
* @property {InvestedNegNetNuplSupplyUnrealizedPattern3} relative
* @property {InvestedNetNuplSupplyUnrealizedPattern3} relative
* @property {MetricPattern1<StoredF32>} dormancy
* @property {MetricPattern1<StoredF32>} velocity
* @property {MetricPattern1<Cents>} adjustedValueCreated
@@ -4833,7 +4828,7 @@ function create_2wPattern(client, acc) {
* @property {CapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprUpperValuePattern} realized
* @property {InvestedMaxMinPercentilesPattern} costBasis
* @property {GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern} unrealized
* @property {InvestedNegNetNuplSupplyUnrealizedPattern3} relative
* @property {InvestedNetNuplSupplyUnrealizedPattern3} relative
* @property {MetricPattern1<StoredF32>} dormancy
* @property {MetricPattern1<StoredF32>} velocity
*/
@@ -5068,15 +5063,15 @@ function create_2wPattern(client, acc) {
/**
* @typedef {Object} MetricsTree_Distribution_AddressActivity
* @property {BalanceBothReactivatedReceivingSendingPattern} all
* @property {BalanceBothReactivatedReceivingSendingPattern} p2pk65
* @property {BalanceBothReactivatedReceivingSendingPattern} p2pk33
* @property {BalanceBothReactivatedReceivingSendingPattern} p2pkh
* @property {BalanceBothReactivatedReceivingSendingPattern} p2sh
* @property {BalanceBothReactivatedReceivingSendingPattern} p2wpkh
* @property {BalanceBothReactivatedReceivingSendingPattern} p2wsh
* @property {BalanceBothReactivatedReceivingSendingPattern} p2tr
* @property {BalanceBothReactivatedReceivingSendingPattern} p2a
* @property {BothReactivatedReceivingSendingPattern} all
* @property {BothReactivatedReceivingSendingPattern} p2pk65
* @property {BothReactivatedReceivingSendingPattern} p2pk33
* @property {BothReactivatedReceivingSendingPattern} p2pkh
* @property {BothReactivatedReceivingSendingPattern} p2sh
* @property {BothReactivatedReceivingSendingPattern} p2wpkh
* @property {BothReactivatedReceivingSendingPattern} p2wsh
* @property {BothReactivatedReceivingSendingPattern} p2tr
* @property {BothReactivatedReceivingSendingPattern} p2a
*/
/**
@@ -5107,15 +5102,15 @@ function create_2wPattern(client, acc) {
/**
* @typedef {Object} MetricsTree_Distribution_GrowthRate
* @property {BpsPercentRatioPattern2} all
* @property {BpsPercentRatioPattern2} p2pk65
* @property {BpsPercentRatioPattern2} p2pk33
* @property {BpsPercentRatioPattern2} p2pkh
* @property {BpsPercentRatioPattern2} p2sh
* @property {BpsPercentRatioPattern2} p2wpkh
* @property {BpsPercentRatioPattern2} p2wsh
* @property {BpsPercentRatioPattern2} p2tr
* @property {BpsPercentRatioPattern2} p2a
* @property {BpsPercentRatioPattern3} all
* @property {BpsPercentRatioPattern3} p2pk65
* @property {BpsPercentRatioPattern3} p2pk33
* @property {BpsPercentRatioPattern3} p2pkh
* @property {BpsPercentRatioPattern3} p2sh
* @property {BpsPercentRatioPattern3} p2wpkh
* @property {BpsPercentRatioPattern3} p2wsh
* @property {BpsPercentRatioPattern3} p2tr
* @property {BpsPercentRatioPattern3} p2a
*/
/**
@@ -6165,7 +6160,7 @@ class BrkClient extends BrkClientBase {
height14yAgo: createMetricPattern18(this, 'height_14y_ago'),
height26yAgo: createMetricPattern18(this, 'height_26y_ago'),
},
interval: createAverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(this, 'block_interval'),
interval: create_1m1w1y24hHeightPattern(this, 'block_interval'),
halving: {
epoch: createMetricPattern1(this, 'halving_epoch'),
blocksBeforeNextHalving: createMetricPattern1(this, 'blocks_before_next_halving'),
@@ -6184,7 +6179,11 @@ class BrkClient extends BrkClientBase {
pct75: create_1m1w1y24hPattern(this, 'block_size_p75'),
pct90: create_1m1w1y24hPattern(this, 'block_size_p90'),
},
fullness: createBpsPercentRatioPattern2(this, 'block_fullness'),
fullness: {
bps: create_1m1w1y24hHeightPattern(this, 'block_fullness_bps'),
ratio: createMetricPattern1(this, 'block_fullness_ratio'),
percent: createMetricPattern1(this, 'block_fullness'),
},
},
transactions: {
firstTxindex: createMetricPattern18(this, 'first_txindex'),
@@ -6294,7 +6293,7 @@ class BrkClient extends BrkClientBase {
segwit: createCumulativeHeightSumPattern(this, 'segwit_count'),
},
value: {
opreturn: create_1m1w1y24hBaseCumulativePattern(this, 'opreturn_value'),
opreturn: createBaseCumulativePattern(this, 'opreturn_value'),
},
adoption: {
taproot: createBpsPercentRatioPattern(this, 'taproot_adoption'),
@@ -6303,9 +6302,16 @@ class BrkClient extends BrkClientBase {
},
mining: {
rewards: {
coinbase: create_1m1w1y24hBaseCumulativePattern(this, 'coinbase'),
subsidy: create_1m1w1y24hBaseCumulativePattern(this, 'subsidy'),
fees: create_1m1w1y24hBaseCumulativePattern(this, 'fees'),
coinbase: createBaseCumulativeSumPattern(this, 'coinbase'),
subsidy: createBaseCumulativePattern(this, 'subsidy'),
fees: {
base: createBtcCentsSatsUsdPattern(this, 'fees'),
cumulative: createBtcCentsSatsUsdPattern(this, 'fees_cumulative'),
_24h: createAverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(this, 'fees_24h'),
_1w: createAverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(this, 'fees_1w'),
_1m: createAverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(this, 'fees_1m'),
_1y: createAverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(this, 'fees_1y'),
},
unclaimedRewards: createBaseCumulativeSumPattern(this, 'unclaimed_rewards'),
feeDominance: createBpsPercentRatioPattern(this, 'fee_dominance'),
feeDominanceRolling: create_1m1w1y24hPattern2(this, 'fee_dominance'),
@@ -7011,7 +7017,6 @@ class BrkClient extends BrkClientBase {
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'),
@@ -7019,7 +7024,6 @@ class BrkClient extends BrkClientBase {
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'),
netUnrealizedPnlRelToOwnGrossPnl: createBpsPercentRatioPattern(this, 'net_unrealized_pnl_rel_to_own_gross_pnl'),
},
dormancy: createMetricPattern1(this, 'dormancy'),
@@ -7032,7 +7036,7 @@ class BrkClient extends BrkClientBase {
realized: createCapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprUpperValuePattern(this, 'sth'),
costBasis: createInvestedMaxMinPercentilesPattern(this, 'sth'),
unrealized: createGreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern(this, 'sth'),
relative: createInvestedNegNetNuplSupplyUnrealizedPattern3(this, 'sth'),
relative: createInvestedNetNuplSupplyUnrealizedPattern3(this, 'sth'),
dormancy: createMetricPattern1(this, 'sth_dormancy'),
velocity: createMetricPattern1(this, 'sth_velocity'),
adjustedValueCreated: createMetricPattern1(this, 'sth_adjusted_value_created'),
@@ -7049,7 +7053,7 @@ class BrkClient extends BrkClientBase {
realized: createCapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprUpperValuePattern(this, 'lth'),
costBasis: createInvestedMaxMinPercentilesPattern(this, 'lth'),
unrealized: createGreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern(this, 'lth'),
relative: createInvestedNegNetNuplSupplyUnrealizedPattern3(this, 'lth'),
relative: createInvestedNetNuplSupplyUnrealizedPattern3(this, 'lth'),
dormancy: createMetricPattern1(this, 'lth_dormancy'),
velocity: createMetricPattern1(this, 'lth_velocity'),
},
@@ -7256,15 +7260,15 @@ class BrkClient extends BrkClientBase {
addrCount: createAllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern(this, 'addr_count'),
emptyAddrCount: createAllP2aP2pk33P2pk65P2pkhP2shP2trP2wpkhP2wshPattern(this, 'empty_addr_count'),
addressActivity: {
all: createBalanceBothReactivatedReceivingSendingPattern(this, 'address_activity'),
p2pk65: createBalanceBothReactivatedReceivingSendingPattern(this, 'p2pk65_address_activity'),
p2pk33: createBalanceBothReactivatedReceivingSendingPattern(this, 'p2pk33_address_activity'),
p2pkh: createBalanceBothReactivatedReceivingSendingPattern(this, 'p2pkh_address_activity'),
p2sh: createBalanceBothReactivatedReceivingSendingPattern(this, 'p2sh_address_activity'),
p2wpkh: createBalanceBothReactivatedReceivingSendingPattern(this, 'p2wpkh_address_activity'),
p2wsh: createBalanceBothReactivatedReceivingSendingPattern(this, 'p2wsh_address_activity'),
p2tr: createBalanceBothReactivatedReceivingSendingPattern(this, 'p2tr_address_activity'),
p2a: createBalanceBothReactivatedReceivingSendingPattern(this, 'p2a_address_activity'),
all: createBothReactivatedReceivingSendingPattern(this, 'address_activity'),
p2pk65: createBothReactivatedReceivingSendingPattern(this, 'p2pk65_address_activity'),
p2pk33: createBothReactivatedReceivingSendingPattern(this, 'p2pk33_address_activity'),
p2pkh: createBothReactivatedReceivingSendingPattern(this, 'p2pkh_address_activity'),
p2sh: createBothReactivatedReceivingSendingPattern(this, 'p2sh_address_activity'),
p2wpkh: createBothReactivatedReceivingSendingPattern(this, 'p2wpkh_address_activity'),
p2wsh: createBothReactivatedReceivingSendingPattern(this, 'p2wsh_address_activity'),
p2tr: createBothReactivatedReceivingSendingPattern(this, 'p2tr_address_activity'),
p2a: createBothReactivatedReceivingSendingPattern(this, 'p2a_address_activity'),
},
totalAddrCount: {
all: createMetricPattern1(this, 'total_addr_count'),
@@ -7289,15 +7293,15 @@ class BrkClient extends BrkClientBase {
p2a: createAverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(this, 'p2a_new_addr_count'),
},
growthRate: {
all: createBpsPercentRatioPattern2(this, 'growth_rate'),
p2pk65: createBpsPercentRatioPattern2(this, 'p2pk65_growth_rate'),
p2pk33: createBpsPercentRatioPattern2(this, 'p2pk33_growth_rate'),
p2pkh: createBpsPercentRatioPattern2(this, 'p2pkh_growth_rate'),
p2sh: createBpsPercentRatioPattern2(this, 'p2sh_growth_rate'),
p2wpkh: createBpsPercentRatioPattern2(this, 'p2wpkh_growth_rate'),
p2wsh: createBpsPercentRatioPattern2(this, 'p2wsh_growth_rate'),
p2tr: createBpsPercentRatioPattern2(this, 'p2tr_growth_rate'),
p2a: createBpsPercentRatioPattern2(this, 'p2a_growth_rate'),
all: createBpsPercentRatioPattern3(this, 'growth_rate'),
p2pk65: createBpsPercentRatioPattern3(this, 'p2pk65_growth_rate'),
p2pk33: createBpsPercentRatioPattern3(this, 'p2pk33_growth_rate'),
p2pkh: createBpsPercentRatioPattern3(this, 'p2pkh_growth_rate'),
p2sh: createBpsPercentRatioPattern3(this, 'p2sh_growth_rate'),
p2wpkh: createBpsPercentRatioPattern3(this, 'p2wpkh_growth_rate'),
p2wsh: createBpsPercentRatioPattern3(this, 'p2wsh_growth_rate'),
p2tr: createBpsPercentRatioPattern3(this, 'p2tr_growth_rate'),
p2a: createBpsPercentRatioPattern3(this, 'p2a_growth_rate'),
},
fundedaddressindex: createMetricPattern34(this, 'fundedaddressindex'),
emptyaddressindex: createMetricPattern35(this, 'emptyaddressindex'),
+157 -150
View File
@@ -2158,57 +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 InvestedNegNetNuplSupplyUnrealizedPattern3:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated metric name."""
self.invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_loss_rel_to_realized_cap'))
self.invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_profit_rel_to_realized_cap'))
self.neg_unrealized_loss_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'neg_unrealized_loss_rel_to_market_cap'))
self.neg_unrealized_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'neg_unrealized_loss_rel_to_own_gross_pnl'))
self.neg_unrealized_loss_rel_to_own_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'neg_unrealized_loss_rel_to_own_market_cap'))
self.net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_market_cap'))
self.net_unrealized_pnl_rel_to_own_gross_pnl: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_own_gross_pnl'))
self.net_unrealized_pnl_rel_to_own_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_own_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_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'unrealized_loss_rel_to_own_gross_pnl'))
self.unrealized_loss_rel_to_own_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'unrealized_loss_rel_to_own_market_cap'))
self.unrealized_profit_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'unrealized_profit_rel_to_market_cap'))
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."""
@@ -2234,6 +2183,52 @@ class Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct7
self.pct90: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct90'))
self.pct95: CentsSatsUsdPattern = CentsSatsUsdPattern(client, _m(acc, 'pct95'))
class InvestedNetNuplSupplyUnrealizedPattern3:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated metric name."""
self.invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_loss_rel_to_realized_cap'))
self.invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_profit_rel_to_realized_cap'))
self.net_unrealized_pnl_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_market_cap'))
self.net_unrealized_pnl_rel_to_own_gross_pnl: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_own_gross_pnl'))
self.net_unrealized_pnl_rel_to_own_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'net_unrealized_pnl_rel_to_own_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_loss_rel_to_own_gross_pnl: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'unrealized_loss_rel_to_own_gross_pnl'))
self.unrealized_loss_rel_to_own_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'unrealized_loss_rel_to_own_market_cap'))
self.unrealized_profit_rel_to_market_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'unrealized_profit_rel_to_market_cap'))
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 MvrvNegNetRealizedSentSoprValuePattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated metric name."""
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_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 BpsRatioPattern2:
"""Pattern struct for repeated tree structure."""
@@ -2334,24 +2329,6 @@ class _10y1m1w1y2y3m3y4y5y6m6y8yPattern3:
self._6y: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '6y'))
self._8y: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '8y'))
class InvestedNegNetNuplSupplyUnrealizedPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated metric name."""
self.invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_loss_rel_to_realized_cap'))
self.invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_profit_rel_to_realized_cap'))
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 _1m1w1y24hBaseBpsCumulativeHeightPercentRatioSumPattern:
"""Pattern struct for repeated tree structure."""
@@ -2403,6 +2380,23 @@ class AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern:
self.pct90: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'p90'))
self.sum: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'sum'))
class InvestedNetNuplSupplyUnrealizedPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated metric name."""
self.invested_capital_in_loss_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_loss_rel_to_realized_cap'))
self.invested_capital_in_profit_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'invested_capital_in_profit_rel_to_realized_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 AverageGainsLossesRsiStochPattern:
"""Pattern struct for repeated tree structure."""
@@ -2449,6 +2443,21 @@ class AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2:
self.pct90: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'p90'))
self.sum: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'sum'))
class AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated metric name."""
self.average: _1m1w1y24hPattern[BasisPoints16] = _1m1w1y24hPattern(client, _m(acc, 'average'))
self.height: MetricPattern18[BasisPoints16] = MetricPattern18(client, acc)
self.max: _1m1w1y24hPattern[BasisPoints16] = _1m1w1y24hPattern(client, _m(acc, 'max'))
self.median: _1m1w1y24hPattern[BasisPoints16] = _1m1w1y24hPattern(client, _m(acc, 'median'))
self.min: _1m1w1y24hPattern[BasisPoints16] = _1m1w1y24hPattern(client, _m(acc, 'min'))
self.pct10: _1m1w1y24hPattern[BasisPoints16] = _1m1w1y24hPattern(client, _m(acc, 'p10'))
self.pct25: _1m1w1y24hPattern[BasisPoints16] = _1m1w1y24hPattern(client, _m(acc, 'p25'))
self.pct75: _1m1w1y24hPattern[BasisPoints16] = _1m1w1y24hPattern(client, _m(acc, 'p75'))
self.pct90: _1m1w1y24hPattern[BasisPoints16] = _1m1w1y24hPattern(client, _m(acc, 'p90'))
class AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern:
"""Pattern struct for repeated tree structure."""
@@ -2464,21 +2473,6 @@ class AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern:
self.pct90: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'p90'))
self.sum: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, _m(acc, 'sum'))
class AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(Generic[T]):
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated metric name."""
self.average: _1m1w1y24hPattern[T] = _1m1w1y24hPattern(client, _m(acc, 'average'))
self.height: MetricPattern18[T] = MetricPattern18(client, acc)
self.max: _1m1w1y24hPattern[T] = _1m1w1y24hPattern(client, _m(acc, 'max'))
self.median: _1m1w1y24hPattern[T] = _1m1w1y24hPattern(client, _m(acc, 'median'))
self.min: _1m1w1y24hPattern[T] = _1m1w1y24hPattern(client, _m(acc, 'min'))
self.pct10: _1m1w1y24hPattern[T] = _1m1w1y24hPattern(client, _m(acc, 'p10'))
self.pct25: _1m1w1y24hPattern[T] = _1m1w1y24hPattern(client, _m(acc, 'p25'))
self.pct75: _1m1w1y24hPattern[T] = _1m1w1y24hPattern(client, _m(acc, 'p75'))
self.pct90: _1m1w1y24hPattern[T] = _1m1w1y24hPattern(client, _m(acc, 'p90'))
class _1m1w1y24hBtcCentsSatsUsdPattern:
"""Pattern struct for repeated tree structure."""
@@ -2542,24 +2536,11 @@ class ActivityCostOutputsRealizedRelativeSupplyUnrealizedPattern:
self.activity: CoinblocksCoindaysSentPattern = CoinblocksCoindaysSentPattern(client, acc)
self.cost_basis: MaxMinPattern = MaxMinPattern(client, _m(acc, 'cost_basis'))
self.outputs: UtxoPattern = UtxoPattern(client, _m(acc, 'utxo_count'))
self.realized: GrossMvrvNegNetRealizedSentSoprValuePattern = GrossMvrvNegNetRealizedSentSoprValuePattern(client, acc)
self.relative: InvestedNegNetNuplSupplyUnrealizedPattern = InvestedNegNetNuplSupplyUnrealizedPattern(client, acc)
self.realized: MvrvNegNetRealizedSentSoprValuePattern = MvrvNegNetRealizedSentSoprValuePattern(client, acc)
self.relative: InvestedNetNuplSupplyUnrealizedPattern = InvestedNetNuplSupplyUnrealizedPattern(client, acc)
self.supply: ChangeHalvedTotalPattern = ChangeHalvedTotalPattern(client, _m(acc, 'supply'))
self.unrealized: GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern = GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern(client, acc)
class GrossNegNetSupplyUnrealizedPattern:
"""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, 'unrealized_gross_pnl'))
self.neg_unrealized_loss: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss'))
self.net_unrealized_pnl: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'net_unrealized_pnl'))
self.supply_in_loss: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'supply_in_loss'))
self.supply_in_profit: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'supply_in_profit'))
self.unrealized_loss: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'unrealized_loss'))
self.unrealized_profit: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'unrealized_profit'))
class MvrvRealizedPattern:
"""Pattern struct for repeated tree structure."""
@@ -2573,18 +2554,6 @@ class MvrvRealizedPattern:
self.realized_price_ratio: BpsRatioPattern = BpsRatioPattern(client, _m(acc, 'realized_price_ratio'))
self.realized_profit: CumulativeHeightPattern[Cents] = CumulativeHeightPattern(client, _m(acc, 'realized_profit'))
class _1m1w1y24hBaseCumulativePattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated metric name."""
self._1m: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2 = AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, _m(acc, '1m'))
self._1w: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2 = AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, _m(acc, '1w'))
self._1y: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2 = AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, _m(acc, '1y'))
self._24h: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2 = AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, _m(acc, '24h'))
self.base: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, acc)
self.cumulative: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'cumulative'))
class ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2:
"""Pattern struct for repeated tree structure."""
@@ -2592,10 +2561,10 @@ class ActivityOutputsRealizedRelativeSupplyUnrealizedPattern2:
"""Create pattern node with accumulated metric name."""
self.activity: SentPattern = SentPattern(client, _m(acc, 'sent'))
self.outputs: UtxoPattern = UtxoPattern(client, _m(acc, 'utxo_count'))
self.realized: GrossMvrvNegNetRealizedSentSoprValuePattern = GrossMvrvNegNetRealizedSentSoprValuePattern(client, acc)
self.realized: MvrvNegNetRealizedSentSoprValuePattern = MvrvNegNetRealizedSentSoprValuePattern(client, acc)
self.relative: SupplyPattern3 = SupplyPattern3(client, _m(acc, 'supply'))
self.supply: ChangeHalvedTotalPattern = ChangeHalvedTotalPattern(client, _m(acc, 'supply'))
self.unrealized: GrossNegNetSupplyUnrealizedPattern = GrossNegNetSupplyUnrealizedPattern(client, acc)
self.unrealized: NegNetSupplyUnrealizedPattern = NegNetSupplyUnrealizedPattern(client, acc)
class ActivityOutputsRealizedRelativeSupplyUnrealizedPattern:
"""Pattern struct for repeated tree structure."""
@@ -2609,17 +2578,17 @@ class ActivityOutputsRealizedRelativeSupplyUnrealizedPattern:
self.supply: ChangeHalvedTotalPattern = ChangeHalvedTotalPattern(client, _m(acc, 'supply'))
self.unrealized: SupplyPattern2 = SupplyPattern2(client, _m(acc, 'supply_in'))
class BalanceBothReactivatedReceivingSendingPattern:
class NegNetSupplyUnrealizedPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated metric name."""
self.balance_decreased: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern[StoredU32] = AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'balance_decreased'))
self.balance_increased: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern[StoredU32] = AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'balance_increased'))
self.both: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern[StoredU32] = AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'both'))
self.reactivated: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern[StoredU32] = AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'reactivated'))
self.receiving: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern[StoredU32] = AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'receiving'))
self.sending: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern[StoredU32] = AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'sending'))
self.neg_unrealized_loss: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'neg_unrealized_loss'))
self.net_unrealized_pnl: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'net_unrealized_pnl'))
self.supply_in_loss: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'supply_in_loss'))
self.supply_in_profit: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'supply_in_profit'))
self.unrealized_loss: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'unrealized_loss'))
self.unrealized_profit: CentsUsdPattern = CentsUsdPattern(client, _m(acc, 'unrealized_profit'))
class BaseBtcCentsSatsUsdPattern:
"""Pattern struct for repeated tree structure."""
@@ -2654,6 +2623,17 @@ class SupplyPattern3:
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 _1m1w1y24hHeightPattern(Generic[T]):
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated metric name."""
self._1m: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'average_1m'))
self._1w: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'average_1w'))
self._1y: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'average_1y'))
self._24h: MetricPattern1[T] = MetricPattern1(client, _m(acc, 'average_24h'))
self.height: MetricPattern18[T] = MetricPattern18(client, acc)
class _1m1w1y24hPattern6:
"""Pattern struct for repeated tree structure."""
@@ -2684,6 +2664,16 @@ class _1m1w1y24hPattern5:
self._1y: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '1y'))
self._24h: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, '24h'))
class BothReactivatedReceivingSendingPattern:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated metric name."""
self.both: _1m1w1y24hHeightPattern[StoredU32] = _1m1w1y24hHeightPattern(client, _m(acc, 'both'))
self.reactivated: _1m1w1y24hHeightPattern[StoredU32] = _1m1w1y24hHeightPattern(client, _m(acc, 'reactivated'))
self.receiving: _1m1w1y24hHeightPattern[StoredU32] = _1m1w1y24hHeightPattern(client, _m(acc, 'receiving'))
self.sending: _1m1w1y24hHeightPattern[StoredU32] = _1m1w1y24hHeightPattern(client, _m(acc, 'sending'))
class BtcCentsSatsUsdPattern:
"""Pattern struct for repeated tree structure."""
@@ -2743,12 +2733,12 @@ class BaseCumulativeSumPattern:
self.cumulative: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, _m(acc, 'cumulative'))
self.sum: _1m1w1y24hPattern5 = _1m1w1y24hPattern5(client, _m(acc, 'sum'))
class BpsPercentRatioPattern2:
class BpsPercentRatioPattern3:
"""Pattern struct for repeated tree structure."""
def __init__(self, client: BrkClientBase, acc: str):
"""Create pattern node with accumulated metric name."""
self.bps: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern[BasisPoints16] = AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'bps'))
self.bps: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern = AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, _m(acc, 'bps'))
self.percent: MetricPattern1[StoredF32] = MetricPattern1(client, acc)
self.ratio: MetricPattern1[StoredF32] = MetricPattern1(client, _m(acc, 'ratio'))
@@ -3045,6 +3035,14 @@ class MetricsTree_Blocks_Size:
self.pct75: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, 'block_size_p75')
self.pct90: _1m1w1y24hPattern[StoredU64] = _1m1w1y24hPattern(client, 'block_size_p90')
class MetricsTree_Blocks_Fullness:
"""Metrics tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.bps: _1m1w1y24hHeightPattern[BasisPoints16] = _1m1w1y24hHeightPattern(client, 'block_fullness_bps')
self.ratio: MetricPattern1[StoredF32] = MetricPattern1(client, 'block_fullness_ratio')
self.percent: MetricPattern1[StoredF32] = MetricPattern1(client, 'block_fullness')
class MetricsTree_Blocks:
"""Metrics tree node."""
@@ -3055,11 +3053,11 @@ class MetricsTree_Blocks:
self.total_size: MetricPattern18[StoredU64] = MetricPattern18(client, 'total_size')
self.weight: MetricsTree_Blocks_Weight = MetricsTree_Blocks_Weight(client)
self.count: MetricsTree_Blocks_Count = MetricsTree_Blocks_Count(client)
self.interval: AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern[Timestamp] = AverageHeightMaxMedianMinPct10Pct25Pct75Pct90Pattern(client, 'block_interval')
self.interval: _1m1w1y24hHeightPattern[Timestamp] = _1m1w1y24hHeightPattern(client, 'block_interval')
self.halving: MetricsTree_Blocks_Halving = MetricsTree_Blocks_Halving(client)
self.vbytes: AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern = AverageCumulativeHeightMaxMedianMinPct10Pct25Pct75Pct90SumPattern(client, 'block_vbytes')
self.size: MetricsTree_Blocks_Size = MetricsTree_Blocks_Size(client)
self.fullness: BpsPercentRatioPattern2 = BpsPercentRatioPattern2(client, 'block_fullness')
self.fullness: MetricsTree_Blocks_Fullness = MetricsTree_Blocks_Fullness(client)
class MetricsTree_Transactions_Count:
"""Metrics tree node."""
@@ -3210,7 +3208,7 @@ class MetricsTree_Scripts_Value:
"""Metrics tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.opreturn: _1m1w1y24hBaseCumulativePattern = _1m1w1y24hBaseCumulativePattern(client, 'opreturn_value')
self.opreturn: BaseCumulativePattern = BaseCumulativePattern(client, 'opreturn_value')
class MetricsTree_Scripts_Adoption:
"""Metrics tree node."""
@@ -3235,13 +3233,24 @@ class MetricsTree_Scripts:
self.value: MetricsTree_Scripts_Value = MetricsTree_Scripts_Value(client)
self.adoption: MetricsTree_Scripts_Adoption = MetricsTree_Scripts_Adoption(client)
class MetricsTree_Mining_Rewards_Fees:
"""Metrics tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.base: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'fees')
self.cumulative: BtcCentsSatsUsdPattern = BtcCentsSatsUsdPattern(client, 'fees_cumulative')
self._24h: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2 = AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, 'fees_24h')
self._1w: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2 = AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, 'fees_1w')
self._1m: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2 = AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, 'fees_1m')
self._1y: AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2 = AverageMaxMedianMinPct10Pct25Pct75Pct90SumPattern2(client, 'fees_1y')
class MetricsTree_Mining_Rewards:
"""Metrics tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.coinbase: _1m1w1y24hBaseCumulativePattern = _1m1w1y24hBaseCumulativePattern(client, 'coinbase')
self.subsidy: _1m1w1y24hBaseCumulativePattern = _1m1w1y24hBaseCumulativePattern(client, 'subsidy')
self.fees: _1m1w1y24hBaseCumulativePattern = _1m1w1y24hBaseCumulativePattern(client, 'fees')
self.coinbase: BaseCumulativeSumPattern = BaseCumulativeSumPattern(client, 'coinbase')
self.subsidy: BaseCumulativePattern = BaseCumulativePattern(client, 'subsidy')
self.fees: MetricsTree_Mining_Rewards_Fees = MetricsTree_Mining_Rewards_Fees(client)
self.unclaimed_rewards: BaseCumulativeSumPattern = BaseCumulativeSumPattern(client, 'unclaimed_rewards')
self.fee_dominance: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'fee_dominance')
self.fee_dominance_rolling: _1m1w1y24hPattern2 = _1m1w1y24hPattern2(client, 'fee_dominance')
@@ -4251,7 +4260,6 @@ class MetricsTree_Distribution_UtxoCohorts_All_Relative:
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')
@@ -4259,7 +4267,6 @@ class MetricsTree_Distribution_UtxoCohorts_All_Relative:
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')
self.net_unrealized_pnl_rel_to_own_gross_pnl: BpsPercentRatioPattern = BpsPercentRatioPattern(client, 'net_unrealized_pnl_rel_to_own_gross_pnl')
class MetricsTree_Distribution_UtxoCohorts_All:
@@ -4287,7 +4294,7 @@ class MetricsTree_Distribution_UtxoCohorts_Sth:
self.realized: CapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprUpperValuePattern = CapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprUpperValuePattern(client, 'sth')
self.cost_basis: InvestedMaxMinPercentilesPattern = InvestedMaxMinPercentilesPattern(client, 'sth')
self.unrealized: GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern = GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern(client, 'sth')
self.relative: InvestedNegNetNuplSupplyUnrealizedPattern3 = InvestedNegNetNuplSupplyUnrealizedPattern3(client, 'sth')
self.relative: InvestedNetNuplSupplyUnrealizedPattern3 = InvestedNetNuplSupplyUnrealizedPattern3(client, 'sth')
self.dormancy: MetricPattern1[StoredF32] = MetricPattern1(client, 'sth_dormancy')
self.velocity: MetricPattern1[StoredF32] = MetricPattern1(client, 'sth_velocity')
self.adjusted_value_created: MetricPattern1[Cents] = MetricPattern1(client, 'sth_adjusted_value_created')
@@ -4307,7 +4314,7 @@ class MetricsTree_Distribution_UtxoCohorts_Lth:
self.realized: CapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprUpperValuePattern = CapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSoprUpperValuePattern(client, 'lth')
self.cost_basis: InvestedMaxMinPercentilesPattern = InvestedMaxMinPercentilesPattern(client, 'lth')
self.unrealized: GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern = GreedGrossInvestedInvestorNegNetPainSupplyUnrealizedPattern(client, 'lth')
self.relative: InvestedNegNetNuplSupplyUnrealizedPattern3 = InvestedNegNetNuplSupplyUnrealizedPattern3(client, 'lth')
self.relative: InvestedNetNuplSupplyUnrealizedPattern3 = InvestedNetNuplSupplyUnrealizedPattern3(client, 'lth')
self.dormancy: MetricPattern1[StoredF32] = MetricPattern1(client, 'lth_dormancy')
self.velocity: MetricPattern1[StoredF32] = MetricPattern1(client, 'lth_velocity')
@@ -4573,15 +4580,15 @@ class MetricsTree_Distribution_AddressActivity:
"""Metrics tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.all: BalanceBothReactivatedReceivingSendingPattern = BalanceBothReactivatedReceivingSendingPattern(client, 'address_activity')
self.p2pk65: BalanceBothReactivatedReceivingSendingPattern = BalanceBothReactivatedReceivingSendingPattern(client, 'p2pk65_address_activity')
self.p2pk33: BalanceBothReactivatedReceivingSendingPattern = BalanceBothReactivatedReceivingSendingPattern(client, 'p2pk33_address_activity')
self.p2pkh: BalanceBothReactivatedReceivingSendingPattern = BalanceBothReactivatedReceivingSendingPattern(client, 'p2pkh_address_activity')
self.p2sh: BalanceBothReactivatedReceivingSendingPattern = BalanceBothReactivatedReceivingSendingPattern(client, 'p2sh_address_activity')
self.p2wpkh: BalanceBothReactivatedReceivingSendingPattern = BalanceBothReactivatedReceivingSendingPattern(client, 'p2wpkh_address_activity')
self.p2wsh: BalanceBothReactivatedReceivingSendingPattern = BalanceBothReactivatedReceivingSendingPattern(client, 'p2wsh_address_activity')
self.p2tr: BalanceBothReactivatedReceivingSendingPattern = BalanceBothReactivatedReceivingSendingPattern(client, 'p2tr_address_activity')
self.p2a: BalanceBothReactivatedReceivingSendingPattern = BalanceBothReactivatedReceivingSendingPattern(client, 'p2a_address_activity')
self.all: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'address_activity')
self.p2pk65: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2pk65_address_activity')
self.p2pk33: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2pk33_address_activity')
self.p2pkh: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2pkh_address_activity')
self.p2sh: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2sh_address_activity')
self.p2wpkh: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2wpkh_address_activity')
self.p2wsh: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2wsh_address_activity')
self.p2tr: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2tr_address_activity')
self.p2a: BothReactivatedReceivingSendingPattern = BothReactivatedReceivingSendingPattern(client, 'p2a_address_activity')
class MetricsTree_Distribution_TotalAddrCount:
"""Metrics tree node."""
@@ -4615,15 +4622,15 @@ class MetricsTree_Distribution_GrowthRate:
"""Metrics tree node."""
def __init__(self, client: BrkClientBase, base_path: str = ''):
self.all: BpsPercentRatioPattern2 = BpsPercentRatioPattern2(client, 'growth_rate')
self.p2pk65: BpsPercentRatioPattern2 = BpsPercentRatioPattern2(client, 'p2pk65_growth_rate')
self.p2pk33: BpsPercentRatioPattern2 = BpsPercentRatioPattern2(client, 'p2pk33_growth_rate')
self.p2pkh: BpsPercentRatioPattern2 = BpsPercentRatioPattern2(client, 'p2pkh_growth_rate')
self.p2sh: BpsPercentRatioPattern2 = BpsPercentRatioPattern2(client, 'p2sh_growth_rate')
self.p2wpkh: BpsPercentRatioPattern2 = BpsPercentRatioPattern2(client, 'p2wpkh_growth_rate')
self.p2wsh: BpsPercentRatioPattern2 = BpsPercentRatioPattern2(client, 'p2wsh_growth_rate')
self.p2tr: BpsPercentRatioPattern2 = BpsPercentRatioPattern2(client, 'p2tr_growth_rate')
self.p2a: BpsPercentRatioPattern2 = BpsPercentRatioPattern2(client, 'p2a_growth_rate')
self.all: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'growth_rate')
self.p2pk65: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'p2pk65_growth_rate')
self.p2pk33: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'p2pk33_growth_rate')
self.p2pkh: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'p2pkh_growth_rate')
self.p2sh: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'p2sh_growth_rate')
self.p2wpkh: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'p2wpkh_growth_rate')
self.p2wsh: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'p2wsh_growth_rate')
self.p2tr: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'p2tr_growth_rate')
self.p2a: BpsPercentRatioPattern3 = BpsPercentRatioPattern3(client, 'p2a_growth_rate')
class MetricsTree_Distribution:
"""Metrics tree node."""