Stability Index Changelog
Full version history of PSI methodology decisions, from v1.0 to v3.2.
Latest Version
Fail-closed depeg input availability
PSI no longer publishes a fresh sample when the active-depeg input query is unavailable, preventing false continuity from an incomplete core dependency.
Impact Snapshot
- The 30-minute cron now returns degraded and skips the sample when `depeg_events` cannot be queried
- Only already-open depegs missing a current stablecoins price may use the replay-safe `price_cache` fallback; table-level depeg input loss is no longer treated as an empty event set
- Public PSI remains anchored to the last valid stored sample instead of silently publishing from partial core inputs
v3.2Mar 23, 2026Fail-closed depeg input availability
PSI no longer publishes a fresh sample when the active-depeg input query is unavailable, preventing false continuity from an incomplete core dependency.
- The 30-minute cron now returns degraded and skips the sample when `depeg_events` cannot be queried
- Only already-open depegs missing a current stablecoins price may use the replay-safe `price_cache` fallback; table-level depeg input loss is no longer treated as an empty event set
- Public PSI remains anchored to the last valid stored sample instead of silently publishing from partial core inputs
DetailsHide details
Fail-closed depeg input availability
PSI no longer publishes a fresh sample when the active-depeg input query is unavailable, preventing false continuity from an incomplete core dependency.
- The 30-minute cron now returns degraded and skips the sample when `depeg_events` cannot be queried
- Only already-open depegs missing a current stablecoins price may use the replay-safe `price_cache` fallback; table-level depeg input loss is no longer treated as an empty event set
- Public PSI remains anchored to the last valid stored sample instead of silently publishing from partial core inputs
Impact Notes
- The 30-minute cron now returns degraded and skips the sample when `depeg_events` cannot be queried
- Only already-open depegs missing a current stablecoins price may use the replay-safe `price_cache` fallback; table-level depeg input loss is no longer treated as an empty event set
- Public PSI remains anchored to the last valid stored sample instead of silently publishing from partial core inputs
v3.1Mar 23, 2026Open-depeg replay-price fallback
Active depegs now stay in PSI when the current stablecoins snapshot temporarily loses a usable price but a recent replay-safe price-cache entry still exists.
- Severity and breadth now fall back to the last replay-safe positive `price_cache` value for already-open depegs when the current stablecoins snapshot price is missing
- Replay fallback is capped to recent cache entries (6-hour TTL) rather than unbounded historical prices
- Prevents transient contributor/sample omissions during price-validation churn without changing the PSI formula, caps, or bands
DetailsHide details
Open-depeg replay-price fallback
Active depegs now stay in PSI when the current stablecoins snapshot temporarily loses a usable price but a recent replay-safe price-cache entry still exists.
- Severity and breadth now fall back to the last replay-safe positive `price_cache` value for already-open depegs when the current stablecoins snapshot price is missing
- Replay fallback is capped to recent cache entries (6-hour TTL) rather than unbounded historical prices
- Prevents transient contributor/sample omissions during price-validation churn without changing the PSI formula, caps, or bands
Impact Notes
- Severity and breadth now fall back to the last replay-safe positive `price_cache` value for already-open depegs when the current stablecoins snapshot price is missing
- Replay fallback is capped to recent cache entries (6-hour TTL) rather than unbounded historical prices
- Prevents transient contributor/sample omissions during price-validation churn without changing the PSI formula, caps, or bands
v3.0Mar 1, 2026ReconstructedDEWS stress breadth component
Added DEWS-derived stress breadth as an explicit PSI component to capture broad non-depeg stress.
- Formula changed to: 100 - severity - breadth - stressBreadth + trend
- New stressBreadth cap of 5 points
- Cron now reads latest DEWS bands (ALERT/WARNING/DANGER) to derive stress breadth
DetailsHide details
DEWS stress breadth component
Added DEWS-derived stress breadth as an explicit PSI component to capture broad non-depeg stress.
- Formula changed to: 100 - severity - breadth - stressBreadth + trend
- New stressBreadth cap of 5 points
- Cron now reads latest DEWS bands (ALERT/WARNING/DANGER) to derive stress breadth
Impact Notes
- Formula changed to: 100 - severity - breadth - stressBreadth + trend
- New stressBreadth cap of 5 points
- Cron now reads latest DEWS bands (ALERT/WARNING/DANGER) to derive stress breadth
- dcdefde
v2.1Feb 27, 2026ReconstructedTrend hardening and retention safety
Hardened trend input handling and operationalized rolling retention for PSI samples.
- NaN/Infinity trend values now treated as 0 before clamp
- No formula change, but edge-case score corruption prevented
- Sample retention/pruning standardized to 90 days
DetailsHide details
Trend hardening and retention safety
Hardened trend input handling and operationalized rolling retention for PSI samples.
- NaN/Infinity trend values now treated as 0 before clamp
- No formula change, but edge-case score corruption prevented
- Sample retention/pruning standardized to 90 days
Impact Notes
- NaN/Infinity trend values now treated as 0 before clamp
- No formula change, but edge-case score corruption prevented
- Sample retention/pruning standardized to 90 days
- 76aa8c6
- 74aa1cd
v2.0Feb 26, 2026ReconstructedRemoved freezes, rebalanced caps
Major methodology revision removing freezes and reallocating penalty capacity.
- Removed freezes component from formula
- Severity cap increased 60 -> 68
- Breadth cap increased 15 -> 17
- Formula became: 100 - severity - breadth + trend
DetailsHide details
Removed freezes, rebalanced caps
Major methodology revision removing freezes and reallocating penalty capacity.
- Removed freezes component from formula
- Severity cap increased 60 -> 68
- Breadth cap increased 15 -> 17
- Formula became: 100 - severity - breadth + trend
Impact Notes
- Removed freezes component from formula
- Severity cap increased 60 -> 68
- Breadth cap increased 15 -> 17
- Formula became: 100 - severity - breadth + trend
- bc2cfcf
v1.3Feb 26, 2026ReconstructedSample architecture and 24h average model
PSI moved to sample-first storage with daily snapshots and 24h average surfaced as the primary displayed signal.
- Introduced stability_index_samples table and daily snapshot aggregation
- API and UI switched to emphasize 24h average PSI
- Historical backfill path adjusted for peak-deviation realism
DetailsHide details
Sample architecture and 24h average model
PSI moved to sample-first storage with daily snapshots and 24h average surfaced as the primary displayed signal.
- Introduced stability_index_samples table and daily snapshot aggregation
- API and UI switched to emphasize 24h average PSI
- Historical backfill path adjusted for peak-deviation realism
Impact Notes
- Introduced stability_index_samples table and daily snapshot aggregation
- API and UI switched to emphasize 24h average PSI
- Historical backfill path adjusted for peak-deviation realism
- 9508e29
- ad75f4f
v1.2Feb 25, 2026Reconstructed15-minute chained compute + depeg depreciation/dedup
Operational and methodological upgrade to live 15-minute PSI with chronic-depeg depreciation and per-coin deduplication.
- PSI compute moved to chained 15-minute cron after stablecoin sync
- Introduced chronic-depeg depreciation (grace 30d, decay 120d, floor 25%)
- Active depegs deduped per coin (worst current bps, earliest start for age)
DetailsHide details
15-minute chained compute + depeg depreciation/dedup
Operational and methodological upgrade to live 15-minute PSI with chronic-depeg depreciation and per-coin deduplication.
- PSI compute moved to chained 15-minute cron after stablecoin sync
- Introduced chronic-depeg depreciation (grace 30d, decay 120d, floor 25%)
- Active depegs deduped per coin (worst current bps, earliest start for age)
Impact Notes
- PSI compute moved to chained 15-minute cron after stablecoin sync
- Introduced chronic-depeg depreciation (grace 30d, decay 120d, floor 25%)
- Active depegs deduped per coin (worst current bps, earliest start for age)
- 8acaa7d
- a79049d
- 2dfb975
- 615256a
v1.1Feb 25, 2026ReconstructedCurrent deviation semantics
Severity began using live current deviation rather than event peak deviation for active depegs.
- Live severity became recovery-sensitive instead of peak-anchored
- Backfill behavior later diverged and was subsequently tuned
DetailsHide details
Current deviation semantics
Severity began using live current deviation rather than event peak deviation for active depegs.
- Live severity became recovery-sensitive instead of peak-anchored
- Backfill behavior later diverged and was subsequently tuned
Impact Notes
- Live severity became recovery-sensitive instead of peak-anchored
- Backfill behavior later diverged and was subsequently tuned
- 14c75e7
v1.0Feb 25, 2026ReconstructedInitial PSI release
Launched PSI compute, API, cron persistence, and frontend integration.
- Initial formula: 100 - severity - breadth - freezes + trend
- Initial caps: severity 60, breadth 15, freezes 10
- Condition bands introduced
DetailsHide details
Initial PSI release
Launched PSI compute, API, cron persistence, and frontend integration.
- Initial formula: 100 - severity - breadth - freezes + trend
- Initial caps: severity 60, breadth 15, freezes 10
- Condition bands introduced
Impact Notes
- Initial formula: 100 - severity - breadth - freezes + trend
- Initial caps: severity 60, breadth 15, freezes 10
- Condition bands introduced
- c4c7caa
- c21a6bd
- 5eaf440
- 6b3e7e5
- a3f2b53