Как я могу сделать сумму весов (для акций в моем портфеле) равной 1 при использовании генетического алгоритма? - PullRequest
0 голосов
/ 27 сентября 2019

Я запускаю генетический алгоритм в R, чтобы выбрать веса для акций в портфеле, имея самое высокое соотношение доходности / риска.Проблема в том, что веса должны суммироваться до 1, но код, который я пробовал до сих пор, не работает.Любая помощь будет оценена.

Это мой код:

normalise=function(v){v/sum(v)}
f=function(weights){
  weights=normalise(weights)
  (weights%*%returns)/(weights%*%variances)

}
GA=ga(type="real",fitness=f,lower=rep(0,length(positive)),
      upper=rep(1,length(positive)),maxiter=20000,run=300)

1 Ответ

0 голосов
/ 27 сентября 2019

Это потому, что вы на самом деле не «ремонтируете» решение: вы только сопоставляете его с возможным, прежде чем оценивать его.Что вы можете сделать на самом деле;но затем вы должны также отобразить решение GA, то есть нормализовать веса, которые возвращает GA.(См., Например, Maringer, D. and Oyewumi, O. (2007). Отслеживание индекса с ограниченными портфелями .)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...