- 阅读权限
- 255
- 威望
- 1 级
- 论坛币
- 1513 个
- 通用积分
- 280.7625
- 学术水平
- 84 点
- 热心指数
- 107 点
- 信用等级
- 54 点
- 经验
- 9535 点
- 帖子
- 1345
- 精华
- 0
- 在线时间
- 253 小时
- 注册时间
- 2014-12-3
- 最后登录
- 2015-4-3
|
沙发
DM小菜鸟
发表于 2014-12-16 15:16:25
我给你找了一个例子——
library(xts)
library(quadprog)
library(PerformanceAnalytics)
library(PortfolioAnalytics)
library(pso)
# General Parameters for sample code
data(edhec)
N <- 4
R <- edhec[,1:N]
funds <- names(R)
mu.port <- mean(colMeans(R))
gen.constr <- constraint(assets = funds, min=-2, max=2, min_sum=0.99, max_sum=1.01, risk_aversion=1)
gen.constr <- add.objective(constraints=gen.constr, type="return", name="mean", enabled=FALSE, target=mu.port)
gen.constr <- add.objective(constraints=gen.constr, type="risk", name="var", enabled=FALSE, risk_aversion=10)
gen.constr <- add.objective(constraints=gen.constr, type="risk", name="CVaR", enabled=FALSE)
gen.constr <- add.objective(constraints=gen.constr, type="risk", name="sd", enabled=FALSE)
# =====================
# Max return under box constraints, fully invested
print('Max return under box constraints, fully invested')
max.port <- gen.constr
max.port$min <- rep(0.01,N)
max.port$max <- rep(0.30,N)
max.port$objectives[[1]]$enabled <- TRUE
max.port$objectives[[1]]$target <- NULL
max.port$objectives[[1]]$multiplier <- -1
max.solution <- optimize.portfolio(R=R, constraints=max.port, optimize_method="pso", trace=TRUE)
# =====================
# Mean-variance: Fully invested, Global Minimum Variance Portfolio
print('Mean-variance: Fully invested, Global Minimum Variance Portfolio')
gmv.port <- gen.constr
gmv.port$objectives[[4]]$enabled <- TRUE
gmv.solution <- optimize.portfolio(R=R, constraints=gmv.port, optimize_method="pso", trace=TRUE)
# ========================
# Minimize CVaR
#
print('Min-CVaR')
cvar.port <- gen.constr
cvar.port$min <- rep(0,N)
cvar.port$max <- rep(1,N)
cvar.port$objectives[[3]]$enabled <- TRUE
cvar.port$objectives[[3]]$arguments <- list(p=0.95, clean="boudt")
cvar.solution <- optimize.portfolio(R=R, constraints=cvar.port, optimize_method="pso", trace=TRUE)
要是想了解更详细的内容,这里有个pdf文档,说的就特别清楚了~
http://www.rinfinance.com/agenda/2013/talk/DougMartin.pdf
|
|