website: snapshot

This commit is contained in:
nym21
2026-01-25 20:11:32 +01:00
parent 543cde525e
commit 35bf1afcff
38 changed files with 2221 additions and 3018 deletions
+273 -273
View File
@@ -1532,6 +1532,42 @@ impl PeriodLumpSumStackPattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct ClassAveragePricePattern<T> {
pub _2015: MetricPattern4<T>,
pub _2016: MetricPattern4<T>,
pub _2017: MetricPattern4<T>,
pub _2018: MetricPattern4<T>,
pub _2019: MetricPattern4<T>,
pub _2020: MetricPattern4<T>,
pub _2021: MetricPattern4<T>,
pub _2022: MetricPattern4<T>,
pub _2023: MetricPattern4<T>,
pub _2024: MetricPattern4<T>,
pub _2025: MetricPattern4<T>,
pub _2026: MetricPattern4<T>,
}
impl<T: DeserializeOwned> ClassAveragePricePattern<T> {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
_2015: MetricPattern4::new(client.clone(), _m(&acc, "2015_returns")),
_2016: MetricPattern4::new(client.clone(), _m(&acc, "2016_returns")),
_2017: MetricPattern4::new(client.clone(), _m(&acc, "2017_returns")),
_2018: MetricPattern4::new(client.clone(), _m(&acc, "2018_returns")),
_2019: MetricPattern4::new(client.clone(), _m(&acc, "2019_returns")),
_2020: MetricPattern4::new(client.clone(), _m(&acc, "2020_returns")),
_2021: MetricPattern4::new(client.clone(), _m(&acc, "2021_returns")),
_2022: MetricPattern4::new(client.clone(), _m(&acc, "2022_returns")),
_2023: MetricPattern4::new(client.clone(), _m(&acc, "2023_returns")),
_2024: MetricPattern4::new(client.clone(), _m(&acc, "2024_returns")),
_2025: MetricPattern4::new(client.clone(), _m(&acc, "2025_returns")),
_2026: MetricPattern4::new(client.clone(), _m(&acc, "2026_returns")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct PeriodAveragePricePattern<T> {
pub _10y: MetricPattern4<T>,
@@ -1568,42 +1604,6 @@ impl<T: DeserializeOwned> PeriodAveragePricePattern<T> {
}
}
/// Pattern struct for repeated tree structure.
pub struct ClassAveragePricePattern<T> {
pub _2015: MetricPattern4<T>,
pub _2016: MetricPattern4<T>,
pub _2017: MetricPattern4<T>,
pub _2018: MetricPattern4<T>,
pub _2019: MetricPattern4<T>,
pub _2020: MetricPattern4<T>,
pub _2021: MetricPattern4<T>,
pub _2022: MetricPattern4<T>,
pub _2023: MetricPattern4<T>,
pub _2024: MetricPattern4<T>,
pub _2025: MetricPattern4<T>,
pub _2026: MetricPattern4<T>,
}
impl<T: DeserializeOwned> ClassAveragePricePattern<T> {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
_2015: MetricPattern4::new(client.clone(), _m(&acc, "2015_average_price")),
_2016: MetricPattern4::new(client.clone(), _m(&acc, "2016_average_price")),
_2017: MetricPattern4::new(client.clone(), _m(&acc, "2017_average_price")),
_2018: MetricPattern4::new(client.clone(), _m(&acc, "2018_average_price")),
_2019: MetricPattern4::new(client.clone(), _m(&acc, "2019_average_price")),
_2020: MetricPattern4::new(client.clone(), _m(&acc, "2020_average_price")),
_2021: MetricPattern4::new(client.clone(), _m(&acc, "2021_average_price")),
_2022: MetricPattern4::new(client.clone(), _m(&acc, "2022_average_price")),
_2023: MetricPattern4::new(client.clone(), _m(&acc, "2023_average_price")),
_2024: MetricPattern4::new(client.clone(), _m(&acc, "2024_average_price")),
_2025: MetricPattern4::new(client.clone(), _m(&acc, "2025_average_price")),
_2026: MetricPattern4::new(client.clone(), _m(&acc, "2026_average_price")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct BitcoinPattern {
pub average: MetricPattern2<Bitcoin>,
@@ -1672,38 +1672,6 @@ impl<T: DeserializeOwned> DollarsPattern<T> {
}
}
/// Pattern struct for repeated tree structure.
pub struct RelativePattern2 {
pub neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1<StoredF32>,
pub neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1<StoredF32>,
pub net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1<StoredF32>,
pub net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1<StoredF32>,
pub supply_in_loss_rel_to_own_supply: MetricPattern1<StoredF64>,
pub supply_in_profit_rel_to_own_supply: MetricPattern1<StoredF64>,
pub unrealized_loss_rel_to_own_market_cap: MetricPattern1<StoredF32>,
pub unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1<StoredF32>,
pub unrealized_profit_rel_to_own_market_cap: MetricPattern1<StoredF32>,
pub unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1<StoredF32>,
}
impl RelativePattern2 {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_market_cap")),
neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl")),
net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_market_cap")),
net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl")),
supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_own_supply")),
supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_own_supply")),
unrealized_loss_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_market_cap")),
unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_total_unrealized_pnl")),
unrealized_profit_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_market_cap")),
unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_total_unrealized_pnl")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct RelativePattern {
pub neg_unrealized_loss_rel_to_market_cap: MetricPattern1<StoredF32>,
@@ -1736,6 +1704,38 @@ impl RelativePattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct RelativePattern2 {
pub neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1<StoredF32>,
pub neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1<StoredF32>,
pub net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1<StoredF32>,
pub net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1<StoredF32>,
pub supply_in_loss_rel_to_own_supply: MetricPattern1<StoredF64>,
pub supply_in_profit_rel_to_own_supply: MetricPattern1<StoredF64>,
pub unrealized_loss_rel_to_own_market_cap: MetricPattern1<StoredF32>,
pub unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1<StoredF32>,
pub unrealized_profit_rel_to_own_market_cap: MetricPattern1<StoredF32>,
pub unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1<StoredF32>,
}
impl RelativePattern2 {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
neg_unrealized_loss_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_market_cap")),
neg_unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss_rel_to_own_total_unrealized_pnl")),
net_unrealized_pnl_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_market_cap")),
net_unrealized_pnl_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl_rel_to_own_total_unrealized_pnl")),
supply_in_loss_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_loss_rel_to_own_supply")),
supply_in_profit_rel_to_own_supply: MetricPattern1::new(client.clone(), _m(&acc, "supply_in_profit_rel_to_own_supply")),
unrealized_loss_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_market_cap")),
unrealized_loss_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss_rel_to_own_total_unrealized_pnl")),
unrealized_profit_rel_to_own_market_cap: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_market_cap")),
unrealized_profit_rel_to_own_total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit_rel_to_own_total_unrealized_pnl")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct CountPattern2<T> {
pub average: MetricPattern1<T>,
@@ -1798,36 +1798,6 @@ impl AddrCountPattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct FeeRatePattern<T> {
pub average: MetricPattern1<T>,
pub max: MetricPattern1<T>,
pub median: MetricPattern11<T>,
pub min: MetricPattern1<T>,
pub pct10: MetricPattern11<T>,
pub pct25: MetricPattern11<T>,
pub pct75: MetricPattern11<T>,
pub pct90: MetricPattern11<T>,
pub txindex: MetricPattern27<T>,
}
impl<T: DeserializeOwned> FeeRatePattern<T> {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
average: MetricPattern1::new(client.clone(), _m(&acc, "average")),
max: MetricPattern1::new(client.clone(), _m(&acc, "max")),
median: MetricPattern11::new(client.clone(), _m(&acc, "median")),
min: MetricPattern1::new(client.clone(), _m(&acc, "min")),
pct10: MetricPattern11::new(client.clone(), _m(&acc, "pct10")),
pct25: MetricPattern11::new(client.clone(), _m(&acc, "pct25")),
pct75: MetricPattern11::new(client.clone(), _m(&acc, "pct75")),
pct90: MetricPattern11::new(client.clone(), _m(&acc, "pct90")),
txindex: MetricPattern27::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct FullnessPattern<T> {
pub average: MetricPattern2<T>,
@@ -1858,6 +1828,36 @@ impl<T: DeserializeOwned> FullnessPattern<T> {
}
}
/// Pattern struct for repeated tree structure.
pub struct FeeRatePattern<T> {
pub average: MetricPattern1<T>,
pub max: MetricPattern1<T>,
pub median: MetricPattern11<T>,
pub min: MetricPattern1<T>,
pub pct10: MetricPattern11<T>,
pub pct25: MetricPattern11<T>,
pub pct75: MetricPattern11<T>,
pub pct90: MetricPattern11<T>,
pub txindex: MetricPattern27<T>,
}
impl<T: DeserializeOwned> FeeRatePattern<T> {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
average: MetricPattern1::new(client.clone(), _m(&acc, "average")),
max: MetricPattern1::new(client.clone(), _m(&acc, "max")),
median: MetricPattern11::new(client.clone(), _m(&acc, "median")),
min: MetricPattern1::new(client.clone(), _m(&acc, "min")),
pct10: MetricPattern11::new(client.clone(), _m(&acc, "pct10")),
pct25: MetricPattern11::new(client.clone(), _m(&acc, "pct25")),
pct75: MetricPattern11::new(client.clone(), _m(&acc, "pct75")),
pct90: MetricPattern11::new(client.clone(), _m(&acc, "pct90")),
txindex: MetricPattern27::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _0satsPattern {
pub activity: ActivityPattern2,
@@ -1914,58 +1914,6 @@ impl<T: DeserializeOwned> PhaseDailyCentsPattern<T> {
}
}
/// Pattern struct for repeated tree structure.
pub struct _10yTo12yPattern {
pub activity: ActivityPattern2,
pub cost_basis: CostBasisPattern2,
pub outputs: OutputsPattern,
pub realized: RealizedPattern2,
pub relative: RelativePattern2,
pub supply: SupplyPattern2,
pub unrealized: UnrealizedPattern,
}
impl _10yTo12yPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
activity: ActivityPattern2::new(client.clone(), acc.clone()),
cost_basis: CostBasisPattern2::new(client.clone(), acc.clone()),
outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")),
realized: RealizedPattern2::new(client.clone(), acc.clone()),
relative: RelativePattern2::new(client.clone(), acc.clone()),
supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
unrealized: UnrealizedPattern::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct UnrealizedPattern {
pub neg_unrealized_loss: MetricPattern1<Dollars>,
pub net_unrealized_pnl: MetricPattern1<Dollars>,
pub supply_in_loss: ActiveSupplyPattern,
pub supply_in_profit: ActiveSupplyPattern,
pub total_unrealized_pnl: MetricPattern1<Dollars>,
pub unrealized_loss: MetricPattern1<Dollars>,
pub unrealized_profit: MetricPattern1<Dollars>,
}
impl UnrealizedPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
neg_unrealized_loss: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss")),
net_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl")),
supply_in_loss: ActiveSupplyPattern::new(client.clone(), _m(&acc, "supply_in_loss")),
supply_in_profit: ActiveSupplyPattern::new(client.clone(), _m(&acc, "supply_in_profit")),
total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "total_unrealized_pnl")),
unrealized_loss: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss")),
unrealized_profit: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _0satsPattern2 {
pub activity: ActivityPattern2,
@@ -1992,6 +1940,32 @@ impl _0satsPattern2 {
}
}
/// Pattern struct for repeated tree structure.
pub struct _10yTo12yPattern {
pub activity: ActivityPattern2,
pub cost_basis: CostBasisPattern2,
pub outputs: OutputsPattern,
pub realized: RealizedPattern2,
pub relative: RelativePattern2,
pub supply: SupplyPattern2,
pub unrealized: UnrealizedPattern,
}
impl _10yTo12yPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
activity: ActivityPattern2::new(client.clone(), acc.clone()),
cost_basis: CostBasisPattern2::new(client.clone(), acc.clone()),
outputs: OutputsPattern::new(client.clone(), _m(&acc, "utxo_count")),
realized: RealizedPattern2::new(client.clone(), acc.clone()),
relative: RelativePattern2::new(client.clone(), acc.clone()),
supply: SupplyPattern2::new(client.clone(), _m(&acc, "supply")),
unrealized: UnrealizedPattern::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct PeriodCagrPattern {
pub _10y: MetricPattern4<StoredF32>,
@@ -2018,6 +1992,32 @@ impl PeriodCagrPattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct UnrealizedPattern {
pub neg_unrealized_loss: MetricPattern1<Dollars>,
pub net_unrealized_pnl: MetricPattern1<Dollars>,
pub supply_in_loss: ActiveSupplyPattern,
pub supply_in_profit: ActiveSupplyPattern,
pub total_unrealized_pnl: MetricPattern1<Dollars>,
pub unrealized_loss: MetricPattern1<Dollars>,
pub unrealized_profit: MetricPattern1<Dollars>,
}
impl UnrealizedPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
neg_unrealized_loss: MetricPattern1::new(client.clone(), _m(&acc, "neg_unrealized_loss")),
net_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_unrealized_pnl")),
supply_in_loss: ActiveSupplyPattern::new(client.clone(), _m(&acc, "supply_in_loss")),
supply_in_profit: ActiveSupplyPattern::new(client.clone(), _m(&acc, "supply_in_profit")),
total_unrealized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "total_unrealized_pnl")),
unrealized_loss: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_loss")),
unrealized_profit: MetricPattern1::new(client.clone(), _m(&acc, "unrealized_profit")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _10yPattern {
pub activity: ActivityPattern2,
@@ -2113,55 +2113,19 @@ impl<T: DeserializeOwned> SplitPattern2<T> {
}
/// Pattern struct for repeated tree structure.
pub struct UnclaimedRewardsPattern {
pub bitcoin: BitcoinPattern2<Bitcoin>,
pub dollars: BlockCountPattern<Dollars>,
pub sats: BlockCountPattern<Sats>,
pub struct _2015Pattern {
pub bitcoin: MetricPattern4<Bitcoin>,
pub dollars: MetricPattern4<Dollars>,
pub sats: MetricPattern4<Sats>,
}
impl UnclaimedRewardsPattern {
impl _2015Pattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
bitcoin: BitcoinPattern2::new(client.clone(), _m(&acc, "btc")),
dollars: BlockCountPattern::new(client.clone(), _m(&acc, "usd")),
sats: BlockCountPattern::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct CoinbasePattern {
pub bitcoin: BitcoinPattern,
pub dollars: DollarsPattern<Dollars>,
pub sats: DollarsPattern<Sats>,
}
impl CoinbasePattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
bitcoin: BitcoinPattern::new(client.clone(), _m(&acc, "btc")),
dollars: DollarsPattern::new(client.clone(), _m(&acc, "usd")),
sats: DollarsPattern::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct SegwitAdoptionPattern {
pub base: MetricPattern11<StoredF32>,
pub cumulative: MetricPattern2<StoredF32>,
pub sum: MetricPattern2<StoredF32>,
}
impl SegwitAdoptionPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
base: MetricPattern11::new(client.clone(), acc.clone()),
cumulative: MetricPattern2::new(client.clone(), _m(&acc, "cumulative")),
sum: MetricPattern2::new(client.clone(), _m(&acc, "sum")),
bitcoin: MetricPattern4::new(client.clone(), _m(&acc, "btc")),
dollars: MetricPattern4::new(client.clone(), _m(&acc, "usd")),
sats: MetricPattern4::new(client.clone(), acc.clone()),
}
}
}
@@ -2185,37 +2149,19 @@ impl CostBasisPattern2 {
}
/// Pattern struct for repeated tree structure.
pub struct ActiveSupplyPattern {
pub bitcoin: MetricPattern1<Bitcoin>,
pub dollars: MetricPattern1<Dollars>,
pub sats: MetricPattern1<Sats>,
pub struct CoinbasePattern {
pub bitcoin: BitcoinPattern,
pub dollars: DollarsPattern<Dollars>,
pub sats: DollarsPattern<Sats>,
}
impl ActiveSupplyPattern {
impl CoinbasePattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
bitcoin: MetricPattern1::new(client.clone(), _m(&acc, "btc")),
dollars: MetricPattern1::new(client.clone(), _m(&acc, "usd")),
sats: MetricPattern1::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _2015Pattern {
pub bitcoin: MetricPattern4<Bitcoin>,
pub dollars: MetricPattern4<Dollars>,
pub sats: MetricPattern4<Sats>,
}
impl _2015Pattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
bitcoin: MetricPattern4::new(client.clone(), _m(&acc, "btc")),
dollars: MetricPattern4::new(client.clone(), _m(&acc, "usd")),
sats: MetricPattern4::new(client.clone(), acc.clone()),
bitcoin: BitcoinPattern::new(client.clone(), _m(&acc, "btc")),
dollars: DollarsPattern::new(client.clone(), _m(&acc, "usd")),
sats: DollarsPattern::new(client.clone(), acc.clone()),
}
}
}
@@ -2239,33 +2185,55 @@ impl CoinbasePattern2 {
}
/// Pattern struct for repeated tree structure.
pub struct _1dReturns1mSdPattern {
pub sd: MetricPattern4<StoredF32>,
pub sma: MetricPattern4<StoredF32>,
pub struct SegwitAdoptionPattern {
pub base: MetricPattern11<StoredF32>,
pub cumulative: MetricPattern2<StoredF32>,
pub sum: MetricPattern2<StoredF32>,
}
impl _1dReturns1mSdPattern {
impl SegwitAdoptionPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
sd: MetricPattern4::new(client.clone(), _m(&acc, "sd")),
sma: MetricPattern4::new(client.clone(), _m(&acc, "sma")),
base: MetricPattern11::new(client.clone(), acc.clone()),
cumulative: MetricPattern2::new(client.clone(), _m(&acc, "cumulative")),
sum: MetricPattern2::new(client.clone(), _m(&acc, "sum")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct CostBasisPattern {
pub max: MetricPattern1<Dollars>,
pub min: MetricPattern1<Dollars>,
pub struct ActiveSupplyPattern {
pub bitcoin: MetricPattern1<Bitcoin>,
pub dollars: MetricPattern1<Dollars>,
pub sats: MetricPattern1<Sats>,
}
impl CostBasisPattern {
impl ActiveSupplyPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
max: MetricPattern1::new(client.clone(), _m(&acc, "max_cost_basis")),
min: MetricPattern1::new(client.clone(), _m(&acc, "min_cost_basis")),
bitcoin: MetricPattern1::new(client.clone(), _m(&acc, "btc")),
dollars: MetricPattern1::new(client.clone(), _m(&acc, "usd")),
sats: MetricPattern1::new(client.clone(), acc.clone()),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct UnclaimedRewardsPattern {
pub bitcoin: BitcoinPattern2<Bitcoin>,
pub dollars: BlockCountPattern<Dollars>,
pub sats: BlockCountPattern<Sats>,
}
impl UnclaimedRewardsPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
bitcoin: BitcoinPattern2::new(client.clone(), _m(&acc, "btc")),
dollars: BlockCountPattern::new(client.clone(), _m(&acc, "usd")),
sats: BlockCountPattern::new(client.clone(), acc.clone()),
}
}
}
@@ -2303,17 +2271,33 @@ impl RelativePattern4 {
}
/// Pattern struct for repeated tree structure.
pub struct BitcoinPattern2<T> {
pub cumulative: MetricPattern2<T>,
pub sum: MetricPattern1<T>,
pub struct CostBasisPattern {
pub max: MetricPattern1<Dollars>,
pub min: MetricPattern1<Dollars>,
}
impl<T: DeserializeOwned> BitcoinPattern2<T> {
impl CostBasisPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
cumulative: MetricPattern2::new(client.clone(), _m(&acc, "cumulative")),
sum: MetricPattern1::new(client.clone(), acc.clone()),
max: MetricPattern1::new(client.clone(), _m(&acc, "max_cost_basis")),
min: MetricPattern1::new(client.clone(), _m(&acc, "min_cost_basis")),
}
}
}
/// Pattern struct for repeated tree structure.
pub struct _1dReturns1mSdPattern {
pub sd: MetricPattern4<StoredF32>,
pub sma: MetricPattern4<StoredF32>,
}
impl _1dReturns1mSdPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
sd: MetricPattern4::new(client.clone(), _m(&acc, "sd")),
sma: MetricPattern4::new(client.clone(), _m(&acc, "sma")),
}
}
}
@@ -2351,15 +2335,17 @@ impl<T: DeserializeOwned> BlockCountPattern<T> {
}
/// Pattern struct for repeated tree structure.
pub struct OutputsPattern {
pub utxo_count: MetricPattern1<StoredU64>,
pub struct BitcoinPattern2<T> {
pub cumulative: MetricPattern2<T>,
pub sum: MetricPattern1<T>,
}
impl OutputsPattern {
impl<T: DeserializeOwned> BitcoinPattern2<T> {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
utxo_count: MetricPattern1::new(client.clone(), acc.clone()),
cumulative: MetricPattern2::new(client.clone(), _m(&acc, "cumulative")),
sum: MetricPattern1::new(client.clone(), acc.clone()),
}
}
}
@@ -2378,6 +2364,20 @@ impl RealizedPriceExtraPattern {
}
}
/// Pattern struct for repeated tree structure.
pub struct OutputsPattern {
pub utxo_count: MetricPattern1<StoredU64>,
}
impl OutputsPattern {
/// Create a new pattern node with accumulated metric name.
pub fn new(client: Arc<BrkClientBase>, acc: String) -> Self {
Self {
utxo_count: MetricPattern1::new(client.clone(), acc.clone()),
}
}
}
// Metrics tree
/// Metrics tree node.
@@ -4204,8 +4204,8 @@ impl MetricsTree_Market_Ath {
/// Metrics tree node.
pub struct MetricsTree_Market_Dca {
pub class_average_price: ClassAveragePricePattern<Dollars>,
pub class_returns: MetricsTree_Market_Dca_ClassReturns,
pub class_average_price: MetricsTree_Market_Dca_ClassAveragePrice,
pub class_returns: ClassAveragePricePattern<StoredF32>,
pub class_stack: MetricsTree_Market_Dca_ClassStack,
pub period_average_price: PeriodAveragePricePattern<Dollars>,
pub period_cagr: PeriodCagrPattern,
@@ -4217,8 +4217,8 @@ pub struct MetricsTree_Market_Dca {
impl MetricsTree_Market_Dca {
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
Self {
class_average_price: ClassAveragePricePattern::new(client.clone(), "dca_class".to_string()),
class_returns: MetricsTree_Market_Dca_ClassReturns::new(client.clone(), format!("{base_path}_class_returns")),
class_average_price: MetricsTree_Market_Dca_ClassAveragePrice::new(client.clone(), format!("{base_path}_class_average_price")),
class_returns: ClassAveragePricePattern::new(client.clone(), "dca_class".to_string()),
class_stack: MetricsTree_Market_Dca_ClassStack::new(client.clone(), format!("{base_path}_class_stack")),
period_average_price: PeriodAveragePricePattern::new(client.clone(), "dca_average_price".to_string()),
period_cagr: PeriodCagrPattern::new(client.clone(), "dca_cagr".to_string()),
@@ -4230,36 +4230,36 @@ impl MetricsTree_Market_Dca {
}
/// Metrics tree node.
pub struct MetricsTree_Market_Dca_ClassReturns {
pub _2015: MetricPattern4<StoredF32>,
pub _2016: MetricPattern4<StoredF32>,
pub _2017: MetricPattern4<StoredF32>,
pub _2018: MetricPattern4<StoredF32>,
pub _2019: MetricPattern4<StoredF32>,
pub _2020: MetricPattern4<StoredF32>,
pub _2021: MetricPattern4<StoredF32>,
pub _2022: MetricPattern4<StoredF32>,
pub _2023: MetricPattern4<StoredF32>,
pub _2024: MetricPattern4<StoredF32>,
pub _2025: MetricPattern4<StoredF32>,
pub _2026: MetricPattern4<StoredF32>,
pub struct MetricsTree_Market_Dca_ClassAveragePrice {
pub _2015: MetricPattern4<Dollars>,
pub _2016: MetricPattern4<Dollars>,
pub _2017: MetricPattern4<Dollars>,
pub _2018: MetricPattern4<Dollars>,
pub _2019: MetricPattern4<Dollars>,
pub _2020: MetricPattern4<Dollars>,
pub _2021: MetricPattern4<Dollars>,
pub _2022: MetricPattern4<Dollars>,
pub _2023: MetricPattern4<Dollars>,
pub _2024: MetricPattern4<Dollars>,
pub _2025: MetricPattern4<Dollars>,
pub _2026: MetricPattern4<Dollars>,
}
impl MetricsTree_Market_Dca_ClassReturns {
impl MetricsTree_Market_Dca_ClassAveragePrice {
pub fn new(client: Arc<BrkClientBase>, base_path: String) -> Self {
Self {
_2015: MetricPattern4::new(client.clone(), "dca_class_2015_returns".to_string()),
_2016: MetricPattern4::new(client.clone(), "dca_class_2016_returns".to_string()),
_2017: MetricPattern4::new(client.clone(), "dca_class_2017_returns".to_string()),
_2018: MetricPattern4::new(client.clone(), "dca_class_2018_returns".to_string()),
_2019: MetricPattern4::new(client.clone(), "dca_class_2019_returns".to_string()),
_2020: MetricPattern4::new(client.clone(), "dca_class_2020_returns".to_string()),
_2021: MetricPattern4::new(client.clone(), "dca_class_2021_returns".to_string()),
_2022: MetricPattern4::new(client.clone(), "dca_class_2022_returns".to_string()),
_2023: MetricPattern4::new(client.clone(), "dca_class_2023_returns".to_string()),
_2024: MetricPattern4::new(client.clone(), "dca_class_2024_returns".to_string()),
_2025: MetricPattern4::new(client.clone(), "dca_class_2025_returns".to_string()),
_2026: MetricPattern4::new(client.clone(), "dca_class_2026_returns".to_string()),
_2015: MetricPattern4::new(client.clone(), "dca_class_2015_average_price".to_string()),
_2016: MetricPattern4::new(client.clone(), "dca_class_2016_average_price".to_string()),
_2017: MetricPattern4::new(client.clone(), "dca_class_2017_average_price".to_string()),
_2018: MetricPattern4::new(client.clone(), "dca_class_2018_average_price".to_string()),
_2019: MetricPattern4::new(client.clone(), "dca_class_2019_average_price".to_string()),
_2020: MetricPattern4::new(client.clone(), "dca_class_2020_average_price".to_string()),
_2021: MetricPattern4::new(client.clone(), "dca_class_2021_average_price".to_string()),
_2022: MetricPattern4::new(client.clone(), "dca_class_2022_average_price".to_string()),
_2023: MetricPattern4::new(client.clone(), "dca_class_2023_average_price".to_string()),
_2024: MetricPattern4::new(client.clone(), "dca_class_2024_average_price".to_string()),
_2025: MetricPattern4::new(client.clone(), "dca_class_2025_average_price".to_string()),
_2026: MetricPattern4::new(client.clone(), "dca_class_2026_average_price".to_string()),
}
}
}
@@ -5449,7 +5449,7 @@ pub struct BrkClient {
impl BrkClient {
/// Client version.
pub const VERSION: &'static str = "v0.1.0-alpha.6";
pub const VERSION: &'static str = "v0.1.0-beta.0";
/// Create a new client with the given base URL.
pub fn new(base_url: impl Into<String>) -> Self {
+21 -21
View File
@@ -89,27 +89,27 @@ pub const AGE_RANGE_FILTERS: ByAgeRange<Filter> = ByAgeRange {
/// Age range names
pub const AGE_RANGE_NAMES: ByAgeRange<CohortName> = ByAgeRange {
up_to_1h: CohortName::new("up_to_1h_old", "<1h", "Up to 1 Hour Old"),
_1h_to_1d: CohortName::new("at_least_1h_up_to_1d_old", "1h-1d", "1 Hour to 1 Day Old"),
_1d_to_1w: CohortName::new("at_least_1d_up_to_1w_old", "1d-1w", "1 Day to 1 Week Old"),
_1w_to_1m: CohortName::new("at_least_1w_up_to_1m_old", "1w-1m", "1 Week to 1 Month Old"),
_1m_to_2m: CohortName::new("at_least_1m_up_to_2m_old", "1m-2m", "1 to 2 Months Old"),
_2m_to_3m: CohortName::new("at_least_2m_up_to_3m_old", "2m-3m", "2 to 3 Months Old"),
_3m_to_4m: CohortName::new("at_least_3m_up_to_4m_old", "3m-4m", "3 to 4 Months Old"),
_4m_to_5m: CohortName::new("at_least_4m_up_to_5m_old", "4m-5m", "4 to 5 Months Old"),
_5m_to_6m: CohortName::new("at_least_5m_up_to_6m_old", "5m-6m", "5 to 6 Months Old"),
_6m_to_1y: CohortName::new("at_least_6m_up_to_1y_old", "6m-1y", "6 Months to 1 Year Old"),
_1y_to_2y: CohortName::new("at_least_1y_up_to_2y_old", "1y-2y", "1 to 2 Years Old"),
_2y_to_3y: CohortName::new("at_least_2y_up_to_3y_old", "2y-3y", "2 to 3 Years Old"),
_3y_to_4y: CohortName::new("at_least_3y_up_to_4y_old", "3y-4y", "3 to 4 Years Old"),
_4y_to_5y: CohortName::new("at_least_4y_up_to_5y_old", "4y-5y", "4 to 5 Years Old"),
_5y_to_6y: CohortName::new("at_least_5y_up_to_6y_old", "5y-6y", "5 to 6 Years Old"),
_6y_to_7y: CohortName::new("at_least_6y_up_to_7y_old", "6y-7y", "6 to 7 Years Old"),
_7y_to_8y: CohortName::new("at_least_7y_up_to_8y_old", "7y-8y", "7 to 8 Years Old"),
_8y_to_10y: CohortName::new("at_least_8y_up_to_10y_old", "8y-10y", "8 to 10 Years Old"),
_10y_to_12y: CohortName::new("at_least_10y_up_to_12y_old", "10y-12y", "10 to 12 Years Old"),
_12y_to_15y: CohortName::new("at_least_12y_up_to_15y_old", "12y-15y", "12 to 15 Years Old"),
from_15y: CohortName::new("at_least_15y_old", "15y+", "15+ Years Old"),
up_to_1h: CohortName::new("under_1h_old", "<1h", "Under 1 Hour Old"),
_1h_to_1d: CohortName::new("1h_to_1d_old", "1h-1d", "1 Hour to 1 Day Old"),
_1d_to_1w: CohortName::new("1d_to_1w_old", "1d-1w", "1 Day to 1 Week Old"),
_1w_to_1m: CohortName::new("1w_to_1m_old", "1w-1m", "1 Week to 1 Month Old"),
_1m_to_2m: CohortName::new("1m_to_2m_old", "1m-2m", "1 to 2 Months Old"),
_2m_to_3m: CohortName::new("2m_to_3m_old", "2m-3m", "2 to 3 Months Old"),
_3m_to_4m: CohortName::new("3m_to_4m_old", "3m-4m", "3 to 4 Months Old"),
_4m_to_5m: CohortName::new("4m_to_5m_old", "4m-5m", "4 to 5 Months Old"),
_5m_to_6m: CohortName::new("5m_to_6m_old", "5m-6m", "5 to 6 Months Old"),
_6m_to_1y: CohortName::new("6m_to_1y_old", "6m-1y", "6 Months to 1 Year Old"),
_1y_to_2y: CohortName::new("1y_to_2y_old", "1y-2y", "1 to 2 Years Old"),
_2y_to_3y: CohortName::new("2y_to_3y_old", "2y-3y", "2 to 3 Years Old"),
_3y_to_4y: CohortName::new("3y_to_4y_old", "3y-4y", "3 to 4 Years Old"),
_4y_to_5y: CohortName::new("4y_to_5y_old", "4y-5y", "4 to 5 Years Old"),
_5y_to_6y: CohortName::new("5y_to_6y_old", "5y-6y", "5 to 6 Years Old"),
_6y_to_7y: CohortName::new("6y_to_7y_old", "6y-7y", "6 to 7 Years Old"),
_7y_to_8y: CohortName::new("7y_to_8y_old", "7y-8y", "7 to 8 Years Old"),
_8y_to_10y: CohortName::new("8y_to_10y_old", "8y-10y", "8 to 10 Years Old"),
_10y_to_12y: CohortName::new("10y_to_12y_old", "10y-12y", "10 to 12 Years Old"),
_12y_to_15y: CohortName::new("12y_to_15y_old", "12y-15y", "12 to 15 Years Old"),
from_15y: CohortName::new("over_15y_old", "15y+", "15+ Years Old"),
};
impl ByAgeRange<CohortName> {
+13 -13
View File
@@ -80,50 +80,50 @@ pub const AMOUNT_RANGE_BOUNDS: ByAmountRange<Range<Sats>> = ByAmountRange {
/// Amount range names
pub const AMOUNT_RANGE_NAMES: ByAmountRange<CohortName> = ByAmountRange {
_0sats: CohortName::new("with_0sats", "0 sats", "0 Sats"),
_1sat_to_10sats: CohortName::new("above_1sat_under_10sats", "1-10 sats", "1 to 10 Sats"),
_1sat_to_10sats: CohortName::new("above_1sat_under_10sats", "1-10 sats", "1-10 Sats"),
_10sats_to_100sats: CohortName::new(
"above_10sats_under_100sats",
"10-100 sats",
"10 to 100 Sats",
"10-100 Sats",
),
_100sats_to_1k_sats: CohortName::new(
"above_100sats_under_1k_sats",
"100-1k sats",
"100 to 1K Sats",
"100-1K Sats",
),
_1k_sats_to_10k_sats: CohortName::new(
"above_1k_sats_under_10k_sats",
"1k-10k sats",
"1K to 10K Sats",
"1K-10K Sats",
),
_10k_sats_to_100k_sats: CohortName::new(
"above_10k_sats_under_100k_sats",
"10k-100k sats",
"10K to 100K Sats",
"10K-100K Sats",
),
_100k_sats_to_1m_sats: CohortName::new(
"above_100k_sats_under_1m_sats",
"100k-1M sats",
"100K to 1M Sats",
"100K-1M Sats",
),
_1m_sats_to_10m_sats: CohortName::new(
"above_1m_sats_under_10m_sats",
"1M-10M sats",
"1M to 10M Sats",
"1M-10M Sats",
),
_10m_sats_to_1btc: CohortName::new("above_10m_sats_under_1btc", "0.1-1 BTC", "0.1 to 1 BTC"),
_1btc_to_10btc: CohortName::new("above_1btc_under_10btc", "1-10 BTC", "1 to 10 BTC"),
_10btc_to_100btc: CohortName::new("above_10btc_under_100btc", "10-100 BTC", "10 to 100 BTC"),
_100btc_to_1k_btc: CohortName::new("above_100btc_under_1k_btc", "100-1k BTC", "100 to 1K BTC"),
_10m_sats_to_1btc: CohortName::new("above_10m_sats_under_1btc", "0.1-1 BTC", "0.1-1 BTC"),
_1btc_to_10btc: CohortName::new("above_1btc_under_10btc", "1-10 BTC", "1-10 BTC"),
_10btc_to_100btc: CohortName::new("above_10btc_under_100btc", "10-100 BTC", "10-100 BTC"),
_100btc_to_1k_btc: CohortName::new("above_100btc_under_1k_btc", "100-1k BTC", "100-1K BTC"),
_1k_btc_to_10k_btc: CohortName::new(
"above_1k_btc_under_10k_btc",
"1k-10k BTC",
"1K to 10K BTC",
"1K-10K BTC",
),
_10k_btc_to_100k_btc: CohortName::new(
"above_10k_btc_under_100k_btc",
"10k-100k BTC",
"10K to 100K BTC",
"10K-100K BTC",
),
_100k_btc_or_more: CohortName::new("above_100k_btc", "100k+ BTC", "100K+ BTC"),
};
+5 -5
View File
@@ -25,11 +25,11 @@ pub const EPOCH_FILTERS: ByEpoch<Filter> = ByEpoch {
/// Epoch names
pub const EPOCH_NAMES: ByEpoch<CohortName> = ByEpoch {
_0: CohortName::new("epoch_0", "Epoch 0", "Epoch 0"),
_1: CohortName::new("epoch_1", "Epoch 1", "Epoch 1"),
_2: CohortName::new("epoch_2", "Epoch 2", "Epoch 2"),
_3: CohortName::new("epoch_3", "Epoch 3", "Epoch 3"),
_4: CohortName::new("epoch_4", "Epoch 4", "Epoch 4"),
_0: CohortName::new("epoch_0", "0", "Epoch 0"),
_1: CohortName::new("epoch_1", "1", "Epoch 1"),
_2: CohortName::new("epoch_2", "2", "Epoch 2"),
_3: CohortName::new("epoch_3", "3", "Epoch 3"),
_4: CohortName::new("epoch_4", "4", "Epoch 4"),
};
#[derive(Default, Clone, Traversable, Serialize)]
+13 -13
View File
@@ -24,19 +24,19 @@ pub const GE_AMOUNT_THRESHOLDS: ByGreatEqualAmount<Sats> = ByGreatEqualAmount {
/// Greater-or-equal amount names
pub const GE_AMOUNT_NAMES: ByGreatEqualAmount<CohortName> = ByGreatEqualAmount {
_1sat: CohortName::new("above_1sat", "1+ sats", "Above 1 Sat"),
_10sats: CohortName::new("above_10sats", "10+ sats", "Above 10 Sats"),
_100sats: CohortName::new("above_100sats", "100+ sats", "Above 100 Sats"),
_1k_sats: CohortName::new("above_1k_sats", "1k+ sats", "Above 1K Sats"),
_10k_sats: CohortName::new("above_10k_sats", "10k+ sats", "Above 10K Sats"),
_100k_sats: CohortName::new("above_100k_sats", "100k+ sats", "Above 100K Sats"),
_1m_sats: CohortName::new("above_1m_sats", "1M+ sats", "Above 1M Sats"),
_10m_sats: CohortName::new("above_10m_sats", "0.1+ BTC", "Above 0.1 BTC"),
_1btc: CohortName::new("above_1btc", "1+ BTC", "Above 1 BTC"),
_10btc: CohortName::new("above_10btc", "10+ BTC", "Above 10 BTC"),
_100btc: CohortName::new("above_100btc", "100+ BTC", "Above 100 BTC"),
_1k_btc: CohortName::new("above_1k_btc", "1k+ BTC", "Above 1K BTC"),
_10k_btc: CohortName::new("above_10k_btc", "10k+ BTC", "Above 10K BTC"),
_1sat: CohortName::new("over_1sat", "1+ sats", "Over 1 Sat"),
_10sats: CohortName::new("over_10sats", "10+ sats", "Over 10 Sats"),
_100sats: CohortName::new("over_100sats", "100+ sats", "Over 100 Sats"),
_1k_sats: CohortName::new("over_1k_sats", "1k+ sats", "Over 1K Sats"),
_10k_sats: CohortName::new("over_10k_sats", "10k+ sats", "Over 10K Sats"),
_100k_sats: CohortName::new("over_100k_sats", "100k+ sats", "Over 100K Sats"),
_1m_sats: CohortName::new("over_1m_sats", "1M+ sats", "Over 1M Sats"),
_10m_sats: CohortName::new("over_10m_sats", "0.1+ BTC", "Over 0.1 BTC"),
_1btc: CohortName::new("over_1btc", "1+ BTC", "Over 1 BTC"),
_10btc: CohortName::new("over_10btc", "10+ BTC", "Over 10 BTC"),
_100btc: CohortName::new("over_100btc", "100+ BTC", "Over 100 BTC"),
_1k_btc: CohortName::new("over_1k_btc", "1k+ BTC", "Over 1K BTC"),
_10k_btc: CohortName::new("over_10k_btc", "10k+ BTC", "Over 10K BTC"),
};
/// Greater-or-equal amount filters
+18 -18
View File
@@ -54,24 +54,24 @@ pub const MAX_AGE_FILTERS: ByMaxAge<Filter> = ByMaxAge {
/// Max age names
pub const MAX_AGE_NAMES: ByMaxAge<CohortName> = ByMaxAge {
_1w: CohortName::new("up_to_1w_old", "<1w", "Up to 1 Week Old"),
_1m: CohortName::new("up_to_1m_old", "<1m", "Up to 1 Month Old"),
_2m: CohortName::new("up_to_2m_old", "<2m", "Up to 2 Months Old"),
_3m: CohortName::new("up_to_3m_old", "<3m", "Up to 3 Months Old"),
_4m: CohortName::new("up_to_4m_old", "<4m", "Up to 4 Months Old"),
_5m: CohortName::new("up_to_5m_old", "<5m", "Up to 5 Months Old"),
_6m: CohortName::new("up_to_6m_old", "<6m", "Up to 6 Months Old"),
_1y: CohortName::new("up_to_1y_old", "<1y", "Up to 1 Year Old"),
_2y: CohortName::new("up_to_2y_old", "<2y", "Up to 2 Years Old"),
_3y: CohortName::new("up_to_3y_old", "<3y", "Up to 3 Years Old"),
_4y: CohortName::new("up_to_4y_old", "<4y", "Up to 4 Years Old"),
_5y: CohortName::new("up_to_5y_old", "<5y", "Up to 5 Years Old"),
_6y: CohortName::new("up_to_6y_old", "<6y", "Up to 6 Years Old"),
_7y: CohortName::new("up_to_7y_old", "<7y", "Up to 7 Years Old"),
_8y: CohortName::new("up_to_8y_old", "<8y", "Up to 8 Years Old"),
_10y: CohortName::new("up_to_10y_old", "<10y", "Up to 10 Years Old"),
_12y: CohortName::new("up_to_12y_old", "<12y", "Up to 12 Years Old"),
_15y: CohortName::new("up_to_15y_old", "<15y", "Up to 15 Years Old"),
_1w: CohortName::new("under_1w_old", "<1w", "Under 1 Week Old"),
_1m: CohortName::new("under_1m_old", "<1m", "Under 1 Month Old"),
_2m: CohortName::new("under_2m_old", "<2m", "Under 2 Months Old"),
_3m: CohortName::new("under_3m_old", "<3m", "Under 3 Months Old"),
_4m: CohortName::new("under_4m_old", "<4m", "Under 4 Months Old"),
_5m: CohortName::new("under_5m_old", "<5m", "Under 5 Months Old"),
_6m: CohortName::new("under_6m_old", "<6m", "Under 6 Months Old"),
_1y: CohortName::new("under_1y_old", "<1y", "Under 1 Year Old"),
_2y: CohortName::new("under_2y_old", "<2y", "Under 2 Years Old"),
_3y: CohortName::new("under_3y_old", "<3y", "Under 3 Years Old"),
_4y: CohortName::new("under_4y_old", "<4y", "Under 4 Years Old"),
_5y: CohortName::new("under_5y_old", "<5y", "Under 5 Years Old"),
_6y: CohortName::new("under_6y_old", "<6y", "Under 6 Years Old"),
_7y: CohortName::new("under_7y_old", "<7y", "Under 7 Years Old"),
_8y: CohortName::new("under_8y_old", "<8y", "Under 8 Years Old"),
_10y: CohortName::new("under_10y_old", "<10y", "Under 10 Years Old"),
_12y: CohortName::new("under_12y_old", "<12y", "Under 12 Years Old"),
_15y: CohortName::new("under_15y_old", "<15y", "Under 15 Years Old"),
};
#[derive(Default, Clone, Traversable, Serialize)]
+18 -18
View File
@@ -54,24 +54,24 @@ pub const MIN_AGE_FILTERS: ByMinAge<Filter> = ByMinAge {
/// Min age names
pub const MIN_AGE_NAMES: ByMinAge<CohortName> = ByMinAge {
_1d: CohortName::new("at_least_1d_old", "1d+", "At Least 1 Day Old"),
_1w: CohortName::new("at_least_1w_old", "1w+", "At Least 1 Week Old"),
_1m: CohortName::new("at_least_1m_old", "1m+", "At Least 1 Month Old"),
_2m: CohortName::new("at_least_2m_old", "2m+", "At Least 2 Months Old"),
_3m: CohortName::new("at_least_3m_old", "3m+", "At Least 3 Months Old"),
_4m: CohortName::new("at_least_4m_old", "4m+", "At Least 4 Months Old"),
_5m: CohortName::new("at_least_5m_old", "5m+", "At Least 5 Months Old"),
_6m: CohortName::new("at_least_6m_old", "6m+", "At Least 6 Months Old"),
_1y: CohortName::new("at_least_1y_old", "1y+", "At Least 1 Year Old"),
_2y: CohortName::new("at_least_2y_old", "2y+", "At Least 2 Years Old"),
_3y: CohortName::new("at_least_3y_old", "3y+", "At Least 3 Years Old"),
_4y: CohortName::new("at_least_4y_old", "4y+", "At Least 4 Years Old"),
_5y: CohortName::new("at_least_5y_old", "5y+", "At Least 5 Years Old"),
_6y: CohortName::new("at_least_6y_old", "6y+", "At Least 6 Years Old"),
_7y: CohortName::new("at_least_7y_old", "7y+", "At Least 7 Years Old"),
_8y: CohortName::new("at_least_8y_old", "8y+", "At Least 8 Years Old"),
_10y: CohortName::new("at_least_10y_old", "10y+", "At Least 10 Years Old"),
_12y: CohortName::new("at_least_12y_old", "12y+", "At Least 12 Years Old"),
_1d: CohortName::new("over_1d_old", "1d+", "Over 1 Day Old"),
_1w: CohortName::new("over_1w_old", "1w+", "Over 1 Week Old"),
_1m: CohortName::new("over_1m_old", "1m+", "Over 1 Month Old"),
_2m: CohortName::new("over_2m_old", "2m+", "Over 2 Months Old"),
_3m: CohortName::new("over_3m_old", "3m+", "Over 3 Months Old"),
_4m: CohortName::new("over_4m_old", "4m+", "Over 4 Months Old"),
_5m: CohortName::new("over_5m_old", "5m+", "Over 5 Months Old"),
_6m: CohortName::new("over_6m_old", "6m+", "Over 6 Months Old"),
_1y: CohortName::new("over_1y_old", "1y+", "Over 1 Year Old"),
_2y: CohortName::new("over_2y_old", "2y+", "Over 2 Years Old"),
_3y: CohortName::new("over_3y_old", "3y+", "Over 3 Years Old"),
_4y: CohortName::new("over_4y_old", "4y+", "Over 4 Years Old"),
_5y: CohortName::new("over_5y_old", "5y+", "Over 5 Years Old"),
_6y: CohortName::new("over_6y_old", "6y+", "Over 6 Years Old"),
_7y: CohortName::new("over_7y_old", "7y+", "Over 7 Years Old"),
_8y: CohortName::new("over_8y_old", "8y+", "Over 8 Years Old"),
_10y: CohortName::new("over_10y_old", "10y+", "Over 10 Years Old"),
_12y: CohortName::new("over_12y_old", "12y+", "Over 12 Years Old"),
};
#[derive(Default, Clone, Traversable, Serialize)]
-7
View File
@@ -1,7 +0,0 @@
# Ignore everything in playground except essential files
*
!.gitignore
!Cargo.toml
!src/
!src/lib.rs
!README.md
-57
View File
@@ -1,57 +0,0 @@
[package]
name = "brk_playground"
description = "Experimental playground for brk development"
version.workspace = true
edition.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true
publish = false
[package.metadata.release]
release = false
[dependencies]
brk_computer = { workspace = true }
brk_error = { workspace = true }
brk_fetcher = { workspace = true }
brk_indexer = { workspace = true }
brk_logger = { workspace = true }
brk_types = { workspace = true }
jiff = { workspace = true }
memmap2 = "0.9"
plotters = "0.3"
tracing = { workspace = true }
vecdb = { workspace = true }
[[example]]
name = "heatmap"
path = "examples/heatmap.rs"
[[example]]
name = "oracle"
path = "examples/oracle.rs"
[[example]]
name = "plot_oracle"
path = "examples/plot_oracle.rs"
[[example]]
name = "tune_smooth"
path = "examples/tune_smooth.rs"
[[example]]
name = "debug_oracle"
path = "examples/debug_oracle.rs"
[[example]]
name = "filters"
path = "examples/filters.rs"
[[example]]
name = "stencil"
path = "examples/stencil.rs"
[[example]]
name = "epoch5_test"
path = "examples/epoch5_test.rs"
-28
View File
@@ -1,28 +0,0 @@
//! Playground library for Bitcoin on-chain analysis
//!
//! This crate provides tools for:
//! - Phase histogram analysis of UTXO patterns
//! - Filter-based output selection for price signal extraction
//! - On-chain OHLC price oracle derivation
pub mod anchors;
pub mod conditions;
pub mod constants;
pub mod filters;
pub mod histogram;
pub mod oracle;
pub mod render;
pub mod signal;
pub use anchors::{Ohlc, get_anchor_ohlc, get_anchor_range};
pub use conditions::{MappedOutputConditions, out_bits, tx_bits};
pub use constants::{NUM_BINS, OutputFilter, ROUND_USD_AMOUNTS, START_HEIGHT};
pub use filters::FILTERS;
pub use histogram::load_or_compute_output_conditions;
pub use oracle::{
HeightPriceResult, OracleConfig, OracleResult, derive_daily_ohlc,
derive_daily_ohlc_with_confidence, derive_height_price, derive_height_price_with_confidence,
derive_ohlc_from_height_prices, derive_ohlc_from_height_prices_with_confidence,
derive_price_fast, derive_price_fast_with_confidence, derive_price_from_histogram,
};
pub use signal::{compute_expected_bins_per_day, usd_to_bin};
+1
View File
@@ -0,0 +1 @@
website/*