Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
braverock
GitHub Repository: braverock/portfolioanalytics
Path: blob/master/sandbox/sample_pso.R
1433 views
1
# # # # # # # # # #
2
# Try DEoptim
3
library(xts)
4
library(quantmod)
5
library(PerformanceAnalytics)
6
library(DEoptim)
7
library(pso)
8
library(GenSA)
9
10
data(edhec)
11
N <- 4
12
R <- edhec[, 1:N]
13
T <- nrow(edhec)
14
mu <- colMeans(R)
15
sigma <- cov(R)
16
17
obj <- function(w){
18
if (sum(w)==0) {w <- w + 1e-2}
19
w <- w/sum(w)
20
CVaR <- ES(weights= w,
21
method="gaussian",
22
portfolio_method="component",
23
mu=mu,
24
sigma=sigma)
25
tmp1 <- CVaR$ES
26
tmp2 <- max(CVaR$pct_contrib_ES - 0.225, 0)
27
out <- tmp1 + 1e3 * tmp2
28
}
29
30
set.seed(1234)
31
deoptim.sol <- DEoptim(fn=obj, lower = rep(0, N), upper = rep(1, N))
32
33
deoptim.sol$optim$bestval
34
wts.deoptim <- deoptim.sol$optim$bestmem / sum(deoptim.sol$optim$bestmem)
35
36
test <- psoptim(rep(NA,N), obj, lower=0, upper=1, control=list(abstol=1e-8, trace=TRUE))
37
test$value
38
wts.pso <- test$par/sum(test$par)
39
40
gen.sol <- GenSA(rep(1/N, N), lower=rep(0,N), upper=rep(1,N), obj, control=list(verbose=TRUE))
41
42
43
44
45
46
47
48
49
50
51
52
53