mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-04-27 08:09:58 -07:00
global: snapshot
This commit is contained in:
@@ -3,12 +3,12 @@
|
||||
use brk_cohort::ByAddressType;
|
||||
use brk_error::Result;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Height, StoredF32, StoredU64, Version};
|
||||
use brk_types::{BasisPoints16, Height, StoredU64, Version};
|
||||
use vecdb::{Database, EagerVec, Exit, PcoVec, ReadableVec, Rw, StorageMode};
|
||||
|
||||
use crate::{
|
||||
indexes,
|
||||
internal::{ComputedFromHeightDistribution, WindowStarts},
|
||||
internal::{PercentFromHeightDistribution, WindowStarts},
|
||||
};
|
||||
|
||||
use super::{AddrCountsVecs, NewAddrCountVecs};
|
||||
@@ -16,9 +16,9 @@ use super::{AddrCountsVecs, NewAddrCountVecs};
|
||||
/// Growth rate: new_addr_count / addr_count (global + per-type)
|
||||
#[derive(Traversable)]
|
||||
pub struct GrowthRateVecs<M: StorageMode = Rw> {
|
||||
pub all: ComputedFromHeightDistribution<StoredF32, M>,
|
||||
pub all: PercentFromHeightDistribution<BasisPoints16, M>,
|
||||
#[traversable(flatten)]
|
||||
pub by_addresstype: ByAddressType<ComputedFromHeightDistribution<StoredF32, M>>,
|
||||
pub by_addresstype: ByAddressType<PercentFromHeightDistribution<BasisPoints16, M>>,
|
||||
}
|
||||
|
||||
impl GrowthRateVecs {
|
||||
@@ -27,22 +27,21 @@ impl GrowthRateVecs {
|
||||
version: Version,
|
||||
indexes: &indexes::Vecs,
|
||||
) -> Result<Self> {
|
||||
let all = ComputedFromHeightDistribution::forced_import(
|
||||
let all = PercentFromHeightDistribution::forced_import_bp16(
|
||||
db,
|
||||
"growth_rate",
|
||||
version,
|
||||
indexes,
|
||||
)?;
|
||||
|
||||
let by_addresstype: ByAddressType<ComputedFromHeightDistribution<StoredF32>> =
|
||||
ByAddressType::new_with_name(|name| {
|
||||
ComputedFromHeightDistribution::forced_import(
|
||||
db,
|
||||
&format!("{name}_growth_rate"),
|
||||
version,
|
||||
indexes,
|
||||
)
|
||||
})?;
|
||||
let by_addresstype = ByAddressType::new_with_name(|name| {
|
||||
PercentFromHeightDistribution::forced_import_bp16(
|
||||
db,
|
||||
&format!("{name}_growth_rate"),
|
||||
version,
|
||||
indexes,
|
||||
)
|
||||
})?;
|
||||
|
||||
Ok(Self { all, by_addresstype })
|
||||
}
|
||||
@@ -91,7 +90,7 @@ impl GrowthRateVecs {
|
||||
}
|
||||
|
||||
fn compute_ratio(
|
||||
target: &mut EagerVec<PcoVec<Height, StoredF32>>,
|
||||
target: &mut EagerVec<PcoVec<Height, BasisPoints16>>,
|
||||
max_from: Height,
|
||||
numerator: &impl ReadableVec<Height, StoredU64>,
|
||||
denominator: &impl ReadableVec<Height, StoredU64>,
|
||||
@@ -105,7 +104,7 @@ fn compute_ratio(
|
||||
let n = *num as f64;
|
||||
let d = *den as f64;
|
||||
let ratio = if d == 0.0 { 0.0 } else { n / d };
|
||||
(h, StoredF32::from(ratio))
|
||||
(h, BasisPoints16::from(ratio))
|
||||
},
|
||||
exit,
|
||||
)?;
|
||||
|
||||
@@ -7,11 +7,11 @@ use brk_cohort::{
|
||||
use brk_error::Result;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{
|
||||
Cents, CentsCompact, CostBasisDistribution, Date, Dollars, Height, Sats,
|
||||
StoredF32, Version,
|
||||
BasisPoints16, Cents, CentsCompact, CostBasisDistribution, Date, Dollars, Height, Sats,
|
||||
Version,
|
||||
};
|
||||
use rayon::prelude::*;
|
||||
use vecdb::{AnyStoredVec, Database, Exit, ReadOnlyClone, ReadableVec, Rw, StorageMode, VecIndex, WritableVec};
|
||||
use vecdb::{AnyStoredVec, Database, Exit, ReadOnlyClone, ReadableVec, Rw, StorageMode, WritableVec};
|
||||
|
||||
use crate::{
|
||||
ComputeIndexes, blocks,
|
||||
@@ -859,13 +859,15 @@ impl UTXOCohorts<Rw> {
|
||||
target
|
||||
.extended
|
||||
.spot_cost_basis_percentile
|
||||
.bps
|
||||
.height
|
||||
.truncate_push(height, StoredF32::NAN)?;
|
||||
.truncate_push(height, BasisPoints16::ZERO)?;
|
||||
target
|
||||
.extended
|
||||
.spot_invested_capital_percentile
|
||||
.bps
|
||||
.height
|
||||
.truncate_push(height, StoredF32::NAN)?;
|
||||
.truncate_push(height, BasisPoints16::ZERO)?;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -969,12 +971,14 @@ impl UTXOCohorts<Rw> {
|
||||
target
|
||||
.extended
|
||||
.spot_cost_basis_percentile
|
||||
.bps
|
||||
.height
|
||||
.truncate_push(height, rank)?;
|
||||
let rank = compute_spot_percentile_rank(&usd_result, spot);
|
||||
target
|
||||
.extended
|
||||
.spot_invested_capital_percentile
|
||||
.bps
|
||||
.height
|
||||
.truncate_push(height, rank)?;
|
||||
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
use brk_error::Result;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{Cents, Height, StoredF32, Version};
|
||||
use brk_types::{BasisPoints16, Cents, Height, Version};
|
||||
use vecdb::{AnyStoredVec, Rw, StorageMode, WritableVec};
|
||||
|
||||
use crate::{
|
||||
distribution::state::CohortState,
|
||||
internal::{
|
||||
ComputedFromHeight, PERCENTILES_LEN, PercentilesVecs, compute_spot_percentile_rank,
|
||||
PERCENTILES_LEN, PercentFromHeight, PercentilesVecs,
|
||||
compute_spot_percentile_rank,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -22,10 +23,10 @@ pub struct CostBasisExtended<M: StorageMode = Rw> {
|
||||
pub invested_capital: PercentilesVecs<M>,
|
||||
|
||||
/// What percentile of cost basis is below spot (sat-weighted)
|
||||
pub spot_cost_basis_percentile: ComputedFromHeight<StoredF32, M>,
|
||||
pub spot_cost_basis_percentile: PercentFromHeight<BasisPoints16, M>,
|
||||
|
||||
/// What percentile of invested capital is below spot (USD-weighted)
|
||||
pub spot_invested_capital_percentile: ComputedFromHeight<StoredF32, M>,
|
||||
pub spot_invested_capital_percentile: PercentFromHeight<BasisPoints16, M>,
|
||||
}
|
||||
|
||||
impl CostBasisExtended {
|
||||
@@ -43,13 +44,13 @@ impl CostBasisExtended {
|
||||
cfg.version,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
spot_cost_basis_percentile: ComputedFromHeight::forced_import(
|
||||
spot_cost_basis_percentile: PercentFromHeight::forced_import_bp16(
|
||||
cfg.db,
|
||||
&cfg.name("spot_cost_basis_percentile"),
|
||||
cfg.version,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
spot_invested_capital_percentile: ComputedFromHeight::forced_import(
|
||||
spot_invested_capital_percentile: PercentFromHeight::forced_import_bp16(
|
||||
cfg.db,
|
||||
&cfg.name("spot_invested_capital_percentile"),
|
||||
cfg.version,
|
||||
@@ -74,6 +75,7 @@ impl CostBasisExtended {
|
||||
self.percentiles.truncate_push(height, &sat_prices)?;
|
||||
let rank = compute_spot_percentile_rank(&sat_prices, spot);
|
||||
self.spot_cost_basis_percentile
|
||||
.bps
|
||||
.height
|
||||
.truncate_push(height, rank)?;
|
||||
|
||||
@@ -85,6 +87,7 @@ impl CostBasisExtended {
|
||||
self.invested_capital.truncate_push(height, &usd_prices)?;
|
||||
let rank = compute_spot_percentile_rank(&usd_prices, spot);
|
||||
self.spot_invested_capital_percentile
|
||||
.bps
|
||||
.height
|
||||
.truncate_push(height, rank)?;
|
||||
|
||||
@@ -105,8 +108,8 @@ impl CostBasisExtended {
|
||||
.iter_mut()
|
||||
.map(|v| &mut v.cents.height as &mut dyn AnyStoredVec),
|
||||
);
|
||||
vecs.push(&mut self.spot_cost_basis_percentile.height);
|
||||
vecs.push(&mut self.spot_invested_capital_percentile.height);
|
||||
vecs.push(&mut self.spot_cost_basis_percentile.bps.height);
|
||||
vecs.push(&mut self.spot_invested_capital_percentile.bps.height);
|
||||
vecs
|
||||
}
|
||||
|
||||
@@ -116,9 +119,11 @@ impl CostBasisExtended {
|
||||
self.invested_capital
|
||||
.validate_computed_version_or_reset(base_version)?;
|
||||
self.spot_cost_basis_percentile
|
||||
.bps
|
||||
.height
|
||||
.validate_computed_version_or_reset(base_version)?;
|
||||
self.spot_invested_capital_percentile
|
||||
.bps
|
||||
.height
|
||||
.validate_computed_version_or_reset(base_version)?;
|
||||
Ok(())
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use brk_error::Result;
|
||||
use brk_traversable::Traversable;
|
||||
use brk_types::{
|
||||
BasisPoints16, BasisPointsSigned16,
|
||||
BasisPoints16, BasisPoints32, BasisPointsSigned16,
|
||||
Bitcoin, Cents, CentsSats, CentsSigned, CentsSquaredSats, Dollars, Height, Sats, StoredF32, StoredF64, Version,
|
||||
};
|
||||
use vecdb::{
|
||||
@@ -13,7 +13,6 @@ use crate::{
|
||||
ComputeIndexes, blocks,
|
||||
distribution::state::RealizedState,
|
||||
internal::{
|
||||
Bp16ToFloat, Bp16ToPercent, Bps16ToFloat, Bps16ToPercent,
|
||||
CentsPlus, CentsUnsignedToDollars, ComputedFromHeightCumulative, ComputedFromHeight,
|
||||
ComputedFromHeightRatio, FiatFromHeight, NegCentsUnsignedToDollars, PercentFromHeight,
|
||||
PercentRollingEmas1w1m, PercentRollingWindows, ValueFromHeightCumulative, LazyFromHeight,
|
||||
@@ -196,7 +195,7 @@ impl RealizedBase {
|
||||
)?;
|
||||
|
||||
let realized_profit_rel_to_realized_cap =
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db,
|
||||
&cfg.name("realized_profit_rel_to_realized_cap"),
|
||||
cfg.version + v1,
|
||||
@@ -204,7 +203,7 @@ impl RealizedBase {
|
||||
)?;
|
||||
|
||||
let realized_loss_rel_to_realized_cap =
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db,
|
||||
&cfg.name("realized_loss_rel_to_realized_cap"),
|
||||
cfg.version + v1,
|
||||
@@ -212,7 +211,7 @@ impl RealizedBase {
|
||||
)?;
|
||||
|
||||
let net_realized_pnl_rel_to_realized_cap =
|
||||
PercentFromHeight::forced_import::<Bps16ToFloat, Bps16ToPercent>(
|
||||
PercentFromHeight::forced_import_bps16(
|
||||
cfg.db,
|
||||
&cfg.name("net_realized_pnl_rel_to_realized_cap"),
|
||||
cfg.version + v1,
|
||||
@@ -316,10 +315,9 @@ impl RealizedBase {
|
||||
cfg.indexes,
|
||||
)?;
|
||||
|
||||
let mvrv = LazyFromHeight::from_computed::<Identity<StoredF32>>(
|
||||
let mvrv = LazyFromHeight::from_lazy::<Identity<StoredF32>, BasisPoints32>(
|
||||
&cfg.name("mvrv"),
|
||||
cfg.version,
|
||||
realized_price_ratio.ratio.height.read_only_boxed_clone(),
|
||||
&realized_price_ratio.ratio,
|
||||
);
|
||||
|
||||
@@ -336,7 +334,7 @@ impl RealizedBase {
|
||||
let sopr = RollingWindows::forced_import(
|
||||
cfg.db, &cfg.name("sopr"), cfg.version + v1, cfg.indexes,
|
||||
)?;
|
||||
let sell_side_risk_ratio = PercentRollingWindows::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
let sell_side_risk_ratio = PercentRollingWindows::forced_import_bp16(
|
||||
cfg.db, &cfg.name("sell_side_risk_ratio"), cfg.version + v1, cfg.indexes,
|
||||
)?;
|
||||
|
||||
@@ -344,12 +342,12 @@ impl RealizedBase {
|
||||
let sopr_24h_ema = RollingEmas1w1m::forced_import(
|
||||
cfg.db, &cfg.name("sopr_24h"), cfg.version + v1, cfg.indexes,
|
||||
)?;
|
||||
let sell_side_risk_ratio_24h_ema = PercentRollingEmas1w1m::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
let sell_side_risk_ratio_24h_ema = PercentRollingEmas1w1m::forced_import_bp16(
|
||||
cfg.db, &cfg.name("sell_side_risk_ratio_24h"), cfg.version + v1, cfg.indexes,
|
||||
)?;
|
||||
|
||||
let peak_regret_rel_to_realized_cap =
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db,
|
||||
&cfg.name("realized_peak_regret_rel_to_realized_cap"),
|
||||
cfg.version + v1,
|
||||
@@ -407,14 +405,14 @@ impl RealizedBase {
|
||||
cfg.indexes,
|
||||
)?,
|
||||
net_pnl_change_1m_rel_to_realized_cap:
|
||||
PercentFromHeight::forced_import::<Bps16ToFloat, Bps16ToPercent>(
|
||||
PercentFromHeight::forced_import_bps16(
|
||||
cfg.db,
|
||||
&cfg.name("net_pnl_change_1m_rel_to_realized_cap"),
|
||||
cfg.version + v3,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
net_pnl_change_1m_rel_to_market_cap:
|
||||
PercentFromHeight::forced_import::<Bps16ToFloat, Bps16ToPercent>(
|
||||
PercentFromHeight::forced_import_bps16(
|
||||
cfg.db,
|
||||
&cfg.name("net_pnl_change_1m_rel_to_market_cap"),
|
||||
cfg.version + v3,
|
||||
|
||||
@@ -6,7 +6,7 @@ use vecdb::{Exit, ReadableVec, Rw, StorageMode};
|
||||
use crate::{
|
||||
ComputeIndexes, blocks,
|
||||
internal::{
|
||||
Bp16ToFloat, Bp16ToPercent, ComputedFromHeightRatioExtension, PercentFromHeight,
|
||||
ComputedFromHeightRatioExtension, PercentFromHeight,
|
||||
RatioCents64, RatioDollarsBp16, RollingWindows,
|
||||
},
|
||||
};
|
||||
@@ -37,7 +37,7 @@ impl RealizedExtended {
|
||||
let v1 = Version::ONE;
|
||||
|
||||
Ok(RealizedExtended {
|
||||
realized_cap_rel_to_own_market_cap: PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
realized_cap_rel_to_own_market_cap: PercentFromHeight::forced_import_bp16(
|
||||
cfg.db,
|
||||
&cfg.name("realized_cap_rel_to_own_market_cap"),
|
||||
cfg.version,
|
||||
|
||||
@@ -4,7 +4,7 @@ use brk_types::{BasisPoints16, BasisPointsSigned16, Dollars, Height, Sats, Store
|
||||
use vecdb::{Exit, ReadableCloneableVec, ReadableVec, Rw, StorageMode};
|
||||
|
||||
use crate::internal::{
|
||||
Bp16ToFloat, Bp16ToPercent, Bps16ToFloat, Bps16ToPercent, LazyFromHeight,
|
||||
Bps16ToFloat, LazyFromHeight,
|
||||
NegRatioDollarsBps16, PercentFromHeight, RatioDollarsBp16, RatioDollarsBps16, RatioSatsBp16,
|
||||
};
|
||||
|
||||
@@ -37,7 +37,7 @@ impl RelativeBase {
|
||||
let v2 = Version::new(2);
|
||||
|
||||
let net_unrealized_pnl_rel_to_market_cap =
|
||||
PercentFromHeight::forced_import::<Bps16ToFloat, Bps16ToPercent>(
|
||||
PercentFromHeight::forced_import_bps16(
|
||||
cfg.db, &cfg.name("net_unrealized_pnl_rel_to_market_cap"), cfg.version + v2, cfg.indexes,
|
||||
)?;
|
||||
|
||||
@@ -50,33 +50,33 @@ impl RelativeBase {
|
||||
|
||||
Ok(Self {
|
||||
supply_in_profit_rel_to_own_supply:
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db, &cfg.name("supply_in_profit_rel_to_own_supply"), cfg.version + v1, cfg.indexes,
|
||||
)?,
|
||||
supply_in_loss_rel_to_own_supply:
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db, &cfg.name("supply_in_loss_rel_to_own_supply"), cfg.version + v1, cfg.indexes,
|
||||
)?,
|
||||
unrealized_profit_rel_to_market_cap:
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db, &cfg.name("unrealized_profit_rel_to_market_cap"), cfg.version + v2, cfg.indexes,
|
||||
)?,
|
||||
unrealized_loss_rel_to_market_cap:
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db, &cfg.name("unrealized_loss_rel_to_market_cap"), cfg.version + v2, cfg.indexes,
|
||||
)?,
|
||||
neg_unrealized_loss_rel_to_market_cap:
|
||||
PercentFromHeight::forced_import::<Bps16ToFloat, Bps16ToPercent>(
|
||||
PercentFromHeight::forced_import_bps16(
|
||||
cfg.db, &cfg.name("neg_unrealized_loss_rel_to_market_cap"), cfg.version + v2, cfg.indexes,
|
||||
)?,
|
||||
net_unrealized_pnl_rel_to_market_cap,
|
||||
nupl,
|
||||
invested_capital_in_profit_rel_to_realized_cap:
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db, &cfg.name("invested_capital_in_profit_rel_to_realized_cap"), cfg.version, cfg.indexes,
|
||||
)?,
|
||||
invested_capital_in_loss_rel_to_realized_cap:
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db, &cfg.name("invested_capital_in_loss_rel_to_realized_cap"), cfg.version, cfg.indexes,
|
||||
)?,
|
||||
})
|
||||
|
||||
@@ -4,7 +4,6 @@ use brk_types::{BasisPoints16, BasisPointsSigned16, Dollars, Height};
|
||||
use vecdb::{Exit, ReadableVec, Rw, StorageMode};
|
||||
|
||||
use crate::internal::{
|
||||
Bp16ToFloat, Bp16ToPercent, Bps16ToFloat, Bps16ToPercent,
|
||||
NegRatioDollarsBps16, PercentFromHeight, RatioDollarsBp16, RatioDollarsBps16,
|
||||
};
|
||||
|
||||
@@ -31,28 +30,28 @@ impl RelativeExtendedOwnMarketCap {
|
||||
|
||||
Ok(Self {
|
||||
unrealized_profit_rel_to_own_market_cap:
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db,
|
||||
&cfg.name("unrealized_profit_rel_to_own_market_cap"),
|
||||
cfg.version + v2,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
unrealized_loss_rel_to_own_market_cap:
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db,
|
||||
&cfg.name("unrealized_loss_rel_to_own_market_cap"),
|
||||
cfg.version + v2,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
neg_unrealized_loss_rel_to_own_market_cap:
|
||||
PercentFromHeight::forced_import::<Bps16ToFloat, Bps16ToPercent>(
|
||||
PercentFromHeight::forced_import_bps16(
|
||||
cfg.db,
|
||||
&cfg.name("neg_unrealized_loss_rel_to_own_market_cap"),
|
||||
cfg.version + v2,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
net_unrealized_pnl_rel_to_own_market_cap:
|
||||
PercentFromHeight::forced_import::<Bps16ToFloat, Bps16ToPercent>(
|
||||
PercentFromHeight::forced_import_bps16(
|
||||
cfg.db,
|
||||
&cfg.name("net_unrealized_pnl_rel_to_own_market_cap"),
|
||||
cfg.version + v2,
|
||||
|
||||
@@ -4,7 +4,6 @@ use brk_types::{BasisPoints16, BasisPointsSigned16, Dollars, Height};
|
||||
use vecdb::{Exit, Rw, StorageMode};
|
||||
|
||||
use crate::internal::{
|
||||
Bp16ToFloat, Bp16ToPercent, Bps16ToFloat, Bps16ToPercent,
|
||||
NegRatioDollarsBps16, PercentFromHeight, RatioDollarsBp16, RatioDollarsBps16,
|
||||
};
|
||||
|
||||
@@ -32,28 +31,28 @@ impl RelativeExtendedOwnPnl {
|
||||
|
||||
Ok(Self {
|
||||
unrealized_profit_rel_to_own_gross_pnl:
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db,
|
||||
&cfg.name("unrealized_profit_rel_to_own_gross_pnl"),
|
||||
cfg.version + v1,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
unrealized_loss_rel_to_own_gross_pnl:
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db,
|
||||
&cfg.name("unrealized_loss_rel_to_own_gross_pnl"),
|
||||
cfg.version + v1,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
neg_unrealized_loss_rel_to_own_gross_pnl:
|
||||
PercentFromHeight::forced_import::<Bps16ToFloat, Bps16ToPercent>(
|
||||
PercentFromHeight::forced_import_bps16(
|
||||
cfg.db,
|
||||
&cfg.name("neg_unrealized_loss_rel_to_own_gross_pnl"),
|
||||
cfg.version + v1,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
net_unrealized_pnl_rel_to_own_gross_pnl:
|
||||
PercentFromHeight::forced_import::<Bps16ToFloat, Bps16ToPercent>(
|
||||
PercentFromHeight::forced_import_bps16(
|
||||
cfg.db,
|
||||
&cfg.name("net_unrealized_pnl_rel_to_own_gross_pnl"),
|
||||
cfg.version + v2,
|
||||
|
||||
@@ -3,7 +3,7 @@ use brk_traversable::Traversable;
|
||||
use brk_types::{BasisPoints16, Height, Sats};
|
||||
use vecdb::{Exit, ReadableVec, Rw, StorageMode};
|
||||
|
||||
use crate::internal::{Bp16ToFloat, Bp16ToPercent, PercentFromHeight, RatioSatsBp16};
|
||||
use crate::internal::{PercentFromHeight, RatioSatsBp16};
|
||||
|
||||
use crate::distribution::metrics::{ImportConfig, UnrealizedBase};
|
||||
|
||||
@@ -24,21 +24,21 @@ impl RelativeToAll {
|
||||
) -> Result<Self> {
|
||||
Ok(Self {
|
||||
supply_rel_to_circulating_supply:
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db,
|
||||
&cfg.name("supply_rel_to_circulating_supply"),
|
||||
cfg.version + brk_types::Version::ONE,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
supply_in_profit_rel_to_circulating_supply:
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db,
|
||||
&cfg.name("supply_in_profit_rel_to_circulating_supply"),
|
||||
cfg.version + brk_types::Version::ONE,
|
||||
cfg.indexes,
|
||||
)?,
|
||||
supply_in_loss_rel_to_circulating_supply:
|
||||
PercentFromHeight::forced_import::<Bp16ToFloat, Bp16ToPercent>(
|
||||
PercentFromHeight::forced_import_bp16(
|
||||
cfg.db,
|
||||
&cfg.name("supply_in_loss_rel_to_circulating_supply"),
|
||||
cfg.version + brk_types::Version::ONE,
|
||||
|
||||
Reference in New Issue
Block a user