Оптимизировать портфолио в PortfolioAnalytics без объекта xts
Подобный вопрос был задан некоторое время назад, но я хотел бы снова обсудить его с некоторыми дополнениями: создать эффективную границу в PortfolioAnalytics без объекта xts
Я пытаюсь использовать R Package PackageAnalytics с предопределенными допущениями на рынке капитала, включая ожидаемую доходность, стандартные отклонения и ковариационные матрицы, и поэтому не имею исторического потока возврата для базовых активов. В предыдущем связанном обсуждении я использовал следующий подход для определения пользовательских пользовательских моментов и вызова их при оптимизации:
# num_assets is the number of assets in the portfolio
momentargs = list()
momentargs$mu = matrix(arithmetic.return.vector, ncol=1)
momentargs$sigma = matrix(cov.matrix, nrow=num_assets, ncol=num_assets)
optimize.portfolio(R=arithmetic.return.vector, portfolio, momentargs=momentargs)
Где arithmetic.return.vector - вектор ожидаемых доходов для различных активов, а cov.matrix - симметричная ковариационная матрица. Когда я запускаю optimize.portfolio, я могу найти максимальный возврат портфеля, но когда я пытаюсь найти минимальное отклонение или максимальное отношение Шарпа, функция optimize.portfolio выдает следующую ошибку:
objective name var generated an error or warning: Error in checkData(R, method = "xts", ...) :
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'.
Оптимизация будет фактически продолжаться, но решение покажет NA для объективной меры StdDev. Есть идеи, что происходит?