research(wave-0822): BASIS-CALENDAR scartato — il basis dei datati E' il funding del perp; ma in regalo 240k barre di futures scaduti col 2022 dentro

This commit is contained in:
Adriano Dal Pastro
2026-08-22 17:39:55 +00:00
parent 32ed18222e
commit b6c0deb866
5 changed files with 1071 additions and 229 deletions
+35 -5
View File
@@ -511,7 +511,7 @@ def main() -> None:
print("\n per anno (ISO dSh, mediana appaiata sulle ancore):")
yrs = None
for nm in [lead, "BIN L>=1 (0/1)", "DROP attivita' >p75", "BIN L<1 (INVERSO)"]:
for nm in [lead, "BIN L>=med (0/1)", "canale FREQUENZA cont.", "BIN L<1 (INVERSO)"]:
yrs, cells = per_year(BK2, CT2, nm, offs)
if nm == lead:
print(" " + f"{'':<26}" + "".join(f"{y:>8}" for y in yrs))
@@ -524,8 +524,9 @@ def main() -> None:
print(" 4. L'ASSE DELLA FINESTRA — picco o plateau? + scelta di w IN-SAMPLE-ONLY")
print("-" * L)
wnames = [(w, f"VTL tv20 w{w}" if w != 90 else lead) for w in WGRID]
bd0 = EXV2["BTC"]["base_daily"]
print(f" {'w':>6}{'ISO dShFULL':>14}{'pos/n':>8}{'ISO dShIS':>12}{'ISO dShHOLD':>13}"
f"{'pos/n':>8}")
f"{'pos/n':>8}{'barre att.':>12}")
wf, wi, wh = {}, {}, {}
for w, nm in wnames:
dF = A.anchor_luck_delta(lambda o, n=nm: BK2[n][o], lambda o, n=nm: CT2[n][o], offs,
@@ -535,8 +536,9 @@ def main() -> None:
dH = A.anchor_luck_delta(lambda o, n=nm: hold(BK2[n][o]), lambda o, n=nm: hold(CT2[n][o]),
offs, metric=sh)
wf[w], wi[w], wh[w] = dF["median_paired"], dI["median_paired"], dH["median_paired"]
nact = float(np.median((bd0 != 0.0).astype(float).rolling(w).sum().dropna().values))
print(f" {w:>6}{wf[w]:>+14.3f}{dF['n_positive']:>5}/{len(offs):<3}{wi[w]:>+12.3f}"
f"{wh[w]:>+13.3f}{dH['n_positive']:>5}/{len(offs):<3}")
f"{wh[w]:>+13.3f}{dH['n_positive']:>5}/{len(offs):<3}{nact:>12.0f}")
wbest_full = max(WGRID, key=lambda w: wf[w])
wbest_is = max(WGRID, key=lambda w: wi[w])
print(f"\n argmax su FULL (cio' che l'agente ha pubblicato): w = {wbest_full} "
@@ -561,8 +563,14 @@ def main() -> None:
f"{wf[wbest_full]:+.3f} / {wh[wbest_full]:+.3f}")
rho = float(np.corrcoef([wi[w] for w in WGRID], [wh[w] for w in WGRID])[0, 1])
print(f" corr(ISO dSh in-sample, ISO dSh hold-out) fra le {len(WGRID)} finestre: {rho:+.2f}")
print(" -> se e' ~0 o negativa, la scelta di w in-sample NON predice l'hold-out: l'asse")
print(" e' rumore e il picco a w=90 e' un max-of-k.")
print(" LETTURA (attacco 4 FALLITO, e il motivo e' informativo): la scelta di w")
print(" in-sample-only cade sulla cella pubblicata, e la corr IS/HOLD e' POSITIVA -> l'asse")
print(" non e' rumore. E non e' nemmeno un PICCO: e' una SOGLIA. Sotto w=45 la finestra")
print(" contiene troppo poche barre ATTIVE per misurare qualsiasi cosa (colonna a destra) e")
print(" il segno si rovescia; da 45 a 270 e' un plateau, 5 celle su 5 positive con 19-23")
print(" ancore su 23. La descrizione 'picco, non plateau' del bersaglio e' PIU' SEVERA del")
print(" vero — ed e' proprio cio' che si aspetta da un FILTRO DI FREQUENZA: serve una")
print(" finestra abbastanza lunga da contare i trade.")
# ------------------------------------------------------------------ §5 sintesi
print("\n" + "-" * L)
@@ -606,6 +614,28 @@ def main() -> None:
f"{RES['BIN L>=med (0/1)']['dH']:+.3f} HOLD ({RES['BIN L>=med (0/1)']['nF']}/{len(offs)} ancore)")
print(f" controllo di segno (INVERSO): {RES['BIN L<1 (INVERSO)']['dF']:+.3f} FULL "
f"({RES['BIN L<1 (INVERSO)']['nF']}/{len(offs)}) -> il filtro e' reale, non un artefatto")
print("\n" + "=" * L)
print(" VERDETTO DELLO SCETTICO")
print("=" * L)
print(" A1 test PRE-REGISTRATO (IV su V1): previsione |V1| < |V2-DD| VERIFICATA IN "
f"{ok}/{tot} CELLE.")
print(" L'effetto e' PIU' GRANDE dove lo stop e' gia' in ATR (V1 mediana "
f"{np.median(np.abs(e1s)):.3f} vs V2-DD {np.median(np.abs(e2s)):.3f}), e il test NON e'")
print(" senza potenza (su V2-DD la famiglia arriva a +0.067 con 23/23). -> la")
print(" SPIEGAZIONE 'lo stop a percentuale fissa lascia variare il rischio' e' REFUTATA.")
print(" A2 contabilita': la premessa del difetto e' FALSA (P&L al giorno d'INGRESSO, "
"99.3%);")
print(" la 'riparazione' e' un no-op bit-exact; il '+0,04 fantasma' e' [L combinata] -")
print(" [L per asset]. Nessun look-ahead c'era, e la variante scartata era la MIGLIORE.")
print(" A3 un filtro BINARIO 0/1 sulla mediana della stessa L riproduce il "
f"{RES['BIN L>=med (0/1)']['dF']/base_eff*100:.0f}% del")
print(" vantaggio senza alcun vol-target -> la FORMULA DI SIZING E' ORNAMENTO. Il canale")
print(" FREQUENZA da solo fa +0.051, la MAGNITUDINE +0.003 (replica esatta del bersaglio).")
print(" A4 l'asse w NON e' un picco ne' un max-of-k: e' una soglia sul numero di barre")
print(" attive nella finestra, con plateau 45-270. Attacco fallito.")
print(" --> il NUMERO regge (+0.070 riprodotto esattamente), la SPIEGAZIONE cade due volte,")
print(" e il gate pre-registrato per il 22/12/2026 e' GIA' STATO FALLITO oggi.")
print(f"\n fatto in {time.time()-t0:.0f}s")
print("=" * L)