website: snapshot

This commit is contained in:
nym21
2026-02-04 17:48:06 +01:00
parent 0437ce1bb4
commit 3818a72045
5 changed files with 93 additions and 5106 deletions

View File

@@ -12,15 +12,9 @@
*/
import { Unit } from "../../utils/units.js";
import { line, baseline, dotsBaseline } from "../series.js";
import { line, baseline, dotsBaseline, dots } from "../series.js";
import { satsBtcUsd } from "../shared.js";
import { colors } from "../../utils/colors.js";
import {
createSingleSellSideRiskSeries,
createGroupedSellSideRiskSeries,
createSingleValueCreatedDestroyedSeries,
createSingleCapitulationProfitFlowSeries,
} from "./shared.js";
// ============================================================================
// Shared Helpers
@@ -801,3 +795,91 @@ export function createGroupedActivitySectionWithAdjusted({ list, title }) {
valueTree: createGroupedValueTreeWithAdjusted(list, title),
});
}
/**
* Create sell side risk ratio series for single cohort
* @param {{ realized: AnyRealizedPattern }} tree
* @returns {AnyFetchedSeriesBlueprint[]}
*/
function createSingleSellSideRiskSeries(tree) {
return [
line({
metric: tree.realized.sellSideRiskRatio30dEma,
name: "30d EMA",
color: colors.ma._1m,
unit: Unit.ratio,
}),
line({
metric: tree.realized.sellSideRiskRatio7dEma,
name: "7d EMA",
color: colors.ma._1w,
unit: Unit.ratio,
}),
dots({
metric: tree.realized.sellSideRiskRatio,
name: "Raw",
color: colors.bitcoin,
unit: Unit.ratio,
}),
];
}
/**
* Create sell side risk ratio series for grouped cohorts
* @param {readonly CohortObject[]} list
* @returns {AnyFetchedSeriesBlueprint[]}
*/
function createGroupedSellSideRiskSeries(list) {
return list.flatMap(({ color, name, tree }) => [
line({
metric: tree.realized.sellSideRiskRatio,
name,
color,
unit: Unit.ratio,
}),
]);
}
/**
* Create value created & destroyed series for single cohort
* @param {{ realized: AnyRealizedPattern }} tree
* @returns {AnyFetchedSeriesBlueprint[]}
*/
function createSingleValueCreatedDestroyedSeries(tree) {
return [
line({
metric: tree.realized.valueCreated,
name: "Created",
color: colors.usd,
unit: Unit.usd,
}),
line({
metric: tree.realized.valueDestroyed,
name: "Destroyed",
color: colors.loss,
unit: Unit.usd,
}),
];
}
/**
* Create capitulation & profit flow series for single cohort
* @param {{ realized: AnyRealizedPattern }} tree
* @returns {AnyFetchedSeriesBlueprint[]}
*/
function createSingleCapitulationProfitFlowSeries(tree) {
return [
line({
metric: tree.realized.profitFlow,
name: "Profit Flow",
color: colors.profit,
unit: Unit.usd,
}),
line({
metric: tree.realized.capitulationFlow,
name: "Capitulation Flow",
color: colors.loss,
unit: Unit.usd,
}),
];
}

File diff suppressed because it is too large Load Diff

View File

@@ -69,20 +69,6 @@ import {
// Re-export data builder
export { buildCohortData } from "./data.js";
// Re-export shared helpers
export {
createSingleSupplySeries,
createGroupedSupplyTotalSeries,
createGroupedSupplyInProfitSeries,
createGroupedSupplyInLossSeries,
createUtxoCountSeries,
createAddressCountSeries,
createRealizedPriceSeries,
createRealizedPriceRatioSeries,
createRealizedCapSeries,
createCostBasisPercentilesSeries,
} from "./shared.js";
// ============================================================================
// Folder Builders
// ============================================================================
@@ -264,7 +250,10 @@ export function createCohortFolderAgeRange(args) {
createGroupedValuationSectionWithOwnMarketCap({ list, title }),
createGroupedPricesSection({ list, title }),
createGroupedCostBasisSectionWithPercentiles({ list, title }),
createGroupedProfitabilitySectionWithInvestedCapitalPct({ list, title }),
createGroupedProfitabilitySectionWithInvestedCapitalPct({
list,
title,
}),
createGroupedActivitySection({ list, title }),
],
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff