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/Rtmpzt09Le/remotes10ff4140bf33/joshuaulrich-xts-ac3bc1d/DESCRIPTION’ ...
  
✔  checking for file ‘/tmp/Rtmpzt09Le/remotes10ff4140bf33/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/Rtmpzt09Le/remotes10ffca8f00a/joshuaulrich-quantmod-50e1e85/DESCRIPTION’ ...
  
✔  checking for file ‘/tmp/Rtmpzt09Le/remotes10ffca8f00a/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 (7s)
## 
  
─  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/Rtmpzt09Le/remotes10ff3a952f78/systematicinvestor-SIT.date-6263da6/DESCRIPTION’ ...
  
✔  checking for file ‘/tmp/Rtmpzt09Le/remotes10ff3a952f78/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_Portfolios12.xlsx", range = "A12:AV168")
## New names:
## • `` -> `...1`
head(X48_Industry_Portfolios)
## # A tibble: 6 × 48
##     ...1 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 36 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>, Fin <dbl>, Other <dbl>
str(X48_Industry_Portfolios)
## tibble [156 × 48] (S3: tbl_df/tbl/data.frame)
##  $ ...1 : 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 ...
##  $ 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     Fin   Other
## 2009-01-31 -0.0140 -0.0868 -0.0772 -0.2723 -0.1468 -0.1017 -0.1981
## 2009-02-28 -0.0878 -0.0124 -0.0748 -0.1499 -0.1981 -0.0352 -0.2234
## 2009-03-31  0.0416  0.1131  0.0906  0.1452  0.1083  0.1953  0.1160
## 2009-04-30  0.1523  0.0941  0.0913  0.1972  0.1343  0.1474  0.2101
## 2009-05-31  0.0476 -0.0294  0.0576  0.0993  0.0814  0.1172  0.0731
## 2009-06-30 -0.0065 -0.0004 -0.0313 -0.0333 -0.0136  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 >= (24 + 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:24,])
for( i in 24 : (dim(weight)[1]) )  {
  hist = ret[ (i- 24 +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
## 
## Attaching package: 'kernlab'
## The following object is masked from 'package:SIT':
## 
##     cross
## 
## Attaching package: 'corpcor'
## The following object is masked from 'package:SIT':
## 
##     cov.shrink
##        
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.13 2.13 2.13 2.13  2.13 2.13 2.13  2.13  2.13  2.13 2.13  2.13
##            Drugs Chems Rubbr Txtls BldMt Cnstr Steel FabPr Mach ElcEq Autos
## 2021-12-31  2.13  2.13  2.13  2.13  2.13  2.13  2.13  2.13 2.13  2.13  2.13
##            Aero Ships Guns Gold Mines Coal  Oil Util Telcm PerSv BusSv Comps
## 2021-12-31 2.13  2.13 2.13 2.13  2.13 2.13 2.13 2.13  2.13  2.13  2.13  2.13
##            Chips LabEq Paper Boxes Trans Whlsl Rtail Meals Banks Insur  Fin
## 2021-12-31  2.13  2.13  2.13  2.13  2.13  2.13  2.13  2.13  2.13  2.13 2.13
##            Other
## 2021-12-31  2.13
## 
## Performance summary :
##  CAGR    Best    Worst   
##  10.8    14  -17 
## 
## Latest weights :
##            Agric  Food Soda Beer Smoke Toys Fun Books Hshld Clths Hlth MedEq
## 2021-12-31  3.61 23.92    0    0  0.28    0   0     0 14.94     0    0     0
##            Drugs Chems Rubbr Txtls BldMt Cnstr Steel FabPr Mach ElcEq Autos
## 2021-12-31 43.06     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 14.18     0     0     0     0
##            Chips LabEq Paper Boxes Trans Whlsl Rtail Meals Banks Insur Fin
## 2021-12-31     0     0     0  0.02     0     0     0     0     0     0   0
##            Other
## 2021-12-31     0
## 
## Performance summary :
##  CAGR    Best    Worst   
##  7.5 13.8    -12.3   
## 
## 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 Fin
## 2021-12-31     0     0     0     0     0     0     0     0     0     0   0
##            Other
## 2021-12-31     0
## 
## Performance summary :
##  CAGR    Best    Worst   
##  9.9 20.9    -12.8   
## 
## Latest weights :
##            Agric Food Soda Beer Smoke Toys Fun Books Hshld Clths Hlth MedEq
## 2021-12-31 20.35    0    0    0  1.54    0   0     0     0     0    0     0
##            Drugs Chems Rubbr Txtls BldMt Cnstr Steel FabPr Mach ElcEq Autos
## 2021-12-31     0     0     0  4.63     0     0     0     0    0     0 15.06
##            Aero Ships Guns  Gold Mines  Coal Oil Util Telcm PerSv BusSv Comps
## 2021-12-31    0     0 5.92 25.89     0 23.37   0 3.23     0     0     0     0
##            Chips LabEq Paper Boxes Trans Whlsl Rtail Meals Banks Insur Fin
## 2021-12-31     0     0     0     0     0     0     0     0     0     0   0
##            Other
## 2021-12-31     0
## 
## Performance summary :
##  CAGR    Best    Worst   
##  6.8 19  -17.5   
cluster.group = cluster.group.kmeans.90

obj = portfolio.allocation.helper(data$prices, 
                                  periodicity = 'months', lookback.len = 24, 
                                  min.risk.fns =
                                    list(
                                      MMaxLoss = min.maxloss.portfolio,
                                      MCorCov = min.cor.insteadof.cov.portfolio )
)
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## 30 , percent = 3.8%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'

## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## 40 , percent = 11.5%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'

## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## 50 , percent = 19.1%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'

## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## 60 , percent = 26.7%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'

## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## 70 , percent = 34.4%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'

## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## 80 , percent = 42%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'

## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## 90 , percent = 49.6%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'

## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## 100 , percent = 57.3%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'

## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## 110 , percent = 64.9%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'

## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## 120 , percent = 72.5%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'

## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## 130 , percent = 80.2%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'

## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## 140 , percent = 87.8%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'

## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## 150 , percent = 95.4%
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'

## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(lb) || is.na(lb): 'length(x) = 47 > 1' in coercion to
## 'logical(1)'
## Warning in is.null(ub) || is.na(ub): 'length(x) = 47 > 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 Fin
## 2021-12-31     0     0     0     0     0     0     0     0     0     0   0
##            Other
## 2021-12-31     0
## 
## Performance summary :
##  CAGR    Best    Worst   
##  9.9 20.9    -12.8   
## 
## MCorCov , percent = 100% 
## Latest weights :
##            Agric Food Soda Beer Smoke Toys Fun Books Hshld Clths Hlth MedEq
## 2021-12-31 20.35    0    0    0  1.54    0   0     0     0     0    0     0
##            Drugs Chems Rubbr Txtls BldMt Cnstr Steel FabPr Mach ElcEq Autos
## 2021-12-31     0     0     0  4.63     0     0     0     0    0     0 15.06
##            Aero Ships Guns  Gold Mines  Coal Oil Util Telcm PerSv BusSv Comps
## 2021-12-31    0     0 5.92 25.89     0 23.37   0 3.23     0     0     0     0
##            Chips LabEq Paper Boxes Trans Whlsl Rtail Meals Banks Insur Fin
## 2021-12-31     0     0     0     0     0     0     0     0     0     0   0
##            Other
## 2021-12-31     0
## 
## Performance summary :
##  CAGR    Best    Worst   
##  7.1 19  -17.5   
strategy.performance.snapshoot(models, T, 'Backtesting Asset Allocation portfolios')

## NULL