Programmazione Amibroker Tutorial: matrice di covarianza ibrida usando le volatilità implicite delle opzioni

  • Creatore Discussione Creatore Discussione Cren
  • Data di Inizio Data di Inizio
Perché è irrealistico?

Perché una posizione, ad es., ln SP500 +150, sh NZQ -50 fa sì che tu non sia esposto per 100, ma per 200, come si vedrebbe subito se cerchi di realizzarla con ETF.

Allora, dico io, la condizione somma pesi =1 è troppo restrittiva. Si potrebbe benissimo ammettere che tu possa essere esposto per meno, magari ottemperando la somma_abs(pesi) = 1.
 
Lo so che questo paper è fatto veramente male in termini estetici, scritto in Word con le formule non formattate, però l'approccio proposto è sicuramente interessante perchè combina in modo molto elegante l'approccio a minima varianza con l'approccio di massima diversificazione senza introdurre alcun parametro discrezionale.

L'approccio proposto da David Varadi, Michael Kapler, Henry Bee e Corey Rittenhouse ha mostrato delle caratteristiche interessanti.

A pag. 13 del link è riassunto brevissimamente l'algoritmo così come scoperto da Varadi: la procedura è in sette step e non la riporto per pigrizia.

Ho usato sempre gli stessi dati che ho usato nei back test precedenti per non alterare alcuna misura di performance, li trovate qualche pagina indietro sia in .xls sia come dput da caricare direttamente in R.

Rispetto alla minima varianza la differenza che mi sembra pù sostanziale si concentra proprio nel periodo terribile del 2008, dove questo approccio non riesce a difenderci a sufficienza dal grosso draw down; questo non deve distogliere attenzione dal resto, però: nel resto del tempo draw down e varianza sono assolutamente bassi, addirittura meglio della minima varianza.

Sharpe:
Codice:
Annualized Sharpe (Rf=0%) 0.8383
Misure di rischio (dati settimanali):
Codice:
[COLOR=#000000][FONT=Lucida Console]Maximum Drawdown                            0.3137
Historical VaR (99%)                       -0.0289
Historical ES (99%)                        -0.0467
Modified VaR (99%)                         -0.0589
Modified ES (99%)                          -0.0589[/FONT][/COLOR]
Draw down e tempi di recupero:
Codice:
                 From              Trough                  To   Depth Length
1 2008-05-23 00:00:00 2009-03-05 23:00:00 2011-04-29 00:00:00 -0.3137    154
2 2004-03-11 23:00:00 2004-05-14 00:00:00 2004-09-10 00:00:00 -0.0678     27
3 2011-07-29 00:00:00 2011-10-07 00:00:00 2011-11-03 23:00:00 -0.0442     15
4 2006-05-12 00:00:00 2006-06-23 00:00:00 2006-08-04 00:00:00 -0.0433     13
5 2007-12-13 23:00:00 2008-01-17 23:00:00 2008-03-27 23:00:00 -0.0395     16
  To Trough Recovery
1        42      112
2        10       17
3        11        4
4         7        6
5         6       10
Codice per R (inserite i dati allegati qualche pagina fa come spiegato in precedenza):
Codice:
[COLOR=Green]# ***********************************************************************
# Back test 'Minimum Correlation Portfolio' di D. Varadi et al.
# by Cren
# ***********************************************************************

# Carico i package[/COLOR] 

require(gogarch)
require(PerformanceAnalytics)

[COLOR=Green]# Calcolo i rendimenti aritmetici degli indici[/COLOR]

dX.0 <- returns(MV_datas, method = 'discrete') ; dX <- dX.0[-1,]

[COLOR=Green]# Per aiutarmi nel back test, costruisco una funzione per applicare in
# expanding window l'algoritmo: prende in input i dati, la funzione da
# applicare e l'ampiezza iniziale della finestra; mi restituisce l'output
# nel medesimo formato dei dati in ingresso[/COLOR]

roll.app <- function(data, FUN, width) {
  temp <- matrix(NA, nrow = nrow(data), ncol = ncol(data))
  for(i in 1:(nrow(data) - (width - 1))) {
    temp[i + width - 1,] <- FUN(data[i:(i + width - 1),])
  }
  return(temp)
}

[COLOR=Green]# L'algoritmo 'Minimum Correlation Portfolio' è un procedimento euristico 
# scoperto da David Varadi. Nel seguito scrivo l'algoritmo per estrarre i pesi
# ottimali; per la correlazione uso un GARCH(1,1) multivariato a residui
# condizionatamente normali
[/COLOR] 
corr.pars <- function(data) {  
  V <- gogarch(data = data, formula = ~ garch(1,1))@V
  Rho <- cov2cor(V)
  mu.p <- mean(c(Rho))
  sigma.p <- sd(c(Rho))
  Adj.Rho <- 1 - pnorm(q = Rho, mean = mu.p, sd = sigma.p)
  init.w <- rowMeans(Adj.Rho)
  w.rank <- rank(init.w) / sum(rank(init.w))
  rpw <- (w.rank %*% Adj.Rho) / sum((w.rank %*% Adj.Rho))
  sigma <- sqrt(diag(V))
  w.opt <- (rpw / sigma) / sum(rpw / sigma)
  return(w.opt)
}

[COLOR=Green]# Applico in expanding window la funzione per estrarre i pesi ottimali
# del 'Minimum Correlation Portfolio', quindi li trasformo in serie storica[/COLOR]

w.t <- roll.app(data = dX, FUN = corr.pars, width = 200)
w.t <- xts(w.t, index(as.xts(dX)))
colnames(w.t) <- colnames(MV_datas)

[COLOR=Green]# Visualizzo l'evoluzione dei pesi ottimali nel tempo[/COLOR]

plot.zoo(w.t, format = '%y', main = 'Optimal Weights')

[COLOR=Green]# Calcolo i rendimenti della strategia; notare la funzione 'lag':
# applichiamo al periodo successivo i pesi calcolati nel periodo
# precedente, quindi c'è un ritardo di un periodo nell'adeguamento della
# allocazione ottimale (come faremmo nella realtà, ovviamente)[/COLOR]

ret <- lag(w.t) * dX
tot.ret <- xts(rowSums(ret), index(ret))

[COLOR=Green]# Visualizzo alcune misure di performance[/COLOR]

charts.PerformanceSummary(R = tot.ret, p = .99, gap = 50, methods = 'ModifiedES')

table.AnnualizedReturns(R = tot.ret, scale = 48)
table.DownsideRisk(tot.ret, p = .99)
table.Returns(tot.ret)
table.Drawdowns(tot.ret)
 

Allegati

  • Rplot.png
    Rplot.png
    9,8 KB · Visite: 507
  • Rplot01.png
    Rplot01.png
    12,3 KB · Visite: 498
Ultima modifica:
Ho provato a fare qualche esperimento sulle matrici di covarianza per cercare di cogliere una risposta alla seguente domanda che mi ero posto.

Domanda:

Invece di diversificare per area geografica, azioni o bond, emittente, orizzonte temporale etc - come cerchiamo di fare un po' tutti noi, chi da naive chi con Excel o con "R"- cerco di diversificare con una tecnica "simil-bootstrap" o delle estrazioni mirate.

Mi chiedo a quel punto: i campioni estratti dal bootstrap o dalle estrazioni mirate presentano caratteristiche simili all'universo da cui sono stati estratti (i momenti della distribuzione, ad esempio) campioni oppure presentano caratteristiche diverse ?

Per fare un paio di esempi concreti, un portafoglio equipesato di un'area geografica, dove ogni titolo pesa per Portafoglio/n, diversifica meglio un portafoglio globale rispetto alla scelta alternativa classica di un ETF, dove ogni titolo persa nella misura Portafoglio/capitalizzazione di "n" ?
Un portafoglio europeo a minima varianza presenta media e varianza simili al portafoglio europeo da cui sono stati scelti i titoli ?

Non sapendo rispondere, ho cercato di simulare.

Alla fine spieghero' le conclusioni a cui sono giunto.
 
Ultima modifica:
Per fare questo esperimento ho raccolto i dati delle asset class tradizionali e vi ho aggiunto

- Non le asset class complementari che ci si aspetterebbe (bond, real estate, etc.) in analisi di questo tipo, che piu' o meno richiamano tutte la tradizionale asset allocation a piramide (sicurezza alla base, rischio in cima)

bensi'

- delle nuove asset class che sono delle "estrazioni" di titoli dalle asset class tradizionali, con metodi quali l'equipesatura e la scelta tramite l'algoritmo a minima varianza di Bob Haugen. ( Minima varianza vorrebbe indicare la scelta di titoli estratti dalle asset class tradizionali che salgono di piu' muovendosi di meno)
 

Allegati

  • Cattura.JPG
    Cattura.JPG
    260,8 KB · Visite: 461
Il passo successivo e' la gerarchizzazione delle 17 asset class riportate nello specchietto sopra a temperatura di colore.Alcuni risultati sono del tutto ovvi e non li commento, ma alcuni sono controintuitivi

A) I portafogli a minima varianza non sembrano per nulla simili ai mercati di riferimento, né per l'Europa, né per gli Usa (dove si comportano come le commodities !) né per i paesi emergenti

B) I portfogli europei ad equipesatura diversificano bene i portafogli europei di riferimento, non ne sono cloni.


P.S. Se dovessi replicare il MSCI World, ho sottolineato in giallo le 7 asset class che sceglierei personalmente in questo momento storico.
 

Allegati

  • Cattura.JPG
    Cattura.JPG
    127,5 KB · Visite: 259
Conclusioni ?
Non saprei dare valutazioni definitive, non sono un esperto, ma mi permetto di avanzare un paio di considerazioni emerse dalla mia ricerca.

Diversificare portafogli azionari con estrazione di portafogli replica secondo qualificati criteri di estrazione dei campioni non e' un'operazione eretica come a vista apparirebbe e come a prima vista pensavo anch'io prima di essere smentito dai dati.

In secondo luogo, trovo tutta da verificare l'impostazione classica dei consulenti finanziari, che fanno acquistare ai clienti fondi comuni di paesi emergenti, della Cina, del Brasile, etc. solo perché convinti entrambi (cliente e consulente) che la geografia sia il primo criterio importante, e quasi unico, della diversificazione di portafoglio. Nella mia ricerca ho trovato personalmente che diversifica molto meglio di un portafoglio globale un semplice portafoglio europeo composto di 3 sole asset class tutte europee

1 portafoglio europeo
2 portafoglio europeo a minima varianza
3 fondo comune dell'iperlusso, esempio il Global prestige di Credit suisse con dentro LVMH, L'Oreal, TOD's, PPR, Gucci,..)
 
L'idea di inserire in un portafoglio ottimizzato altri portafogli ottimizzati di diverso tipo mi affascina: cosa potrà mai essere il risultato finale?

Ogni volta che leggo allocazioni suggerite da "esperti" sulle apposite rubriche dei giornali vedo sempre il fenomeno che descrivi tu, Piedi a Terra: numeri "tondi" che difficilmente possono emergere da una allocazione quantitativa e la discriminante geografica/settoriale predominante su tutto.

Per esempio, ho letto più volte consigliare un misto di mercati emergenti e azionario Paesi sviluppati, ignorando la concentrazione elevatissima che i meccanismi del carry trade innescano su queste asset class rendendole quasi tutt'una.
 
L'idea di inserire in un portafoglio ottimizzato altri portafogli ottimizzati di diverso tipo mi affascina: cosa potrà mai essere il risultato finale?

Ogni volta che leggo allocazioni suggerite da "esperti" sulle apposite rubriche dei giornali vedo sempre il fenomeno che descrivi tu, Piedi a Terra: numeri "tondi" che difficilmente possono emergere da una allocazione quantitativa e la discriminante geografica/settoriale predominante su tutto.

Per esempio, ho letto più volte consigliare un misto di mercati emergenti e azionario Paesi sviluppati, ignorando la concentrazione elevatissima che i meccanismi del carry trade innescano su queste asset class rendendole quasi tutt'una.

Le allocazioni geografiche non funzionano piu' bene a causa del cash and carry: si è visto come nel caso del Giappone il cambio si sia mangiato gran parte del move, perché correlato negativamente all'equity. Molti non si sono accorti che le allocazioni geografiche non funzionano piu' bene neppure nell'obbligazionario: vanno a comperare come dei forsennati bond in rubli ed in dollari canadesi strutturati da Intesa (Banca IMI) nemmeno accorgendosi di pagare 1000 punti base di costo di strutturazione. I cedoloni annuali rispettivamente di 8,30% e 6,40%. saranno facilmente divorati dalle svalutazioni sui cambi, come nei Bond IMI sulla lira turca nel recentissimo passato.

Le allocazioni di un set di sub-portafogli estratti da un portafoglio globale e' invece un tema curioso perché viola il cardine della diversificazione geografica sul quale si e' finora sostenuta l'industria del risparmio gestito ma che trovo affascinante, accessibile persino con strumentazioni da AT.

Ad esempio, sebbene ora non possieda ancora dati abbastanza estesi da poterlo sottoporre in pubblico, tra un po' avanzero' la proposta di un portafoglio buy and hold lazy, cioe' sempre a mercato, costruito con le seguenti 2 regole di momentum:

- vai lungo sull'ETF Euroxx quanto taglia la media mobile 200 gg al rialzo
- chiudi la posizione ed apri una posizione sull'Euroxx minima varianza quando taglia la media mobile 200 gg al ribasso.
 
Le allocazioni geografiche non funzionano piu' bene a causa del cash and carry: si è visto come nel caso del Giappone il cambio si sia mangiato gran parte del move, perché correlato negativamente all'equity. Molti non si sono accorti che le allocazioni geografiche non funzionano piu' bene neppure nell'obbligazionario: vanno a comperare come dei forsennati bond in rubli ed in dollari canadesi strutturati da Intesa (Banca IMI) nemmeno accorgendosi di pagare 1000 punti base di costo di strutturazione. I cedoloni annuali rispettivamente di 8,30% e 6,40%. saranno facilmente divorati dalle svalutazioni sui cambi, come nei Bond IMI sulla lira turca nel recentissimo passato.

Le allocazioni di un set di sub-portafogli estratti da un portafoglio globale e' invece un tema curioso perché viola il cardine della diversificazione geografica sul quale si e' finora sostenuta l'industria del risparmio gestito ma che trovo affascinante, accessibile persino con strumentazioni da AT.

Ad esempio, sebbene ora non possieda ancora dati abbastanza estesi da poterlo sottoporre in pubblico, tra un po' avanzero' la proposta di un portafoglio buy and hold lazy, cioe' sempre a mercato, costruito con le seguenti 2 regole di momentum:

- vai lungo sull'ETF Euroxx quanto taglia la media mobile 200 gg al rialzo
- chiudi la posizione ed apri una posizione sull'Euroxx minima varianza quando taglia la media mobile 200 gg al ribasso.

posso suggerire una modifica che ti pregherei di testare?
 

Users who are viewing this thread

Back
Alto