rm(list = ls())
library(readxl)
library(pacman)
library(xts)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(devtools)
## Loading required package: usethis
# SIT
rm(list=ls())
devtools::install_github('joshuaulrich/xts', force = T)
## Downloading GitHub repo joshuaulrich/xts@HEAD
##
## ── R CMD build ─────────────────────────────────────────────────────────────────
##
checking for file ‘/tmp/RtmpVB9LpL/remotesb4a78d4630d/joshuaulrich-xts-ac3bc1d/DESCRIPTION’ ...
✔ checking for file ‘/tmp/RtmpVB9LpL/remotesb4a78d4630d/joshuaulrich-xts-ac3bc1d/DESCRIPTION’
##
─ preparing ‘xts’:
##
checking DESCRIPTION meta-information ...
✔ checking DESCRIPTION meta-information
##
─ cleaning src
##
─ checking for LF line-endings in source and make files and shell scripts
##
─ checking for empty or unneeded directories
##
─ looking to see if a ‘data/datalist’ file should be added
##
─ building ‘xts_0.13.0.2.tar.gz’
##
Warning: invalid uid value replaced by that for user 'nobody'
##
##
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
devtools::install_github('joshuaulrich/quantmod', force = T)
## Downloading GitHub repo joshuaulrich/quantmod@HEAD
##
## ── R CMD build ─────────────────────────────────────────────────────────────────
##
checking for file ‘/tmp/RtmpVB9LpL/remotesb4a29e34928/joshuaulrich-quantmod-50e1e85/DESCRIPTION’ ...
✔ checking for file ‘/tmp/RtmpVB9LpL/remotesb4a29e34928/joshuaulrich-quantmod-50e1e85/DESCRIPTION’
##
─ preparing ‘quantmod’:
##
checking DESCRIPTION meta-information ...
✔ checking DESCRIPTION meta-information
##
─ installing the package to process help pages
##
─ saving partial Rd database (6.8s)
##
─ checking for LF line-endings in source and make files and shell scripts
##
─ checking for empty or unneeded directories
##
─ building ‘quantmod_0.4.20.2.tar.gz’
##
Warning: invalid uid value replaced by that for user 'nobody'
##
##
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
#
devtools::install_github('systematicinvestor/SIT.date', force = T)
## Downloading GitHub repo systematicinvestor/SIT.date@HEAD
##
## ── R CMD build ─────────────────────────────────────────────────────────────────
##
checking for file ‘/tmp/RtmpVB9LpL/remotesb4a2b2248c7/systematicinvestor-SIT.date-6263da6/DESCRIPTION’ ...
✔ checking for file ‘/tmp/RtmpVB9LpL/remotesb4a2b2248c7/systematicinvestor-SIT.date-6263da6/DESCRIPTION’
##
─ preparing ‘SIT.date’:
##
checking DESCRIPTION meta-information ...
✔ checking DESCRIPTION meta-information
##
─ checking for LF line-endings in source and make files and shell scripts
##
─ checking for empty or unneeded directories
## Omitted ‘LazyData’ from DESCRIPTION
##
─ building ‘SIT.date_0.1.tar.gz’
##
Warning: invalid uid value replaced by that for user 'nobody'
##
##
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
curl::curl_download('https://github.com/systematicinvestor/SIT/raw/master/SIT.tar.gz', 'SIT.tar.gz',mode = 'wb',quiet=T)
install.packages('SIT.tar.gz', repos = NULL, type='source')
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
library(SIT)
## Loading required package: SIT.date
## Loading required package: quantmod
## Loading required package: TTR
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
##
## Attaching package: 'SIT'
## The following object is masked from 'package:TTR':
##
## DVI
## The following object is masked from 'package:base':
##
## close
X48_Industry_Portfolios <- read_excel("48_Industry_Portfolios11.xlsx", range = "A12:AW168")
head(X48_Industry_Portfolios)
## # A tibble: 6 × 49
## Date Agric Food Soda Beer Smoke Toys Fun Books Hshld Clths Hlth
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 200901 7.18 -0.21 -7.42 -7.41 -1.23 -14.4 -12.8 -10.5 -10.8 -11.7 -3.49
## 2 200902 -0.53 -11.0 -3.2 -4.73 -7.82 -14.1 -15.7 -13.2 -11.2 -8.77 -9.99
## 3 200903 8.88 1.02 14.9 7 6.78 5.28 9.02 8.09 0.62 15.6 1.9
## 4 200904 3.12 3.47 28.5 -1.45 2.12 22.8 39.3 30.7 8.87 21.3 15.7
## 5 200905 -2.98 7.63 0.94 9.45 9.53 2.8 8.59 -0.48 4.63 3.15 4.03
## 6 200906 -8.06 2.6 -1.33 1.63 -0.07 -2.36 -4.51 -1.49 0.69 -3.5 3.61
## # … with 37 more variables: MedEq <dbl>, Drugs <dbl>, Chems <dbl>, Rubbr <dbl>,
## # Txtls <dbl>, BldMt <dbl>, Cnstr <dbl>, Steel <dbl>, FabPr <dbl>,
## # Mach <dbl>, ElcEq <dbl>, Autos <dbl>, Aero <dbl>, Ships <dbl>, Guns <dbl>,
## # Gold <dbl>, Mines <dbl>, Coal <dbl>, Oil <dbl>, Util <dbl>, Telcm <dbl>,
## # PerSv <dbl>, BusSv <dbl>, Comps <dbl>, Chips <dbl>, LabEq <dbl>,
## # Paper <dbl>, Boxes <dbl>, Trans <dbl>, Whlsl <dbl>, Rtail <dbl>,
## # Meals <dbl>, Banks <dbl>, Insur <dbl>, RlEst <dbl>, Fin <dbl>, …
str(X48_Industry_Portfolios)
## tibble [156 × 49] (S3: tbl_df/tbl/data.frame)
## $ Date : num [1:156] 200901 200902 200903 200904 200905 ...
## $ Agric: num [1:156] 7.18 -0.53 8.88 3.12 -2.98 ...
## $ Food : num [1:156] -0.21 -11.03 1.02 3.47 7.63 ...
## $ Soda : num [1:156] -7.42 -3.2 14.89 28.49 0.94 ...
## $ Beer : num [1:156] -7.41 -4.73 7 -1.45 9.45 1.63 3.71 -0.72 7.7 0.98 ...
## $ Smoke: num [1:156] -1.23 -7.82 6.78 2.12 9.53 -0.07 7.45 0.3 4.61 -0.31 ...
## $ Toys : num [1:156] -14.36 -14.14 5.28 22.78 2.8 ...
## $ Fun : num [1:156] -12.75 -15.74 9.02 39.31 8.59 ...
## $ Books: num [1:156] -10.5 -13.19 8.09 30.74 -0.48 ...
## $ Hshld: num [1:156] -10.84 -11.15 0.62 8.87 4.63 ...
## $ Clths: num [1:156] -11.73 -8.77 15.61 21.29 3.15 ...
## $ Hlth : num [1:156] -3.49 -9.99 1.9 15.66 4.03 ...
## $ MedEq: num [1:156] 2.93 -12.65 4.42 6.4 5.7 ...
## $ Drugs: num [1:156] -2.93 -9.47 7.8 -3.1 6.49 3.33 6.08 1.56 2.37 -3.39 ...
## $ Chems: num [1:156] -6.56 -8.24 16.3 19.06 6.93 ...
## $ Rubbr: num [1:156] -14.9 -20.83 5.88 31.95 2.47 ...
## $ Txtls: num [1:156] -25.12 -28.63 29.53 58.93 -6.65 ...
## $ BldMt: num [1:156] -15.92 -17.17 10.33 34.41 -3.87 ...
## $ Cnstr: num [1:156] -11.69 -12.23 15.07 14.76 -0.04 ...
## $ Steel: num [1:156] -16.85 -19.29 12.28 26.25 9.56 ...
## $ FabPr: num [1:156] -5.76 -13.92 4.76 30.38 0.43 ...
## $ Mach : num [1:156] -10.07 -13.03 11.85 19.69 4.15 ...
## $ ElcEq: num [1:156] -12.03 -15.32 7.58 22.88 -1.52 ...
## $ Autos: num [1:156] -9.96 -10.16 12.07 49.57 -3.44 ...
## $ Aero : num [1:156] -4.31 -18 6.6 15.23 9.36 ...
## $ Ships: num [1:156] -4.54 -21.98 -3.36 28.37 7.27 ...
## $ Guns : num [1:156] -2.85 -20.83 8.23 13.97 6.84 ...
## $ Gold : num [1:156] -2.51 4.18 8.53 -8.46 21.32 ...
## $ Mines: num [1:156] -11.66 -0.37 19.06 9.78 16.31 ...
## $ Coal : num [1:156] 2.17 -4.96 0.25 15.22 35.1 ...
## $ Oil : num [1:156] -3.64 -12.6 4.01 4.22 9.75 -4.45 5.01 0.73 4.66 2.58 ...
## $ Util : num [1:156] -0.82 -12.59 2.78 2.08 4.64 ...
## $ Telcm: num [1:156] -9.96 -7.05 7.63 10.34 1.51 ...
## $ PerSv: num [1:156] 0.01 -11.01 4.29 -5.03 -0.92 ...
## $ BusSv: num [1:156] -3.56 -3.72 9.62 11.02 3.33 ...
## $ Comps: num [1:156] -3.57 -6.87 13.46 16.8 1.08 ...
## $ Chips: num [1:156] -3.53 -6.29 13.94 12.43 3.26 ...
## $ LabEq: num [1:156] -0.55 -8.64 6.8 9.56 3.45 5.26 6.56 1.16 6.77 -3.35 ...
## $ Paper: num [1:156] -9.93 -14.42 7.94 23.11 3.23 ...
## $ Boxes: num [1:156] -9.89 -4.06 6.55 12.16 6.54 ...
## $ Trans: num [1:156] -16.09 -11.41 9.03 14.18 2.55 ...
## $ Whlsl: num [1:156] -1.4 -8.78 4.16 15.23 4.76 ...
## $ Rtail: num [1:156] -8.68 -1.24 11.31 9.41 -2.94 ...
## $ Meals: num [1:156] -7.72 -7.48 9.06 9.13 5.76 -3.13 2.3 3.12 3.55 -2.87 ...
## $ Banks: num [1:156] -27.23 -14.99 14.52 19.72 9.93 ...
## $ Insur: num [1:156] -14.68 -19.81 10.83 13.43 8.14 ...
## $ RlEst: num [1:156] -7.2 -24.68 0.87 66.02 0 ...
## $ Fin : num [1:156] -10.17 -3.52 19.53 14.74 11.72 ...
## $ Other: num [1:156] -19.81 -22.34 11.6 21.01 7.31 ...
date <- seq(as.Date("2009-02-01"), length=156, by="1 month") - 1
head(date)
## [1] "2009-01-31" "2009-02-28" "2009-03-31" "2009-04-30" "2009-05-31"
## [6] "2009-06-30"
X48_Industry_Portfolios <- xts(coredata(X48_Industry_Portfolios[, -1]/100), order.by = date)
head(X48_Industry_Portfolios)
## Agric Food Soda Beer Smoke Toys Fun Books
## 2009-01-31 0.0718 -0.0021 -0.0742 -0.0741 -0.0123 -0.1436 -0.1275 -0.1050
## 2009-02-28 -0.0053 -0.1103 -0.0320 -0.0473 -0.0782 -0.1414 -0.1574 -0.1319
## 2009-03-31 0.0888 0.0102 0.1489 0.0700 0.0678 0.0528 0.0902 0.0809
## 2009-04-30 0.0312 0.0347 0.2849 -0.0145 0.0212 0.2278 0.3931 0.3074
## 2009-05-31 -0.0298 0.0763 0.0094 0.0945 0.0953 0.0280 0.0859 -0.0048
## 2009-06-30 -0.0806 0.0260 -0.0133 0.0163 -0.0007 -0.0236 -0.0451 -0.0149
## Hshld Clths Hlth MedEq Drugs Chems Rubbr Txtls
## 2009-01-31 -0.1084 -0.1173 -0.0349 0.0293 -0.0293 -0.0656 -0.1490 -0.2512
## 2009-02-28 -0.1115 -0.0877 -0.0999 -0.1265 -0.0947 -0.0824 -0.2083 -0.2863
## 2009-03-31 0.0062 0.1561 0.0190 0.0442 0.0780 0.1630 0.0588 0.2953
## 2009-04-30 0.0887 0.2129 0.1566 0.0640 -0.0310 0.1906 0.3195 0.5893
## 2009-05-31 0.0463 0.0315 0.0403 0.0570 0.0649 0.0693 0.0247 -0.0665
## 2009-06-30 0.0069 -0.0350 0.0361 0.0456 0.0333 -0.0673 0.0017 -0.0778
## BldMt Cnstr Steel FabPr Mach ElcEq Autos Aero
## 2009-01-31 -0.1592 -0.1169 -0.1685 -0.0576 -0.1007 -0.1203 -0.0996 -0.0431
## 2009-02-28 -0.1717 -0.1223 -0.1929 -0.1392 -0.1303 -0.1532 -0.1016 -0.1800
## 2009-03-31 0.1033 0.1507 0.1228 0.0476 0.1185 0.0758 0.1207 0.0660
## 2009-04-30 0.3441 0.1476 0.2625 0.3038 0.1969 0.2288 0.4957 0.1523
## 2009-05-31 -0.0387 -0.0004 0.0956 0.0043 0.0415 -0.0152 -0.0344 0.0936
## 2009-06-30 -0.0323 -0.0016 0.0341 0.0128 -0.0244 0.0145 0.0526 -0.0366
## Ships Guns Gold Mines Coal Oil Util Telcm
## 2009-01-31 -0.0454 -0.0285 -0.0251 -0.1166 0.0217 -0.0364 -0.0082 -0.0996
## 2009-02-28 -0.2198 -0.2083 0.0418 -0.0037 -0.0496 -0.1260 -0.1259 -0.0705
## 2009-03-31 -0.0336 0.0823 0.0853 0.1906 0.0025 0.0401 0.0278 0.0763
## 2009-04-30 0.2837 0.1397 -0.0846 0.0978 0.1522 0.0422 0.0208 0.1034
## 2009-05-31 0.0727 0.0684 0.2132 0.1631 0.3510 0.0975 0.0464 0.0151
## 2009-06-30 -0.0281 -0.0348 -0.1649 -0.0516 -0.1206 -0.0445 0.0464 0.0153
## PerSv BusSv Comps Chips LabEq Paper Boxes Trans
## 2009-01-31 0.0001 -0.0356 -0.0357 -0.0353 -0.0055 -0.0993 -0.0989 -0.1609
## 2009-02-28 -0.1101 -0.0372 -0.0687 -0.0629 -0.0864 -0.1442 -0.0406 -0.1141
## 2009-03-31 0.0429 0.0962 0.1346 0.1394 0.0680 0.0794 0.0655 0.0903
## 2009-04-30 -0.0503 0.1102 0.1680 0.1243 0.0956 0.2311 0.1216 0.1418
## 2009-05-31 -0.0092 0.0333 0.0108 0.0326 0.0345 0.0323 0.0654 0.0255
## 2009-06-30 0.1426 0.0405 0.0575 0.0282 0.0526 0.0412 0.0269 0.0029
## Whlsl Rtail Meals Banks Insur RlEst Fin Other
## 2009-01-31 -0.0140 -0.0868 -0.0772 -0.2723 -0.1468 -0.0720 -0.1017 -0.1981
## 2009-02-28 -0.0878 -0.0124 -0.0748 -0.1499 -0.1981 -0.2468 -0.0352 -0.2234
## 2009-03-31 0.0416 0.1131 0.0906 0.1452 0.1083 0.0087 0.1953 0.1160
## 2009-04-30 0.1523 0.0941 0.0913 0.1972 0.1343 0.6602 0.1474 0.2101
## 2009-05-31 0.0476 -0.0294 0.0576 0.0993 0.0814 0.0000 0.1172 0.0731
## 2009-06-30 -0.0065 -0.0004 -0.0313 -0.0333 -0.0136 0.0107 0.0146 -0.0755
industry.price <- cumprod(X48_Industry_Portfolios+1)*100
industry.price.sample <- industry.price['2009-01/2021-12']
data <- new.env()
data$prices = data$weight = data$execution.price = industry.price.sample
data$execution.price[] <- NA
data$symbolnames <- colnames(data$prices)
prices <- data$prices
n <- ncol(prices)
# find month ends
period.ends = endpoints(prices, 'months')
period.ends = period.ends[period.ends > 0]
#*****************************************************************
# Create Constraints
#*****************************************************************
constraints = new.constraints(n, lb = 0, ub = 1)
# SUM x.i = 1
constraints = add.constraints(rep(1, n), 1, type = '=', constraints)
#*****************************************************************
# Create Portfolios
#*****************************************************************
ret = prices / mlag(prices) - 1
start.i = which(period.ends >= (36 + 1))[1]
weight = NA * prices[period.ends,]
weights = list()
# Equal Weight 1/N Benchmark
weights$equal.weight = weight
weights$equal.weight[] = ntop(prices[period.ends,], n)
weights$equal.weight[1:start.i,] = NA
weights$min.var = weight
weights$min.maxloss = weight
weights$min.cor.insteadof.cov = weight
hist <- na.omit(ret[1:36,])
for( i in 36 : (dim(weight)[1]) ) {
hist = ret[ (i- 36 +1):i, ]
hist = na.omit(hist)
ia = create.historical.ia(hist, 12)
s0 = apply(coredata(hist),2,sd)
ia$cov = cor(coredata(hist), use='complete.obs',method='pearson') * (s0 %*% t(s0))
weights$min.var[i,] = min.risk.portfolio(ia, constraints)
weights$min.maxloss[i,] = min.maxloss.portfolio(ia, constraints)
weights$min.cor.insteadof.cov[i,] = min.cor.insteadof.cov.portfolio(ia, constraints)
}
## Loading required package: kernlab
## Warning in library(package, lib.loc = lib.loc, character.only = TRUE,
## logical.return = TRUE, : there is no package called 'kernlab'
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
##
## Attaching package: 'corpcor'
## The following object is masked from 'package:SIT':
##
## cov.shrink
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
##
## Attaching package: 'kernlab'
## The following object is masked from 'package:SIT':
##
## cross
##
models = list()
for(i in names(weights)) {
data$weight[] = NA
data$weight[period.ends,] = weights[[i]]
models[[i]] = bt.run.share(data, clean.signal = F)
}
## Latest weights :
## Agric Food Soda Beer Smoke Toys Fun Books Hshld Clths Hlth MedEq
## 2021-12-31 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08
## Drugs Chems Rubbr Txtls BldMt Cnstr Steel FabPr Mach ElcEq Autos
## 2021-12-31 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08
## Aero Ships Guns Gold Mines Coal Oil Util Telcm PerSv BusSv Comps
## 2021-12-31 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08
## Chips LabEq Paper Boxes Trans Whlsl Rtail Meals Banks Insur RlEst
## 2021-12-31 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08 2.08
## Fin Other
## 2021-12-31 2.08 2.08
##
## Performance summary :
## CAGR Best Worst
## 10.4 14.2 -17.4
##
## Latest weights :
## Agric Food Soda Beer Smoke Toys Fun Books Hshld Clths Hlth MedEq
## 2021-12-31 0 2.97 0 0 0 0 0 0 23.54 0 0 0
## Drugs Chems Rubbr Txtls BldMt Cnstr Steel FabPr Mach ElcEq Autos
## 2021-12-31 45.36 0 0 0 0 0 0 0 0 0 0
## Aero Ships Guns Gold Mines Coal Oil Util Telcm PerSv BusSv Comps
## 2021-12-31 0 0 0 0 0 0 0 28.13 0 0 0 0
## Chips LabEq Paper Boxes Trans Whlsl Rtail Meals Banks Insur RlEst
## 2021-12-31 0 0 0 0 0 0 0 0 0 0 0
## Fin Other
## 2021-12-31 0 0
##
## Performance summary :
## CAGR Best Worst
## 8.7 12 -13
##
## Latest weights :
## Agric Food Soda Beer Smoke Toys Fun Books Hshld Clths Hlth MedEq
## 2021-12-31 0 8.57 0 0 0 0 17.65 0 0 0 0 0
## Drugs Chems Rubbr Txtls BldMt Cnstr Steel FabPr Mach ElcEq Autos
## 2021-12-31 29.46 0 0 0 0 0 0 0 0 0 0
## Aero Ships Guns Gold Mines Coal Oil Util Telcm PerSv BusSv Comps
## 2021-12-31 0 0 0 44.32 0 0 0 0 0 0 0 0
## Chips LabEq Paper Boxes Trans Whlsl Rtail Meals Banks Insur RlEst
## 2021-12-31 0 0 0 0 0 0 0 0 0 0 0
## Fin Other
## 2021-12-31 0 0
##
## Performance summary :
## CAGR Best Worst
## 9.7 21.7 -10.4
##
## Latest weights :
## Agric Food Soda Beer Smoke Toys Fun Books Hshld Clths Hlth MedEq
## 2021-12-31 7.49 0 0 0 12 0 0 0 0 0 0 0
## Drugs Chems Rubbr Txtls BldMt Cnstr Steel FabPr Mach ElcEq Autos
## 2021-12-31 0 0 0 7.45 0 0 0 3.63 0 0 9.69
## Aero Ships Guns Gold Mines Coal Oil Util Telcm PerSv BusSv Comps
## 2021-12-31 0 0 11.69 28.51 0 17.46 0 2.07 0 0 0 0
## Chips LabEq Paper Boxes Trans Whlsl Rtail Meals Banks Insur RlEst
## 2021-12-31 0 0 0 0 0 0 0 0 0 0 0
## Fin Other
## 2021-12-31 0 0
##
## Performance summary :
## CAGR Best Worst
## 7.3 19 -17.7
cluster.group = cluster.group.kmeans.90
obj = portfolio.allocation.helper(data$prices,
periodicity = 'months', lookback.len = 36,
min.risk.fns =
list(
MMaxLoss = min.maxloss.portfolio,
MCorCov = min.cor.insteadof.cov.portfolio
)
)
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## 40 , percent = 2.5%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## 50 , percent = 10.9%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## 60 , percent = 19.3%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## 70 , percent = 27.7%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## 80 , percent = 36.1%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## 90 , percent = 44.5%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## 100 , percent = 52.9%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## 110 , percent = 61.3%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## 120 , percent = 69.7%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## 130 , percent = 78.2%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## 140 , percent = 86.6%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## 150 , percent = 95%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 48 > 1' in coercion to
## 'logical(1)'
models = rev(models)
models = create.strategies(obj, data)$models
## MMaxLoss , percent = 50%
## Latest weights :
## Agric Food Soda Beer Smoke Toys Fun Books Hshld Clths Hlth MedEq
## 2021-12-31 0 8.57 0 0 0 0 17.65 0 0 0 0 0
## Drugs Chems Rubbr Txtls BldMt Cnstr Steel FabPr Mach ElcEq Autos
## 2021-12-31 29.46 0 0 0 0 0 0 0 0 0 0
## Aero Ships Guns Gold Mines Coal Oil Util Telcm PerSv BusSv Comps
## 2021-12-31 0 0 0 44.32 0 0 0 0 0 0 0 0
## Chips LabEq Paper Boxes Trans Whlsl Rtail Meals Banks Insur RlEst
## 2021-12-31 0 0 0 0 0 0 0 0 0 0 0
## Fin Other
## 2021-12-31 0 0
##
## Performance summary :
## CAGR Best Worst
## 9.4 21.7 -10.4
##
## MCorCov , percent = 100%
## Latest weights :
## Agric Food Soda Beer Smoke Toys Fun Books Hshld Clths Hlth MedEq
## 2021-12-31 7.49 0 0 0 12 0 0 0 0 0 0 0
## Drugs Chems Rubbr Txtls BldMt Cnstr Steel FabPr Mach ElcEq Autos
## 2021-12-31 0 0 0 7.45 0 0 0 3.63 0 0 9.69
## Aero Ships Guns Gold Mines Coal Oil Util Telcm PerSv BusSv Comps
## 2021-12-31 0 0 11.69 28.51 0 17.46 0 2.07 0 0 0 0
## Chips LabEq Paper Boxes Trans Whlsl Rtail Meals Banks Insur RlEst
## 2021-12-31 0 0 0 0 0 0 0 0 0 0 0
## Fin Other
## 2021-12-31 0 0
##
## Performance summary :
## CAGR Best Worst
## 6.8 19 -17.7
strategy.performance.snapshoot(models, T, 'Backtesting Asset Allocation portfolios')

## NULL