PedaloPiano
Nuovo Utente
- Registrato
- 10/6/11
- Messaggi
- 772
- Punti reazioni
- 0
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
Un esempio a caso:
regole: roc 2 mesi, entrano i primi due, esce se rank > 4. No costi no tax
un esempio di code x R
Codice:###### Dependencies require(quantmod) require(PerformanceAnalytics) ###### Common function rank <- function(x) { l <- length(x) y <- rep(NA, l) m <- min(x) - 1 flag <-l index <- -1 while(flag>0) { for (i in 1:l){ if(is.na(y[i]) && x[[i]]>m) { m <- x[[i]] index <- i } } y[index] <- flag flag <- flag -1 m <- min(x) - 1 } return (y) } rev.rank <- function(x) { l <- length(x) return(l+1-x) } ###### Global Variables symbols <- c("DAXX.MI", "ETFMIB.MI", "LUSA.MI", "UST.MI", "EMKT.MI", "EMAAA.MI", "CRB.MI") from <- "1990-01-01" roc <- 2 in.rank <- 2 out.rank <- 4 ###### Run l <- length(symbols) # Dataset1 contains adj.prices of all series Dataset1 <- NULL for (i in 1:l){ myStock <- getSymbols(symbols[i], from = from, auto.assign = FALSE) if (is.null(Dataset1)) { myStock <- to.monthly(myStock) myStock <- myStock[,6] Dataset1 <- myStock }else{ myStock <- to.monthly(myStock) myStock <- myStock[,6] Dataset1 <- merge(Dataset1, myStock) } } colnames(Dataset1) <- symbols Dataset1 <- na.omit(Dataset1) rm(myStock) # Dataset2 contains logYields of all series Dataset2 <- NULL for (i in 1:l){ if(is.null(Dataset2)){ Dataset2 <- log(Dataset1[,1]/Lag(Dataset1[,1], k = 1)) * 100 } else{ y <- log(Dataset1[,i]/Lag(Dataset1[,i], k = 1))*100 Dataset2 <- merge(Dataset2, y) } } colnames(Dataset2) <- symbols Dataset2 <- na.omit(Dataset2) rm(y) # Dataset3 contains ROC of all series Dataset3 <- NULL for (i in 1:l){ if(is.null(Dataset3)){ Dataset3 <- log(Dataset1[,1]/Lag(Dataset1[,1], k = roc)) * 100 } else{ y <- log(Dataset1[,i]/Lag(Dataset1[,i], k = roc))*100 Dataset3 <- merge(Dataset3, y) } } colnames(Dataset3) <- symbols Dataset3 <- na.omit(Dataset3) rm(y) # Dataset4 contains rank of all mounth #Dataset4 <- NULL Dataset4 <- array(0, c(nrow(Dataset3),l)) Dataset4 <- zoo(Dataset4, time(Dataset3)) for (i in 1:nrow(Dataset3)) { y <- rev.rank(rank(Dataset3[i,])) for (j in 1:l) { Dataset4[i,j] <- y[j] } rm(y) } colnames(Dataset4) <- symbols Dataset4 <- na.omit(Dataset4) Dataset <- na.omit(merge(Dataset2, Dataset4)) ###### Run the strategy dt <- array(0, c(nrow(Dataset), l)) dt <- zoo(dt, time(Dataset)) for (i in 1:l) { if(Dataset[1,i+l]<in.rank+1) dt[2,i]=1 } for (j in 2:nrow(Dataset)-1) { for (i in 1:l) { if(Dataset[j,i+l]<in.rank+1) dt[j+1,i]=1 if((Dataset[j,i+l]<out.rank+1) && (dt[j,i]==1)) dt[j+1,i]=1 } } colnames(dt) <- symbols y <- array(0, c(nrow(Dataset),1)) y <- zoo(y, time(Dataset)) y <- as.xts(y) for (i in 1:nrow(Dataset)) { s <- 0 for (j in 1:l) { y[i,1] <- Dataset[i,j]*dt[i,j] + y[i,1] s <- s+dt[i,j] } y[i,1] <- y[i,1]/s } y <- na.omit(y) plot(cumsum(y), main = "Strategy") @plot(dt)
s.e.&o.
@ Paolo
Di Verona, non hai idea di quanti bei posti ci sono e che si notano solo andando in giro in bici. Qui il resoconto del viaggio più lungo fatto quest'anno.
Trend follower: in su' e giu', bene.
Si vince sempre surfando il trend: questo surf è in ranking , ecc . ecc.
con questo domani cosa si compera?
Abbiamo già venduto/comprato martedi scorso, torna il 31.prima non ho detto "goccia"
La medesima strategia usando un ROC a 3 mesi.
In sostanza il sistema regge. Il vero problema è inserire degli asset per i momenti difficili (stile 2008). Suggerimenti?
Materie prime o cose tipo soia caffè ecc? penso potrebbero dare una mano, ma non ho provato potrei dire delle corbellerie
IUSE.MI e un obbligazionario il più corto possibile, deciderai te se comprarlo davvero il monetario o tenerti i quattrini sul c/c.
La medesima strategia usando un ROC a 3 mesi.
In sostanza il sistema regge. Il vero problema è inserire degli asset per i momenti difficili (stile 2008). Suggerimenti?