Purpose. A month can look “on plan” while day-to-day jitter builds future misses. Add a bounded stability lane beside your existing forecast KPI so executives see volatility drift early while m stays identical (phi((m,a)) = m).
Classical KPI (unchanged).m := revenue_actual (keep your current published value; do not alter m).
Lanes (residual stability + drift canonicals).
# Residual stability (forecast vs actual)
r := actual - forecast
s := declared residual scale (e.g., rolling MAD > 0)
k := sensitivity (>0), eps_a := 1e-6
a_resid := tanh( k * ( 1 - |r| / s ) )
a_resid := clamp(a_resid, -1+eps_a, +1-eps_a)
# Drift canon (ZEOZO-Core; scale-free, preferred)
med := median(x) # x := daily actuals (or residuals)
rad := median(|x - med|); rad := max(rad, 1e-6)
y_t := (x_t - med) / rad
E_t := (1 - lam)*E_{t-1} + lam*(y_t^2) # lam ≈ 0.10
Z_t := log(1 + E_t)
A_t := (1 - mu)*A_{t-1} + mu*Z_t # mu ≈ 0.04
Delta_t := | Z_t - A_t |
# Lane from ZEOZO (choose ONE)
a_zeozo := tanh( c*( 1 - Z_t / Z_ref ) ) # Z_ref := median(Z_t over pilot)
a_gap := tanh( k_gap*( A_t - Z_t ) ) # positive when calm >= drift
# Optional calm-gated alignment (SYASYS-Core; executive-ready)
Q_t := rho*Q_{t-1} + (1 - rho)*clip( A_t - Z_t , 0 , 1 ) # rho ≈ 0.90
muR := ln(2) / R , with R ≈ 8.0, kappa ≈ 0.50
SyZ_t := ( 1 / ( 1 + Z_t + kappa*Delta_t ) ) * ( 1 - exp( - muR*Q_t ) )
a_syasys := 2*SyZ_t - 1
# Blend residual + one drift lane (rapidity-safe)
alpha in [0,1], pick a_volsrc in {a_zeozo, a_gap, a_syasys}
a := tanh( alpha*atanh(a_resid) + (1 - alpha)*atanh(a_volsrc) )
# Clamp any lane before atanh; export band from chosen lane (a_resid or a) per your policy.
Bands (executive-friendly).A++: a>=0.75, A+: 0.50<=a<0.75, A0: 0.25<=a<0.50, A-: 0.10<=a<0.25, else A--.
Hysteresis: promote if delta_a >= +0.05; demote if delta_a <= -0.05.
Knobs to declare (manifest).k, s (residual); lam=0.10, mu=0.04, c, Z_ref (or k_gap) for ZEOZO; optional SYASYS (rho=0.90, kappa=0.50, R=8.0, muR=ln(2)/R); alpha for the blend; eps_a=1e-6.
What “good” vs “weak” looks like.
- Good: tiny residuals, low
Z_t, andA_t >= Z_t⇒ lanes near+1(A++/A+). - Weak: repeated small misses raise
Z_t/Delta_t; lanes slide to A0/A- even when the month “hits plan.”
Acceptance signal.
Two-week downward drift across bands in a_resid or your chosen drift lane (a_zeozo / a_gap / a_syasys), or a_syasys stays low for 5 of 7 days ⇒ fix forecast cadence and operational noise; escalate if the band does not recover after knob review.
Mini calculator kit (10 rows).
date,kpi,m,a,band 2025-10-01,Revenue_actual,980000,0.74,A+ 2025-10-02,Revenue_actual,995000,0.71,A+ 2025-10-03,Revenue_actual,1005000,0.69,A+ 2025-10-04,Revenue_actual,990000,0.60,A+ 2025-10-05,Revenue_actual,1010000,0.55,A+ 2025-10-06,Revenue_actual,985000,0.48,A0 2025-10-07,Revenue_actual,1008000,0.44,A0 2025-10-08,Revenue_actual,1002000,0.39,A0 2025-10-09,Revenue_actual,992000,0.33,A0 2025-10-10,Revenue_actual,1001000,0.27,A-
Owner playbook.
- Pin
s(scale) to a robust measure (rolling MAD) and do not change it mid-pilot. - Decide once whether you badge
a_resid(pure residual) or the blendeda(residual+drift). - Keep export deterministic: fixed sort (time↑), fixed formatting;
knobs_hashflips on any knob change.
Conformance hooks.
- Order-invariance: rollups via
a_out := tanh( (SUM w*atanh(a)) / max(SUM w, eps_w) )witheps_w := 1e-12. - Collapse parity:
phi((m,a)) = mthrough every ETL hop. - Determinism: fixed knobs ⇒ identical reruns (bit-stable after formatting).
Navigation
Previous: SSM-Audit – Illustrative Case: Tied-out reconciliation, daily drift rising (4.4 I2)
Next: SSM-Audit – Illustrative Case: AR ratio steady, long tail thickening (4.4 I4)
Directory of Pages
SSM-Audit – Table of Contents
Frequently asked questions
SSM-Audit – Q & A