Grafici: Dani Score

Le formule esatte dietro affidabilità, diversificazione, rendimento atteso, performance, stabilità e semplicità.

Il Dani Score condensa un portafoglio in un unico numero da 0 a 10 e in una scomposizione su cinque dimensioni. A differenza del resto del backtester, che per lo più mostra dati storici grezzi, ogni numero di questo tab viene da una formula di punteggio fissa, la stessa formula per ogni portafoglio. Questa pagina documenta quelle formule così il punteggio non deve mai essere una scatola nera.

Affidabilità

Gauge di affidabilità che mostra quale percentuale delle principali crisi di mercato copre lo storico analizzato

Un punteggio 0–100 su quanto lo storico analizzato sia lungo e ricco abbastanza da potersi fidare della scomposizione sotto, mostrato prima del punteggio stesso per un motivo preciso: un Dani Score di 9,5/10 costruito su tre anni di mercati calmi merita molta meno fiducia dello stesso 9,5/10 costruito su trent'anni sopravvissuti a due crolli.

relRatio=12(anni20+mesi240)\text{relRatio} = \frac{1}{2}\left(\frac{\text{anni}}{20} + \frac{\text{mesi}}{240}\right)

Affidabilitaˋ=10×min ⁣(relRatio,  anni22,  1)malus\text{Affidabilità} = 10 \times \min\!\left(\text{relRatio},\; \frac{\text{anni}}{22},\; 1\right) - \text{malus}

La formula confronta la tua finestra di backtest con un riferimento di circa 20 anni (all'incirca quanto lo storico reale di un noto ETF azionario globale), facendo la media di due rapporti: la lunghezza in anni della tua finestra divisa per 20, e il numero di osservazioni mensili diviso per 240. Quella media viene poi limitata in modo che una finestra più corta di 22 anni non possa mai raggiungere un 10 perfetto, per quanto densi siano i dati. Il malus\text{malus} sono due penalità fisse da un punto ciascuna: una se la finestra non copre il crollo dot-com del 2000–2002, una se non copre la crisi finanziaria del 2008. Moltiplica il risultato per 10 e ottieni la percentuale sul gauge.

La timeline sotto al gauge segna anche il crollo Covid (2020) e il mercato ribassista del 2022 come coperti o mancati, per contesto, ma solo dot-com e 2008 tolgono davvero punti. Una finestra che copre Covid e 2022 ma manca sia il 2000 sia il 2008 subisce lo stesso malus di 2 punti di una finestra che non copre nessuno dei due: il punteggio si preoccupa di aver attraversato i due stress test più profondi e lunghi dei dati moderni, non della copertura in generale. Un'affidabilità bassa è un motivo per estendere il periodo del backtest o affidarsi a storici di ETF ricostruiti prima di fidarsi dei numeri sotto, non un motivo per diffidare del concetto di punteggio in sé.

Punteggio e scomposizione

Dani Score scomposto sulle cinque dimensioni come barre orizzontali, una serie di barre per portafoglio

Il punteggio totale (0–10, mostrato in cima al tab) è la semplice media di cinque punteggi dimensionali, ciascuno calcolato in modo indipendente e ciascuno che vale esattamente un quinto del totale: Diversificazione, Rendimento atteso, Performance passata, Stabilità, Semplicità. Con più di un portafoglio le barre di ogni dimensione stanno affiancate per colore, così vedi a colpo d'occhio quale dimensione sta determinando la differenza fra due portafogli che altrimenti sembrano simili, invece di confrontare solo due numeri finali.

Le cinque formule, nell'ordine in cui vengono mediate:

Diversificazione. Una combinazione pesata di quante holding hai in portafoglio, quanti paesi e settori, e quanto sono distribuiti in modo uniforme i pesi al loro interno:

Div=10(0.18H+0.20Ccov+0.22Scov+0.22Ceven+0.18Seven)\text{Div} = 10\bigl(0.18\,H + 0.20\,C_{cov} + 0.22\,S_{cov} + 0.22\,C_{even} + 0.18\,S_{even}\bigr)

La profondità delle holding è su scala logaritmica, quindi passare da 100 a 1.000 holding conta più che passare da 4.000 a 4.900:

H=min ⁣(1,  ln(1+n)ln(1+5000))H = \min\!\left(1,\; \frac{\ln(1+n)}{\ln(1+5000)}\right)

La copertura di paesi e settori è una quota su un valore di riferimento (40 paesi, 12 settori), in scala radice quadrata:

Ccov=min ⁣(c40,1)Scov=min ⁣(s12,1)C_{cov} = \sqrt{\min\!\left(\tfrac{c}{40}, 1\right)} \qquad S_{cov} = \sqrt{\min\!\left(\tfrac{s}{12}, 1\right)}

L'uniformità viene dall'indice di concentrazione Herfindahl-Hirschman (la stessa misura usata nell'economia antitrust), così un portafoglio distribuito in modo uniforme fra i suoi paesi ottiene un punteggio più alto di uno con lo stesso numero di paesi ma uno dominante:

HHI=iwi2Ceven=min ⁣(1/HHIpaesemin(c,12),1)HHI = \sum_i w_i^{\,2} \qquad C_{even} = \sqrt{\min\!\left(\frac{1/HHI_{paese}}{\min(c,12)}, 1\right)}

(l'uniformità settoriale SevenS_{even} rispecchia la stessa formula sui pesi settoriali). Sopra a questa somma pesata, una penalità toglie punti se il numero di holding sottostanti del portafoglio scende sotto 1.000, con una seconda penalità più ripida sotto 500; si applica un bonus di +0,5 se nelle holding vengono rilevate materie prime (oro, argento, altri metalli preziosi), e un altro +0,5 se ci sono titoli di stato, perché entrambi diversificano un portafoglio in modi che il semplice conteggio azioni-e-obbligazioni corporate non coglie.

Rendimento atteso. Riusa le stesse fasce di punteggio 0–10 della Performance passata qui sotto, ma applicate alla stima Fama-French del rendimento atteso invece che al CAGR realizzato: la domanda è "quanto è buono il numero strutturale, orientato al futuro", non "quanto è stato buono il numero storico".

Performance passata. Punteggio calcolato direttamente sul CAGR, in fasce via via più ripide:

Punteggio={0CAGR<0%8CAGR80%CAGR<8%8+CAGR848%CAGR<12%9+CAGR12312%CAGR<15%10CAGR15%\text{Punteggio} = \begin{cases} 0 & CAGR < 0\% \\ \dfrac{8 \cdot CAGR}{8} & 0\% \le CAGR < 8\% \\ 8 + \dfrac{CAGR - 8}{4} & 8\% \le CAGR < 12\% \\ 9 + \dfrac{CAGR - 12}{3} & 12\% \le CAGR < 15\% \\ 10 & CAGR \ge 15\% \end{cases}

Le fasce diventano progressivamente più difficili da scalare di proposito: il salto da un CAGR del 4% a uno dell'8% vale quanto il salto dall'8% fino al 15%.

Stabilità. Punteggio calcolato sulla volatilità annualizzata σ\sigma, più bassa è meglio:

Punteggio={10σ8%1034(σ8)8%<σ12%734(σ12)12%<σ16%412(σ16)16%<σ22%116(σ22)22%<σ28%0σ>28%\text{Punteggio} = \begin{cases} 10 & \sigma \le 8\% \\ 10 - \tfrac{3}{4}(\sigma - 8) & 8\% < \sigma \le 12\% \\ 7 - \tfrac{3}{4}(\sigma - 12) & 12\% < \sigma \le 16\% \\ 4 - \tfrac{1}{2}(\sigma - 16) & 16\% < \sigma \le 22\% \\ 1 - \tfrac{1}{6}(\sigma - 22) & 22\% < \sigma \le 28\% \\ 0 & \sigma > 28\% \end{cases}

Questa dimensione fa lo stesso lavoro di Sharpe o Sortino altrove nel backtester, esprimendo "quanto è stato accidentato il percorso" come un numero da 0 a 10 invece che come un rapporto.

Semplicità. L'unica dimensione che non ha nulla a che fare con rendimento o rischio:

Punteggio=100.5×max(0,  nETF5)\text{Punteggio} = 10 - 0.5 \times \max(0,\; n_{ETF} - 5)

Cinque ETF o meno valgono un 10 pieno; ogni ETF aggiuntivo oltre il quinto costa mezzo punto. Esiste perché un portafoglio più difficile da mantenere ha più probabilità di essere abbandonato o gestito male dal suo effettivo proprietario, un costo reale che le altre quattro dimensioni non possono vedere.

Perché ogni dimensione ha ottenuto quel punteggio

Spiegazione testuale per ogni dimensione del Dani Score con le metriche grezze sottostanti

Per ciascuna delle cinque dimensioni, una spiegazione in linguaggio semplice di come è stata calcolata per questo specifico portafoglio, insieme ai dati grezzi che l'hanno alimentata: volatilità, CAGR, numero di ETF, numero di holding, e qualsiasi bonus o penalità applicata, corrispondenti riga per riga alle formule sopra. È il posto giusto quando un punteggio ti sorprende: è pensato per rispondere a "perché la mia Diversificazione è un 4 e non un 8" senza doverti ricostruire la formula da solo, perché ti mostra i numeri reali che sono entrati nel calcolo.