Блог им. SciFi
Optimal Weights: BANE ALRS TGKA GMKN RUALR PHOR AKRN ROSN OFCB 0.0818 0.0623 0.1664 0.0500 0.1064 0.1169 0.0662 0.0500 0.3000То есть банка Открытие должно быть 30%, а Русала 10%. Максимальная просадка при этом 5%.
Optimal Weights: BANE ALRS TGKA GMKN RUALR PHOR AKRN ROSN OFCB 0.0921 0.1090 0.1107 0.0772 0.0500 0.1243 0.1238 0.1962 0.1168То есть теперь уже доля OFCB всего 12%, а Русала 5%. Максимальная просадка получается 17%.
#install.packages("PortfolioAnalytics") #install.packages("tseries") #install.packages("quantmod") #install.packages("rusquant", repos="http://R-Forge.R-project.org") #install.packages("DEoptim") #install.packages("ROI") # Установка пакетов. Она не требуется, если уже все установлено. library(PortfolioAnalytics) library(quantmod) library(rusquant) library(DEoptim) library(ROI) require(ROI.plugin.glpk) require(ROI.plugin.quadprog) rm(list = ls()) # Очистка среды R от лишних переменных в памяти, если требуется fund.names <- c("BANE", "ALRS", "TGKA", "GMKN", "RUALR", "PHOR", "AKRN", "ROSN", "OFCB") # Создаем массив из тикеров, для которых будем получать данные if ( ! exists("BANE") ) { getSymbols(fund.names, src = "Finam", from = "2012-01-01") # Получение котировок } prices.data <- merge(BANE[,4], ALRS[,4], TGKA[,4], GMKN[,4], RUALR[,4], PHOR[,4], AKRN[,4], ROSN[,4], OFCB[,4]) returns.data <- CalculateReturns(prices.data) returns.data <- na.omit(returns.data) colnames(returns.data) <- fund.names # Подготовка данных pspec <- portfolio.spec(assets=fund.names) pspec <- add.constraint(portfolio=pspec, type="weight_sum", min_sum=1, max_sum=1) pspec <- add.constraint(portfolio=pspec, type="box", min=0.05, max=0.3) pspec <- add.objective(portfolio=pspec, type="risk", name="var") opt_minvar <- optimize.portfolio(R=returns.data, portfolio=pspec,optimize_method="ROI", trace=TRUE) print(opt_minvar) percentage <- opt_minvar$weights * 100 print(percentage) # Оптимизация портфеля и вывод весов portfolio.returns <- Return.portfolio(returns.data, weights = opt_minvar$weights) print("Portfolio return mean:") print(mean(portfolio.returns)) # Дневная доходность портфеля и среднее от нее print(Return.annualized(returns.data, geometric=FALSE)) # Средняя годовая доходность print("Table of drawdowns:") print(table.Drawdowns(portfolio.returns, top = 5, digits = 4)) # Таблица просадок print("Max drawdown:") print(maxDrawdown(portfolio.returns)) # Максимальная просадка chart.Drawdown(portfolio.returns, geometric = TRUE, legend.loc = "bottomleft", ylim=c(-0.2, 0.2)) # Просадки
Ошибка: paste0(«package:», plugin) %in% search() || requireNamespace(plugin,… не TRUE
Не знаете как победить?Вдобавок: Предупреждения:
1: В library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :
нет пакета под названием ‘ROI.plugin.glpk’
2: В library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :
нет пакета под названием ‘ROI.plugin.quadprog’
Не работает это в нашей стране. Дадут инвестиций, а акция ещё и припадёт. Да и куда инвестировать? Мой Мурманск постепенно умирает. Ничего не строится, народ сваливает.
Вот если делёжка начнётся, передел так сказать. Ещё мне не нравится их агрессивная политика выбивания долгов. Я уже на mfd писал.Это бред наезжать на депутатов и ментов. Это сумасшествие.