tdazio
Nuovo forumer
Salve, sto imparando l’uso di R applicato al trading e una ricerca mi ha portato a questo fantastico 3d.
Complimenti a tutti per la competenza, in particolare a Cren e ai suoi script chiarissimi che mi hanno permesso di capire parecchio dell’uso che si può fare di R, e tutto finalmente in italiano!
Avrei una domanda:
da un po’ mi frulla in testa un’idea balzana: è possibile giungere al vettore dei pesi da attribuire ai vari titoli in portafoglio, usando una regessione multipla lineare che metta in relazione i rendimenti storici dei vari titoli con un vettore ‘obiettivo’ di rendimenti costanti e magari ambiziosi (ad es. 0.3%/day) e considerando poi come pesi i vari coeff di regressione, magari normalizzati?
Aldilà dell’enorme overfitting in-sample, la cosa ha un senso econometrico oppure, come temo, è una castroneria colossale?
Per intenderci una cosa di questo tipo (salvo errori):
[FONT="]
#------------------------------------------------
# Fake-LM Portfolio DAX
#------------------------------------------------
##### LM-Portfolio, forse funziona....
library(quantmod)
library(PerformanceAnalytics)
library(tawny)
n.day <- 252 # numero giorni analisi
# tiker del paniere attuale del DAX
list <- getIndexComposition("^GDAXI",hint=30)
# scarica i rendimenti aritmetici
h <- getPortfolioReturns(list, obs=n.day)
# calcolo retta obiettivo ambizioso
retta <- rep(0.003,n.day)
# calcolo pesi
modello <- lm(retta ~ h + 0)
w <- coef(modello) # pesi
ww <- w/sum(abs(w)) # somma pesi forzata a 1
# calcolo rendimenti pesati
w.ret <- matrix(0,ncol=length(ww),nrow=n.day)
for (i in 1:length(ww))
{
w.ret[,i] <- h[,i]*ww
}
# rendimento portafoglio Fake-LM
ret <- rowSums(w.ret)
# rendimento Indice DAX
getSymbols("^GDAXI")
r.indice <- ROC(GDAXI[,4],type="discrete")
# analisi performance
rx <- xts(ret,order.by = index(h))
colnames(rx) <- "Porfolio Fake-LM"
rx$DAX <- r.indice
charts.PerformanceSummary(rx, ylog=T, lwd=1)
table.AnnualizedReturns(rx)
maxDrawdown(rx)
###fine############################################
Porfolio.Fake.LM DAX
Annualized Return 0.2119 0.0444
Annualized Std Dev 0.0398 0.2457
Annualized Sharpe (Rf=0%) 5.3251 0.1808
Porfolio.Fake.LM DAX
Worst Drawdown 0.01871295 0.5476745
[/FONT]
[FONT="]
[/FONT]
ciao
tdazio
Complimenti a tutti per la competenza, in particolare a Cren e ai suoi script chiarissimi che mi hanno permesso di capire parecchio dell’uso che si può fare di R, e tutto finalmente in italiano!
Avrei una domanda:
da un po’ mi frulla in testa un’idea balzana: è possibile giungere al vettore dei pesi da attribuire ai vari titoli in portafoglio, usando una regessione multipla lineare che metta in relazione i rendimenti storici dei vari titoli con un vettore ‘obiettivo’ di rendimenti costanti e magari ambiziosi (ad es. 0.3%/day) e considerando poi come pesi i vari coeff di regressione, magari normalizzati?
Aldilà dell’enorme overfitting in-sample, la cosa ha un senso econometrico oppure, come temo, è una castroneria colossale?
Per intenderci una cosa di questo tipo (salvo errori):
[FONT="]
#------------------------------------------------
# Fake-LM Portfolio DAX
#------------------------------------------------
##### LM-Portfolio, forse funziona....
library(quantmod)
library(PerformanceAnalytics)
library(tawny)
n.day <- 252 # numero giorni analisi
# tiker del paniere attuale del DAX
list <- getIndexComposition("^GDAXI",hint=30)
# scarica i rendimenti aritmetici
h <- getPortfolioReturns(list, obs=n.day)
# calcolo retta obiettivo ambizioso
retta <- rep(0.003,n.day)
# calcolo pesi
modello <- lm(retta ~ h + 0)
w <- coef(modello) # pesi
ww <- w/sum(abs(w)) # somma pesi forzata a 1
# calcolo rendimenti pesati
w.ret <- matrix(0,ncol=length(ww),nrow=n.day)
for (i in 1:length(ww))
{
w.ret[,i] <- h[,i]*ww
}
# rendimento portafoglio Fake-LM
ret <- rowSums(w.ret)
# rendimento Indice DAX
getSymbols("^GDAXI")
r.indice <- ROC(GDAXI[,4],type="discrete")
# analisi performance
rx <- xts(ret,order.by = index(h))
colnames(rx) <- "Porfolio Fake-LM"
rx$DAX <- r.indice
charts.PerformanceSummary(rx, ylog=T, lwd=1)
table.AnnualizedReturns(rx)
maxDrawdown(rx)
###fine############################################
Porfolio.Fake.LM DAX
Annualized Return 0.2119 0.0444
Annualized Std Dev 0.0398 0.2457
Annualized Sharpe (Rf=0%) 5.3251 0.1808
Porfolio.Fake.LM DAX
Worst Drawdown 0.01871295 0.5476745
[/FONT]
[FONT="]
ciao
tdazio