Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
braverock
GitHub Repository: braverock/portfolioanalytics
Path: blob/master/inst/tests/test_demo_risk_budgets.R
1433 views
1
2
##### Load packages #####
3
require(testthat)
4
require(PortfolioAnalytics)
5
6
##### Source Demo Script #####
7
source(system.file("demo/demo_risk_budgets.R", package="PortfolioAnalytics"))
8
9
10
context("Risk Budget Optimizations")
11
12
context("risk budget objective ES max_prisk")
13
14
test_that("rbES.portf contains risk_budget_objective",
15
{ expect_that(inherits(rbES.portf$objectives[[2]], "risk_budget_objective"), is_true()) })
16
17
test_that("rbES.portf contains ES risk budget objective",
18
{ expect_that(rbES.portf$objectives[[2]]$name == "ES", is_true()) })
19
20
test_that("rbES.portf max_prisk is 0.4",
21
{ expect_equal(as.numeric(rbES.portf$objectives[[2]]$max_prisk), rep(0.4, 8)) })
22
23
test_that("rbES.portf min_concentration is false",
24
{ expect_that(rbES.portf$objectives[[2]]$min_concentration, is_false()) })
25
26
test_that("rbES.portf min_difference is false",
27
{ expect_that(rbES.portf$objectives[[2]]$min_difference, is_false()) })
28
29
test_that("rbES.DE optimal weights is a numeric vector",
30
{ expect_that(is.numeric(extractWeights(rbES.DE)), is_true()) })
31
32
test_that("rbES.DE optimization does not violate max_prisk",
33
{ expect_that(all(extractObjectiveMeasures(rbES.DE)$ES$pct_contrib_MES <= 0.4), is_true()) })
34
35
context("risk budget objective ES min_concentration")
36
37
test_that("eqES.portf contains risk_budget_objective",
38
{ expect_that(inherits(eqES.portf$objectives[[2]], "risk_budget_objective"), is_true()) })
39
40
test_that("eqES.portf contains ES risk budget objective",
41
{ expect_that(eqES.portf$objectives[[2]]$name == "ES", is_true()) })
42
43
test_that("eqES.portf min_concentration is false",
44
{ expect_that(eqES.portf$objectives[[2]]$min_concentration, is_true()) })
45
46
test_that("eqES.portf min_difference is false",
47
{ expect_that(eqES.portf$objectives[[2]]$min_difference, is_false()) })
48
49
test_that("eqES.RP optimal weights is a numeric vector",
50
{ expect_that(is.numeric(extractWeights(eqES.RP)), is_true()) })
51
52
# This will be difficult to test for an exact value or limit
53
test_that("eqES.RP optimization pct_contrib_MES is a numeric vector",
54
{ expect_that(is.numeric(extractObjectiveMeasures(eqES.RP)$ES$pct_contrib_MES), is_true()) })
55
56
context("risk budget objective StdDev max_prisk")
57
58
test_that("rbStdDev.portf contains risk_budget_objective",
59
{ expect_that(inherits(rbStdDev.portf$objectives[[2]], "risk_budget_objective"), is_true()) })
60
61
test_that("rbStdDev.portf contains StdDev risk budget objective",
62
{ expect_that(rbStdDev.portf$objectives[[2]]$name == "StdDev", is_true()) })
63
64
test_that("rbStdDev.portf max_prisk is 0.25",
65
{ expect_equal(as.numeric(rbStdDev.portf$objectives[[2]]$max_prisk), rep(0.25, 8)) })
66
67
test_that("rbStdDev.portf min_concentration is false",
68
{ expect_that(rbStdDev.portf$objectives[[2]]$min_concentration, is_false()) })
69
70
test_that("rbStdDev.portf min_difference is false",
71
{ expect_that(rbStdDev.portf$objectives[[2]]$min_difference, is_false()) })
72
73
test_that("rbStdDev.DE optimal weights is a numeric vector",
74
{ expect_that(is.numeric(extractWeights(rbStdDev.DE)), is_true()) })
75
76
test_that("rbStdDev.DE optimization does not violate max_prisk",
77
{ expect_that(all(extractObjectiveMeasures(rbStdDev.DE)$ES$pct_contrib_MES <= 0.25), is_true()) })
78
79
80