Files
PythagorasGoal/docs/diary/2026-07-26-gtaa-ucits.md
T
Adriano Dal Pastro 3f0812c7fc research(gtaa): DEGIRO ha tutte e sei le gambe — verificato sul conto reale
Screenshot della watchlist "Pythagoras" su flatexDEGIRO: le 6 gambe ci sono tutte, coi
ticker esatti raccomandati. Era Revolut a non avere R2US.

VERIFICA INDIPENDENTE che le due linee EUR (VUAA, XNAS su Tradegate) siano gli stessi
fondi, dai dati e non dallo screenshot: il rapporto prezzo-IB/prezzo-Degiro dev'essere un
solo cambio -> 1.1341 e 1.1315, scarto 0.23%. Le altre 4 stanno a 0.993-0.998 (gia' USD).
Due fondi diversi non darebbero lo stesso cambio.

ERRORE MIO, dello stesso tipo che avevo codificato come regola un messaggio prima: per
cercare le linee in euro delle altre 4 gambe ho interrogato IB per TICKER sulle borse
tedesche, ottenendo "nessuna linea EUR" su 4/4. Falso. Cercando per ISIN ognuna ce l'ha:
ZPRR (=R2US), IS04 (=IDTL), EGLN (=IGLN, Londra EUR), IS0R (=IHYU). Un "assente" da una
ricerca per ticker su una borsa dove quel ticker non esiste non significa "non esiste".

TURNOVER PER GAMBA a $10k (21 ordini/anno): IDTL 9 ordini / $6.257 = 46% del totale,
poi VUAA 17%, IGLN 12%, XNAS 12%, IHYU 7%, R2US 6%. Il 71% del turnover e' su gambe in
USD ($9.752/anno) -> conversione $24/anno a 25bps. Spostare la sola IDTL sulla linea in
euro (IS04) copre il 64% del turnover convertibile.

Ma non e' un risparmio netto (spread Xetra piu' larghi delle linee primarie di Londra,
tariffa di connettivita' per borsa) e su $10k si parla di decine di dollari l'anno in
entrambe le direzioni: non e' una decisione importante, ed e' piu' utile dirlo che
costruire una precisione finta.

Il prompt W-8BEN di Degiro non riguarda queste sei: sono fondi irlandesi, non titoli USA.

Stato: preparazione, non azione (saldo Degiro EUR 328,92; GTAA01 richiede >=$3k e la
decisione venue tiene tutto su Deribit fino a $20k).

Book, pesi, cron, config INVARIATI. 448 test verdi (+1).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XBbYmiXqbUNuGpK9sfbsGp
2026-07-27 11:36:27 +00:00

614 lines
30 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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** | **42.7** | **5.3×** ✅ |
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 L2L0: 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
1. **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.
2. **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.
3. **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×.
4. **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.
5. **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.
6. **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.
---
# Addendum 2026-07-27 — "io ho già Revolut e Degiro, IB sono solo iscritto"
L'informazione ribalta la raccomandazione di ieri. L'argomento principale per IB era **"il conto
esiste già"**, e non è vero: i conti reali sono Revolut e Degiro, IB è una registrazione.
Cosa **non** cambia: il gateway IB serve per i **dati** del segnale (ADJUSTED_LAST sui 6 ETF USA),
e per quello basta il paper — non serve eseguire lì. La scelta del broker di **esecuzione** è
quindi libera, e si gioca su una sola dimensione misurabile: il **costo per ordine**.
Script: `scripts/research/r0727_gtaa_broker.py`. Test: `tests/test_gtaa_broker.py` (9).
**Book, pesi, cron, config: INVARIATI.**
## Il numero di ordini è un parametro, non un dato
I 77-149 ordini/anno del 26/07 sono la conseguenza di `REBAL_EVERY=5` e `REBAL_BAND_USD=50`,
scelti il 25/07 sul plateau **per il listino IB su azioni USA e a una taglia sola**.
| cadenza | banda | ord/anno | Sh @ $0 | Sh @ $1 | Sh @ $2 |
|---|---|---|---|---|---|
| settimanale | $25 | 102 | 1.28 | 1.08 | 0.87 |
| settimanale | **$50** (canonico) | 84 | 1.27 | 1.10 | 0.94 |
| settimanale | $400 | **23** | **1.27** | 1.22 | 1.18 |
| mensile | $50 | 33 | **1.12** | 1.06 | 1.00 |
| bimestrale | $400 | 10 | 1.10 | 1.08 | 1.06 |
**Si legge `Sh @ $0` per prima**: è il prezzo della banda *in assenza di commissioni*. Allargare la
banda a cadenza settimanale **non lo tocca** (1.27 → 1.27), rallentare la cadenza sì (1.27 → 1.12).
Il meccanismo è interpretabile: `_exposure` è la media di 4 indicatori binari, quindi si muove a
scatti di 0.25 ≈ $417 su una gamba da $1.667. **La banda filtra la deriva del vol-target, non il
segnale di trend.**
### Controllo su finestra lunga e veicoli diversi
Sui **veicoli USA**, finestra comune ai 6 (10 anni, limitata dalla cache TLT dal 2016):
| banda | ord/anno | Sh @ $0 | Sh @ $1 |
|---|---|---|---|
| $25 | 133 | 0.98 | 0.72 |
| $400 | **35** | **0.96** | **0.89** |
✅ Lo Sharpe a costo zero perde **0.02** mentre gli ordini calano del **74%**. Non è un artefatto
della finestra corta.
## ⚠️ Ma la banda in dollari assoluti è la parametrizzazione sbagliata
| capitale | banda | % della gamba | ord/anno | **esposta** | Sharpe | |
|---|---|---|---|---|---|---|
| $3.000 | $400 | **80%** | **3** | **45%** | 0.71 | ❌ congelato |
| $10.000 | $400 | 24% | 23 | 66% | 1.22 | OK |
| $50.000 | $400 | 5% | 75 | 66% | 1.25 | OK |
A $3.000 la banda da $400 è l'80% della gamba: **3 ordini l'anno**, a mercato il **45%** del tempo
invece del 66%. Lo Sharpe resta 0.71 — accettabile — **su una strategia che ha smesso di seguire il
proprio target**. È il null de-levering in una veste nuova: qui non travestito da "meno drawdown"
ma da "meno costi".
> **Regola: quando un parametro di esecuzione è espresso in valuta assoluta, il suo effetto dipende
> dal capitale — e il controllo non è lo Sharpe ma la QUOTA DI TEMPO A MERCATO.**
## La configurazione: banda = 25% della gamba
| capitale | banda | ord/anno | esposta | soglia $/ordine | budget/anno |
|---|---|---|---|---|---|
| $3.000 | $125 | **21** | 66% | **$5.65** | $120 |
| $6.000 | $250 | **21** | 66% | $11.34 | $240 |
| $10.000 | $417 | **21** | 66% | $18.90 | $400 |
| $25.000 | $1.042 | **21** | 66% | $47.26 | $1.000 |
| $50.000 | $2.083 | **21** | 66% | >$60 | — |
**21 ordini l'anno a ogni capitale**, esposizione 66% ovunque. Contro il canonico: a $3.000 la
soglia passa da **$2.08 a $5.65 per ordine** — cioè dalla differenza fra *"serve un broker
economico"* e *"va bene qualunque broker europeo"*.
⚠️ **Non è un cambio di produzione.** È una configurazione **proposta**, tarata su questa finestra,
non passata per `study_family_honest` né per un deflated-Sharpe. Regge il controllo su 10 anni e
veicoli diversi, ma GTAA01 non è deployabile prima dei $20k (decisione venue 26/07): c'è tempo per
validarla come si deve.
## Cosa cercare sul proprio conto — per ISIN, non per ticker
| gamba | ticker | ISIN | prezzo | descrizione |
|---|---|---|---|---|
| SPY | VUAA | `IE00BFMXXD54` | $143.80 | Vanguard S&P 500 UCITS (Acc, USD) |
| QQQ | XNAS | `IE00BMFKG444` | $65.74 | Xtrackers Nasdaq 100 UCITS 1C |
| IWM | R2US | `IE00BJ38QD84` | $86.35 | SPDR Russell 2000 US Small Cap UCITS |
| TLT | IDTL | `IE00BSKRJZ44` | $3.09 | iShares $ Treasury Bond 20+yr UCITS |
| GLD | IGLN | `IE00B4ND3602` | $79.06 | iShares Physical Gold ETC |
| HYG | IHYU | `IE00B4PY7Y77` | $94.12 | iShares $ High Yield Corp Bond UCITS |
*(ISIN da contract details IB: i ticker cambiano da borsa a borsa, le ISIN no. Tutti domiciliati in
Irlanda — è il motivo per cui sono acquistabili nell'UE.)*
Tutti quotati a **Londra in USD**. ⚠️ Le stesse ISIN esistono su altre borse e in altre valute: una
linea in **EUR** aggiunge la conversione per ordine, che a 25bps costa **~0.15 di Sharpe** — più del
costo per ordine di qualunque broker a questa cadenza. **La valuta della linea conta più del
broker.**
## Verdetto
Con 21 ordini l'anno e una tolleranza di $5.65/ordine già a $3.000, **il vincolo di costo smette di
essere binding su qualunque broker retail europeo**. La domanda "Revolut o Degiro" perde quindi la
sua parte quantitativa e resta solo la parte di disponibilità: quale dei due quota le sei ISIN sopra
sulla linea in USD.
Restano due criteri non misurabili da qui, entrambi a favore di Degiro su Revolut per questo uso
(universo ETF europeo tipicamente più ampio, e accesso diretto a LSE), **ma vanno verificati
guardando i due conti** — non sono cose che posso misurare da questo lato.
## Lezione
**Una raccomandazione poggiata su un fatto non verificato sul conto reale vale quanto quel fatto.**
Ieri ho consigliato IB in parte perché "il conto esiste già": era un'assunzione, e per la seconda
volta in due giorni un'assunzione sul conto reale ha cambiato la conclusione. La prima volta era la
negoziabilità (PRIIPs), questa volta quale conto è davvero operativo.
---
# Addendum 2026-07-27 (2) — "degiro ha api?"
**Fatto:** DEGIRO **non** espone una API di trading ufficiale per il retail. Revolut nemmeno (la sua
API è per pagamenti, non per il portafoglio titoli). IB sì, documentata e supportata — è quella che
il progetto già usa per i dati.
Esistono wrapper **non ufficiali** degli endpoint interni del web trader DEGIRO. Girano su
credenziali + seed 2FA depositati sulla macchina, sono fuori dai termini di servizio, e si rompono
**in silenzio** a ogni cambio di front-end. Questo progetto ha già pagato una volta il prezzo di un
guasto silenzioso (`fresh_5m`, 26/07: fallimento muto → latenza d'uscita di SKH01 da ~1h a ~1 giorno
senza che nulla lo segnalasse). **Un esecutore automatico che può rompersi senza dirlo è peggio
dell'esecuzione manuale.**
Quindi la domanda utile non è "si può automatizzare" ma **"quanto costa non farlo"**.
## Carico operativo (banda 25%, controllo settimanale, $10.000)
| | |
|---|---|
| controlli/anno | 50 |
| **settimane con ≥1 ordine** | **15** (29% dei controlli) |
| ordini per settimana attiva | 1.4 (max 5) |
Nel 71% dei controlli non c'è nulla da fare.
## Costo del ritardo di esecuzione
Veicoli USA, 10 anni. ⚠️ Sulla finestra UCITS di 3.2 anni la curva **non risulta monotona** (5
giorni 0.26, 10 giorni 0.13): il campione corto non risolve differenze di questa taglia, quindi
il numero si legge sulla finestra lunga.
| ritardo | Sharpe | ΔSharpe | stabilità |
|---|---|---|---|
| 0 giorni | 0.90 | — | — |
| **1 giorno** | 0.89 | **0.02** | peggiora in 6/11 anni = **moneta** |
| 2 giorni | 0.83 | 0.07 | 7/11 |
| 3 giorni | 0.78 | 0.13 | 7/11 |
| 5 giorni | 0.73 | 0.18 | 7/11 |
| **10 giorni** | 0.63 | **0.27** | 6/11 |
**Il costo non è il ritardo tipico, è la coda.** Eseguire il giorno stesso o il giorno dopo costa
nulla; dieci giorni valgono quasi un terzo dello sleeve.
## Conseguenza
Il rischio dell'operatività manuale non è la lentezza, è la **dimenticanza** — e quella si compra
con un **allarme**, non con una API. `gtaa_rebalance_plan(held, capital)` esiste già in produzione
ed è nato esattamente per un esecutore; il progetto ha già l'allerta Telegram sul book live. Un cron
settimanale che calcola il piano e notifica quando c'è da agire copre il caso 15 volte l'anno.
⚠️ **L'altro lato, che resta vero:** il resto del book è automatico (TP01 e SKH01 mandano ordini
veri su cron). Aggiungere una gamba manuale introduce un modo di fallire che il sistema oggi non ha.
È un argomento reale a favore di IB — che l'API ce l'ha — ma richiede finanziare un secondo venue, e
la decisione venue del 26/07 tiene tutto su Deribit fino a $20k. **La scelta è quindi rimandata al
punto in cui la si riaprirebbe comunque.**
## Lezione
**Una capacità mancante si valuta sul costo di non averla, non sulla sua assenza.** Qui l'assenza di
API sembra squalificante e vale 0.02 di Sharpe se si esegue entro un giorno; ciò che vale davvero
(0.27) è un rischio operativo che si copre con una notifica.
---
# Addendum 2026-07-27 (3) — "r2us in revolut non c'è, ma ho zprr e spy4"
## ZPRR **è** R2US
| ticker | borsa | valuta | ISIN |
|---|---|---|---|
| R2US | Londra | USD | `IE00BJ38QD84` |
| **ZPRR** | **Xetra** | **EUR** | **`IE00BJ38QD84`** |
Stessa ISIN = stessa classe di quote = **stesso fondo, stesso NAV**. Cambia solo dove e in che
valuta si negozia. La gamba small cap è risolta: **compra ZPRR**, non si perde niente.
> **Regola: si cerca per ISIN, non per ticker.** Lo stesso fondo ha ticker diversi su borse diverse,
> e un ticker copiato da una lista può essere un altro prodotto.
## ⚠️ SPY4 non è quello che sembra
`IE00B4YBJ215` = SPDR **S&P 400 US Mid Cap**. Non è small cap, e non è l'S&P 500 (quello è SPY5,
`IE00B6YX5C33`). Non serve, dato che ZPRR c'è — ma misurato come ripiego, su 6.5 anni:
| gamba small cap | Sharpe | CAGR | maxDD |
|---|---|---|---|
| R2US (small) | 0.86 | 4.20% | 8.2% |
| SPY4 (mid) | 0.86 | 4.26% | 8.3% |
Correlazione dei due sleeve **0.991**, SPY4 peggiore in **3/7 anni** = moneta. *(Sulla finestra
corta di 3.2 anni sembrava 0.15 di Sharpe: era rumore.)*
**Ripiego accettabile**, e il motivo è meccanico: small e mid cap USA hanno correlazione giornaliera
~0.95, e un TSMOM su due serie così vicine si accende quasi negli stessi giorni. ⚠️ Non è
"validato" — 6.5 anni non bastano a distinguere due gambe così simili, ed è **esattamente per
questo** che la scelta fra le due non conta.
## ⚠️ Correzione a un'indicazione data ieri: sulla valuta avevo ragionato al contrario
Ieri ho scritto che *"una linea in EUR aggiunge la conversione per ordine"*. È vero **solo per un
conto in USD**. Per un conto in **euro** — cioè un retail italiano su Revolut o Degiro — vale
l'opposto: comprare la linea in USD costringe a convertire a ogni ordine, la linea in EUR no.
L'esposizione economica è identica nei due casi: il fondo detiene attivi in USD e **nessuna delle
due linee è coperta**. La valuta di quotazione non copre niente — decide solo se serve una
conversione.
> **Regola giusta: prendere la linea nella valuta del proprio saldo.**
Quanto vale, misurato (turnover lordo **$13.655/anno** su $10.000, 21 ordini):
| bps FX per ordine | ΔSharpe | costo/anno |
|---|---|---|
| 15 bps | 0.04 | $20 |
| 25 bps | 0.07 | $34 |
| 50 bps | 0.14 | $68 |
A 25bps la conversione equivale a ~**$1.6 in più su ciascuno dei 21 ordini**: reale, ma piccolo
rispetto alla soglia di $18.90/ordine a $10.000. Quindi **ZPRR in EUR su un conto in euro è la
scelta migliore**, non un compromesso.
## Lezione
**Un costo di conversione non è una proprietà dello strumento ma della coppia strumento-conto.**
Avevo dedotto "linea in EUR = costo in più" da un caso (conto in USD) e l'avevo scritta come regola
generale; per il conto che l'operatore usa davvero il segno è invertito. È la terza volta in due
giorni che un'assunzione non verificata sul conto reale cambia la conclusione — dopo la
negoziabilità PRIIPs e quale conto è operativo.
---
# Addendum 2026-07-27 (4) — DEGIRO ha tutte e sei
Screenshot della watchlist "Pythagoras" su flatexDEGIRO: **le sei gambe ci sono tutte**, con i
ticker esatti raccomandati. (Era Revolut a non avere R2US.)
| gamba | ticker | borsa | valuta | prezzo Degiro |
|---|---|---|---|---|
| SPY | VUAA | TDG | **EUR** | € 126,795 |
| QQQ | XNAS | TDG | **EUR** | € 58,10 |
| IWM | R2US | LSE | USD | $ 86,66 |
| TLT | IDTL | LSE | USD | $ 3,09987 |
| GLD | IGLN | LSE | USD | $ 79,585 |
| HYG | IHYU | LSE | USD | $ 94,32 |
## Verifica indipendente che le linee in EUR siano gli stessi fondi
Non dallo screenshot ma dai dati: il rapporto fra il prezzo IB (Londra USD) e il prezzo Degiro deve
essere **un solo cambio** per entrambe le linee EUR.
| ticker | Degiro | IB (LSE USD) | rapporto |
|---|---|---|---|
| VUAA | 126,795 | 143,80 | **1.1341** |
| XNAS | 58,10 | 65,74 | **1.1315** |
| R2US / IDTL / IGLN / IHYU | — | — | 0.993-0.998 (già USD) |
EURUSD implicito **1.1341 vs 1.1315, scarto 0.23%**. Due fondi diversi non darebbero lo stesso
cambio: sono le stesse quote, quotate in euro.
## ⚠️ Un errore mio, dello stesso tipo che avevo appena codificato come regola
Per cercare le linee in euro delle altre quattro gambe ho interrogato IB **per ticker** sulle borse
tedesche: risultato "nessuna linea EUR" su 4/4. **Falso.** Il ticker cambia da borsa a borsa — R2US
su Xetra si chiama ZPRR. Cercando **per ISIN**:
| gamba | linea USD | **linea EUR** | ISIN |
|---|---|---|---|
| SPY | VUAA (LSE) | VUAA (Xetra/BIt) | `IE00BFMXXD54` |
| QQQ | XNAS (LSE) | XNAS (Xetra) | `IE00BMFKG444` |
| IWM | R2US (LSE) | **ZPRR** (Xetra) | `IE00BJ38QD84` |
| TLT | IDTL (LSE) | **IS04** (Xetra) | `IE00BSKRJZ44` |
| GLD | IGLN (LSE) | **EGLN** (Londra) | `IE00B4ND3602` |
| HYG | IHYU (LSE) | **IS0R** (Xetra) | `IE00B4PY7Y77` |
**Ogni gamba ha una linea in euro.** Avevo scritto la regola "si cerca per ISIN, non per ticker" un
messaggio prima e poi ho costruito la sonda per ticker. *Un "assente" da una ricerca per ticker su
una borsa dove quel ticker non esiste non significa "non esiste".*
## Quanto vale la conversione, e su quale gamba
Turnover per gamba a $10.000 (banda 25%, 21 ordini/anno):
| gamba | ticker | ordini/anno | turnover/anno | quota |
|---|---|---|---|---|
| **TLT** | **IDTL** | **9** | **$6.257** | **46%** |
| SPY | VUAA | 3 | $2.289 | 17% |
| GLD | IGLN | 3 | $1.695 | 12% |
| QQQ | XNAS | 3 | $1.614 | 12% |
| HYG | IHYU | 1 | $958 | 7% |
| IWM | R2US | 2 | $843 | 6% |
- turnover su gambe in **USD** (da convertire): **$9.752/anno = 71%**
- costo conversione: **$24/anno a 25bps**, $49 a 50bps (0.24-0.49% del capitale, ~6-12% del CAGR)
**IDTL da sola vale il 46% del turnover e 9 dei 21 ordini.** Se si vuole ridurre la conversione
senza cambiare sei strumenti, si sposta **quella** sulla linea in euro (IS04, `IE00BSKRJZ44`): da
sola copre il **64%** del turnover convertibile.
⚠️ Il risparmio non è netto: le linee di Xetra possono avere spread più larghi delle linee di Londra
(che sono le primarie), e Degiro storicamente addebita una tariffa di connettività per borsa. Su
$10.000 parliamo di decine di dollari l'anno in entrambe le direzioni — **non è una decisione
importante**, e dirlo è più utile che costruire una precisione finta.
## Cosa NON serve
Il messaggio in cima allo screenshot — *"Richiedi un'aliquota ridotta della ritenuta alla fonte sugli
investimenti statunitensi"* (il W-8BEN) — **non riguarda queste sei posizioni**: sono fondi
irlandesi, non titoli USA. La ritenuta del 15% la subisce il fondo al proprio interno e nessun
modulo dell'investitore la cambia. Va compilato se un giorno si detengono azioni USA dirette.
## Stato
Saldo Degiro €328,92: questa è **preparazione, non azione**. GTAA01 richiede ≥$3.000 per reggere i
costi, e la decisione venue del 26/07 tiene tutto su Deribit fino a $20k.