research(wave-0822): VOL-SIZE — il p-value del null di permutazione si cita col segno, non col decimale (3 ancore su 23)
This commit is contained in:
@@ -643,6 +643,12 @@ def main() -> None:
|
||||
except Exception as ex:
|
||||
print(f" non girato: {ex}")
|
||||
|
||||
imp = A.implausible_sharpe(bs)
|
||||
print(f"\n implausible_sharpe sulla cella migliore: implausible={imp['implausible']} "
|
||||
f"reasons={imp.get('reasons')}")
|
||||
print(f" (Sharpe {imp.get('sharpe')}, maxDD {imp.get('maxdd')}, "
|
||||
f"perdite sulle barre ATTIVE {imp.get('loss_frac')}, attive {imp.get('active_frac')})")
|
||||
|
||||
print("\n causalita' (tagli DENTRO la finestra dello skew, non all'80% della storia prezzi):")
|
||||
for a in ASSETS:
|
||||
f_, w_, sg_ = best.split("|")
|
||||
@@ -798,6 +804,37 @@ def main() -> None:
|
||||
P[c] = P[c].round(3)
|
||||
print(P.to_string(index=False))
|
||||
|
||||
# ------------------------------------------------------------ 5. SOMMARIO
|
||||
rule("5. SOMMARIO — cosa regge, cosa no, e cosa non e' misurabile con 75 giorni")
|
||||
print("""
|
||||
Q1 lo skew NON anticipa lo spot: e' lo spot che muove lo skew.
|
||||
Il prezzo precede il RR con t da 3.1 a 9.4 su 8 test su 8 e su entrambi gli asset;
|
||||
in avanti il |t| massimo su 16 test e' 2.35 contro un massimo atteso dal rumore di 2.08,
|
||||
non replica sul secondo asset, e l'unica cella apparente perde i due terzi togliendo
|
||||
4 giorni di rally su 24. La strategia giornaliera migliore su 18 celle fa Sharpe +2.61
|
||||
con IC95% [-2.90, +5.86] e DSR 0.163 -> SCARTATO.
|
||||
|
||||
Q2 gate di rischio: NON MISURABILE su questa finestra, e la ragione e' strutturale.
|
||||
Nei 75 giorni TP01 e' attivo 5 giorni su 75 e il suo maxDD e' 0.14%: non c'e' sinistro
|
||||
da prevenire. Cio' che si vede: alle soglie z<-1.0 e z<-1.5 il gate spegne giorni in cui
|
||||
TP01 era GIA' flat nel 100% dei casi -> 5a conferma della ridondanza col trend, ma su un
|
||||
campione senza potenza. Il null de-levering gira e dice REFUTED per assenza di DD, non
|
||||
per merito del baseline.
|
||||
|
||||
Q3 il risultato della sessione, e non e' una strategia: e' una CORREZIONE DI PREZZATURA.
|
||||
Il f=0.73 di VRP01 e' replicato in modo indipendente (0.714 su 22 ingressi, 0.723 su 2.582
|
||||
ore) e poi SCOMPOSTO. La causa maggiore NON e' lo skew:
|
||||
struttura a termine 42% | spread denaro-lettera 30% | skew 25% | fit 2%
|
||||
Il sleeve prezza un'opzione a 7 giorni con il DVOL a 30 giorni, che nel 90% delle ore sta
|
||||
~3 punti di vol SOPRA l'ATM a 7 giorni -> sovrapprezza entrambe le gambe. Il "+0.8pp sulla
|
||||
gamba corta" pubblicato il 30/07 (qui +0.20pp) e' la CANCELLAZIONE di due errori da ~3pp:
|
||||
-2.97pp di termine e +2.79pp di skew. Guardando le gambe contro l'ATM a 7 giorni si vede
|
||||
che il modello sbaglia su ENTRAMBE, non solo sull'ala.
|
||||
E il pezzo grande CAMBIA SEGNO col regime: f_term 0.83 nel quartile basso di IV-rank ->
|
||||
0.93 nel quartile alto, e 1.05 nelle ore in backwardation, mentre f_skew resta piatto
|
||||
(0.93 -> 0.92). Cioe' l'errore piu' grande si annulla proprio dove il gate IV-rank fa
|
||||
tradare il sleeve.
|
||||
""")
|
||||
rule(f"fine — {time.time()-t_start:.0f}s")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user