research(wave-0822): HL-EXEC refuta il muro dei 20k di XS01 e lo slippage come rischio #1 — e il 20k di venue e' un'altra cosa

This commit is contained in:
Adriano Dal Pastro
2026-08-22 17:33:55 +00:00
parent ea22a0e20c
commit 090129359b
7 changed files with 920 additions and 31 deletions
@@ -245,6 +245,32 @@ def main() -> dict:
f"p99 {np.quantile(gap, 0.01):+.2%} peggiore {gap.min():+.2%}")
print(f" giorni che CHIUDONO sul minimo (m == R): {(np.abs(gap) < 1e-12).mean():.1%}")
print(" -> replica superata su 4 statistiche su 4: la macchineria e' quella del 25/07.")
print("\n E il MECCANISMO del 25/07 ('il tuffo e' ~3x piu' profondo nei giorni che")
print(" finiscono BENE'), che e' cio' che rende la lente accoppiata diversa da una")
print(" marginale — gap medio per decile della CHIUSURA del giorno:")
q = pd.qcut(pd.Series(D["R_live"]).rank(method="first"), 10, labels=False)
tab = pd.DataFrame({"R": D["R_live"], "gap": gap, "q": q.values}).groupby("q").agg(
R=("R", "mean"), gap=("gap", "mean"), chiude_sul_min=("gap", lambda x: float((x > -1e-12).mean())))
print(f"\n {'decile':>8}{'chiusura media':>17}{'gap medio':>12}{'chiude sul minimo':>20}")
for i, row in tab.iterrows():
eti = " <- peggiori" if i == 0 else (" <- migliori" if i == 9 else "")
print(f" {int(i)+1:>8}{row['R']:>17.2%}{row['gap']:>12.2%}{row['chiude_sul_min']:>20.0%}{eti}")
peggio5 = gap[D["R_live"] <= np.quantile(D["R_live"], 0.05)]
print("\n ⚠️ PRECISAZIONE a una lettura pubblicata: il 26,8% di giorni con m==R NON e'")
print(" «il giorno brutto che scende tutto il giorno e chiude sul minimo» — sta nei")
print(" decili CENTRALI (56-88%), che sono i giorni in cui il libro e' FLAT e quindi")
print(" non ha nessuna escursione da fare. Nel decile peggiore chiude sul minimo solo")
print(" il 4% delle volte. Il meccanismo del 25/07 (gap ~3x nei giorni buoni) e'")
print(" replicato; la spiegazione che lo accompagna, no.")
print(f"\n gap medio nel 5% di giorni PEGGIORI: {peggio5.mean():+.2%}"
f" (contro {gap[D['R_live'] >= np.quantile(D['R_live'], 0.95)].mean():+.2%} nel 5% migliori)")
print(" 📌 CONSEGUENZA CHE VALE PER LA SEZIONE (4) DELLO SCETTICATO (lo stress di coda):")
print(" un giorno di crash CHIUDE quasi sul proprio minimo, quindi la lente accoppiata")
print(" **non peggiora** lo scenario di stress fuori campione — il tuffo extra che")
print(" aggiungerebbe a un giorno -10% e' dell'ordine di mezzo punto. Cio' che regge")
print(" k* verso il basso resta quello che dice lo scetticato (drift stimato + coda")
print(" assente dal dataset): la lente NON e' un quarto argomento, ne' nell'un verso")
print(" ne' nell'altro.")
print(f"\n (0b) ⚠️ IL GATE NON E' DIRETTAMENTE ESEGUIBILE — due lenti di SKH01, non una.")
for nm, x in (("recon accoppiata (SKH canonico)", R_rec), ("book_series('hourly') (SKH live)", R_live)):