"""r0724_kimchi_skeptic — scettico sul candidato KIMCHI d30-folLF (2026-07-24). Il candidato usciva da r0724_premium_wave con EARNS_SLOT=True al marginal scorer (ADDS, robust_oos, persistente ogni anno) ma DSR 0.891<0.95. Due check obbligatori: (1) PLATEAU: d15/d30/d45/d60 — un edge vero degrada dolcemente, uno spike no; (2) LAG ESECUZIONE +1g: un segnale di flusso a 30g deve sopravvivere a 24h di ritardo. ESITO (run 2026-07-24): d30 e' uno SPIKE isolato (0.44/1.07/0.51/0.24) e il lag +1g lo azzera (hold 0.74->0.14, uplift blend negativo) -> SCARTATO, parameter-luck. """ import sys import pathlib ROOT = str(pathlib.Path(__file__).resolve().parents[2]) sys.path.insert(0, ROOT) sys.path.insert(0, ROOT + "/scripts/research/alt") import numpy as np, pandas as pd import altlib from altlib import candidate_daily, tp01_baseline_daily, HOLDOUT sys.path.insert(0, ROOT + "/scripts/research") from r0724_premium_wave import _PREM def _sh(s): s = s.dropna() return float(s.mean()/s.std()*np.sqrt(365.25)) if s.std() > 0 else 0.0 def factory(D, extra_lag=0): def fn(df, asset): p = _PREM[asset]["kimchi"] z = (p - p.shift(D)).shift(extra_lag) pos = (np.sign(z) > 0).astype(float) days = pd.DatetimeIndex(pd.to_datetime(df["datetime"], utc=True)).floor("D") return np.nan_to_num(pos.reindex(days).values.astype(float)) return fn B = tp01_baseline_daily() def blend_uplift(C, w=0.25): J = pd.concat({"b": B, "c": C}, axis=1, join="inner").fillna(0.0) bl = (1-w)*J["b"] + w*J["c"] hb, hbl = J["b"][J.index >= HOLDOUT], bl[bl.index >= HOLDOUT] return _sh(bl)-_sh(J["b"]), _sh(hbl)-_sh(hb) print(f"{'cella':<18}{'Sh full':>9}{'Sh hold':>9}{'upl full':>10}{'upl hold':>10}") for D in (15, 30, 45, 60): C = candidate_daily(factory(D), tf="1d") uf, uh = blend_uplift(C) hold = C[C.index >= HOLDOUT] print(f"d{D:<3} lag0 {_sh(C):>9.2f}{_sh(hold):>9.2f}{uf:>+10.3f}{uh:>+10.3f}") C = candidate_daily(factory(30, extra_lag=1), tf="1d") uf, uh = blend_uplift(C) hold = C[C.index >= HOLDOUT] print(f"d30 lag+1g {_sh(C):>9.2f}{_sh(hold):>9.2f}{uf:>+10.3f}{uh:>+10.3f}")