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:


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) 
 
}
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
 
y <- seq(from = 0, to = 0.15,0.0001)
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
3
4
5
6
7
8
9
10
 
FER <- function()
{
 
  for (i in 1:length(y))
{
  x[i] <- FRE2(y[i])
  }
 
}
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).

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.