Domanda dell'operatore: "usiamo revolut o degiro". Risposta misurata: cambiare broker non sblocca nulla (il PRIIPs e' una norma, non una politica di IB); cambiare VEICOLO si', e costa ~zero. CORREZIONE A UNA MIA AFFERMAZIONE. La nota in gtaa.py diceva che gli UCITS fanno perdere la validazione a 30 anni. Falso: il PRIIPs vieta di COMPRARE, non di GUARDARE — i prezzi dei 6 ETF USA restano leggibili, quindi il segnale gira sui 30 anni per sempre e cambia solo il veicolo su cui si incassa. Misure (3 lenti, un grado di liberta' per volta, 6.3 anni comuni): L0 segnale USA + rend. USA Sh 0.81 / CAGR 3.96% L2 segnale UCITS + rend. UCITS Sh 0.84 / CAGR 4.08% drag del veicolo +0.10%/anno EW, coerente coi TER; ritenuta USA ~35bps a FAVORE dell'UCITS e non inclusa nel drag. Lo stimatore ovvio sbagliava: la media delle differenze giornaliere dava -0.47%/anno su CSPX contro -0.06% vero (SE ~7%/anno = 15x la quantita' stimata, piu' drag di varianza). La deviazione fra veicoli sullo stesso indice si misura sul RAPPORTO CUMULATO. Il vincolo non e' il broker ma il prezzo di UNA azione, che e' una scelta: CSPX $802 vs VUAA $144 sullo stesso S&P 500. A $3.000 con azioni intere l'insieme STORIA tiene 4/6 gambe (a mercato il 33%), l'insieme DEPLOY 6/6 (65%) -> il frazionamento non serve. Letto su gambe-vive+vol, non su Sharpe: il vincolo intero ALZA lo Sharpe perche' de-leveraggia (null de-levering, 4a occorrenza). Resta da verificare una cosa sola: 77-149 ordini/anno contro soglie $0.90 ($3k) / $2.23 ($10k) / $7.62 ($50k) per ordine. Raccomandazione: restare su IB. Feed equity: aggiunto il CROSS-CHECK che mancava (src/data/eq_crosscheck.py). Il primo veicolo estero ha trovato subito CSPX 2012-01-13 con open/high in USD e low/close in EUR (fattore 1.2797 = EURUSD del giorno), invisibile alla guardia maxret>50% — stesso schema dello split 2:1 del 25/07. Soglia non tarabile sulla deviazione (rumore 9.90%, margine 2.2x): cambiata statistica in |dev|/movimento del gemello -> margine 5.3x. Limite EURUSD 1.09 dichiarato e chiuso sul DANNO (dSharpe mediano -0.003), congelato in un test. Book, pesi, cron, config INVARIATI. 435 test verdi (+24). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XBbYmiXqbUNuGpK9sfbsGp
15 KiB
2026-07-26 — GTAA01 sugli UCITS: la via d'uscita dal blocco PRIIPs è aperta, e il broker non è la variabile
Domanda dell'operatore: "usiamo revolut o degiro" — dopo che il conto reale ha rifiutato
l'ordine sui 6 ETF USA di GTAA01 con Trading limitato — Questo prodotto non dispone di un KID.
Risposta breve: cambiare broker non sblocca niente (il PRIIPs è una norma, non una politica di IB). Ciò che sblocca è cambiare veicolo. Misurato: il cambio di veicolo costa ~0, e con la scelta giusta delle linee lo sleeve è eseguibile senza frazionamento già a $3.000.
Book, pesi, cron, config: INVARIATI. GTAA01 non entra nel book live (resta la decisione venue del 26/07: 100% Deribit fino a $20k).
Script: scripts/research/fetch_ib_ucits.py, scripts/research/r0726_gtaa_ucits.py.
Modulo nuovo: src/data/eq_crosscheck.py. Test: tests/test_eq_crosscheck.py (14),
tests/test_gtaa_ucits.py (10).
0. La premessa che era falsa, ed è la ragione per cui il problema è piccolo
La nota che avevo scritto in src/portfolio/gtaa.py diceva:
storia più CORTA (diversi nati dopo il 2010) → si perde la validazione a 30 anni che è ciò che rendeva credibile questo sleeve
È falsa, per un motivo strutturale: il PRIIPs vieta di COMPRARE, non di GUARDARE. I prezzi di SPY/QQQ/IWM/TLT/GLD/HYG restano leggibili — l'operatore li aveva sotto gli occhi sul terminale mentre l'ordine veniva rifiutato. Quindi il segnale di GTAA01 può continuare a girare sui 30 anni di serie USA per sempre; cambia solo il veicolo su cui si incassa il rendimento.
La storia corta degli UCITS non serve a validare la strategia. Serve a misurare una cosa sola: la deviazione del veicolo, che è un drift lento e si stima bene anche su pochi anni.
Regola: prima di dichiarare che un vincolo esterno distrugge un risultato, chiedersi esattamente cosa vincola. Qui la differenza fra "non posso comprare" e "non posso vedere" separa uno sleeve morto da uno sleeve con un problema di esecuzione.
1. Il dato, prima della strategia — e il feed equity non aveva un cross-check
Estratti 12 veicoli UCITS da IB (LSEETF, tutti in USD: quotare in USD elimina un livello di
costo, la conversione per ordine). Alla prima certificazione, 7 su 10 con gap lunghi e CSPX con
un +27.8% giornaliero su un tracker S&P 500.
I gap sono tutti al lancio della linea USD (ultimo gap lungo: CSPX 2014-04, XRSU 2016-10, IGLN/IHYU 2011); negli ultimi 3 anni tutti i veicoli fanno 253 barre/anno. Non è un problema corrente.
Il +27.8% invece è un difetto vero. La barra CSPX 2012-01-13:
open 112.740 high 112.740 low 88.010 close 88.010
open/high in USD, low/close in EUR — fattore dai close adiacenti 1.2797, cioè
l'EURUSD di quel giorno (reale 1.266-1.282). Andata e ritorno: 112.63 → 88.01 → 112.47 mentre SPY
faceva −0.39% e +0.23%.
La certificazione esistente non lo vedeva. L'unica guardia sui movimenti era
maxret > 50% → SPIKE?, e una contaminazione EUR/USD vale ~22-28%. È lo stesso schema dello
split 2:1 non aggiustato del 25/07 (che valeva esattamente −50%): una soglia tarata su una classe
di difetto non sorveglia le altre.
Perché serviva il gemello e non una regola locale
Il discriminante del 25/07 (range intraday) qui non funziona: una barra contaminata ha un range enorme, ma anche un crollo vero (SLV 2026-01-30 aveva 33% di range). Ciò che separa i due casi è che un evento di mercato lo fa anche il gemello: nel rapporto veicolo/gemello i movimenti veri si cancellano.
Controprova su dati reali: la stessa scansione fatta sui prezzi segnalava IDTL 2020-03 (liquidazione dei treasury) e IGLN 2013-04 (crollo dell'oro) — andate-e-ritorni identiche nella forma. Sul rapporto spariscono, e resta la sola CSPX 2012-01-13.
Questo è il buco che il feed equity aveva: nel crypto la certificazione incrocia sempre più venue
(certify_feed.py vs Coinbase USD); il feed equity aveva solo controlli locali.
La soglia non è tarabile sulla deviazione, ed è il punto interessante
| statistica | rumore massimo misurato | difetto CSPX | margine |
|---|---|---|---|
| deviazione dal gemello | 9.90% (2025-04-09) | 21.4% | 2.2× ❌ |
| ** | dev | / movimento del gemello** | 8.1 |
Il 9.90% è legittimo: Londra chiude alle 11:30 di New York, quindi in un giorno violento le due chiusure sono davvero lontane. Ma un disallineamento d'orario non può superare il movimento del mercato: se il gemello si è mosso dello 0.4% e il veicolo se ne va del 21%, non c'è orario che lo spieghi. La statistica adimensionale porta il margine da 2.2× a 5.3× — sopra il 3× che questo progetto richiede a un rilevatore.
Tre condizioni congiunte (come il rilevatore di split, e per la stessa ragione): deviazione oltre
MIN_DEV, non-spiegato oltre MIN_UNEXPLAINED=18.0, e rientro entro 5 barre (una divergenza di
NAV vera persiste, una stampa sbagliata no).
Riparazione = scartare la barra, non ricostruirla. Del prezzo vero non sappiamo niente; sappiamo che quello scritto è sbagliato. Scartarla rende corretto il rendimento 12/01→17/01 (−0.14%); "ripararla" con un fattore stimato inventerebbe un dato.
⚠️ Limite dichiarato, e come è stato chiuso
GBPUSD ~1.27 → 21% di deviazione = sempre rilevata. EURUSD ~1.09 → 8.3% = dentro il rumore dei giorni violenti. Non è tappabile abbassando la soglia (sotto 12 si segnalano i giorni veri).
Invece di inseguire la rilevabilità ho misurato il danno di una contaminazione non vista: iniettando 60 contaminazioni casuali, dSharpe mediano −0.003, peggiore −0.056, |Δ|>0.05 nel 2% dei casi. Il limite resta, ma è quantificato e irrilevante.
Regola: quando un rilevatore ha un buco che non si può chiudere senza generare falsi positivi, si misura il danno del caso non rilevato, non la sua probabilità. Un buco quantificato e innocuo è un risultato; un buco taciuto è un debito.
2. Quanto costa il veicolo: ~zero — ma lo stimatore ovvio dà la risposta sbagliata
Prima stesura: media delle differenze giornaliere → CSPX −0.47%/anno. Sbagliato.
Le due serie seguono lo stesso indice ma sono campionate a orari diversi. La differenza giornaliera è dominata da uno sfasamento che si inverte il giorno dopo: volatilità 17-22% annualizzata, errore standard ~7%/anno sulla stima del drag — cioè 15 volte più grande del drag stesso. In più la media delle differenze semplici è contaminata dal drag di varianza.
Il rapporto veicolo/gemello invece è stazionario: il suo drift è il drag.
| gamba | UCITS | drag misurato | atteso da TER | + ritenuta USA | banda annua |
|---|---|---|---|---|---|
| SPY | CSPX | −0.06% | +0.02% | +0.20% | [−0.52,+0.63] |
| QQQ | EQQQ | −0.00% | −0.10% | −0.03% | [−0.13,+1.29] |
| IWM | XRSU | −0.15% | −0.11% | +0.07% | [−0.91,+0.37] |
| TLT | IDTL | +0.18% | +0.08% | +0.68% | [−0.45,+1.60] |
| GLD | IGLN | +0.36% | +0.28% | +0.28% | [−0.56,+0.99] |
| HYG | IHYU | +0.28% | −0.01% | +0.89% | [−0.83,+1.88] |
| media EW | +0.10%/anno | +0.03% | +0.35% |
Controllo di plausibilità: segno concorde in 4/6, scarto < 30bps in 6/6. Il caso più netto è l'oro (GLD 0.40% vs IGLN 0.12% → atteso +0.28%, misurato +0.36%): è un controllo indipendente che la misura sta cogliendo il TER e non rumore. Le due gambe discordi restano entro 30bps, e su una banda annua larga [−0.9%,+1.9%] il segno di uno scarto così piccolo non è informativo. Ciò che il controllo stabilisce è la scala: decine di bps, non punti.
⚠️ La colonna "ritenuta" è a favore dell'UCITS e non è nel drag misurato: ADJUSTED_LAST sulle
serie USA è al lordo della ritenuta USA del 15% che un residente italiano paga davvero sui
dividendi. Comprando SPY quella ritenuta la paghi e nella serie non c'è; un UCITS irlandese la
subisce una volta a livello di fondo e non una seconda all'incasso. (Ipotesi fiscale dichiarata,
fonte secondaria, da confermare col commercialista — non è un parere fiscale.)
Le tre lenti
| lente | Sharpe | CAGR | maxDD | vol |
|---|---|---|---|---|
| L0 segnale USA + rend. USA (pubblicato) | 0.81 | 3.96% | −7.9% | 5.0% |
| L1 segnale USA + rend. UCITS (veicolo) | 0.89 | 4.22% | −7.0% | 4.8% |
| L2 segnale UCITS + rend. UCITS (+orologio) | 0.84 | 4.08% | −7.5% | 4.9% |
Totale L2−L0: dSharpe +0.03, dCAGR +0.12%/anno. Il cambio di veicolo non costa.
⚠️ corr(L0,L2) = 0.65, bassa per due serie sullo stesso indice — ed è l'orologio, non un
difetto: le due chiusure condividono la notte e la mattina americana ma non il pomeriggio.
Verificato che non sia uno sfasamento di date: la correlazione veicolo/gemello è massima a lag 0
su 6/6 coppie (0.46-0.78). Conseguenza: le statistiche giornaliere delle due lenti non sono
confrontabili una a una, mentre il drift sì — che è esattamente perché la sezione 2 usa il
rapporto cumulato.
3. Il vincolo vero non è il broker: è il prezzo di UNA azione
Senza frazionamento un ordine è almeno una azione. Il prezzo unitario è una scelta dell'emittente, non una proprietà dell'indice: CSPX costa $802 e VUAA $144 sullo stesso S&P 500.
| gamba | STORIA | prezzo | DEPLOY | prezzo | a $3.000 | a $10.000 |
|---|---|---|---|---|---|---|
| SPY | CSPX | $801.86 | VUAA | $143.80 | 29% | 9% |
| QQQ | EQQQ | $692.67 | XNAS | $65.74 | 13% | 4% |
| IWM | XRSU | $437.80 | R2US | $86.35 | 17% | 5% |
| TLT | IDTL | $3.09 | IDTL | $3.09 | 1% | 0% |
| GLD | IGLN | $79.06 | IGLN | $79.06 | 16% | 5% |
| HYG | IHYU | $94.12 | IHYU | $94.12 | 19% | 6% |
(% = quanto pesa una azione sull'allocazione di quella gamba)
Danno misurato dell'esecuzione a numero intero di azioni, stessa finestra per entrambi:
| insieme | capitale | Sh fraz. | Sh intero | Δ | vol fraz. | vol intero | gambe vive | esposta |
|---|---|---|---|---|---|---|---|---|
| STORIA | $3.000 | 0.84 | 0.80 | −0.04 | 5.1% | 2.2% | 4/6 | 33% |
| STORIA | $10.000 | 1.08 | 1.02 | −0.06 | 5.1% | 4.2% | 6/6 | 63% |
| DEPLOY | $3.000 | 0.88 | 0.84 | −0.04 | 5.1% | 4.5% | 6/6 | 65% |
| DEPLOY | $10.000 | 1.10 | 1.09 | −0.02 | 5.1% | 4.9% | 6/6 | 66% |
Con i veicoli giusti il frazionamento non serve. Con quelli sbagliati, a $3.000 lo sleeve perde due gambe su sei ed è a mercato un terzo del tempo: non è GTAA01 con un vincolo, è un'altra cosa.
⚠️ Si legge gambe vive e vol, non Sharpe. Un vincolo che alza lo Sharpe non è un
miglioramento: arrotondando in giù riduce l'esposizione e paga meno commissioni. È il null
de-levering (4ª occorrenza dopo VRP-DD, TP01×DVOL, MAT01). Qui il controllo è stato eseguito e
il verdetto è che con l'insieme DEPLOY il de-levering non c'è.
⚠️ Scartati di proposito, benché con più storia: RTWO (Russell 2000 quality = fattore), CSUSS (MSCI USA Small Cap ESG), IDP6 (S&P 600, indice diverso). Equivalenza dell'indice prima della storia.
4. Il costo del venue, per FORMA — la sola cosa su cui i broker differiscono davvero
Ordini/anno (dipendono da banda e cadenza, non dal listino): 77 a $3.000, 102 a $10.000, 149 a $50.000. Con questo numero ogni listino è calcolabile a mano.
| costo fisso/ordine | $3.000 Sh | CAGR | $10.000 Sh | CAGR | $50.000 Sh | CAGR |
|---|---|---|---|---|---|---|
| $0.00 | 0.92 | 4.45% | 0.92 | 4.48% | 0.92 | 4.48% |
| $0.35 (IB US) | 0.73 | 3.52% | 0.84 | 4.11% | 0.90 | 4.37% |
| $1.00 | 0.39 | 1.80% | 0.71 | 3.42% | 0.86 | 4.17% |
| $2.00 | −0.13 | −0.79% | 0.50 | 2.37% | 0.79 | 3.86% |
| $5.00 | −1.51 | −8.17% | −0.12 | −0.71% | 0.61 | 2.93% |
| costo proporzionale | $3.000 | $10.000 | $50.000 |
|---|---|---|---|
| 5 bps/ordine | 0.89 | 0.89 | 0.88 |
| 25 bps/ordine | 0.77 | 0.76 | 0.75 |
| 50 bps/ordine | 0.62 | 0.60 | 0.59 |
Le soglie da verificare presso il broker:
| capitale allocato | CAGR = 0 | Sharpe = 0.45 |
|---|---|---|
| $3.000 | $1.68/ordine | $0.90/ordine |
| $10.000 | $4.34/ordine | $2.23/ordine |
| $50.000 | $14.65/ordine | $7.62/ordine |
Un listino proporzionale è quasi indifferente al capitale (0.75-0.89 di Sharpe a ogni taglia); uno fisso è una tassa regressiva. È la regola del 25/07 riconfermata su un venue diverso.
5. Risposta operativa alla domanda
Revolut o Degiro non sbloccano gli ETF USA: il PRIIPs vale per ogni intermediario che serve retail UE. IB è anzi fra i più permissivi. Aprire un terzo conto per lo stesso rifiuto aggiunge rischio di venue senza guadagno.
Ciò che si compra su qualunque dei tre sono gli UCITS, e a quel punto la scelta si gioca su una sola dimensione misurabile: il costo per ordine, contro le soglie della tabella sopra, con 77-149 ordini l'anno.
Raccomandazione: restare su IB, perché (a) il conto esiste già, (b) i dati per il segnale
arrivano dallo stesso gateway, (c) è l'unico dei tre di cui la forma di costo è già modellata in
gtaa.py. La verifica che resta da fare è una sola: la tariffa IB per ordine su LSEETF in USD,
contro $2.23 (a $10.000) o $0.90 (a $3.000).
Nessuna azione oggi: la decisione venue del 26/07 tiene tutto su Deribit fino a $20k, cioè ~2028 col piano di versamenti corrente.
Lezioni
- Prima di dichiarare che un vincolo esterno distrugge un risultato, chiedersi cosa vincola esattamente. "Non posso comprare" ≠ "non posso vedere": tutta la validazione a 30 anni era salva, e la nota che diceva il contrario era mia.
- Un feed senza secondo parere non è certificato, e la regola valeva già nel crypto. Il feed equity ha vissuto 5 settimane con soli controlli locali, e il primo veicolo estero ha trovato il buco alla prima estrazione.
- Una soglia tarata su una classe di difetto non sorveglia le altre — 2ª conferma dopo lo split 2:1 del 25/07. E quando la taratura non regge il margine richiesto, la risposta non è accettarla ma cambiare statistica: qui il passaggio da assoluta ad adimensionale (deviazione / movimento del gemello) porta il margine da 2.2× a 5.3×.
- La media delle differenze giornaliere non è la deviazione fra due veicoli sullo stesso indice. Errore standard 15× più grande della quantità stimata, più il drag di varianza. La domanda "quanto mi costa il veicolo" è una domanda sul drift, quindi si misura sul rapporto cumulato.
- Il prezzo unitario di un ETF è un parametro di progetto, non un dato. Sceglierlo cambia la soglia di capitale di uno sleeve più di qualunque negoziazione con un broker.
- Il grado d'accordo si conta, non si dichiara. La prima stesura stampava "stesso segno su 6/6
gambe"; i dati dicevano 4/6. Scriverlo a mano nel
printè il modo più facile di pubblicare una conclusione che i propri dati smentiscono — 3ª occorrenza in questa sessione.