Je reçois l'erreur suivante du package d'analyse de portefeuille.PortfolioAnalytics Les noms de lignes d'erreur ne datent pas
Error in checkData(R) :
The data cannot be converted into a time series. If you are trying to pass in names from a data object with one column, you should use the form 'data[rows, columns, drop = FALSE]'. Rownames should have standard date formats, such as '1985-03-15'.
L'ensemble de données J'utilise des données simulées est
> df
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
[1,] 0 1 0 1 0 0 0 1 1 0
[2,] 0 1 0 0 1 1 1 1 1 1
[3,] 1 0 0 0 0 0 0 1 1 0
[4,] 1 0 1 1 1 0 0 1 0 1
[5,] 0 0 1 0 1 0 1 1 1 0
[6,] 0 1 0 1 0 1 1 0 1 1
[7,] 1 0 0 0 0 1 1 1 1 0
[8,] 0 0 1 1 0 0 1 1 0 1
[9,] 1 0 0 0 0 1 1 1 1 0
[10,] 0 1 1 0 0 1 0 1 0 0
Je mets les contraintes de portefeuille pour être
returns = as.matrix(df)
> funds = colnames(df)
> init.portfolio <- portfolio.spec(assets = funds)
> init.portfolio <- add.constraint(portfolio = init.portfolio, type = "full_investment")
> init.portfolio <- add.constraint(portfolio = init.portfolio, type = "long_only")
> minSD.portfolio <- add.objective(portfolio=init.portfolio,
+ type="risk",
+ name="StdDev")
> minSD.opt <- optimize.portfolio(R = df, portfolio = minSD.portfolio,
+ optimize_method = "ROI", trace = TRUE)
Error in checkData(R) :
The data cannot be converted into a time series. If you are trying to pass in names from a data object with one column, you should use the form 'data[rows, columns, drop = FALSE]'. Rownames should have standard date formats, such as '1985-03-15'.
Comment puis-je corriger cette erreur. DF est une simulation des rendements d'une période. Donc, ils sont tous à 100% ou 0%, et pour la même période. Je peux ajouter une variable de date si je dois en tant que noms de rangée, mais je ne sais pas comment. J'ai essayé
> rownames(df) = as.Date(c("Jan", rep(nrow(df))))
Error in charToDate(x) :
character string is not in a standard unambiguous format
Quelqu'un peut-il m'aider avec cette erreur? Merci
Ce sont des résultats de paris simulés, qui ont des corrélations sur les victoires. J'essaie d'obtenir un ratio de sharpe max (retours/SD) pour les paris. Était en difficulté avec l'optimisation. http://quant.stackexchange.com/questions/22208/portfolio-optimization-with-equal-weight-for-assets-selected – JB17
Le problème semble être qu'en raison des contraintes sur les résultats de paris, 'cov (df) "aura tendance à être singulier ou presque singulier. Les contraintes sur df incluent des valeurs limites à 0 ou 1, exigeant que deux colonnes ne soient pas égales, et, apparemment, que le nombre de 0 soit à peu près le même que le nombre de 1. Vous pouvez essayer d'éviter cela en ayant un peu plus de lignes que de colonnes. A titre d'exemple, si vous utilisez uniquement les colonnes X2 à X9 en définissant 'df <- df [, 2: 9]', optimize.portfolio devrait vous donner un résultat. En général, plus le rapport entre le nombre de rangées et le nombre de colonnes est grand, mieux c'est. – WaltS
Merci pour cette information. La base de données plus grande a 1000 colonnes et 500 lignes, donc je vais faire cet ajustement – JB17