From cf6c755e51dfaebdd00bdbdb2ef2fdb1fcfa051d Mon Sep 17 00:00:00 2001 From: nym21 Date: Sun, 8 Mar 2026 00:11:06 +0100 Subject: [PATCH] global: snapshot --- crates/brk_client/src/lib.rs | 22 ++++++--- .../src/distribution/metrics/realized/core.rs | 46 +++++++++++-------- .../src/distribution/metrics/realized/full.rs | 26 ++++++++++- modules/brk-client/index.js | 22 ++++++--- packages/brk_client/brk_client/__init__.py | 11 +++-- 5 files changed, 90 insertions(+), 37 deletions(-) diff --git a/crates/brk_client/src/lib.rs b/crates/brk_client/src/lib.rs index 3b633b20e..830009184 100644 --- a/crates/brk_client/src/lib.rs +++ b/crates/brk_client/src/lib.rs @@ -960,8 +960,11 @@ pub struct CapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSell pub net_pnl_change_1m_rel_to_realized_cap: BpsPercentRatioPattern, pub net_pnl_delta: ChangeRatePattern, pub net_pnl_delta_extended: _24hChangeRatePattern, - pub net_realized_pnl: CumulativeHeightPattern, + pub net_realized_pnl: MetricPattern1, + pub net_realized_pnl_cumulative: MetricPattern1, pub net_realized_pnl_rel_to_realized_cap: BpsPercentRatioPattern, + pub net_realized_pnl_sum: _24hPattern, + pub net_realized_pnl_sum_extended: _1m1w1yPattern, pub peak_regret: CumulativeHeightPattern, pub peak_regret_rel_to_realized_cap: BpsPercentRatioPattern, pub profit_flow: MetricPattern1, @@ -1028,8 +1031,11 @@ impl CapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentSo net_pnl_change_1m_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "net_pnl_change_1m_rel_to_realized_cap")), net_pnl_delta: ChangeRatePattern::new(client.clone(), _m(&acc, "net_pnl_delta")), net_pnl_delta_extended: _24hChangeRatePattern::new(client.clone(), _m(&acc, "net_pnl_delta")), - net_realized_pnl: CumulativeHeightPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), + net_realized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_realized_pnl")), + net_realized_pnl_cumulative: MetricPattern1::new(client.clone(), _m(&acc, "net_realized_pnl_cumulative")), net_realized_pnl_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "net_realized_pnl_rel_to_realized_cap")), + net_realized_pnl_sum: _24hPattern::new(client.clone(), _m(&acc, "net_realized_pnl_24h")), + net_realized_pnl_sum_extended: _1m1w1yPattern::new(client.clone(), _m(&acc, "net_realized_pnl")), peak_regret: CumulativeHeightPattern::new(client.clone(), _m(&acc, "realized_peak_regret")), peak_regret_rel_to_realized_cap: BpsPercentRatioPattern::new(client.clone(), _m(&acc, "realized_peak_regret_rel_to_realized_cap")), profit_flow: MetricPattern1::new(client.clone(), _m(&acc, "profit_flow")), @@ -1147,7 +1153,8 @@ impl _0sdM0M1M1sdM2M2sdM3sdP0P1P1sdP2P2sdP3sdSdSmaZscorePattern { pub struct MvrvNegNetRealizedSentSoprValuePattern { pub mvrv: MetricPattern1, pub neg_realized_loss: MetricPattern1, - pub net_realized_pnl: CumulativeHeightPattern, + pub net_realized_pnl: MetricPattern1, + pub net_realized_pnl_sum: _24hPattern, pub realized_cap: MetricPattern1, pub realized_cap_cents: MetricPattern1, pub realized_cap_delta: ChangeRatePattern, @@ -1174,7 +1181,8 @@ impl MvrvNegNetRealizedSentSoprValuePattern { 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")), + net_realized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_realized_pnl")), + net_realized_pnl_sum: _24hPattern::new(client.clone(), _m(&acc, "net_realized_pnl_24h")), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), realized_cap_cents: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap_cents")), realized_cap_delta: ChangeRatePattern::new(client.clone(), _m(&acc, "realized_cap_delta")), @@ -1251,7 +1259,8 @@ impl Pct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65Pct70Pct75 pub struct MvrvNegNetRealizedSoprValuePattern { pub mvrv: MetricPattern1, pub neg_realized_loss: MetricPattern1, - pub net_realized_pnl: CumulativeHeightPattern, + pub net_realized_pnl: MetricPattern1, + pub net_realized_pnl_sum: _24hPattern, pub realized_cap: MetricPattern1, pub realized_cap_cents: MetricPattern1, pub realized_cap_delta: ChangeRatePattern, @@ -1274,7 +1283,8 @@ impl MvrvNegNetRealizedSoprValuePattern { 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")), + net_realized_pnl: MetricPattern1::new(client.clone(), _m(&acc, "net_realized_pnl")), + net_realized_pnl_sum: _24hPattern::new(client.clone(), _m(&acc, "net_realized_pnl_24h")), realized_cap: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap")), realized_cap_cents: MetricPattern1::new(client.clone(), _m(&acc, "realized_cap_cents")), realized_cap_delta: ChangeRatePattern::new(client.clone(), _m(&acc, "realized_cap_delta")), diff --git a/crates/brk_computer/src/distribution/metrics/realized/core.rs b/crates/brk_computer/src/distribution/metrics/realized/core.rs index a5087f8ec..b04f505a3 100644 --- a/crates/brk_computer/src/distribution/metrics/realized/core.rs +++ b/crates/brk_computer/src/distribution/metrics/realized/core.rs @@ -10,8 +10,8 @@ use crate::{ blocks, distribution::state::RealizedOps, internal::{ - ComputedFromHeight, ComputedFromHeightCumulative, LazyFromHeight, - NegCentsUnsignedToDollars, RatioCents64, RollingDelta1m, RollingWindow24h, + ComputedFromHeight, LazyFromHeight, NegCentsUnsignedToDollars, RatioCents64, + RollingDelta1m, RollingWindow24h, }, prices, }; @@ -30,7 +30,8 @@ pub struct RealizedCore { pub realized_cap_delta: RollingDelta1m, pub neg_realized_loss: LazyFromHeight, - pub net_realized_pnl: ComputedFromHeightCumulative, + pub net_realized_pnl: ComputedFromHeight, + pub net_realized_pnl_sum: RollingWindow24h, pub value_created: ComputedFromHeight, pub value_destroyed: ComputedFromHeight, @@ -53,7 +54,8 @@ impl RealizedCore { cfg.indexes, ); - let net_realized_pnl = cfg.import("net_realized_pnl", v0)?; + let net_realized_pnl = cfg.import("net_realized_pnl", v1)?; + let net_realized_pnl_sum = cfg.import("net_realized_pnl", v1)?; let value_created = cfg.import("value_created", v0)?; let value_destroyed = cfg.import("value_destroyed", v0)?; @@ -66,6 +68,7 @@ impl RealizedCore { realized_cap_delta: cfg.import("realized_cap_delta", v1)?, neg_realized_loss, net_realized_pnl, + net_realized_pnl_sum, value_created, value_destroyed, value_created_sum, @@ -123,22 +126,18 @@ impl RealizedCore { ) -> Result<()> { self.minimal.compute_rest_part1(blocks, starting_indexes, exit)?; - self.net_realized_pnl - .compute(starting_indexes.height, exit, |vec| { - vec.compute_transform2( - starting_indexes.height, - &self.minimal.realized_profit.height, - &self.minimal.realized_loss.height, - |(i, profit, loss, ..)| { - ( - i, - CentsSigned::new(profit.inner() as i64 - loss.inner() as i64), - ) - }, - exit, - )?; - Ok(()) - })?; + self.net_realized_pnl.height.compute_transform2( + starting_indexes.height, + &self.minimal.realized_profit.height, + &self.minimal.realized_loss.height, + |(i, profit, loss, ..)| { + ( + i, + CentsSigned::new(profit.inner() as i64 - loss.inner() as i64), + ) + }, + exit, + )?; Ok(()) } @@ -161,6 +160,13 @@ impl RealizedCore { exit, )?; + self.net_realized_pnl_sum.compute_rolling_sum( + starting_indexes.height, + &blocks.count.height_24h_ago, + &self.net_realized_pnl.height, + exit, + )?; + self.value_created_sum.compute_rolling_sum( starting_indexes.height, &blocks.count.height_24h_ago, diff --git a/crates/brk_computer/src/distribution/metrics/realized/full.rs b/crates/brk_computer/src/distribution/metrics/realized/full.rs index ef6e7cfd6..c08982e47 100644 --- a/crates/brk_computer/src/distribution/metrics/realized/full.rs +++ b/crates/brk_computer/src/distribution/metrics/realized/full.rs @@ -56,6 +56,9 @@ pub struct RealizedFull { pub gross_pnl_sum: RollingWindows, + pub net_realized_pnl_cumulative: ComputedFromHeight, + pub net_realized_pnl_sum_extended: RollingWindowsFrom1w, + pub net_pnl_delta: RollingDelta1m, pub net_pnl_delta_extended: RollingDeltaExcept1m, pub net_pnl_change_1m_rel_to_realized_cap: PercentFromHeight, @@ -179,6 +182,8 @@ impl RealizedFull { capitulation_flow, profit_flow, gross_pnl_sum, + net_realized_pnl_cumulative: cfg.import("net_realized_pnl_cumulative", Version::ONE)?, + net_realized_pnl_sum_extended: cfg.import("net_realized_pnl", Version::ONE)?, net_pnl_delta: cfg.import("net_pnl_delta", Version::new(5))?, net_pnl_delta_extended: cfg.import("net_pnl_delta", Version::new(5))?, net_pnl_change_1m_rel_to_realized_cap: cfg @@ -300,6 +305,15 @@ impl RealizedFull { exit: &Exit, ) -> Result<()> { self.base.compute_rest_part1(blocks, starting_indexes, exit)?; + + self.net_realized_pnl_cumulative + .height + .compute_cumulative( + starting_indexes.height, + &self.base.core.net_realized_pnl.height, + exit, + )?; + self.peak_regret .compute_rest(starting_indexes.height, exit)?; Ok(()) @@ -324,6 +338,14 @@ impl RealizedFull { let window_starts = blocks.count.window_starts(); + // Extended rolling sum (1w, 1m, 1y) for net_realized_pnl + self.net_realized_pnl_sum_extended.compute_rolling_sum( + starting_indexes.height, + &window_starts, + &self.base.core.net_realized_pnl.height, + exit, + )?; + // Extended rolling windows (1w, 1m, 1y) for value_created/destroyed/sopr self.value_created_sum_extended.compute_rolling_sum( starting_indexes.height, @@ -434,13 +456,13 @@ impl RealizedFull { self.net_pnl_delta.compute( starting_indexes.height, &blocks.count.height_1m_ago, - &self.base.core.net_realized_pnl.cumulative.height, + &self.net_realized_pnl_cumulative.height, exit, )?; self.net_pnl_delta_extended.compute( starting_indexes.height, &window_starts, - &self.base.core.net_realized_pnl.cumulative.height, + &self.net_realized_pnl_cumulative.height, exit, )?; self.net_pnl_change_1m_rel_to_realized_cap diff --git a/modules/brk-client/index.js b/modules/brk-client/index.js index b5c5a4f71..23499770a 100644 --- a/modules/brk-client/index.js +++ b/modules/brk-client/index.js @@ -1595,8 +1595,11 @@ function createMetricPattern35(client, name) { return /** @type {MetricPattern35 * @property {BpsPercentRatioPattern} netPnlChange1mRelToRealizedCap * @property {ChangeRatePattern} netPnlDelta * @property {_24hChangeRatePattern} netPnlDeltaExtended - * @property {CumulativeHeightPattern} netRealizedPnl + * @property {MetricPattern1} netRealizedPnl + * @property {MetricPattern1} netRealizedPnlCumulative * @property {BpsPercentRatioPattern} netRealizedPnlRelToRealizedCap + * @property {_24hPattern} netRealizedPnlSum + * @property {_1m1w1yPattern} netRealizedPnlSumExtended * @property {CumulativeHeightPattern} peakRegret * @property {BpsPercentRatioPattern} peakRegretRelToRealizedCap * @property {MetricPattern1} profitFlow @@ -1667,8 +1670,11 @@ function createCapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealized netPnlChange1mRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'net_pnl_change_1m_rel_to_realized_cap')), netPnlDelta: createChangeRatePattern(client, _m(acc, 'net_pnl_delta')), netPnlDeltaExtended: create_24hChangeRatePattern(client, _m(acc, 'net_pnl_delta')), - netRealizedPnl: createCumulativeHeightPattern(client, _m(acc, 'net_realized_pnl')), + netRealizedPnl: createMetricPattern1(client, _m(acc, 'net_realized_pnl')), + netRealizedPnlCumulative: createMetricPattern1(client, _m(acc, 'net_realized_pnl_cumulative')), netRealizedPnlRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')), + netRealizedPnlSum: create_24hPattern(client, _m(acc, 'net_realized_pnl_24h')), + netRealizedPnlSumExtended: create_1m1w1yPattern(client, _m(acc, 'net_realized_pnl')), peakRegret: createCumulativeHeightPattern(client, _m(acc, 'realized_peak_regret')), peakRegretRelToRealizedCap: createBpsPercentRatioPattern(client, _m(acc, 'realized_peak_regret_rel_to_realized_cap')), profitFlow: createMetricPattern1(client, _m(acc, 'profit_flow')), @@ -1788,7 +1794,8 @@ function create_0sdM0M1M1sdM2M2sdM3sdP0P1P1sdP2P2sdP3sdSdSmaZscorePattern(client * @typedef {Object} MvrvNegNetRealizedSentSoprValuePattern * @property {MetricPattern1} mvrv * @property {MetricPattern1} negRealizedLoss - * @property {CumulativeHeightPattern} netRealizedPnl + * @property {MetricPattern1} netRealizedPnl + * @property {_24hPattern} netRealizedPnlSum * @property {MetricPattern1} realizedCap * @property {MetricPattern1} realizedCapCents * @property {ChangeRatePattern} realizedCapDelta @@ -1819,7 +1826,8 @@ 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')), + netRealizedPnl: createMetricPattern1(client, _m(acc, 'net_realized_pnl')), + netRealizedPnlSum: create_24hPattern(client, _m(acc, 'net_realized_pnl_24h')), realizedCap: createMetricPattern1(client, _m(acc, 'realized_cap')), realizedCapCents: createMetricPattern1(client, _m(acc, 'realized_cap_cents')), realizedCapDelta: createChangeRatePattern(client, _m(acc, 'realized_cap_delta')), @@ -1898,7 +1906,8 @@ function createPct05Pct10Pct15Pct20Pct25Pct30Pct35Pct40Pct45Pct50Pct55Pct60Pct65 * @typedef {Object} MvrvNegNetRealizedSoprValuePattern * @property {MetricPattern1} mvrv * @property {MetricPattern1} negRealizedLoss - * @property {CumulativeHeightPattern} netRealizedPnl + * @property {MetricPattern1} netRealizedPnl + * @property {_24hPattern} netRealizedPnlSum * @property {MetricPattern1} realizedCap * @property {MetricPattern1} realizedCapCents * @property {ChangeRatePattern} realizedCapDelta @@ -1925,7 +1934,8 @@ function createMvrvNegNetRealizedSoprValuePattern(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')), + netRealizedPnl: createMetricPattern1(client, _m(acc, 'net_realized_pnl')), + netRealizedPnlSum: create_24hPattern(client, _m(acc, 'net_realized_pnl_24h')), realizedCap: createMetricPattern1(client, _m(acc, 'realized_cap')), realizedCapCents: createMetricPattern1(client, _m(acc, 'realized_cap_cents')), realizedCapDelta: createChangeRatePattern(client, _m(acc, 'realized_cap_delta')), diff --git a/packages/brk_client/brk_client/__init__.py b/packages/brk_client/brk_client/__init__.py index 49cd6abe6..55bf42390 100644 --- a/packages/brk_client/brk_client/__init__.py +++ b/packages/brk_client/brk_client/__init__.py @@ -2090,8 +2090,11 @@ class CapCapitulationGrossInvestorLossLowerMvrvNegNetPeakProfitRealizedSellSentS self.net_pnl_change_1m_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'net_pnl_change_1m_rel_to_realized_cap')) self.net_pnl_delta: ChangeRatePattern[CentsSigned] = ChangeRatePattern(client, _m(acc, 'net_pnl_delta')) self.net_pnl_delta_extended: _24hChangeRatePattern[CentsSigned] = _24hChangeRatePattern(client, _m(acc, 'net_pnl_delta')) - self.net_realized_pnl: CumulativeHeightPattern[CentsSigned] = CumulativeHeightPattern(client, _m(acc, 'net_realized_pnl')) + self.net_realized_pnl: MetricPattern1[CentsSigned] = MetricPattern1(client, _m(acc, 'net_realized_pnl')) + self.net_realized_pnl_cumulative: MetricPattern1[CentsSigned] = MetricPattern1(client, _m(acc, 'net_realized_pnl_cumulative')) self.net_realized_pnl_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'net_realized_pnl_rel_to_realized_cap')) + self.net_realized_pnl_sum: _24hPattern[CentsSigned] = _24hPattern(client, _m(acc, 'net_realized_pnl_24h')) + self.net_realized_pnl_sum_extended: _1m1w1yPattern[CentsSigned] = _1m1w1yPattern(client, _m(acc, 'net_realized_pnl')) self.peak_regret: CumulativeHeightPattern[Cents] = CumulativeHeightPattern(client, _m(acc, 'realized_peak_regret')) self.peak_regret_rel_to_realized_cap: BpsPercentRatioPattern = BpsPercentRatioPattern(client, _m(acc, 'realized_peak_regret_rel_to_realized_cap')) self.profit_flow: MetricPattern1[Dollars] = MetricPattern1(client, _m(acc, 'profit_flow')) @@ -2175,7 +2178,8 @@ class MvrvNegNetRealizedSentSoprValuePattern: """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.net_realized_pnl: MetricPattern1[CentsSigned] = MetricPattern1(client, _m(acc, 'net_realized_pnl')) + self.net_realized_pnl_sum: _24hPattern[CentsSigned] = _24hPattern(client, _m(acc, 'net_realized_pnl_24h')) 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_delta: ChangeRatePattern[CentsSigned] = ChangeRatePattern(client, _m(acc, 'realized_cap_delta')) @@ -2227,7 +2231,8 @@ class MvrvNegNetRealizedSoprValuePattern: """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.net_realized_pnl: MetricPattern1[CentsSigned] = MetricPattern1(client, _m(acc, 'net_realized_pnl')) + self.net_realized_pnl_sum: _24hPattern[CentsSigned] = _24hPattern(client, _m(acc, 'net_realized_pnl_24h')) 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_delta: ChangeRatePattern[CentsSigned] = ChangeRatePattern(client, _m(acc, 'realized_cap_delta'))