Path: blob/master/inst/tests/test_all_constraints.R
1433 views
1require(testthat)2require(PortfolioAnalytics)34context("constraints")56N <- 47init.portf <- portfolio.spec(assets=N)8# Weight_sum constraint9init.portf <- add.constraint(portfolio=init.portf,10type="weight_sum",11min_sum=0.99,12max_sum=1.01)13# Box constraint14init.portf <- add.constraint(portfolio=init.portf,15type="box",16min=0,17max=1)18# Group constraint19init.portf <- add.constraint(portfolio=init.portf,20type="group",21groups=list(c(1, 3), c(2, 4)),22group_min=c(0.15, 0.25),23group_max=c(0.65, 0.55))24# Turnover constraint25init.portf <- add.constraint(portfolio=init.portf,26type="turnover",27turnover_target=0.6)28# Diversification constraint29init.portf <- add.constraint(portfolio=init.portf,30type="diversification",31div_target=0.55)32# Position limit constraint33init.portf <- add.constraint(portfolio=init.portf,34type="position_limit",35max_pos=3,36max_pos_long=2,37max_pos_short=1)38# Return constraint39init.portf <- add.constraint(portfolio=init.portf,40type="return",41return_target=0.007)42# Factor exposure constraint43init.portf <- add.constraint(portfolio=init.portf,44type="factor_exposure",45B=rep(1, N),46lower=0.9,47upper=1.1)4849tmp_constraints <- PortfolioAnalytics:::get_constraints(init.portf)5051test_that("weight_sum constraint is consistent", {52expect_that(tmp_constraints$min_sum, equals(0.99))53expect_that(tmp_constraints$max_sum, equals(1.01))54})5556test_that("box constraint is consistent", {57expect_that(as.numeric(tmp_constraints$min), equals(rep(0, N)))58expect_that(as.numeric(tmp_constraints$max), equals(rep(1, N)))59})6061test_that("group constraint is consistent", {62expect_that(is.list(tmp_constraints$groups), is_true())63expect_that(tmp_constraints$groups[[1]], equals(c(1, 3)))64expect_that(tmp_constraints$groups[[2]], equals(c(2, 4)))65expect_that(tmp_constraints$group_labels, equals(c("group1", "group2")))66expect_that(tmp_constraints$cLO, equals(c(0.15, 0.25)))67expect_that(tmp_constraints$cUP, equals(c(0.65, 0.55)))68})6970test_that("turnover constraint is consistent", {71expect_that(tmp_constraints$turnover_target, equals(0.6))72})7374test_that("diversification constraint is consistent", {75expect_that(tmp_constraints$div_target, equals(0.55))76})7778test_that("position limit constraint is consistent", {79expect_that(tmp_constraints$max_pos, equals(3))80expect_that(tmp_constraints$max_pos_long, equals(2))81expect_that(tmp_constraints$max_pos_short, equals(1))82})8384test_that("return constraint is consistent", {85expect_that(tmp_constraints$return_target, equals(0.007))86})8788B <- matrix(1, ncol=1, nrow=N)89rownames(B) <- paste("Asset", 1:N, sep=".")90colnames(B) <- "factor1"9192test_that("factor exposure constraint is consistent", {93expect_that(tmp_constraints$B, equals(B))94expect_that(tmp_constraints$lower, equals(0.9))95expect_that(tmp_constraints$upper, equals(1.1))96})979899