compare the minimax

a<-c(0,10,20,-10,-20,
     0,15,30,-5,-10,
     0,100,200,-100,-200,
     -10,300,1000,-300,-1000)
# index, alpha, leverage, structure payoff mat

a <- matrix(a,byrow = T,nrow = 4)
rownames(a) <- c('index','alpha','leverage','structure')
colnames(a) <- c('keep','up','roarup','down','dropdown')
regret_a<-apply(a, 2, max)
(regret<-t(apply(a, 1, function(x) regret_a - x)))
##           keep  up roarup down dropdown
## index        0 290    980    5       10
## alpha        0 285    970    0        0
## leverage     0 200    800   95      190
## structure   10   0      0  295      990
bulk <- c(0.1,.5,.3,.07,.03) #bulk market
bear <- c(0.1,.07,.03,.5,.3) #bear market
calm <- c(0.5,0.2,0.05,0.2,0.05) 
library(knitr)
## Warning: package 'knitr' was built under R version 3.2.5
result<-data.frame(
  maxmin=apply(a, 1, min),
  minmaxReg=apply(regret, 1, max),
  maxMean_bulk=a%*%bulk,
  maxMean_bear=a%*%bear,
  maxMean_calm=a%*%calm,
  minMeanReg_bulk=regret%*%bulk,
  minMeanReg_bear=regret%*%bear,
  minMeanReg_calm=regret%*%calm
)

r<-rbind(result,rownames(result)[c(which.max(result$maxmin),
                              which.min(result$minmaxReg),
                              which.max(result$maxMean_bulk),
                              which.max(result$maxMean_bear),
                              which.max(result$maxMean_calm),
                              which.min(result$minMeanReg_bulk),
                              which.min(result$minMeanReg_bear),
                              which.min(result$minMeanReg_calm))])

kable(r)
maxmin minmaxReg maxMean_bulk maxMean_bear maxMean_calm minMeanReg_bulk minMeanReg_bear minMeanReg_calm
index -20 980 9.7 -9.7 0 439.65 55.2 108.5
alpha -10 970 15.85 -3.55 3 433.5 49.05 105.5
leverage -200 800 97 -97 0 352.35 142.5 108.5
structure -1000 990 398 -400 -5 51.35 445.5 113.5
5 alpha leverage structure alpha alpha structure alpha alpha