Bonjour,
Je dois construire une frontière efficiente avec 5 actifs.
J'ai construit un programme qui étant donné une rentabilité cible nous donne le portefeuille de risque minimal.
Voici ce programme:
Maintenant j'ai construit une séquence de valeur comprise entre 0 et 15% avec un pas de 0.0001 de la manière suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 FRE <- function(rentcible) { top.mat <- cbind(2*sigma.mat, mu.vec, rep(1, 5)) mid.vec <- c(mu.vec, 0, 0) bot.vec <- c(rep(1, 5), 0, 0) Ax.mat <- rbind(top.mat, mid.vec, bot.vec) b.vec <- c(rep(0, 5), rentcible, 1) z.mat <- solve(Ax.mat)%*%b.vec x.vec <- z.mat[1:5,] mu.px = as.numeric(crossprod(x.vec, mu.vec)) sig2.px = as.numeric(t(x.vec)%*%sigma.mat%*%x.vec) sig.px = sqrt(sig2.px) cat(sig.px) }
J'ai essayé de faire une fonction qui pour chaque valeur de y donne le portefeuille de risque minimal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 y <- seq(from = 0, to = 0.15,0.0001)
J'ai essayé de modifier plusieurs fois ce programme mais il y a toujours un message d'erreur lorsque je fais le plot(x,y).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 FER <- function() { for (i in 1:length(y)) { x[i] <- FRE2(y[i]) } }
De plus j'ai aussi essayé de faire plot.function mais sans succès.
Savez-vous d'où pourrait venir cette erreur?
Par avance merci.
Partager