#fields needed
fieldRets <- "PX_last"
dateStart <- as.Date("2016-01-01")
dateEnd <- as.Date("2022-05-31")
window <- 24
Get All Price Data
#Get Prices
SPY_Prices <- bdh(
SPY_Tickers,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
SPY_Prices <-
lapply(SPY_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
SPY_Prices <- do.call(merge, SPY_Prices)
SPY_Prices <- SPY_Prices[, 1]
ME_Prices <- bdh(
Media_Entertainment,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
ME_Prices <-
lapply(ME_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
ME_Prices <- do.call(merge, ME_Prices)
ME_Prices[is.na(ME_Prices)] <- 0
TS_Prices <- bdh(
Telecommunication_Services,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
TS_Prices <-
lapply(TS_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
TS_Prices <- do.call(merge, TS_Prices)
TS_Prices[is.na(TS_Prices)] <- 0
AC_Prices <- bdh(
Automobiles_Components,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
AC_Prices <-
lapply(AC_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
AC_Prices <- do.call(merge, AC_Prices)
AC_Prices[is.na(AC_Prices)] <- 0
CDA_Prices <- bdh(
Consumer_Durables_Apparel,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
CDA_Prices <-
lapply(CDA_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
CDA_Prices <- do.call(merge, CDA_Prices)
CDA_Prices[is.na(CDA_Prices)] <- 0
CS_Prices <- bdh(
Consumer_Services,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
CS_Prices <-
lapply(CS_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
CS_Prices <- do.call(merge, CS_Prices)
CS_Prices[is.na(CS_Prices)] <- 0
R_Prices <- bdh(
Retailing,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
R_Prices <-
lapply(R_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
R_Prices <- do.call(merge, R_Prices)
R_Prices[is.na(R_Prices)] <- 0
FSR_Prices <- bdh(
Food_StaplesRetailing,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
FSR_Prices <-
lapply(FSR_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
FSR_Prices <- do.call(merge, FSR_Prices)
FSR_Prices[is.na(FSR_Prices)] <- 0
FBT_Prices <- bdh(
Food_Beverage_Tobacco,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
FBT_Prices <-
lapply(FBT_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
FBT_Prices <- do.call(merge, FBT_Prices)
FBT_Prices[is.na(FBT_Prices)] <- 0
HPP_Prices <- bdh(
Household_Personal_Products,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
HPP_Prices <-
lapply(HPP_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
HPP_Prices <- do.call(merge, HPP_Prices)
HPP_Prices[is.na(HPP_Prices)] <- 0
E_Prices <- bdh(
Energy,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
E_Prices <-
lapply(E_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
E_Prices <- do.call(merge, E_Prices)
E_Prices[is.na(E_Prices)] <- 0
B_Prices <- bdh(
Banks,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
B_Prices <-
lapply(B_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
B_Prices <- do.call(merge, B_Prices)
B_Prices[is.na(B_Prices)] <- 0
DF_Prices <- bdh(
Diversified_Financials,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
DF_Prices <-
lapply(DF_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
DF_Prices <- do.call(merge, DF_Prices)
DF_Prices[is.na(DF_Prices)] <- 0
I_Prices <- bdh(
Insurance,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
I_Prices <-
lapply(I_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
I_Prices <- do.call(merge, I_Prices)
I_Prices[is.na(I_Prices)] <- 0
HCES_Prices <- bdh(
HealthCare_Equipment_Services,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
HCES_Prices <-
lapply(HCES_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
HCES_Prices <- do.call(merge, HCES_Prices)
HCES_Prices[is.na(HCES_Prices)] <- 0
PB_Prices <- bdh(
Pharmaceuticals_Biotechnology,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
PB_Prices <-
lapply(PB_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
PB_Prices <- do.call(merge, PB_Prices)
PB_Prices[is.na(PB_Prices)] <- 0
CG_Prices <- bdh(
Capital_Goods,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
CG_Prices <-
lapply(CG_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
CG_Prices <- do.call(merge, CG_Prices)
CG_Prices[is.na(CG_Prices)] <- 0
CPS_Prices <- bdh(
Commercial_Professional_Services,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
CPS_Prices <-
lapply(CPS_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
CPS_Prices <- do.call(merge, CPS_Prices)
CPS_Prices[is.na(CPS_Prices)] <- 0
T_Prices <- bdh(
Transportation,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
T_Prices <-
lapply(T_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
T_Prices <- do.call(merge, T_Prices)
T_Prices[is.na(T_Prices)] <- 0
S_Prices <- bdh(
Semiconductors,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
S_Prices <-
lapply(S_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
S_Prices <- do.call(merge, S_Prices)
S_Prices[is.na(S_Prices)] <- 0
SAAS_Prices <- bdh(
Software,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
SAAS_Prices <-
lapply(SAAS_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
SAAS_Prices <- do.call(merge, SAAS_Prices)
SAAS_Prices[is.na(SAAS_Prices)] <- 0
THE_Prices <- bdh(
Technology_Hardware_Equipment,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
THE_Prices <-
lapply(THE_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
THE_Prices <- do.call(merge, THE_Prices)
THE_Prices[is.na(THE_Prices)] <- 0
M_Prices <- bdh(
Materials,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
M_Prices <-
lapply(M_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
M_Prices <- do.call(merge, M_Prices)
M_Prices[is.na(M_Prices)] <- 0
RE_Prices <- bdh(
Real_Estate,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
RE_Prices <-
lapply(RE_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
RE_Prices <- do.call(merge, RE_Prices)
RE_Prices[is.na(RE_Prices)] <- 0
U_Prices <- bdh(
Utilities,
fieldRets,
start.date = dateStart,
end.date = dateEnd,
options = c("currency" = "USD")
)
U_Prices <-
lapply(U_Prices, function(d)
xts(d[, -1], order.by = as.Date(d[, 1])))
U_Prices <- do.call(merge, U_Prices)
U_Prices[is.na(U_Prices)] <- 0
Compute Returns
#get returns
ME_Returns <- ROC(ME_Prices)
ME_Returns[is.na(ME_Returns)] <- 0
ME_Returns[!is.finite(ME_Returns)] <- NA
TS_Returns <- ROC(TS_Prices)
TS_Returns[is.na(TS_Returns)] <- 0
TS_Returns[!is.finite(TS_Returns)] <- NA
AC_Returns <- ROC(AC_Prices)
AC_Returns[is.na(AC_Returns)] <- 0
AC_Returns[!is.finite(AC_Returns)] <- NA
CDA_Returns <- ROC(CDA_Prices)
CDA_Returns[is.na(CDA_Returns)] <- 0
CDA_Returns[!is.finite(CDA_Returns)] <- NA
CS_Returns <- ROC(CS_Prices)
CS_Returns[is.na(CS_Returns)] <- 0
CS_Returns[!is.finite(CS_Returns)] <- NA
R_Returns <- ROC(R_Prices)
R_Returns[is.na(R_Returns)] <- 0
R_Returns[!is.finite(R_Returns)] <- NA
FSR_Returns <- ROC(FSR_Prices)
FSR_Returns[is.na(FSR_Returns)] <- 0
FSR_Returns[!is.finite(FSR_Returns)] <- NA
FBT_Returns <- ROC(FBT_Prices)
FBT_Returns[is.na(FBT_Returns)] <- 0
FBT_Returns[!is.finite(FBT_Returns)] <- NA
HPP_Returns <- ROC(HPP_Prices)
HPP_Returns[is.na(HPP_Returns)] <- 0
HPP_Returns[!is.finite(HPP_Returns)] <- NA
E_Returns <- ROC(E_Prices)
E_Returns[is.na(E_Returns)] <- 0
E_Returns[!is.finite(E_Returns)] <- NA
B_Returns <- ROC(B_Prices)
B_Returns[is.na(B_Returns)] <- 0
B_Returns[!is.finite(B_Returns)] <- NA
DF_Returns <- ROC(DF_Prices)
DF_Returns[is.na(DF_Returns)] <- 0
DF_Returns[!is.finite(DF_Returns)] <- NA
I_Returns <- ROC(I_Prices)
I_Returns[is.na(I_Returns)] <- 0
I_Returns[!is.finite(I_Returns)] <- NA
HCES_Returns <- ROC(HCES_Prices)
HCES_Returns[is.na(HCES_Returns)] <- 0
HCES_Returns[!is.finite(HCES_Returns)] <- NA
PB_Returns <- ROC(PB_Prices)
PB_Returns[is.na(PB_Returns)] <- 0
PB_Returns[!is.finite(PB_Returns)] <- NA
CG_Returns <- ROC(CG_Prices)
CG_Returns[is.na(CG_Returns)] <- 0
CG_Returns[!is.finite(CG_Returns)] <- NA
CPS_Returns <- ROC(CPS_Prices)
CPS_Returns[is.na(CPS_Returns)] <- 0
CPS_Returns[!is.finite(CPS_Returns)] <- NA
T_Returns <- ROC(T_Prices)
T_Returns[is.na(T_Returns)] <- 0
T_Returns[!is.finite(T_Returns)] <- NA
S_Returns <- ROC(S_Prices)
S_Returns[is.na(S_Returns)] <- 0
S_Returns[!is.finite(S_Returns)] <- NA
SAAS_Returns <- ROC(SAAS_Prices)
SAAS_Returns[is.na(SAAS_Returns)] <- 0
SAAS_Returns[!is.finite(SAAS_Returns)] <- NA
THE_Returns <- ROC(THE_Prices)
THE_Returns[is.na(THE_Returns)] <- 0
THE_Returns[!is.finite(THE_Returns)] <- NA
M_Returns <- ROC(M_Prices)
M_Returns[is.na(M_Returns)] <- 0
M_Returns[!is.finite(M_Returns)] <- NA
RE_Returns <- ROC(RE_Prices)
RE_Returns[is.na(RE_Returns)] <- 0
RE_Returns[!is.finite(RE_Returns)] <- NA
U_Returns <- ROC(U_Prices)
U_Returns[is.na(U_Returns)] <- 0
U_Returns[!is.finite(U_Returns)] <- NA
SPY_Returns <- ROC(SPY_Prices)
SPY_Returns[is.na(SPY_Returns)] <- 0
names(SPY_Returns) <- "S&P 500"
Rebalanced Portfolio’s and Statistics
Media and Entertainment
#Media and Entertainment
ME_Equal_Weights <- rep(1 / ncol(ME_Returns), ncol(ME_Returns))
ME_Equal_Weight_Portfolio <-
Return.portfolio(ME_Returns, ME_Equal_Weights)
ME_Base_Port <- Return.portfolio(ME_Returns, ME_Weight)
ME_Portt <- portfolio.spec(names(ME_Returns))
ME_Portt <-
add.constraint(ME_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
ME_Portt <- add.constraint(ME_Portt, type = "long_only")
ME_Portt <-
add.constraint(ME_Portt,
type = "box",
min = 0,
max = .5)
ME_Portt <- add.objective(ME_Portt, type = "return", name = "mean")
ME_rp <- random_portfolios_v2(ME_Portt, 1000000, "simplex", TRUE)
ME_nrow <- nrow(ME_rp)
ME_nrow <- as.data.frame(ME_nrow)
colnames(ME_nrow) <- "Media and Entertainment"
rownames(ME_nrow) <- "Number of Portfolio's"
ME_nrow
## Media and Entertainment
## Number of Portfolio's 415255
ME_opt_rebal <- optimize.portfolio.rebalancing(
ME_Returns,
ME_Portt,
optimize_method = "DEoptim",
rp = ME_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
ME_RebalanceWeights <- extractWeights(ME_opt_rebal)
ME_rebal_returns <-
Return.portfolio(ME_Returns, weights = ME_RebalanceWeights)
names(ME_rebal_returns) <- "Rebalanced Portfolio"
names(ME_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(ME_Base_Port) <- "Index Weighted Portfolio"
ME_Rebal_VS_reg <-
cbind(ME_rebal_returns,
ME_Equal_Weight_Portfolio,
ME_Base_Port,
SPY_Returns)
ME_Rebal_VS_reg[!is.finite(ME_Rebal_VS_reg)] <- NA
ME_Rebal_VS_reg <- na.omit(ME_Rebal_VS_reg)
chart.Weights(ME_opt_rebal)
colSums(ME_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.1211961 0.3405868 0.3696730
## S.P.500
## 0.7568601
ME_CBIND_Cummalative <- cumsum(ME_Rebal_VS_reg)
ME_CBIND_Tail <- tail(ME_CBIND_Cummalative, 1)
ME_CBIND_Tail$S.P.500 <- NULL
ME_CBIND_Tail <- as.data.frame(ME_CBIND_Tail)
rownames(ME_CBIND_Tail) <- "Media Entertainment"
highchart(type = "stock") %>%
hc_add_series(ME_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(ME_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(ME_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(ME_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Media and Entertainment Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(ME_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(ME_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(ME_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(ME_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Media and Entertainment Portfolio's")
#Standard Deviation
ME_Sd <- rollapply(ME_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
ME_Sd <- round(ME_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Media and Entertainment Portfolio's") %>%
hc_add_series(ME_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(ME_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(ME_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(ME_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
ME_Sd_df <- as.data.frame(ME_Sd)
ME_Sd_df <- rowid_to_column(ME_Sd_df)
ME_Sd_df <- ME_Sd_df[, -1]
hchart(density(ME_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(ME_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(ME_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(ME_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Media and Entertainment Portfolio's")
#Skewness
ME_Skew <-
rollapply(ME_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
ME_Skew <- round(ME_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Media and Entertainment Portfolio's") %>%
hc_add_series(ME_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(ME_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(ME_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(ME_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(ME_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(ME_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(ME_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(ME_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Media and Entertainment Portfolio's")
#Kurtosis
ME_Kurtosis <- rollapply(ME_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
ME_Kurtosis <- round(ME_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Media and Entertainment Portfolio's") %>%
hc_add_series(ME_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(ME_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(ME_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(ME_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(ME_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(ME_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(ME_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(ME_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Media and Entertainment Portfolio's")
Telecommunication Services
#Telecommunciation Services
TS_Equal_Weights <- rep(1 / ncol(TS_Returns), ncol(TS_Returns))
TS_Equal_Weight_Portfolio <-
Return.portfolio(TS_Returns, TS_Equal_Weights)
TS_Base_Port <- Return.portfolio(TS_Returns, TS_Weight)
TS_Portt <- portfolio.spec(names(TS_Returns))
TS_Portt <-
add.constraint(TS_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
TS_Portt <- add.constraint(TS_Portt, type = "long_only")
TS_Portt <-
add.constraint(TS_Portt,
type = "box",
min = 0,
max = .5)
TS_Portt <- add.objective(TS_Portt, type = "return", name = "mean")
TS_rp <- random_portfolios_v2(TS_Portt, 1000000, "simplex", TRUE)
TS_nrow <- nrow(TS_rp)
TS_nrow <- as.data.frame(TS_nrow)
colnames(TS_nrow) <- "Telecommunciation Services"
rownames(TS_nrow) <- "Number of Portfolio's"
TS_nrow
## Telecommunciation Services
## Number of Portfolio's 124129
TS_opt_rebal <- optimize.portfolio.rebalancing(
TS_Returns,
TS_Portt,
optimize_method = "DEoptim",
rp = TS_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
TS_RebalanceWeights <- extractWeights(TS_opt_rebal)
TS_rebal_returns <-
Return.portfolio(TS_Returns, weights = TS_RebalanceWeights)
names(TS_rebal_returns) <- "Rebalanced Portfolio"
names(TS_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(TS_Base_Port) <- "Index Weighted Portfolio"
TS_Rebal_VS_reg <-
cbind(TS_rebal_returns,
TS_Equal_Weight_Portfolio,
TS_Base_Port,
SPY_Returns)
TS_Rebal_VS_reg[!is.finite(TS_Rebal_VS_reg)] <- NA
TS_Rebal_VS_reg <- na.omit(TS_Rebal_VS_reg)
chart.Weights(TS_opt_rebal)
colSums(TS_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## -0.02328318 0.22798542 0.19659410
## S.P.500
## 0.75686014
TS_CBIND_Cummalative <- cumsum(TS_Rebal_VS_reg)
TS_CBIND_Tail <- tail(TS_CBIND_Cummalative, 1)
TS_CBIND_Tail$S.P.500 <- NULL
TS_CBIND_Tail <- as.data.frame(TS_CBIND_Tail)
rownames(TS_CBIND_Tail) <- "Telecommunciation Services"
highchart(type = "stock") %>%
hc_add_series(TS_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(TS_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(TS_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(TS_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Telecomunication Services Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(TS_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(TS_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(TS_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(TS_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Deviation Frequency Table for Telecomunication Services Portfolio's")
#Standard Deviation
TS_Sd <- rollapply(TS_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
TS_Sd <- round(TS_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Telecommunication Services Portfolio's") %>%
hc_add_series(TS_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(TS_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(TS_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(TS_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
TS_Sd_df <- as.data.frame(TS_Sd)
TS_Sd_df <- rowid_to_column(TS_Sd_df)
TS_Sd_df <- TS_Sd_df[, -1]
hchart(density(TS_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(TS_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(TS_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(TS_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Telecomunication Services Portfolio's")
#Skewness
TS_Skew <-
rollapply(TS_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
TS_Skew <- round(TS_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Telecommunication Services Portfolio's") %>%
hc_add_series(TS_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(TS_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(TS_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(TS_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(TS_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(TS_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(TS_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(TS_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Telecomunication Services Portfolio's")
#Kurtosis
TS_Kurtosis <- rollapply(TS_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
TS_Kurtosis <- round(TS_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Telecommunication Services Portfolio's") %>%
hc_add_series(TS_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(TS_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(TS_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(TS_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(TS_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(TS_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(TS_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(TS_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Telecomunication Services Portfolio's")
Automobiles and components
#Automobiles and Components
AC_Equal_Weights <- rep(1 / ncol(AC_Returns), ncol(AC_Returns))
AC_Equal_Weight_Portfolio <-
Return.portfolio(AC_Returns, AC_Equal_Weights)
AC_Base_Port <- Return.portfolio(AC_Returns, AC_Weight)
AC_Portt <- portfolio.spec(names(AC_Returns))
AC_Portt <-
add.constraint(AC_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
AC_Portt <- add.constraint(AC_Portt, type = "long_only")
AC_Portt <-
add.constraint(AC_Portt,
type = "box",
min = 0,
max = .5)
AC_Portt <- add.objective(AC_Portt, type = "return", name = "mean")
AC_rp <- random_portfolios_v2(AC_Portt, 1000000, "simplex", TRUE)
AC_nrow <- nrow(AC_rp)
AC_nrow <- as.data.frame(AC_nrow)
colnames(AC_nrow) <- "Automobiles and Components"
rownames(AC_nrow) <- "Number of Portfolio's"
AC_nrow
## Automobiles and Components
## Number of Portfolio's 177368
AC_opt_rebal <- optimize.portfolio.rebalancing(
AC_Returns,
AC_Portt,
optimize_method = "DEoptim",
rp = AC_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
AC_RebalanceWeights <- extractWeights(AC_opt_rebal)
AC_rebal_returns <-
Return.portfolio(AC_Returns, weights = AC_RebalanceWeights)
names(AC_rebal_returns) <- "Rebalanced Portfolio"
names(AC_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(AC_Base_Port) <- "Index Weighted Portfolio"
Ac_Rebal_VS_reg <-
cbind(AC_rebal_returns,
AC_Equal_Weight_Portfolio,
AC_Base_Port,
SPY_Returns)
Ac_Rebal_VS_reg[!is.finite(Ac_Rebal_VS_reg)] <- NA
Ac_Rebal_VS_reg <- na.omit(Ac_Rebal_VS_reg)
chart.Weights(AC_opt_rebal)
colSums(Ac_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 1.1215450 1.2144326 2.6575514
## S.P.500
## 0.7568601
AC_CBIND_Cummalative <- cumsum(Ac_Rebal_VS_reg)
AC_CBIND_Tail <- tail(AC_CBIND_Cummalative, 1)
AC_CBIND_Tail$S.P.500 <- NULL
AC_CBIND_Tail <- as.data.frame(AC_CBIND_Tail)
rownames(AC_CBIND_Tail) <- "Automobiles and Components"
highchart(type = "stock") %>%
hc_add_series(AC_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(AC_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(AC_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(AC_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Automobile and Components Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(AC_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(AC_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(AC_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(AC_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Automobile and Components Portfolio's")
#Standard Deviation
AC_Sd <- rollapply(Ac_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
AC_Sd <- round(AC_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Automobile and Components Portfolio's") %>%
hc_add_series(AC_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(AC_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(AC_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(AC_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
AC_Sd_df <- as.data.frame(AC_Sd)
AC_Sd_df <- rowid_to_column(AC_Sd_df)
AC_Sd_df <- AC_Sd_df[, -1]
hchart(density(AC_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(AC_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(AC_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(AC_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Automobile and Components Portfolio's")
#Skewness
AC_Skew <-
rollapply(Ac_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
AC_Skew <- round(AC_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Automobiles and Components Portfolio's") %>%
hc_add_series(AC_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(AC_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(AC_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(AC_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(AC_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(AC_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(AC_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(AC_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Automobile and Components Portfolio's")
#Kurtosis
AC_Kurtosis <- rollapply(Ac_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
AC_Kurtosis <- round(AC_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Automobiles and Components Portfolio's") %>%
hc_add_series(AC_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(AC_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(AC_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(AC_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(AC_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(AC_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(AC_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(AC_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Automobile and Components Portfolio's")
Consumer Durables and Apparel
#Consumer Durables and Apparel
CDA_Equal_Weights <- rep(1 / ncol(CDA_Returns), ncol(CDA_Returns))
CDA_Equal_Weight_Portfolio <-
Return.portfolio(CDA_Returns, CDA_Equal_Weights)
## Warning in Return.portfolio(CDA_Returns, CDA_Equal_Weights): NA's detected:
## filling NA's with zeros
CDA_Base_Port <- Return.portfolio(CDA_Returns, CDA_Weights)
## Warning in Return.portfolio(CDA_Returns, CDA_Weights): NA's detected: filling
## NA's with zeros
CDA_Portt <- portfolio.spec(names(CDA_Returns))
CDA_Portt <-
add.constraint(CDA_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
CDA_Portt <- add.constraint(CDA_Portt, type = "long_only")
CDA_Portt <-
add.constraint(CDA_Portt,
type = "box",
min = 0,
max = .5)
CDA_Portt <-
add.objective(CDA_Portt, type = "return", name = "mean")
CDA_rp <- random_portfolios_v2(CDA_Portt, 1000000, "simplex", TRUE)
CDA_nrow <- nrow(CDA_rp)
CDA_nrow <- as.data.frame(CDA_nrow)
colnames(CDA_nrow) <- "Consumer Durables and Apparel"
rownames(CDA_nrow) <- "Number of Portfolio's"
CDA_nrow
## Consumer Durables and Apparel
## Number of Portfolio's 378332
CDA_opt_rebal <- optimize.portfolio.rebalancing(
CDA_Returns,
CDA_Portt,
optimize_method = "DEoptim",
rp = CDA_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
CDA_RebalanceWeights <- extractWeights(CDA_opt_rebal)
CDA_rebal_returns <-
Return.portfolio(CDA_Returns, weights = CDA_RebalanceWeights)
## Warning in Return.portfolio(CDA_Returns, weights = CDA_RebalanceWeights): NA's
## detected: filling NA's with zeros
## Warning in Return.portfolio.geometric(R = R, weights = weights, wealth.index =
## wealth.index, : The weights for one or more periods do not sum up to 1: assuming
## a return of 0 for the residual weights
names(CDA_rebal_returns) <- "Rebalanced Portfolio"
names(CDA_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(CDA_Base_Port) <- "Index Weighted Portfolio"
CDA_Rebal_VS_reg <-
cbind(CDA_rebal_returns,
CDA_Equal_Weight_Portfolio,
CDA_Base_Port,
SPY_Returns)
CDA_Rebal_VS_reg[!is.finite(CDA_Rebal_VS_reg)] <- NA
CDA_Rebal_VS_reg <- na.omit(CDA_Rebal_VS_reg)
chart.Weights(CDA_opt_rebal)
colSums(CDA_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.1399966 0.1539567 -0.3296303
## S.P.500
## 0.7568601
CDA_CBIND_Cummalative <- cumsum(CDA_Rebal_VS_reg)
CDA_CBIND_Tail <- tail(CDA_CBIND_Cummalative, 1)
CDA_CBIND_Tail$S.P.500 <- NULL
CDA_CBIND_Tail <- as.data.frame(CDA_CBIND_Tail)
rownames(CDA_CBIND_Tail) <- "Consumer Durables and Apparrel"
highchart(type = "stock") %>%
hc_add_series(CDA_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(CDA_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(CDA_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(CDA_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Consumer Durable and Apparel Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(CDA_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CDA_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CDA_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CDA_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Consumer Durabables and Apperal Portfolio's")
#Standard Deviation
CDA_Sd <- rollapply(CDA_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
CDA_Sd <- round(CDA_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Consumer Durabables and Apperal Portfolio's") %>%
hc_add_series(CDA_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(CDA_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(CDA_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(CDA_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
CDA_Sd_df <- as.data.frame(CDA_Sd)
CDA_Sd_df <- rowid_to_column(CDA_Sd_df)
CDA_Sd_df <- CDA_Sd_df[, -1]
hchart(density(CDA_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CDA_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CDA_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CDA_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Consumer Durabables and Apperal Portfolio's")
#Skewness
CDA_Skew <-
rollapply(CDA_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
CDA_Skew <- round(CDA_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Consumer Durables and Aparrel Portfolio's") %>%
hc_add_series(CDA_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(CDA_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(CDA_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(CDA_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(CDA_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CDA_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CDA_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CDA_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Consumer Durabables and Apperal Portfolio's")
#Kurtosis
CDA_Kurtosis <- rollapply(CDA_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
CDA_Kurtosis <- round(CDA_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Consumer Durables and Aparrel Portfolio's") %>%
hc_add_series(CDA_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(CDA_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(CDA_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(CDA_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(CDA_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CDA_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CDA_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CDA_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Consumer Durabables and Apperal Portfolio's")
Consumer Services
#Consumer Services
CS_Equal_Weights <- rep(1 / ncol(CS_Returns), ncol(CS_Returns))
CS_Equal_Weight_Portfolio <-
Return.portfolio(CS_Returns, CS_Equal_Weights)
CS_Base_Port <- Return.portfolio(CS_Returns, CS_Weights)
CS_Portt <- portfolio.spec(names(CS_Returns))
CS_Portt <-
add.constraint(CS_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
CS_Portt <- add.constraint(CS_Portt, type = "long_only")
CS_Portt <-
add.constraint(CS_Portt,
type = "box",
min = 0,
max = .5)
CS_Portt <- add.objective(CS_Portt, type = "return", name = "mean")
CS_rp <- random_portfolios_v2(CS_Portt, 1000000, "simplex", TRUE)
CS_nrow <- nrow(CS_rp)
CS_nrow <- as.data.frame(CS_nrow)
colnames(CS_nrow) <- "Consumer Services"
rownames(CS_nrow) <- "Number of Portfolio's"
CS_nrow
## Consumer Services
## Number of Portfolio's 393487
CS_opt_rebal <- optimize.portfolio.rebalancing(
CS_Returns,
CS_Portt,
optimize_method = "DEoptim",
rp = CS_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
CS_RebalanceWeights <- extractWeights(CS_opt_rebal)
CS_rebal_returns <-
Return.portfolio(CS_Returns, weights = CS_RebalanceWeights)
names(CS_rebal_returns) <- "Rebalanced Portfolio"
names(CS_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(CS_Base_Port) <- "Index Weighted Portfolio"
CS_Rebal_VS_reg <-
cbind(CS_rebal_returns,
CS_Equal_Weight_Portfolio,
CS_Base_Port,
SPY_Returns)
CS_Rebal_VS_reg[!is.finite(CS_Rebal_VS_reg)] <- NA
CS_Rebal_VS_reg <- na.omit(CS_Rebal_VS_reg)
chart.Weights(CS_opt_rebal)
colSums(CS_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.1684071 0.3924852 0.5156997
## S.P.500
## 0.7568601
CS_CBIND_Cummalative <- cumsum(CS_Rebal_VS_reg)
CS_CBIND_Tail <- tail(CS_CBIND_Cummalative, 1)
CS_CBIND_Tail$S.P.500 <- NULL
CS_CBIND_Tail <- as.data.frame(CS_CBIND_Tail)
rownames(CS_CBIND_Tail) <- "Consumer Services"
highchart(type = "stock") %>%
hc_add_series(CS_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(CS_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(CS_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(CS_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Consumer Services Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(CS_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CS_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CS_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CS_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Consumer Services Portfolio's")
#Standard Deviation
CS_Sd <- rollapply(CS_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
CS_Sd <- round(CS_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Consumer Services Portfolio's") %>%
hc_add_series(CS_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(CS_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(CS_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(CS_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
CS_Sd_df <- as.data.frame(CS_Sd)
CS_Sd_df <- rowid_to_column(CS_Sd_df)
CS_Sd_df <- CS_Sd_df[, -1]
hchart(density(CS_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CS_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CS_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CS_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Consumer Services Portfolio's")
#Skewness
CS_Skew <-
rollapply(CS_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
CS_Skew <- round(CS_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Consumer Services Portfolio's") %>%
hc_add_series(CS_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(CS_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(CS_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(CS_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(CS_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CS_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CS_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CS_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Consumer Services Portfolio's")
#Kurtosis
CS_Kurtosis <- rollapply(CS_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
CS_Kurtosis <- round(CS_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Consumer Services Portfolio's") %>%
hc_add_series(CS_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(CS_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(CS_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(CS_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(CS_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CS_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CS_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CS_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Consumer Services Portfolio's")
Retail
#Retail
R_Equal_Weights <- rep(1 / ncol(R_Returns), ncol(R_Returns))
R_Equal_Weight_Portfolio <-
Return.portfolio(R_Returns, R_Equal_Weights)
R_Base_Port <- Return.portfolio(R_Returns, R_Weights)
R_Portt <- portfolio.spec(names(R_Returns))
R_Portt <-
add.constraint(R_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
R_Portt <- add.constraint(R_Portt, type = "long_only")
R_Portt <- add.constraint(R_Portt,
type = "box",
min = 0,
max = .5)
R_Portt <- add.objective(R_Portt, type = "return", name = "mean")
R_rp <- random_portfolios_v2(R_Portt, 1000000, "simplex", TRUE)
R_nrow <- nrow(R_rp)
R_nrow <- as.data.frame(R_nrow)
colnames(R_nrow) <- "Retailings"
rownames(R_nrow) <- "Number of Portfolio's"
R_nrow
## Retailings
## Number of Portfolio's 409915
R_opt_rebal <- optimize.portfolio.rebalancing(
R_Returns,
R_Portt,
optimize_method = "DEoptim",
rp = R_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
R_RebalanceWeights <- extractWeights(R_opt_rebal)
R_rebal_returns <-
Return.portfolio(R_Returns, weights = R_RebalanceWeights)
names(R_rebal_returns) <- "Rebalanced Portfolio"
names(R_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(R_Base_Port) <- "Index Weighted Portfolio"
R_Rebal_VS_reg <-
cbind(R_rebal_returns,
R_Equal_Weight_Portfolio,
R_Base_Port,
SPY_Returns)
R_Rebal_VS_reg[!is.finite(R_Rebal_VS_reg)] <- NA
R_Rebal_VS_reg <- na.omit(R_Rebal_VS_reg)
chart.Weights(R_opt_rebal)
colSums(R_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.4253585 0.7337022 0.7000368
## S.P.500
## 0.7568601
R_CBIND_Cummalative <- cumsum(R_Rebal_VS_reg)
R_CBIND_Tail <- tail(R_CBIND_Cummalative, 1)
R_CBIND_Tail$S.P.500 <- NULL
R_CBIND_Tail <- as.data.frame(R_CBIND_Tail)
rownames(R_CBIND_Tail) <- "Retail"
highchart(type = "stock") %>%
hc_add_series(R_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(R_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(R_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(R_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Retail Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(R_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(R_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(R_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(R_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Retail Portfolio's")
#Standard Deviation
R_Sd <- rollapply(R_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
R_Sd <- round(R_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Retail Portfolio's") %>%
hc_add_series(R_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(R_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(R_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(R_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
R_Sd_df <- as.data.frame(R_Sd)
R_Sd_df <- rowid_to_column(R_Sd_df)
R_Sd_df <- R_Sd_df[, -1]
hchart(density(R_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(R_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(R_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(R_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Retail Portfolio's")
#Skewness
R_Skew <-
rollapply(R_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
R_Skew <- round(R_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Retail Portfolio's") %>%
hc_add_series(R_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(R_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(R_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(R_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(R_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(R_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(R_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(R_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Retail Portfolio's")
#Kurtosis
R_Kurtosis <- rollapply(R_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
R_Kurtosis <- round(R_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Retail Portfolio's") %>%
hc_add_series(R_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(R_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(R_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(R_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(R_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(R_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(R_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(R_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Retail Portfolio's")
Food and Staples Retail
#Food and Staples Retail
FSR_Equal_Weights <- rep(1 / ncol(FSR_Returns), ncol(FSR_Returns))
FSR_Equal_Weight_Portfolio <-
Return.portfolio(FSR_Returns, FSR_Equal_Weights)
FSR_Base_Port <- Return.portfolio(FSR_Returns, FSR_Weights)
FSR_Portt <- portfolio.spec(names(FSR_Returns))
FSR_Portt <-
add.constraint(FSR_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
FSR_Portt <- add.constraint(FSR_Portt, type = "long_only")
FSR_Portt <-
add.constraint(FSR_Portt,
type = "box",
min = 0,
max = .5)
FSR_Portt <-
add.objective(FSR_Portt, type = "return", name = "mean")
FSR_rp <- random_portfolios_v2(FSR_Portt, 1000000, "simplex", TRUE)
FSR_nrow <- nrow(FSR_rp)
FSR_nrow <- as.data.frame(FSR_nrow)
colnames(FSR_nrow) <- "Food and Staples Retail"
rownames(FSR_nrow) <- "Number of Portfolio's"
FSR_nrow
## Food and Staples Retail
## Number of Portfolio's 177900
FSR_opt_rebal <- optimize.portfolio.rebalancing(
FSR_Returns,
FSR_Portt,
optimize_method = "DEoptim",
rp = FSR_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
FSR_RebalanceWeights <- extractWeights(FSR_opt_rebal)
FSR_rebal_returns <-
Return.portfolio(FSR_Returns, weights = FSR_RebalanceWeights)
names(FSR_rebal_returns) <- "Rebalanced Portfolio"
names(FSR_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(FSR_Base_Port) <- "Index Weighted Portfolio"
FSR_Rebal_VS_reg <-
cbind(FSR_rebal_returns,
FSR_Equal_Weight_Portfolio,
FSR_Base_Port,
SPY_Returns)
FSR_Rebal_VS_reg[!is.finite(FSR_Rebal_VS_reg)] <- NA
FSR_Rebal_VS_reg <- na.omit(FSR_Rebal_VS_reg)
chart.Weights(FSR_opt_rebal)
colSums(FSR_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.09030331 0.46761265 0.75931100
## S.P.500
## 0.75686014
FSR_CBIND_Cummalative <- cumsum(FSR_Rebal_VS_reg)
FSR_CBIND_Tail <- tail(FSR_CBIND_Cummalative, 1)
FSR_CBIND_Tail$S.P.500 <- NULL
FSR_CBIND_Tail <- as.data.frame(FSR_CBIND_Tail)
rownames(FSR_CBIND_Tail) <- "Food and Staples Retail"
highchart(type = "stock") %>%
hc_add_series(FSR_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(FSR_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(FSR_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(FSR_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Food Staples and Retail Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(FSR_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(FSR_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(FSR_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(FSR_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Food and Staples Retail Portfolio's")
#Standard Deviation
FSR_Sd <- rollapply(FSR_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
FSR_Sd <- round(FSR_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Food and Staples Retail Portfolio's") %>%
hc_add_series(FSR_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(FSR_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(FSR_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(FSR_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
FSR_Sd_df <- as.data.frame(FSR_Sd)
FSR_Sd_df <- rowid_to_column(FSR_Sd_df)
FSR_Sd_df <- FSR_Sd_df[, -1]
hchart(density(FSR_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(FSR_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(FSR_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(FSR_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Food and Staples Retail Portfolio's")
#Skewness
FSR_Skew <-
rollapply(FSR_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
FSR_Skew <- round(FSR_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Food and Staples Retail Portfolio's") %>%
hc_add_series(FSR_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(FSR_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(FSR_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(FSR_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(FSR_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(FSR_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(FSR_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(FSR_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Food and Staples Retail Portfolio's")
#Kurtosis
FSR_Kurtosis <- rollapply(FSR_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
FSR_Kurtosis <- round(FSR_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Food and Staples Retail Portfolio's") %>%
hc_add_series(FSR_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(FSR_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(FSR_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(FSR_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(FSR_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(FSR_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(FSR_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(FSR_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Food and Staples Retail Portfolio's")
Food, Beverage, and Tobacco
#Food, Beverage and Tobacco
FBT_Equal_Weights <- rep(1 / ncol(FBT_Returns), ncol(FBT_Returns))
FBT_Equal_Weight_Portfolio <-
Return.portfolio(FBT_Returns, FBT_Equal_Weights)
FBT_Base_Port <- Return.portfolio(FBT_Returns, FBT_Weights)
FBT_Portt <- portfolio.spec(names(FBT_Returns))
FBT_Portt <-
add.constraint(FBT_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
FBT_Portt <- add.constraint(FBT_Portt, type = "long_only")
FBT_Portt <-
add.constraint(FBT_Portt,
type = "box",
min = 0,
max = .5)
FBT_Portt <-
add.objective(FBT_Portt, type = "return", name = "mean")
FBT_rp <- random_portfolios_v2(FBT_Portt, 1000000, "simplex", TRUE)
FBT_nrow <- nrow(FBT_rp)
FBT_nrow <- as.data.frame(FBT_nrow)
colnames(FBT_nrow) <- "Food, Beverage and Tobacco"
rownames(FBT_nrow) <- "Number of Portfolio's"
FBT_nrow
## Food, Beverage and Tobacco
## Number of Portfolio's 410803
FBT_opt_rebal <- optimize.portfolio.rebalancing(
FBT_Returns,
FBT_Portt,
optimize_method = "DEoptim",
rp = FSR_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
FBT_RebalanceWeights <- extractWeights(FBT_opt_rebal)
FBT_rebal_returns <-
Return.portfolio(FBT_Returns, weights = FBT_RebalanceWeights)
names(FBT_rebal_returns) <- "Rebalanced Portfolio"
names(FBT_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(FBT_Base_Port) <- "Index Weighted Portfolio"
FBT_Rebal_VS_reg <-
cbind(FBT_rebal_returns,
FBT_Equal_Weight_Portfolio,
FBT_Base_Port,
SPY_Returns)
FBT_Rebal_VS_reg[!is.finite(FBT_Rebal_VS_reg)] <- NA
FBT_Rebal_VS_reg <- na.omit(FBT_Rebal_VS_reg)
chart.Weights(FBT_opt_rebal)
colSums(FBT_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.14613693 0.23401686 0.09682506
## S.P.500
## 0.75686014
FBT_CBIND_Cummalative <- cumsum(FBT_Rebal_VS_reg)
FBT_CBIND_Tail <- tail(FBT_CBIND_Cummalative, 1)
FBT_CBIND_Tail$S.P.500 <- NULL
FBT_CBIND_Tail <- as.data.frame(FBT_CBIND_Tail)
rownames(FBT_CBIND_Tail) <- "Food Beverage and Tobacco"
highchart(type = "stock") %>%
hc_add_series(FBT_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(FBT_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(FBT_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(FBT_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Food, Beverage, and Tobacco Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(FBT_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(FBT_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(FBT_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(FBT_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Food Beverage and Tobacco Portfolio's")
#Standard Deviation
FBT_Sd <- rollapply(FBT_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
FBT_Sd <- round(FBT_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Food Beverage and Tobacco Portfolio's") %>%
hc_add_series(FBT_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(FBT_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(FBT_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(FBT_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
FBT_Sd_df <- as.data.frame(FBT_Sd)
FBT_Sd_df <- rowid_to_column(FBT_Sd_df)
FBT_Sd_df <- FBT_Sd_df[, -1]
hchart(density(FBT_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(FBT_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(FBT_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(FBT_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Food Beverage and Tobacco Portfolio's")
#Skewness
FBT_Skew <-
rollapply(FBT_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
FBT_Skew <- round(FBT_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Food Beverage and Tobacco Portfolio's") %>%
hc_add_series(FBT_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(FBT_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(FBT_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(FBT_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(FBT_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(FBT_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(FBT_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(FBT_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Food Beverage and Tobacco Portfolio's")
#Kurtosis
FBT_Kurtosis <- rollapply(FBT_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
FBT_Kurtosis <- round(FBT_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Food Beverage and Tobacco Portfolio's") %>%
hc_add_series(FBT_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(FBT_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(FBT_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(FBT_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(FBT_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(FBT_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(FBT_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(FBT_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Food Beverage and Tobacco Portfolio's")
Household and Personal Products
#Household and Personal Products
HPP_Equal_Weights <- rep(1 / ncol(HPP_Returns), ncol(HPP_Returns))
HPP_Equal_Weight_Portfolio <-
Return.portfolio(HPP_Returns, HPP_Equal_Weights)
HPP_Base_Port <- Return.portfolio(HPP_Returns, HPP_Weights)
HPP_Portt <- portfolio.spec(names(HPP_Returns))
HPP_Portt <-
add.constraint(HPP_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
HPP_Portt <- add.constraint(HPP_Portt, type = "long_only")
HPP_Portt <-
add.constraint(HPP_Portt,
type = "box",
min = 0,
max = .5)
HPP_Portt <-
add.objective(HPP_Portt, type = "return", name = "mean")
HPP_rp <- random_portfolios_v2(HPP_Portt, 1000000, "simplex", TRUE)
HPP_nrow <- nrow(HPP_rp)
HPP_nrow <- as.data.frame(HPP_nrow)
colnames(HPP_nrow) <- "Household and Personal Products"
rownames(HPP_nrow) <- "Number of Portfolio's"
HPP_nrow
## Household and Personal Products
## Number of Portfolio's 219744
HPP_opt_rebal <- optimize.portfolio.rebalancing(
HPP_Returns,
HPP_Portt,
optimize_method = "DEoptim",
rp = HPP_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
HPP_RebalanceWeights <- extractWeights(HPP_opt_rebal)
HPP_rebal_returns <-
Return.portfolio(HPP_Returns, weights = HPP_RebalanceWeights)
names(HPP_rebal_returns) <- "Rebalanced Portfolio"
names(HPP_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(HPP_Base_Port) <- "Index Weighted Portfolio"
HPP_Rebal_VS_reg <-
cbind(HPP_rebal_returns,
HPP_Equal_Weight_Portfolio,
HPP_Base_Port,
SPY_Returns)
HPP_Rebal_VS_reg[!is.finite(HPP_Rebal_VS_reg)] <- NA
HPP_Rebal_VS_reg <- na.omit(HPP_Rebal_VS_reg)
chart.Weights(HPP_opt_rebal)
colSums(HPP_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.1207856 0.4493329 0.5312875
## S.P.500
## 0.7568601
HPP_CBIND_Cummalative <- cumsum(HPP_Rebal_VS_reg)
HPP_CBIND_Tail <- tail(HPP_CBIND_Cummalative, 1)
HPP_CBIND_Tail$S.P.500 <- NULL
HPP_CBIND_Tail <- as.data.frame(HPP_CBIND_Tail)
rownames(HPP_CBIND_Tail) <- "Household and Personal Products"
highchart(type = "stock") %>%
hc_add_series(HPP_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(HPP_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(HPP_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(HPP_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Household and Personal Products Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(HPP_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(HPP_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(HPP_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(HPP_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Household and Personal Products Portfolio's")
#Standard Deviation
HPP_Sd <- rollapply(HPP_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
HPP_Sd <- round(HPP_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Household and Personal Products Portfolio's") %>%
hc_add_series(HPP_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(HPP_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(HPP_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(HPP_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
HPP_Sd_df <- as.data.frame(HPP_Sd)
HPP_Sd_df <- rowid_to_column(HPP_Sd_df)
HPP_Sd_df <- HPP_Sd_df[, -1]
hchart(density(HPP_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(HPP_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(HPP_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(HPP_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Household and Personal Products Portfolio's")
#Skewness
HPP_Skew <-
rollapply(HPP_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
HPP_Skew <- round(HPP_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Household and Personal Products Portfolio's") %>%
hc_add_series(HPP_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(HPP_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(HPP_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(HPP_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(HPP_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(HPP_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(HPP_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(HPP_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Household and Personal Products Portfolio's")
#Kurtosis
HPP_Kurtosis <- rollapply(HPP_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
HPP_Kurtosis <- round(HPP_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Household and Personal Products Portfolio's") %>%
hc_add_series(HPP_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(HPP_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(HPP_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(HPP_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(HPP_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(HPP_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(HPP_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(HPP_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Household and Personal Products Portfolio's")
Energy
#Energy
E_Equal_Weights <- rep(1 / ncol(E_Returns), ncol(E_Returns))
E_Equal_Weight_Portfolio <-
Return.portfolio(E_Returns, E_Equal_Weights)
E_Base_Port <- Return.portfolio(E_Returns, E_Weights)
E_Portt <- portfolio.spec(names(E_Returns))
E_Portt <-
add.constraint(E_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
E_Portt <- add.constraint(E_Portt, type = "long_only")
E_Portt <- add.constraint(E_Portt,
type = "box",
min = 0,
max = .5)
E_Portt <- add.objective(E_Portt, type = "return", name = "mean")
E_rp <- random_portfolios_v2(E_Portt, 1000000, "simplex", TRUE)
E_nrow <- nrow(E_rp)
E_nrow <- as.data.frame(E_nrow)
colnames(E_nrow) <- "Energy"
rownames(E_nrow) <- "Number of Portfolio's"
E_nrow
## Energy
## Number of Portfolio's 410725
E_opt_rebal <- optimize.portfolio.rebalancing(
E_Returns,
E_Portt,
optimize_method = "DEoptim",
rp = HPP_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
E_RebalanceWeights <- extractWeights(E_opt_rebal)
E_rebal_returns <-
Return.portfolio(E_Returns, weights = E_RebalanceWeights)
names(E_rebal_returns) <- "Rebalanced Portfolio"
names(E_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(E_Base_Port) <- "Index Weighted Portfolio"
E_Rebal_VS_reg <-
cbind(E_rebal_returns,
E_Equal_Weight_Portfolio,
E_Base_Port,
SPY_Returns)
E_Rebal_VS_reg[!is.finite(E_Rebal_VS_reg)] <- NA
E_Rebal_VS_reg <- na.omit(E_Rebal_VS_reg)
chart.Weights(E_opt_rebal)
colSums(E_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 1.2884893 0.2831733 0.3443632
## S.P.500
## 0.7568601
E_CBIND_Cummalative <- cumsum(E_Rebal_VS_reg)
E_CBIND_Tail <- tail(E_CBIND_Cummalative, 1)
E_CBIND_Tail$S.P.500 <- NULL
E_CBIND_Tail <- as.data.frame(E_CBIND_Tail)
rownames(E_CBIND_Tail) <- "Energy"
highchart(type = "stock") %>%
hc_add_series(E_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(E_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(E_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(E_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Energy Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(E_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(E_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(E_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(E_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Energy Portfolio's")
#Standard Deviatiom
E_Sd <- rollapply(E_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
E_Sd <- round(E_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Energy Portfolio's") %>%
hc_add_series(E_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(E_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(E_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(E_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
E_Sd_df <- as.data.frame(E_Sd)
E_Sd_df <- rowid_to_column(E_Sd_df)
E_Sd_df <- E_Sd_df[, -1]
hchart(density(E_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(E_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(E_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(E_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Energy Portfolio's")
#Skewness
E_Skew <-
rollapply(E_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
E_Skew <- round(E_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Energy Portfolio's") %>%
hc_add_series(E_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(E_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(E_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(E_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(E_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(E_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(E_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(E_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Energy Portfolio's")
#Kurtosis
E_Kurtosis <- rollapply(E_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
E_Kurtosis <- round(E_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Energy Portfolio's") %>%
hc_add_series(E_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(E_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(E_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(E_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(E_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(E_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(E_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(E_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Energy Portfolio's")
Banks
#Banks
B_Equal_Weights <- rep(1 / ncol(B_Returns), ncol(B_Returns))
B_Equal_Weight_Portfolio <-
Return.portfolio(B_Returns, B_Equal_Weights)
B_Base_Port <- Return.portfolio(B_Returns, B_Weights)
B_Portt <- portfolio.spec(names(B_Returns))
B_Portt <-
add.constraint(B_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
B_Portt <- add.constraint(B_Portt, type = "long_only")
B_Portt <- add.constraint(B_Portt,
type = "box",
min = 0,
max = .5)
B_Portt <- add.objective(B_Portt, type = "return", name = "mean")
B_rp <- random_portfolios_v2(B_Portt, 1000000, "simplex", TRUE)
B_nrow <- nrow(B_rp)
B_nrow <- as.data.frame(B_nrow)
colnames(B_nrow) <- "Banks"
rownames(B_nrow) <- "Number of Portfolio's"
B_nrow
## Banks
## Number of Portfolio's 392347
B_opt_rebal <- optimize.portfolio.rebalancing(
B_Returns,
B_Portt,
optimize_method = "DEoptim",
rp = B_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
B_RebalanceWeights <- extractWeights(B_opt_rebal)
B_rebal_returns <-
Return.portfolio(B_Returns, weights = B_RebalanceWeights)
names(B_rebal_returns) <- "Rebalanced Portfolio"
names(B_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(B_Base_Port) <- "Index Weighted Portfolio"
B_Rebal_VS_reg <-
cbind(B_rebal_returns,
B_Equal_Weight_Portfolio,
B_Base_Port,
SPY_Returns)
B_Rebal_VS_reg[!is.finite(B_Rebal_VS_reg)] <- NA
B_Rebal_VS_reg <- na.omit(B_Rebal_VS_reg)
chart.Weights(B_opt_rebal)
colSums(B_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.6626185 0.6377016 0.5639771
## S.P.500
## 0.7568601
B_CBIND_Cummalative <- cumsum(B_Rebal_VS_reg)
B_CBIND_Tail <- tail(B_CBIND_Cummalative, 1)
B_CBIND_Tail$S.P.500 <- NULL
B_CBIND_Tail <- as.data.frame(B_CBIND_Tail)
rownames(B_CBIND_Tail) <- "Banks"
highchart(type = "stock") %>%
hc_add_series(B_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(B_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(B_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(B_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Bank Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(B_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(B_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(B_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(B_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Bank Portfolio's")
#Standard Deviation
B_Sd <- rollapply(B_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
B_Sd <- round(B_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Bank Portfolio's") %>%
hc_add_series(B_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(B_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(B_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(B_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
B_Sd_df <- as.data.frame(B_Sd)
B_Sd_df <- rowid_to_column(B_Sd_df)
B_Sd_df <- B_Sd_df[, -1]
hchart(density(B_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(B_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(B_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(B_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Bank Portfolio's")
#Skewness
B_Skew <-
rollapply(B_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
B_Skew <- round(B_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Banks Portfolio's") %>%
hc_add_series(B_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(B_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(B_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(B_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(B_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(B_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(B_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(B_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Bank Portfolio's")
#Kurtosis
B_Kurtosis <- rollapply(B_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
B_Kurtosis <- round(B_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Banks Portfolio's") %>%
hc_add_series(B_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(B_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(B_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(B_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(B_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(B_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(B_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(B_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Bank Portfolio's")
Diversified Financials
#Diversified Financials
DF_Equal_Weights <- rep(1 / ncol(DF_Returns), ncol(DF_Returns))
DF_Equal_Weight_Portfolio <-
Return.portfolio(DF_Returns, DF_Equal_Weights)
DF_Base_Port <- Return.portfolio(DF_Returns, DF_Weights)
DF_Portt <- portfolio.spec(names(DF_Returns))
DF_Portt <-
add.constraint(DF_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
DF_Portt <- add.constraint(DF_Portt, type = "long_only")
DF_Portt <-
add.constraint(DF_Portt,
type = "box",
min = 0,
max = .5)
DF_Portt <- add.objective(DF_Portt, type = "return", name = "mean")
DF_rp <- random_portfolios_v2(DF_Portt, 1000000, "simplex", TRUE)
DF_nrow <- nrow(DF_rp)
DF_nrow <- as.data.frame(DF_nrow)
colnames(DF_nrow) <- "Diversified Financials"
rownames(DF_nrow) <- "Number of Portfolio's"
DF_nrow
## Diversified Financials
## Number of Portfolio's 432322
DF_opt_rebal <- optimize.portfolio.rebalancing(
DF_Returns,
DF_Portt,
optimize_method = "DEoptim",
rp = DF_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
DF_RebalanceWeights <- extractWeights(DF_opt_rebal)
DF_rebal_returns <-
Return.portfolio(DF_Returns, weights = DF_RebalanceWeights)
names(DF_rebal_returns) <- "Rebalanced Portfolio"
names(DF_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(DF_Base_Port) <- "Index Weighted Portfolio"
DF_Rebal_VS_reg <-
cbind(DF_rebal_returns,
DF_Equal_Weight_Portfolio,
DF_Base_Port,
SPY_Returns)
DF_Rebal_VS_reg[!is.finite(DF_Rebal_VS_reg)] <- NA
DF_Rebal_VS_reg <- na.omit(DF_Rebal_VS_reg)
chart.Weights(DF_opt_rebal)
colSums(DF_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.7417913 0.7367258 0.5779260
## S.P.500
## 0.7568601
DF_CBIND_Cummalative <- cumsum(DF_Rebal_VS_reg)
DF_CBIND_Tail <- tail(DF_CBIND_Cummalative, 1)
DF_CBIND_Tail$S.P.500 <- NULL
DF_CBIND_Tail <- as.data.frame(DF_CBIND_Tail)
rownames(DF_CBIND_Tail) <- "Diversified Financials"
highchart(type = "stock") %>%
hc_add_series(DF_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(DF_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(DF_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(DF_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Diversified Financials Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(DF_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(DF_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(DF_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(DF_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Diversified Financials Portfolio's")
#Standard Deviation
DF_Sd <- rollapply(DF_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
DF_Sd <- round(DF_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Diversified Financials Portfolio's") %>%
hc_add_series(DF_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(DF_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(DF_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(DF_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
DF_Sd_df <- as.data.frame(DF_Sd)
DF_Sd_df <- rowid_to_column(DF_Sd_df)
DF_Sd_df <- DF_Sd_df[, -1]
hchart(density(DF_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(DF_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(DF_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(DF_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Diversified Financials Portfolio's")
#Skewness
DF_Skew <-
rollapply(DF_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
DF_Skew <- round(DF_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Diversified Financials Portfolio's") %>%
hc_add_series(DF_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(DF_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(DF_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(DF_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(DF_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(DF_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(DF_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(DF_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Diversified Financials Portfolio's")
#Kurtosis
DF_Kurtosis <- rollapply(DF_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
DF_Kurtosis <- round(DF_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Diversified Financials Portfolio's") %>%
hc_add_series(DF_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(DF_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(DF_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(DF_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(DF_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(DF_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(DF_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(DF_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Diversified Financials Portfolio's")
Insurance
#Insurance
I_Equal_Weights <- rep(1 / ncol(I_Returns), ncol(I_Returns))
I_Equal_Weight_Portfolio <-
Return.portfolio(I_Returns, I_Equal_Weights)
I_Base_Port <- Return.portfolio(I_Returns, I_Weights)
I_Portt <- portfolio.spec(names(I_Returns))
I_Portt <-
add.constraint(I_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
I_Portt <- add.constraint(I_Portt, type = "long_only")
I_Portt <- add.constraint(I_Portt,
type = "box",
min = 0,
max = .5)
I_Portt <- add.objective(I_Portt, type = "return", name = "mean")
I_rp <- random_portfolios_v2(I_Portt, 1000000, "simplex", TRUE)
I_nrow <- nrow(I_rp)
I_nrow <- as.data.frame(I_nrow)
colnames(I_nrow) <- "Insurance"
rownames(I_nrow) <- "Number of Portfolio's"
I_nrow
## Insurance
## Number of Portfolio's 415329
I_opt_rebal <- optimize.portfolio.rebalancing(
I_Returns,
I_Portt,
optimize_method = "DEoptim",
rp = I_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
I_RebalanceWeights <- extractWeights(I_opt_rebal)
I_rebal_returns <-
Return.portfolio(I_Returns, weights = I_RebalanceWeights)
names(I_rebal_returns) <- "Rebalanced Portfolio"
names(I_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(I_Base_Port) <- "Index Weighted Portfolio"
I_Rebal_VS_reg <-
cbind(I_rebal_returns,
I_Equal_Weight_Portfolio,
I_Base_Port,
SPY_Returns)
I_Rebal_VS_reg[!is.finite(I_Rebal_VS_reg)] <- NA
I_Rebal_VS_reg <- na.omit(I_Rebal_VS_reg)
chart.Weights(I_opt_rebal)
colSums(I_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.9132782 0.7336486 0.7010633
## S.P.500
## 0.7568601
I_CBIND_Cummalative <- cumsum(I_Rebal_VS_reg)
I_CBIND_Tail <- tail(I_CBIND_Cummalative, 1)
I_CBIND_Tail$S.P.500 <- NULL
I_CBIND_Tail <- as.data.frame(I_CBIND_Tail)
rownames(I_CBIND_Tail) <- "Insurance"
highchart(type = "stock") %>%
hc_add_series(I_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(I_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(I_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(I_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Insurance Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(I_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(I_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(I_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(I_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Insurance Portfolio's")
#Standard Deviation
I_Sd <- rollapply(I_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
I_Sd <- round(I_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Insurance Portfolio's") %>%
hc_add_series(I_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(I_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(I_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(I_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
I_Sd_df <- as.data.frame(I_Sd)
I_Sd_df <- rowid_to_column(I_Sd_df)
I_Sd_df <- I_Sd_df[, -1]
hchart(density(I_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(I_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(I_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(I_Sd_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Insurance Portfolio's")
#Skewness
I_Skew <-
rollapply(I_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
I_Skew <- round(I_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Insurance Portfolio's") %>%
hc_add_series(I_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(I_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(I_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(I_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(I_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(I_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(I_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(I_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Insurance Portfolio's")
#Kurtosis
I_Kurtosis <- rollapply(I_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
I_Kurtosis <- round(I_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Insurance Portfolio's") %>%
hc_add_series(I_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(I_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(I_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(I_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(I_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(I_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(I_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(I_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Insurance Portfolio's")
Health Care Equipment and Services
#Health Care Equipment and Services
HCES_Equal_Weights <-
rep(1 / ncol(HCES_Returns), ncol(HCES_Returns))
HCES_Equal_Weight_Portfolio <-
Return.portfolio(HCES_Returns, HCES_Equal_Weights)
HCES_Base_Port <- Return.portfolio(HCES_Returns, HCES_Weights)
HCES_Portt <- portfolio.spec(names(HCES_Returns))
HCES_Portt <-
add.constraint(HCES_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
HCES_Portt <- add.constraint(HCES_Portt, type = "long_only")
HCES_Portt <-
add.constraint(HCES_Portt,
type = "box",
min = 0,
max = .5)
HCES_Portt <-
add.objective(HCES_Portt, type = "return", name = "mean")
HCES_rp <- random_portfolios_v2(HCES_Portt, 1000000, "simplex", TRUE)
HCES_nrow <- nrow(HCES_rp)
HCES_nrow <- as.data.frame(HCES_nrow)
colnames(HCES_nrow) <- "Health Care Equipment and Services"
rownames(HCES_nrow) <- "Number of Portfolio's"
HCES_nrow
## Health Care Equipment and Services
## Number of Portfolio's 464609
HCES_opt_rebal <- optimize.portfolio.rebalancing(
HCES_Returns,
HCES_Portt,
optimize_method = "DEoptim",
rp = HCES_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
HCES_RebalanceWeights <- extractWeights(HCES_opt_rebal)
HCES_rebal_returns <-
Return.portfolio(HCES_Returns, weights = HCES_RebalanceWeights)
names(HCES_rebal_returns) <- "Rebalanced Portfolio"
names(HCES_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(HCES_Base_Port) <- "Index Weighted Portfolio"
HCES_Rebal_VS_reg <-
cbind(HCES_rebal_returns,
HCES_Equal_Weight_Portfolio,
HCES_Base_Port,
SPY_Returns)
HCES_Rebal_VS_reg[!is.finite(HCES_Rebal_VS_reg)] <- NA
HCES_Rebal_VS_reg <- na.omit(HCES_Rebal_VS_reg)
chart.Weights(HCES_opt_rebal)
colSums(HCES_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.8038276 0.7278831 0.5658786
## S.P.500
## 0.7568601
HCES_CBIND_Cummalative <- cumsum(HCES_Rebal_VS_reg)
HCES_CBIND_Tail <- tail(HCES_CBIND_Cummalative, 1)
HCES_CBIND_Tail$S.P.500 <- NULL
HCES_CBIND_Tail <- as.data.frame(HCES_CBIND_Tail)
rownames(HCES_CBIND_Tail) <- "Health Care Equipment and Services"
highchart(type = "stock") %>%
hc_add_series(HCES_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(HCES_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(HCES_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(HCES_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Health Care Equipment and Services Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(HCES_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(HCES_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(HCES_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(HCES_CBIND_Cummalative$S.P.500),
type = "area",
name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Health Care Equipment and Services Portfolio's")
#Standard Deviation
HCES_Sd <-
rollapply(HCES_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
HCES_Sd <- round(HCES_Sd, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Health Care Equipment and Services Portfolio's") %>%
hc_add_series(HCES_Sd$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(HCES_Sd$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(HCES_Sd$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(HCES_Sd$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
HCES_Sd_df <- as.data.frame(HCES_Sd)
HCES_Sd_df <- rowid_to_column(HCES_Sd_df)
HCES_Sd_df <- HCES_Sd_df[, -1]
hchart(density(HCES_Sd_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(HCES_Sd_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(HCES_Sd_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(HCES_Sd_df$S.P.500),
type = "area",
name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Health Care Equipment and Services Portfolio's")
#Skewness
HCES_Skew <-
rollapply(HCES_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
HCES_Skew <- round(HCES_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Health Care Equipment and Services Portfolio's") %>%
hc_add_series(HCES_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(HCES_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(HCES_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(HCES_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(HCES_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(HCES_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(HCES_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(HCES_Skew$S.P.500),
type = "area",
name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Health Care Equipment and Services Portfolio's")
#Kurtosis
HCES_Kurtosis <- rollapply(HCES_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
HCES_Kurtosis <- round(HCES_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Health Care Equipment and Services Portfolio's") %>%
hc_add_series(HCES_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(HCES_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(HCES_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(HCES_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(HCES_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(HCES_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(HCES_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(HCES_Kurtosis$S.P.500),
type = "area",
name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Health Care Equipment and Services Portfolio's")
Pharmaceuticals and Biotechnology
#Pharmaceuticals and Biotechnology
PB_Equal_Weights <- rep(1 / ncol(PB_Returns), ncol(PB_Returns))
PB_Equal_Weight_Portfolio <-
Return.portfolio(PB_Returns, PB_Equal_Weights)
PB_Base_Port <- Return.portfolio(PB_Returns, PB_Weights)
PB_Portt <- portfolio.spec(names(PB_Returns))
PB_Portt <-
add.constraint(PB_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
PB_Portt <- add.constraint(PB_Portt, type = "long_only")
PB_Portt <-
add.constraint(PB_Portt,
type = "box",
min = 0,
max = .5)
PB_Portt <- add.objective(PB_Portt, type = "return", name = "mean")
PB_rp <- random_portfolios_v2(PB_Portt, 1000000, "simplex", TRUE)
PB_nrow <- nrow(PB_rp)
PB_nrow <- as.data.frame(PB_nrow)
colnames(PB_nrow) <- "Pharmaceuticals and Biotechnology"
rownames(PB_nrow) <- "Number of Portfolio's"
PB_nrow
## Pharmaceuticals and Biotechnology
## Number of Portfolio's 443242
PB_opt_rebal <- optimize.portfolio.rebalancing(
PB_Returns,
PB_Portt,
optimize_method = "DEoptim",
rp = PB_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
PB_RebalanceWeights <- extractWeights(PB_opt_rebal)
PB_rebal_returns <-
Return.portfolio(PB_Returns, weights = PB_RebalanceWeights)
names(PB_rebal_returns) <- "Rebalanced Portfolio"
names(PB_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(PB_Base_Port) <- "Index Weighted Portfolio"
PB_Rebal_VS_reg <-
cbind(PB_rebal_returns,
PB_Equal_Weight_Portfolio,
PB_Base_Port,
SPY_Returns)
PB_Rebal_VS_reg[!is.finite(PB_Rebal_VS_reg)] <- NA
PB_Rebal_VS_reg <- na.omit(PB_Rebal_VS_reg)
chart.Weights(PB_opt_rebal)
colSums(PB_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.5903503 0.8718604 0.7005791
## S.P.500
## 0.7568601
PB_CBIND_Cummalative <- cumsum(PB_Rebal_VS_reg)
PB_CBIND_Tail <- tail(PB_CBIND_Cummalative, 1)
PB_CBIND_Tail$S.P.500 <- NULL
PB_CBIND_Tail <- as.data.frame(PB_CBIND_Tail)
rownames(PB_CBIND_Tail) <- "Pharmaceuticals and Biotechnology"
highchart(type = "stock") %>%
hc_add_series(PB_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(PB_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(PB_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(PB_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Pharmaceuticals and Biotechnology Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(PB_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(PB_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(PB_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(PB_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Pharmaceuticals and Biotecnology Portfolio's")
#Standard Deviation
PB_SD <- rollapply(PB_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
PB_SD <- round(PB_SD, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Pharmaceuticals and Biotecnology Portfolio's") %>%
hc_add_series(PB_SD$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(PB_SD$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(PB_SD$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(PB_SD$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
PB_SD_df <- as.data.frame(PB_SD)
PB_SD_df <- rowid_to_column(PB_SD_df)
PB_SD_df <- PB_SD_df[, -1]
hchart(density(PB_SD_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(PB_SD_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(PB_SD_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(PB_SD_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Pharmaceuticals and Biotecnology Portfolio's")
#Skewness
PB_Skew <-
rollapply(PB_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
PB_Skew <- round(PB_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Pharmaceuticals and Biotechnology Portfolio's") %>%
hc_add_series(PB_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(PB_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(PB_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(PB_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(PB_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(PB_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(PB_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(PB_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Pharmaceuticals and Biotecnology Portfolio's")
#Kurtosis
PB_Kurtosis <- rollapply(PB_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
PB_Kurtosis <- round(PB_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Pharmaceuticals and Biotechnology Portfolio's") %>%
hc_add_series(PB_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(PB_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(PB_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(PB_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(PB_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(PB_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(PB_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(PB_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Pharmaceuticals and Biotecnology Portfolio's")
Capital Goods
#Capital Goods
CG_Equal_Weights <- rep(1 / ncol(CG_Returns), ncol(CG_Returns))
CG_Equal_Weight_Portfolio <-
Return.portfolio(CG_Returns, CG_Equal_Weights)
CG_Base_Port <- Return.portfolio(CG_Returns, CG_Weights)
CG_Portt <- portfolio.spec(names(CG_Returns))
CG_Portt <-
add.constraint(CG_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
CG_Portt <- add.constraint(CG_Portt, type = "long_only")
CG_Portt <-
add.constraint(CG_Portt,
type = "box",
min = 0,
max = .5)
CG_Portt <- add.objective(CG_Portt, type = "return", name = "mean")
CG_rp <- random_portfolios_v2(CG_Portt, 1000000, "simplex", TRUE)
CG_nrow <- nrow(CG_rp)
CG_nrow <- as.data.frame(CG_nrow)
colnames(CG_nrow) <- "Capital Goods"
rownames(CG_nrow) <- "Number of Portfolio's"
CG_nrow
## Capital Goods
## Number of Portfolio's 483283
CG_opt_rebal <- optimize.portfolio.rebalancing(
CG_Returns,
CG_Portt,
optimize_method = "DEoptim",
rp = CG_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
CG_RebalanceWeights <- extractWeights(CG_opt_rebal)
CG_rebal_returns <-
Return.portfolio(CG_Returns, weights = CG_RebalanceWeights)
names(CG_rebal_returns) <- "Rebalanced Portfolio"
names(CG_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(CG_Base_Port) <- "Index Weighted Portfolio"
CG_Rebal_VS_reg <-
cbind(CG_rebal_returns,
CG_Equal_Weight_Portfolio,
CG_Base_Port,
SPY_Returns)
CG_Rebal_VS_reg[!is.finite(CG_Rebal_VS_reg)] <- NA
CG_Rebal_VS_reg <- na.omit(CG_Rebal_VS_reg)
chart.Weights(CG_opt_rebal)
colSums(CG_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 1.0003359 0.7605240 0.8276278
## S.P.500
## 0.7568601
CG_CBIND_Cummalative <- cumsum(CG_Rebal_VS_reg)
CG_CBIND_Tail <- tail(CG_CBIND_Cummalative, 1)
CG_CBIND_Tail$S.P.500 <- NULL
CG_CBIND_Tail <- as.data.frame(CG_CBIND_Tail)
rownames(CG_CBIND_Tail) <- "Capital Goods"
highchart(type = "stock") %>%
hc_add_series(CG_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(CG_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(CG_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(CG_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Capital Goods Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(CG_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CG_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CG_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CG_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Pharmaceuticals and Biotecnology Portfolio's")
#Standard Deviation
CG_SD <- rollapply(CG_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
CG_SD <- round(CG_SD, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Pharmaceuticals and Biotecnology Portfolio's") %>%
hc_add_series(CG_SD$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(CG_SD$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(CG_SD$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(CG_SD$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
CG_SD_df <- as.data.frame(CG_SD)
CG_SD_df <- rowid_to_column(CG_SD_df)
CG_SD_df <- CG_SD_df[, -1]
hchart(density(CG_SD_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CG_SD_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CG_SD_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CG_SD_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Capital Goods Portfolio's")
#Skewness
CG_Skew <-
rollapply(CG_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
CG_Skew <- round(CG_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Capital Goods Portfolio's") %>%
hc_add_series(CG_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(CG_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(CG_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(CG_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(CG_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CG_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CG_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CG_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Capital Goods Portfolio's")
#Kurtosis
CG_Kurtosis <- rollapply(CG_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
CG_Kurtosis <- round(CG_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Capital Goods Portfolio's") %>%
hc_add_series(CG_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(CG_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(CG_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(CG_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(CG_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CG_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CG_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CG_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Capital Good Portfolio's")
Commercial and Professional Services
#Commercial and Proffesional Services
CPS_Equal_Weights <- rep(1 / ncol(CPS_Returns), ncol(CPS_Returns))
CPS_Equal_Weight_Portfolio <-
Return.portfolio(CPS_Returns, CPS_Equal_Weights)
CPS_Base_Port <- Return.portfolio(CPS_Returns, CPS_Weights)
CPS_Portt <- portfolio.spec(names(CPS_Returns))
CPS_Portt <-
add.constraint(CPS_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
CPS_Portt <- add.constraint(CPS_Portt, type = "long_only")
CPS_Portt <-
add.constraint(CPS_Portt,
type = "box",
min = 0,
max = .5)
CPS_Portt <-
add.objective(CPS_Portt, type = "return", name = "mean")
CPS_rp <- random_portfolios_v2(CPS_Portt, 1000000, "simplex", TRUE)
CPS_nrow <- nrow(CPS_rp)
CPS_nrow <- as.data.frame(CPS_nrow)
colnames(CPS_nrow) <- "Commercial and Profesional Services"
rownames(CPS_nrow) <- "Number of Portfolio's"
CPS_nrow
## Commercial and Profesional Services
## Number of Portfolio's 328288
CPS_opt_rebal <- optimize.portfolio.rebalancing(
CPS_Returns,
CPS_Portt,
optimize_method = "DEoptim",
rp = CPS_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
CPS_RebalanceWeights <- extractWeights(CPS_opt_rebal)
CPS_rebal_returns <-
Return.portfolio(CPS_Returns, weights = CPS_RebalanceWeights)
## Warning in Return.portfolio.geometric(R = R, weights = weights, wealth.index =
## wealth.index, : The weights for one or more periods do not sum up to 1: assuming
## a return of 0 for the residual weights
names(CPS_rebal_returns) <- "Rebalanced Portfolio"
names(CPS_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(CPS_Base_Port) <- "Index Weighted Portfolio"
CPS_Rebal_VS_reg <-
cbind(CPS_rebal_returns,
CPS_Equal_Weight_Portfolio,
CPS_Base_Port,
SPY_Returns)
CPS_Rebal_VS_reg[!is.finite(CPS_Rebal_VS_reg)] <- NA
CPS_Rebal_VS_reg <- na.omit(CPS_Rebal_VS_reg)
chart.Weights(CPS_opt_rebal)
colSums(CPS_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.3244656 0.9773230 0.8236956
## S.P.500
## 0.7568601
CPS_CBIND_Cummalative <- cumsum(CPS_Rebal_VS_reg)
CPS_CBIND_Tail <- tail(CPS_CBIND_Cummalative, 1)
CPS_CBIND_Tail$S.P.500 <- NULL
CPS_CBIND_Tail <- as.data.frame(CPS_CBIND_Tail)
rownames(CPS_CBIND_Tail) <- "Commercial and Professional Services"
highchart(type = "stock") %>%
hc_add_series(CPS_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(CPS_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(CPS_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(CPS_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Commercial and Profesional Services Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(CPS_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CPS_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CPS_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CPS_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Commercial and Professional Services Portfolio's")
#Standard Deviation
CPS_SD <- rollapply(CPS_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
CPS_SD <- round(CPS_SD, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Commercial and Professional Services Portfolio's") %>%
hc_add_series(CPS_SD$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(CPS_SD$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(CPS_SD$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(CPS_SD$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
CPS_SD_df <- as.data.frame(CPS_SD)
CPS_SD_df <- rowid_to_column(CPS_SD_df)
CPS_SD_df <- CPS_SD_df[, -1]
hchart(density(CPS_SD_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CPS_SD_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CPS_SD_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CPS_SD_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Commercial and Professional Services Portfolio's")
#Skewness
CPS_Skew <-
rollapply(CPS_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
CPS_Skew <- round(CPS_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Commercial and Professional Services Portfolio's") %>%
hc_add_series(CPS_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(CPS_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(CPS_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(CPS_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(CPS_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CPS_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CPS_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CPS_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Commercial and Professional Services Portfolio's")
#Kurtosis
CPS_Kurtosis <- rollapply(CPS_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
CPS_Kurtosis <- round(CPS_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Commercial and Professional Services Portfolio's") %>%
hc_add_series(CPS_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(CPS_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(CPS_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(CPS_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(CPS_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(CPS_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(CPS_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(CPS_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Commercial and Professional Services Portfolio's")
Transportation
#Transportation
T_Equal_Weights <- rep(1 / ncol(T_Returns), ncol(T_Returns))
T_Equal_Weight_Portfolio <-
Return.portfolio(T_Returns, T_Equal_Weights)
T_Base_Port <- Return.portfolio(T_Returns, T_Weights)
T_Portt <- portfolio.spec(names(T_Returns))
T_Portt <-
add.constraint(T_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
T_Portt <- add.constraint(T_Portt, type = "long_only")
T_Portt <- add.constraint(T_Portt,
type = "box",
min = 0,
max = .5)
T_Portt <- add.objective(T_Portt, type = "return", name = "mean")
T_rp <- random_portfolios_v2(T_Portt, 1000000, "simplex", TRUE)
T_nrow <- nrow(T_rp)
T_nrow <- as.data.frame(T_nrow)
colnames(T_nrow) <- "Transportation"
rownames(T_nrow) <- "Number of Portfolio's"
T_nrow
## Transportation
## Number of Portfolio's 362008
T_opt_rebal <- optimize.portfolio.rebalancing(
T_Returns,
T_Portt,
optimize_method = "DEoptim",
rp = T_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
T_RebalanceWeights <- extractWeights(T_opt_rebal)
T_rebal_returns <-
Return.portfolio(T_Returns, weights = T_RebalanceWeights)
names(T_rebal_returns) <- "Rebalanced Portfolio"
names(T_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(T_Base_Port) <- "Index Weighted Portfolio"
T_Rebal_VS_reg <-
cbind(T_rebal_returns,
T_Equal_Weight_Portfolio,
T_Base_Port,
SPY_Returns)
T_Rebal_VS_reg[!is.finite(T_Rebal_VS_reg)] <- NA
T_Rebal_VS_reg <- na.omit(T_Rebal_VS_reg)
chart.Weights(T_opt_rebal)
colSums(T_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.9279380 0.6915526 0.7941990
## S.P.500
## 0.7568601
T_CBIND_Cummalative <- cumsum(T_Rebal_VS_reg)
T_CBIND_Tail <- tail(T_CBIND_Cummalative, 1)
T_CBIND_Tail$S.P.500 <- NULL
T_CBIND_Tail <- as.data.frame(T_CBIND_Tail)
rownames(T_CBIND_Tail) <- "Transportation"
highchart(type = "stock") %>%
hc_add_series(T_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(T_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(T_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(T_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Transportation Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(T_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(T_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(T_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(T_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Transportation Portfolio's")
#Standard Deviation
T_SD <- rollapply(T_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
T_SD <- round(T_SD, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Transportation Portfolio's") %>%
hc_add_series(T_SD$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(T_SD$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(T_SD$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(T_SD$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
T_SD_df <- as.data.frame(T_SD)
T_SD_df <- rowid_to_column(T_SD_df)
T_SD_df <- T_SD_df[, -1]
hchart(density(T_SD_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(T_SD_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(T_SD_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(T_SD_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Transportation Portfolio's")
#Skewness
T_Skew <-
rollapply(T_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
T_Skew <- round(T_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Transportation Portfolio's") %>%
hc_add_series(T_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(T_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(T_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(T_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(T_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(T_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(T_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(T_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Transportation Portfolio's")
#Kurtosis
T_Kurtosis <- rollapply(T_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
T_Kurtosis <- round(T_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Transportation Portfolio's") %>%
hc_add_series(T_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(T_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(T_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(T_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(T_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(T_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(T_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(T_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Transportation Portfolio's")
Semiconductors
#Semiconductors
S_Equal_Weights <- rep(1 / ncol(S_Returns), ncol(S_Returns))
S_Equal_Weight_Portfolio <-
Return.portfolio(S_Returns, S_Equal_Weights)
S_Base_Port <- Return.portfolio(S_Returns, S_Weights)
S_Portt <- portfolio.spec(names(S_Returns))
S_Portt <-
add.constraint(S_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
S_Portt <- add.constraint(S_Portt, type = "long_only")
S_Portt <- add.constraint(S_Portt,
type = "box",
min = 0,
max = .5)
S_Portt <- add.objective(S_Portt, type = "return", name = "mean")
S_rp <- random_portfolios_v2(S_Portt, 1000000, "simplex", TRUE)
S_nrow <- nrow(S_rp)
S_nrow <- as.data.frame(S_nrow)
colnames(S_nrow) <- "Semiconductors"
rownames(S_nrow) <- "Number of Portfolio's"
S_nrow
## Semiconductors
## Number of Portfolio's 397957
S_opt_rebal <- optimize.portfolio.rebalancing(
S_Returns,
S_Portt,
optimize_method = "DEoptim",
rp = S_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
S_RebalanceWeights <- extractWeights(S_opt_rebal)
S_rebal_returns <-
Return.portfolio(S_Returns, weights = S_RebalanceWeights)
names(S_rebal_returns) <- "Rebalanced Portfolio"
names(S_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(S_Base_Port) <- "Index Weighted Portfolio"
S_Rebal_VS_reg <-
cbind(S_rebal_returns,
S_Equal_Weight_Portfolio,
S_Base_Port,
SPY_Returns)
S_Rebal_VS_reg[!is.finite(S_Rebal_VS_reg)] <- NA
S_Rebal_VS_reg <- na.omit(S_Rebal_VS_reg)
chart.Weights(S_opt_rebal)
colSums(S_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 2.9354279 1.7636998 1.6989895
## S.P.500
## 0.7568601
S_CBIND_Cummalative <- cumsum(S_Rebal_VS_reg)
S_CBIND_Tail <- tail(CPS_CBIND_Cummalative, 1)
S_CBIND_Tail$S.P.500 <- NULL
S_CBIND_Tail <- as.data.frame(S_CBIND_Tail)
rownames(S_CBIND_Tail) <- "Semiconductors"
highchart(type = "stock") %>%
hc_add_series(S_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(S_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(S_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(S_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Semiconductors Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(S_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(S_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(S_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(S_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Semiconductors Portfolio's")
#Standard Deviation
S_SD <- rollapply(S_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
S_SD <- round(S_SD, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Semiconductors Portfolio's") %>%
hc_add_series(S_SD$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(S_SD$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(S_SD$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(S_SD$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
S_SD_df <- as.data.frame(S_SD)
S_SD_df <- rowid_to_column(S_SD_df)
S_SD_df <- S_SD_df[, -1]
hchart(density(S_SD_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(S_SD_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(S_SD_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(S_SD_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Semiconductors Portfolio's")
#Skewness
S_Skew <-
rollapply(S_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
S_Skew <- round(S_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Semiconductors Portfolio's") %>%
hc_add_series(S_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(S_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(S_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(S_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(S_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(S_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(S_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(S_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Semiconductors Portfolio's")
#Kurtosis
S_Kurtosis <- rollapply(S_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
S_Kurtosis <- round(S_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Semiconductors Portfolio's") %>%
hc_add_series(S_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(S_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(S_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(S_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(S_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(S_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(S_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(S_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Semiconductors Portfolio's")
Software and Services
#Software and Services
SAAS_Equal_Weights <-
rep(1 / ncol(SAAS_Returns), ncol(SAAS_Returns))
SAAS_Equal_Weight_Portfolio <-
Return.portfolio(SAAS_Returns, SAAS_Equal_Weights)
SAAS_Base_Port <- Return.portfolio(SAAS_Returns, SAAS_Weights)
SAAS_Portt <- portfolio.spec(names(SAAS_Returns))
SAAS_Portt <-
add.constraint(SAAS_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
SAAS_Portt <- add.constraint(SAAS_Portt, type = "long_only")
SAAS_Portt <-
add.constraint(SAAS_Portt,
type = "box",
min = 0,
max = .5)
SAAS_Portt <-
add.objective(SAAS_Portt, type = "return", name = "mean")
SAAS_rp <- random_portfolios_v2(SAAS_Portt, 1000000, "simplex", TRUE)
SAAS_nrow <- nrow(SAAS_rp)
SAAS_nrow <- as.data.frame(SAAS_nrow)
colnames(SAAS_nrow) <- "Software and Services"
rownames(SAAS_nrow) <- "Number of Portfolio's"
SAAS_nrow
## Software and Services
## Number of Portfolio's 464953
SAAS_opt_rebal <- optimize.portfolio.rebalancing(
SAAS_Returns,
SAAS_Portt,
optimize_method = "DEoptim",
rp = SAAS_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
SAAS_RebalanceWeights <- extractWeights(SAAS_opt_rebal)
SAAS_rebal_returns <-
Return.portfolio(SAAS_Returns, weights = SAAS_RebalanceWeights)
names(SAAS_rebal_returns) <- "Rebalanced Portfolio"
names(SAAS_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(SAAS_Base_Port) <- "Index Weighted Portfolio"
SAAS_Rebal_VS_reg <-
cbind(SAAS_rebal_returns,
SAAS_Equal_Weight_Portfolio,
SAAS_Base_Port,
SPY_Returns)
SAAS_Rebal_VS_reg[!is.finite(SAAS_Rebal_VS_reg)] <- NA
SAAS_Rebal_VS_reg <- na.omit(SAAS_Rebal_VS_reg)
chart.Weights(SAAS_opt_rebal)
colSums(SAAS_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 1.0648585 1.0455554 0.6071548
## S.P.500
## 0.7568601
SAAS_CBIND_Cummalative <- cumsum(SAAS_Rebal_VS_reg)
SAAS_CBIND_Tail <- tail(SAAS_CBIND_Cummalative, 1)
SAAS_CBIND_Tail$S.P.500 <- NULL
SAAS_CBIND_Tail <- as.data.frame(SAAS_CBIND_Tail)
rownames(SAAS_CBIND_Tail) <- "Software and Services"
highchart(type = "stock") %>%
hc_add_series(SAAS_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(SAAS_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(SAAS_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(SAAS_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Software and Services Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(SAAS_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(SAAS_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(SAAS_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(SAAS_CBIND_Cummalative$S.P.500),
type = "area",
name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Software and Services Portfolio's")
#Standard Deviation
SAAS_SD <-
rollapply(SAAS_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
SAAS_SD <- round(SAAS_SD, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Software and Services Portfolio's") %>%
hc_add_series(SAAS_SD$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(SAAS_SD$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(SAAS_SD$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(SAAS_SD$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
SAAS_SD_df <- as.data.frame(SAAS_SD)
SAAS_SD_df <- rowid_to_column(SAAS_SD_df)
SAAS_SD_df <- SAAS_SD_df[, -1]
hchart(density(SAAS_SD_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(SAAS_SD_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(SAAS_SD_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(SAAS_SD_df$S.P.500),
type = "area",
name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Software and Services Portfolio's")
#Skewness
SAAS_Skew <-
rollapply(S_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
SAAS_Skew <- round(SAAS_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Software and Services Portfolio's") %>%
hc_add_series(SAAS_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(SAAS_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(SAAS_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(SAAS_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(SAAS_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(SAAS_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(SAAS_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(SAAS_Skew$S.P.500),
type = "area",
name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Software and Services Portfolio's")
#Kurtosis
SAAS_Kurtosis <- rollapply(SAAS_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
SAAS_Kurtosis <- round(SAAS_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Software and Services Portfolio's") %>%
hc_add_series(SAAS_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(SAAS_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(SAAS_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(SAAS_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(SAAS_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(SAAS_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(SAAS_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(SAAS_Kurtosis$S.P.500),
type = "area",
name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Software and Services Portfolio's")
Technology Hardware and Equipment
#Technology Hardware and Equipment
THE_Equal_Weights <- rep(1 / ncol(THE_Returns), ncol(THE_Returns))
THE_Equal_Weight_Portfolio <-
Return.portfolio(THE_Returns, THE_Equal_Weights)
THE_Base_Port <- Return.portfolio(THE_Returns, THE_Weights)
THE_Portt <- portfolio.spec(names(THE_Returns))
THE_Portt <-
add.constraint(THE_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
THE_Portt <- add.constraint(THE_Portt, type = "long_only")
THE_Portt <-
add.constraint(THE_Portt,
type = "box",
min = 0,
max = .5)
THE_Portt <-
add.objective(THE_Portt, type = "return", name = "mean")
THE_rp <- random_portfolios_v2(THE_Portt, 1000000, "simplex", TRUE)
THE_nrow <- nrow(THE_rp)
THE_nrow <- as.data.frame(THE_nrow)
colnames(THE_nrow) <- "Technology Hardware and Equipment"
rownames(THE_nrow) <- "Number of Portfolio's"
THE_nrow
## Technology Hardware and Equipment
## Number of Portfolio's 410336
THE_opt_rebal <- optimize.portfolio.rebalancing(
THE_Returns,
THE_Portt,
optimize_method = "DEoptim",
rp = THE_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
THE_RebalanceWeights <- extractWeights(THE_opt_rebal)
THE_rebal_returns <-
Return.portfolio(THE_Returns, weights = THE_RebalanceWeights)
names(THE_rebal_returns) <- "Rebalanced Portfolio"
names(THE_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(THE_Base_Port) <- "Index Weighted Portfolio"
THE_Rebal_VS_reg <-
cbind(THE_rebal_returns,
THE_Equal_Weight_Portfolio,
THE_Base_Port,
SPY_Returns)
THE_Rebal_VS_reg[!is.finite(THE_Rebal_VS_reg)] <- NA
THE_Rebal_VS_reg <- na.omit(THE_Rebal_VS_reg)
chart.Weights(THE_opt_rebal)
colSums(THE_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 1.3541615 0.9838757 1.6565506
## S.P.500
## 0.7568601
THE_CBIND_Cummalative <- cumsum(THE_Rebal_VS_reg)
THE_CBIND_Tail <- tail(THE_CBIND_Cummalative, 1)
THE_CBIND_Tail$S.P.500 <- NULL
THE_CBIND_Tail <- as.data.frame(THE_CBIND_Tail)
rownames(THE_CBIND_Tail) <- "Technology Hardware and Equipment"
highchart(type = "stock") %>%
hc_add_series(THE_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(THE_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(THE_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(THE_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Technology Hardware and Equipment Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(THE_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(THE_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(THE_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(THE_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Technology Hardware and Equipment Portfolio's")
#Standard Deviation
THE_SD <- rollapply(THE_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
THE_SD <- round(THE_SD, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Technology Hardware and Equipment Portfolio's") %>%
hc_add_series(THE_SD$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(THE_SD$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(THE_SD$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(THE_SD$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
THE_SD_df <- as.data.frame(THE_SD)
THE_SD_df <- rowid_to_column(THE_SD_df)
THE_SD_df <- THE_SD_df[, -1]
hchart(density(THE_SD_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(THE_SD_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(THE_SD_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(THE_SD_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Technology Hardware and Equipment Portfolio's")
#Skewness
THE_Skew <-
rollapply(THE_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
THE_Skew <- round(THE_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Technology Hardware and Equipment Portfolio's") %>%
hc_add_series(THE_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(THE_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(THE_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(THE_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(THE_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(THE_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(THE_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(THE_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Technology Hardware and Equipment Portfolio's")
#Kurtosis
THE_Kurtosis <- rollapply(THE_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
THE_Kurtosis <- round(THE_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Technology Hardware and Equipment Portfolio's") %>%
hc_add_series(THE_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(THE_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(THE_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(THE_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(THE_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(THE_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(THE_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(THE_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Technology Hardware and Equipment Portfolio's")
Materials
#Materials
M_Equal_Weights <- rep(1 / ncol(M_Returns), ncol(M_Returns))
M_Equal_Weight_Portfolio <-
Return.portfolio(M_Returns, M_Equal_Weights)
M_Base_Port <- Return.portfolio(M_Returns, M_Weights)
M_Portt <- portfolio.spec(names(M_Returns))
M_Portt <-
add.constraint(M_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
M_Portt <- add.constraint(M_Portt, type = "long_only")
M_Portt <- add.constraint(M_Portt,
type = "box",
min = 0,
max = .5)
M_Portt <- add.objective(M_Portt, type = "return", name = "mean")
M_rp <- random_portfolios_v2(M_Portt, 1000000, "simplex", TRUE)
M_nrow <- nrow(M_rp)
M_nrow <- as.data.frame(M_nrow)
colnames(M_nrow) <- "Materials"
rownames(M_nrow) <- "Number of Portfolio's"
M_nrow
## Materials
## Number of Portfolio's 439658
M_opt_rebal <- optimize.portfolio.rebalancing(
M_Returns,
M_Portt,
optimize_method = "DEoptim",
rp = M_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
M_RebalanceWeights <- extractWeights(M_opt_rebal)
M_rebal_returns <-
Return.portfolio(M_Returns, weights = M_RebalanceWeights)
names(M_rebal_returns) <- "Rebalanced Portfolio"
names(M_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(M_Base_Port) <- "Index Weighted Portfolio"
M_Rebal_VS_reg <-
cbind(M_rebal_returns,
M_Equal_Weight_Portfolio,
M_Base_Port,
SPY_Returns)
M_Rebal_VS_reg[!is.finite(M_Rebal_VS_reg)] <- NA
M_Rebal_VS_reg <- na.omit(M_Rebal_VS_reg)
chart.Weights(M_opt_rebal)
colSums(M_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 1.0693803 0.6808294 0.5885073
## S.P.500
## 0.7568601
M_CBIND_Cummalative <- cumsum(M_Rebal_VS_reg)
M_CBIND_Tail <- tail(M_CBIND_Cummalative, 1)
M_CBIND_Tail$S.P.500 <- NULL
M_CBIND_Tail <- as.data.frame(M_CBIND_Tail)
rownames(M_CBIND_Tail) <- "Materials"
highchart(type = "stock") %>%
hc_add_series(M_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(M_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(M_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(M_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Materials Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(M_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(M_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(M_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(M_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Materials Portfolio's")
#Standard Deviation
M_SD <- rollapply(M_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
M_SD <- round(M_SD, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Materials Portfolio's") %>%
hc_add_series(M_SD$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(M_SD$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(M_SD$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(M_SD$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
M_SD_df <- as.data.frame(M_SD)
M_SD_df <- rowid_to_column(M_SD_df)
M_SD_df <- M_SD_df[, -1]
hchart(density(M_SD_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(M_SD_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(M_SD_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(M_SD_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Materials Portfolio's")
#Skewness
M_Skew <-
rollapply(M_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
M_Skew <- round(M_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Materials Portfolio's") %>%
hc_add_series(M_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(M_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(M_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(M_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(M_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(M_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(M_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(M_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Materials Portfolio's")
#Kurtosis
M_Kurtosis <- rollapply(M_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
M_Kurtosis <- round(M_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Materials Portfolio's") %>%
hc_add_series(M_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(M_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(M_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(M_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(M_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(M_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(M_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(M_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Materials Portfolio's")
Real Estate
#Real Estate
RE_Equal_Weights <- rep(1 / ncol(RE_Returns), ncol(RE_Returns))
RE_Equal_Weight_Portfolio <-
Return.portfolio(RE_Returns, RE_Equal_Weights)
RE_Base_Port <- Return.portfolio(RE_Returns, RE_Weights)
RE_Portt <- portfolio.spec(names(RE_Returns))
RE_Portt <-
add.constraint(RE_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
RE_Portt <- add.constraint(RE_Portt, type = "long_only")
RE_Portt <-
add.constraint(RE_Portt,
type = "box",
min = 0,
max = .5)
RE_Portt <- add.objective(RE_Portt, type = "return", name = "mean")
RE_rp <- random_portfolios_v2(RE_Portt, 1000000, "simplex", TRUE)
RE_nrow <- nrow(RE_rp)
RE_nrow <- as.data.frame(RE_nrow)
colnames(RE_nrow) <- "Real Estate"
rownames(RE_nrow) <- "Number of Portfolio's"
RE_nrow
## Real Estate
## Number of Portfolio's 446118
RE_opt_rebal <- optimize.portfolio.rebalancing(
RE_Returns,
RE_Portt,
optimize_method = "DEoptim",
rp = RE_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
RE_RebalanceWeights <- extractWeights(RE_opt_rebal)
RE_rebal_returns <-
Return.portfolio(RE_Returns, weights = RE_RebalanceWeights)
names(RE_rebal_returns) <- "Rebalanced Portfolio"
names(RE_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(RE_Base_Port) <- "Index Weighted Portfolio"
RE_Rebal_VS_reg <-
cbind(RE_rebal_returns,
RE_Equal_Weight_Portfolio,
RE_Base_Port,
SPY_Returns)
RE_Rebal_VS_reg[!is.finite(RE_Rebal_VS_reg)] <- NA
RE_Rebal_VS_reg <- na.omit(RE_Rebal_VS_reg)
chart.Weights(RE_opt_rebal)
colSums(RE_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.4569431 0.3714118 0.3938738
## S.P.500
## 0.7568601
RE_CBIND_Cummalative <- cumsum(RE_Rebal_VS_reg)
RE_CBIND_Tail <- tail(RE_CBIND_Cummalative, 1)
RE_CBIND_Tail$S.P.500 <- NULL
RE_CBIND_Tail <- as.data.frame(RE_CBIND_Tail)
rownames(RE_CBIND_Tail) <- "Real Estate"
highchart(type = "stock") %>%
hc_add_series(RE_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(RE_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(RE_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(RE_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Real Estate Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(RE_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(RE_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(RE_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(RE_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Real Estate Portfolio's")
#Standard Deviation
RE_SD <- rollapply(RE_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
RE_SD <- round(RE_SD, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Real Estate Portfolio's") %>%
hc_add_series(RE_SD$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(RE_SD$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(RE_SD$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(RE_SD$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
RE_SD_df <- as.data.frame(RE_SD)
RE_SD_df <- rowid_to_column(RE_SD_df)
RE_SD_df <- RE_SD_df[, -1]
hchart(density(RE_SD_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(RE_SD_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(RE_SD_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(RE_SD_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Real Estate Portfolio's")
#Skewness
RE_Skew <-
rollapply(RE_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
RE_Skew <- round(RE_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Real Estate Portfolio's") %>%
hc_add_series(RE_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(RE_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(RE_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(RE_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(RE_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(RE_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(RE_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(RE_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Real Estate Portfolio's")
#Kurtosis
RE_Kurtosis <- rollapply(RE_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
RE_Kurtosis <- round(RE_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Real Estate Portfolio's") %>%
hc_add_series(RE_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(RE_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(RE_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(RE_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(RE_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(RE_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(RE_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(RE_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurotosis Frequency Table for Real Estate Portfolio's")
Utilities
#Utilities
U_Equal_Weights <- rep(1 / ncol(U_Returns), ncol(U_Returns))
U_Equal_Weight_Portfolio <-
Return.portfolio(U_Returns, U_Equal_Weights)
U_Base_Port <- Return.portfolio(U_Returns, U_Weight)
U_Portt <- portfolio.spec(names(U_Returns))
U_Portt <-
add.constraint(U_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
U_Portt <- add.constraint(U_Portt, type = "long_only")
U_Portt <- add.constraint(U_Portt,
type = "box",
min = 0,
max = .5)
U_Portt <- add.objective(U_Portt, type = "return", name = "mean")
U_rp <- random_portfolios_v2(U_Portt, 1000000, "simplex", TRUE)
U_nrow <- nrow(U_rp)
U_nrow <- as.data.frame(U_nrow)
colnames(U_nrow) <- "Utilities"
rownames(U_nrow) <- "Number of Portfolio's"
U_nrow
## Utilities
## Number of Portfolio's 443053
U_opt_rebal <- optimize.portfolio.rebalancing(
U_Returns,
U_Portt,
optimize_method = "DEoptim",
rp = U_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
U_RebalanceWeights <- extractWeights(U_opt_rebal)
U_rebal_returns <-
Return.portfolio(U_Returns, weights = U_RebalanceWeights)
names(U_rebal_returns) <- "Rebalanced Portfolio"
names(U_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(U_Base_Port) <- "Index Weighted Portfolio"
U_Rebal_VS_reg <-
cbind(U_rebal_returns,
U_Equal_Weight_Portfolio,
U_Base_Port,
SPY_Returns)
U_Rebal_VS_reg[!is.finite(U_Rebal_VS_reg)] <- NA
U_Rebal_VS_reg <- na.omit(U_Rebal_VS_reg)
chart.Weights(U_opt_rebal)
colSums(U_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.5125645 0.5015525 0.4025083
## S.P.500
## 0.7568601
U_CBIND_Cummalative <- cumsum(U_Rebal_VS_reg)
U_CBIND_Tail <- tail(U_CBIND_Cummalative, 1)
U_CBIND_Tail$S.P.500 <- NULL
U_CBIND_Tail <- as.data.frame(U_CBIND_Tail)
rownames(U_CBIND_Tail) <- "Utilities"
highchart(type = "stock") %>%
hc_add_series(U_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(U_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(U_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(U_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Utilities Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(U_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(U_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(U_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(U_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Utilities Portfolio's")
#Standard Deviation
U_SD <- rollapply(U_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
U_SD <- round(U_SD, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Utilities Portfolio's") %>%
hc_add_series(U_SD$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(U_SD$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(U_SD$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(U_SD$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
U_SD_df <- as.data.frame(U_SD)
U_SD_df <- rowid_to_column(U_SD_df)
U_SD_df <- U_SD_df[, -1]
hchart(density(U_SD_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(U_SD_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(U_SD_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(U_SD_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Utilities Portfolio's")
#Skewness
U_Skew <-
rollapply(U_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
U_Skew <- round(U_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Utilities Portfolio's") %>%
hc_add_series(U_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(U_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(U_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(U_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(U_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(U_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(U_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(U_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Utilities Portfolio's")
#Kurtosis
U_Kurtosis <- rollapply(U_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
U_Kurtosis <- round(U_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Utilities Portfolio's") %>%
hc_add_series(U_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(U_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(U_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(U_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(U_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(U_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(U_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(U_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Utilities Portfolio's")
Comparison of Portfolios Created
#Comparison of Numer of Portfolio's Created
Number_of_rp <- cbind(
U_nrow,
RE_nrow,
M_nrow,
THE_nrow,
SAAS_nrow,
S_nrow,
T_nrow,
CPS_nrow,
CG_nrow,
PB_nrow,
HCES_nrow,
I_nrow,
DF_nrow,
B_nrow,
E_nrow,
HPP_nrow,
FBT_nrow,
FSR_nrow,
R_nrow,
CS_nrow,
CDA_nrow,
AC_nrow,
TS_nrow,
ME_nrow
)
Number_of_rp <- t(Number_of_rp)
Number_of_rp <- as.data.frame(Number_of_rp)
Number_of_rp <- rownames_to_column(Number_of_rp, "Sector")
highchart() %>%
hc_chart(type = "column") %>%
hc_xAxis(categories = Number_of_rp$Sector) %>%
hc_add_series(data = Number_of_rp$`Number of Portfolio's`) %>%
hc_add_theme(hc_theme_538()) %>%
hc_title(text = "Number of Portfolios Created") %>%
hc_legend(enabled = FALSE)
#comparison bar charts of returns
Master_Bar_Tail_Returns <- rbind(
ME_CBIND_Tail,
TS_CBIND_Tail,
AC_CBIND_Tail,
CDA_CBIND_Tail,
CS_CBIND_Tail,
R_CBIND_Tail,
FSR_CBIND_Tail,
FBT_CBIND_Tail,
HPP_CBIND_Tail,
E_CBIND_Tail,
B_CBIND_Tail,
DF_CBIND_Tail,
I_CBIND_Tail,
HCES_CBIND_Tail,
PB_CBIND_Tail,
CG_CBIND_Tail,
CPS_CBIND_Tail,
T_CBIND_Tail,
S_CBIND_Tail,
SAAS_CBIND_Tail,
THE_CBIND_Tail,
M_CBIND_Tail,
RE_CBIND_Tail,
U_CBIND_Tail
)
Master_Bar_Tail_Returns <-
rownames_to_column(Master_Bar_Tail_Returns, "Sector")
highchart() %>%
hc_chart(type = "column") %>%
hc_add_theme(hc_theme_538()) %>%
hc_xAxis(categories = Master_Bar_Tail_Returns$Sector) %>%
hc_add_series(Master_Bar_Tail_Returns$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(Master_Bar_Tail_Returns$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(Master_Bar_Tail_Returns$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_title(text = "Comparative Portfolio Returns by Group")
#All rebalanced portfolios
highchart(type = "stock") %>%
hc_add_series(ME_CBIND_Cummalative$Rebalanced.Portfolio, name = "Media and Entertainment") %>%
hc_add_series(TS_CBIND_Cummalative$Rebalanced.Portfolio, name = "Telecommunication Services") %>%
hc_add_series(AC_CBIND_Cummalative$Rebalanced.Portfolio, name = "Automobiles and Components") %>%
hc_add_series(CDA_CBIND_Cummalative$Rebalanced.Portfolio, name = "Consumer Durables and Aparrel") %>%
hc_add_series(CS_CBIND_Cummalative$Rebalanced.Portfolio, name = "Consumer Services") %>%
hc_add_series(R_CBIND_Cummalative$Rebalanced.Portfolio, name = "Retail") %>%
hc_add_series(FSR_CBIND_Cummalative$Rebalanced.Portfolio, name = "Food and Staples Retail") %>%
hc_add_series(FBT_CBIND_Cummalative$Rebalanced.Portfolio, name = "Food Beverage and Tobacco") %>%
hc_add_series(HPP_CBIND_Cummalative$Rebalanced.Portfolio, name = "Household and Personal Products") %>%
hc_add_series(E_CBIND_Cummalative$Rebalanced.Portfolio, name = "Energy") %>%
hc_add_series(B_CBIND_Cummalative$Rebalanced.Portfolio, name = "Banks") %>%
hc_add_series(DF_CBIND_Cummalative$Rebalanced.Portfolio, name = "Diversified Financials") %>%
hc_add_series(I_CBIND_Cummalative$Rebalanced.Portfolio, name = "Insurance") %>%
hc_add_series(HCES_CBIND_Cummalative$Rebalanced.Portfolio, name = "Health Care Equipment and Services") %>%
hc_add_series(PB_CBIND_Cummalative$Rebalanced.Portfolio, name = "Pharmaceuticals and Biotechnology") %>%
hc_add_series(CG_CBIND_Cummalative$Rebalanced.Portfolio, name = "Capital Goods") %>%
hc_add_series(CPS_CBIND_Cummalative$Rebalanced.Portfolio, name = "Commercial and Professional Services") %>%
hc_add_series(T_CBIND_Cummalative$Rebalanced.Portfolio, name = "Transportation") %>%
hc_add_series(S_CBIND_Cummalative$Rebalanced.Portfolio, name = "Semiconductors") %>%
hc_add_series(SAAS_CBIND_Cummalative$Rebalanced.Portfolio, name = "Software and Services") %>%
hc_add_series(THE_CBIND_Cummalative$Rebalanced.Portfolio, name = "Technology Hardware and Equipment") %>%
hc_add_series(M_CBIND_Cummalative$Rebalanced.Portfolio, name = "Materials") %>%
hc_add_series(RE_CBIND_Cummalative$Rebalanced.Portfolio, name = "Real Estate") %>%
hc_add_series(U_CBIND_Cummalative$Rebalanced.Portfolio, name = "Utilities") %>%
hc_legend(enabled = TRUE) %>%
hc_title(text = "All Rebalanced Portfolio's")
#all Equal Ports
highchart(type = "stock") %>%
hc_add_series(ME_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Media and Entertainment") %>%
hc_add_series(TS_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Telecommunication Services") %>%
hc_add_series(AC_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Automobiles and Components") %>%
hc_add_series(CDA_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Consumer Durables and Aparrel") %>%
hc_add_series(CS_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Consumer Services") %>%
hc_add_series(R_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Retail") %>%
hc_add_series(FSR_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Food and Staples Retail") %>%
hc_add_series(FBT_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Food Beverage and Tobacco") %>%
hc_add_series(HPP_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Household and Personal Products") %>%
hc_add_series(E_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Energy") %>%
hc_add_series(B_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Banks") %>%
hc_add_series(DF_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Diversified Financials") %>%
hc_add_series(I_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Insurance") %>%
hc_add_series(HCES_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Health Care Equipment and Services") %>%
hc_add_series(PB_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Pharmaceuticals and Biotechnology") %>%
hc_add_series(CG_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Capital Goods") %>%
hc_add_series(CPS_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Commercial and Professional Services") %>%
hc_add_series(T_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Transportation") %>%
hc_add_series(S_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Semiconductors") %>%
hc_add_series(SAAS_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Software and Services") %>%
hc_add_series(THE_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Technology Hardware and Equipment") %>%
hc_add_series(M_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Materials") %>%
hc_add_series(RE_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Real Estate") %>%
hc_add_series(U_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Utilities") %>%
hc_legend(enabled = TRUE) %>%
hc_title(text = "All Equal Weight Portfolio's")
#all Index Ports
highchart(type = "stock") %>%
hc_add_series(ME_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Media and Entertainment") %>%
hc_add_series(TS_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Telecommunication Services") %>%
hc_add_series(AC_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Automobiles and Components") %>%
hc_add_series(CDA_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Consumer Durables and Aparrel") %>%
hc_add_series(CS_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Consumer Services") %>%
hc_add_series(R_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Retail") %>%
hc_add_series(FSR_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Food and Staples Retail") %>%
hc_add_series(FBT_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Food Beverage and Tobacco") %>%
hc_add_series(HPP_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Household and Personal Products") %>%
hc_add_series(E_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Energy") %>%
hc_add_series(B_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Banks") %>%
hc_add_series(DF_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Diversified Financials") %>%
hc_add_series(I_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Insurance") %>%
hc_add_series(HCES_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Health Care Equipment and Services") %>%
hc_add_series(PB_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Pharmaceuticals and Biotechnology") %>%
hc_add_series(CG_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Capital Goods") %>%
hc_add_series(CPS_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Commercial and Professional Services") %>%
hc_add_series(T_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Transportation") %>%
hc_add_series(S_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Semiconductors") %>%
hc_add_series(SAAS_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Software and Services") %>%
hc_add_series(THE_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Technology Hardware and Equipment") %>%
hc_add_series(M_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Materials") %>%
hc_add_series(RE_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Real Estate") %>%
hc_add_series(U_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Utilities") %>%
hc_legend(enabled = TRUE) %>%
hc_title(text = "All Index Weighted Portfolio's")
Master Portfolio
#Master Portfolio
colnames(ME_rebal_returns) <- "Media and Entertainement"
colnames(TS_rebal_returns) <- "Telecommunication Services"
colnames(AC_rebal_returns) <- "Automobiles and Components"
colnames(CDA_rebal_returns) <- "Consumer Durables and Aparrel"
colnames(CS_rebal_returns) <- "Consumer Services"
colnames(R_rebal_returns) <- "Retail"
colnames(FSR_rebal_returns) <- "Food and Staples Retail"
colnames(FBT_rebal_returns) <- "Food Beverage and Tobacco"
colnames(HPP_rebal_returns) <- "Household and Personal Products"
colnames(E_rebal_returns) <- "Energy"
colnames(B_rebal_returns) <- "Banks"
colnames(DF_rebal_returns) <- "Diversified Financials"
colnames(I_rebal_returns) <- "Insurance"
colnames(HCES_rebal_returns) <- "Health Care Equipment and Services"
colnames(PB_rebal_returns) <- "Pharmaceuticals and Biotechnology"
colnames(CG_rebal_returns) <- "Capital Goods"
colnames(CPS_rebal_returns) <- "Commercial and Professional Services"
colnames(T_rebal_returns) <- "Transportation"
colnames(S_rebal_returns) <- "Semiconductors"
colnames(SAAS_rebal_returns) <- "Software and Services"
colnames(THE_rebal_returns) <- "Technology Hardware and Equipment"
colnames(M_rebal_returns) <- "Materials"
colnames(RE_rebal_returns) <- "Real Estate"
colnames(U_rebal_returns) <- "Utilities"
Master_Returns <- cbind(ME_rebal_returns$`Media and Entertainement`,
AC_rebal_returns$`Automobiles and Components`,
CDA_rebal_returns$`Consumer Durables and Aparrel`,
CS_rebal_returns$`Consumer Services`,
R_rebal_returns$Retail,
FSR_rebal_returns$`Food and Staples Retail`,
FBT_rebal_returns$`Food Beverage and Tobacco`,
HPP_rebal_returns$`Household and Personal Products`,
E_rebal_returns$Energy,
B_rebal_returns$Banks,
DF_rebal_returns$`Diversified Financials`,
I_rebal_returns$Insurance,
HCES_rebal_returns$`Health Care Equipment and Services`,
PB_rebal_returns$`Pharmaceuticals and Biotechnology`,
CG_rebal_returns$`Capital Goods`,
CPS_rebal_returns$`Commercial and Professional Services`,
T_rebal_returns$Transportation,
S_rebal_returns$Semiconductors,
SAAS_rebal_returns$`Software and Services`,
THE_rebal_returns$`Technology Hardware and Equipment`,
M_rebal_returns$Materials,
RE_rebal_returns$`Real Estate`,
U_rebal_returns$Utilities
)
Master_Returns <- as.xts(Master_Returns)
#Master Port
Master_Equal_Weights <- rep(1 / ncol(Master_Returns), ncol(Master_Returns))
Master_Equal_Weight_Portfolio <-
Return.portfolio(Master_Returns, Master_Equal_Weights)
Master_Base_Port <- Return.portfolio(Master_Returns, Sector_Weights)
Master_Portt <- portfolio.spec(names(Master_Returns))
Master_Portt <-
add.constraint(Master_Portt,
type = "weight_sum",
min_sum = .5,
max_sum = 1.01)
Master_Portt <- add.constraint(Master_Portt, type = "long_only")
Master_Portt <- add.constraint(Master_Portt,
type = "box",
min = 0,
max = .5)
Master_Portt <- add.objective(Master_Portt, type = "return", name = "mean")
Master_rp <- random_portfolios_v2(Master_Portt, 1000000, "simplex", TRUE)
Master_nrow <- nrow(Master_rp)
Master_nrow <- as.data.frame(Master_nrow)
colnames(Master_nrow) <- "Master"
rownames(Master_nrow) <- "Number of Portfolio's"
Master_nrow
## Master
## Number of Portfolio's 419813
Master_opt_rebal <- optimize.portfolio.rebalancing(
Master_Returns,
Master_Portt,
optimize_method = "DEoptim",
rp = U_rp,
rebalance_on = "months",
training_period = 12,
rolling_window = 6
)
Master_RebalanceWeights <- extractWeights(Master_opt_rebal)
Master_rebal_returns <-
Return.portfolio(Master_Returns, weights = Master_RebalanceWeights)
## Warning in Return.portfolio.geometric(R = R, weights = weights, wealth.index =
## wealth.index, : The weights for one or more periods do not sum up to 1: assuming
## a return of 0 for the residual weights
names(Master_rebal_returns) <- "Rebalanced Portfolio"
names(Master_Equal_Weight_Portfolio) <- "Equal Weight Portfolio"
names(Master_Base_Port) <- "Index Weighted Portfolio"
Master_Rebal_VS_reg <-
cbind(Master_rebal_returns,
Master_Equal_Weight_Portfolio,
Master_Base_Port,
SPY_Returns)
Master_Rebal_VS_reg[!is.finite(Master_Rebal_VS_reg)] <- NA
Master_Rebal_VS_reg <- na.omit(Master_Rebal_VS_reg)
chart.Weights(Master_opt_rebal)
colSums(Master_Rebal_VS_reg)
## Rebalanced.Portfolio Equal.Weight.Portfolio Index.Weighted.Portfolio
## 0.7959087 0.8408359 1.0006238
## S.P.500
## 0.7576905
Master_CBIND_Cummalative <- cumsum(Master_Rebal_VS_reg)
Master_CBIND_Tail <- tail(Master_CBIND_Cummalative, 1)
Master_CBIND_Tail$S.P.500 <- NULL
Master_CBIND_Tail <- as.data.frame(Master_CBIND_Tail)
rownames(Master_CBIND_Tail) <- "Master"
highchart(type = "stock") %>%
hc_add_series(Master_CBIND_Cummalative$Rebalanced.Portfolio, name = "Rebalanced") %>%
hc_add_series(Master_CBIND_Cummalative$Equal.Weight.Portfolio, name = "Equal Weight") %>%
hc_add_series(Master_CBIND_Cummalative$Index.Weighted.Portfolio, name = "Index Weights") %>%
hc_add_series(Master_CBIND_Cummalative$S.P.500, name = "S&P 500") %>%
hc_title(text = "Master Portfolio's") %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(Master_CBIND_Cummalative$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(Master_CBIND_Cummalative$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(Master_CBIND_Cummalative$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(Master_CBIND_Cummalative$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Return Frequency Table for Utilities Portfolio's")
#Standard Deviation
Master_SD <- rollapply(Master_Rebal_VS_reg, FUN = sd, width = window) %>%
na.omit
Master_SD <- round(Master_SD, 6) * 100
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Volatility for Master Portfolio's") %>%
hc_add_series(Master_SD$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(Master_SD$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(Master_SD$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(Master_SD$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
Master_SD_df <- as.data.frame(U_SD)
Master_SD_df <- rowid_to_column(U_SD_df)
Master_SD_df <- Master_SD_df[, -1]
hchart(density(Master_SD_df$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(Master_SD_df$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(Master_SD_df$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(Master_SD_df$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Standard Deviation Frequency Table for Utilities Portfolio's")
#Skewness
Master_Skew <-
rollapply(Master_Rebal_VS_reg, FUN = skewness, width = window) %>%
na.omit()
Master_Skew <- round(U_Skew, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Skew for Master Portfolio's") %>%
hc_add_series(Master_Skew$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(Master_Skew$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(Master_Skew$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(Master_Skew$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(Master_Skew$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(Master_Skew$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(Master_Skew$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(Master_Skew$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Skew Frequency Table for Utilities Portfolio's")
#Kurtosis
Master_Kurtosis <- rollapply(Master_Rebal_VS_reg, FUN = kurtosis, width = window) %>%
na.omit()
Master_Kurtosis <- round(Master_Kurtosis, 4)
highchart(type = "stock") %>%
hc_title(text = "24 Month Rolling Kurtosis for Master Portfolio's") %>%
hc_add_series(Master_Kurtosis$Rebalanced.Portfolio, name = "Rebalanced Portfolio") %>%
hc_add_series(Master_Kurtosis$Equal.Weight.Portfolio, name = "Equal Weight Portfolio") %>%
hc_add_series(Master_Kurtosis$Index.Weighted.Portfolio, name = "Index Weighted Portfolio") %>%
hc_add_series(Master_Kurtosis$S.P.500, name = "S&P 500") %>%
hc_add_theme(hc_theme_538()) %>%
hc_yAxis(labels = list(format = "{value}%"),
opposite = FALSE) %>%
hc_navigator(enabled = FALSE) %>%
hc_scrollbar(enabled = FALSE) %>%
hc_exporting(enabled = TRUE) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_538())
hchart(density(Master_Kurtosis$Rebalanced.Portfolio),
type = "area",
name = "Rebalanced Portfolio") %>%
hc_add_theme(hc_theme_538()) %>%
hc_add_series(density(Master_Kurtosis$Equal.Weight.Portfolio),
type = "area",
name = "Equal Weight Portfolio") %>%
hc_add_series(density(Master_Kurtosis$Index.Weighted.Portfolio),
type = "area",
name = "Index Weighted Portfolio") %>%
hc_add_series(density(Master_Kurtosis$S.P.500), type = "area", name = "S&P 500") %>%
hc_title(text = "Kurtosis Frequency Table for Utilities Portfolio's")