Salve, ragazzi sono nuovo nel forum; avrei bisogno di un vostro aiuto in quanto dovrei effettuare un lavoro con il software R, in sintesi:
si consideri un portafoglio di 20 titoli arbitrariamente scelti e si calcoli il profilo rischio-rendimento. Si costruiscano i portafogli a varianza minima ottenuti riducendo progressivamente il paniere di titoli presenti in portafoglio.
Qualcuno sa come impostare ?
Comincia con questo (ho usato solo 5 titoli perché non avevo voglia di cercare i
ticker su Yahoo, comunque non cambia nulla anche se ne metti dentro 500).
Poi eventualmente vediamo come usare un ciclo
for() per togliere i titoli a uno a uno e vedere tutte le combinazioni possibili.
# +---------------------------------
# | Si consideri un portafoglio di 20 titoli arbitrariamente scelti e si
# | calcoli il profilo rischio-rendimento. Si costruiscano i portafogli a
# | varianza minima ottenuti riducendo progressivamente il paniere di
# | titoli presenti in portafoglio.
# +---------------------------------
# +---------------------------------
# | Sommario
# |
# | 1. Parametri globali
# | 2. Installazione delle librerie
# | 3. Caricamento delle librerie
# | 4. Scaricamento dei dati
# | 5. Preparazione dei dati
# | 6. Rendimenti aritmetici
# | 7. Frontiera efficiente
# +---------------------------------
# +---------------------------------
# | 1. Parametri globali
# +---------------------------------
op <- par(no.readonly = TRUE)
Sys.setenv(TZ = 'UTC')
# +---------------------------------
# | 2. Installazione delle librerie
# +---------------------------------
install.packages('lattice')
install.packages('fPortfolio')
install.packages('quantmod')
# +---------------------------------
# | 3. Caricamento delle librerie
# +---------------------------------
require(lattice)
require(fPortfolio)
require(quantmod)
# +---------------------------------
# | 4. Scaricamento dei dati
# +---------------------------------
env <- new.env()
# In questo esempio usiamo solo cinque titoli per comodità:
# - FIAT
# - ENI
# - ENEL
# - Telecom Italia
# - UniCredit
Symbols <- c('F.MI', 'ENI.MI', 'ENEL.MI', 'TIT.MI', 'UCG.MI')
getSymbols(Symbols = Symbols, env = env, src = 'yahoo', from = '1950-01-01')
# +---------------------------------
# | 5. Preparazione dei dati
# +---------------------------------
args <- eapply(env = env, FUN = function(x){Cl(x)})[Symbols]
X <- na.omit(do.call(what = merge, args = args))
xyplot(X)
# +---------------------------------
# | 6. Rendimenti aritmetici
# +---------------------------------
Data <- apply(X = X, MARGIN = 2, FUN = function(x){Delt(x)})
Data <- xts(returns, index(X))
Data[1,] <- 0
# +---------------------------------
# | 7. Frontiera efficiente
# +---------------------------------
Frontier <- portfolioFrontier(as.timeSeries(Data))
frontierPlot(Frontier, frontier = 'upper')
grid()
abline(h = 0, col = 'grey')
abline(v = 0, col = 'grey')
minvariancePoints(Frontier, pch = 19, col = 'red')
tangencyPoints(Frontier, pch = 19, col = 'blue')
tangencyLines(Frontier, col = 'blue')
equalWeightsPoints(Frontier, pch = 15, col = 'grey')
singleAssetPoints(Frontier, pch = 19, cex = 1.5, col = topo.colors(6))
twoAssetsLines(Frontier, lty = 3, col = 'grey')
sharpeRatioLines(Frontier, col = 'orange', lwd = 2)
Mi sono "dimenticato" di annualizzare le misure, fallo tu come esercizio