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)
| 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 |