Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
braverock
GitHub Repository: braverock/portfolioanalytics
Path: blob/master/sandbox/paper_analysis/insample/SelectedPortfolios.R
1433 views
1
setwd("c:/Documents and Settings/Administrator/Desktop/risk budget programs/insample")
2
#setwd("c:/Documents and Settings/n06054/Desktop/risk budget programs")
3
cAssets = 4; p = priskbudget = 0.95;
4
mincriterion = "mES" ; percriskcontribcriterion = "mES";
5
6
# Load programs
7
8
source("Risk_budget_functions.R");
9
library(zoo); library(fGarch); library("PerformanceAnalytics"); library("PortfolioAnalytics")
10
clean = TRUE
11
CC = TRUE
12
13
# Load the data
14
firstyear = 1976 ; firstquarter = 1; lastyear = 2010; lastquarter = 2;
15
data = read.table( file= paste(getwd(),"/data.txt",sep="") ,header=T)
16
date = as.Date(data[,1],format="%Y-%m-%d")
17
18
monthlyR = zoo( data[,2:(1+cAssets)] , order.by = date )
19
20
###############################################
21
# Difference min var vs min cvar for alpha
22
###############################################
23
24
clmonthlyR = clean.boudt2(monthlyR,alpha=0.05)[[1]]
25
mu = apply(clmonthlyR,2,'mean')
26
sigma = cov(clmonthlyR)
27
if(!CC){
28
M3 = PerformanceAnalytics:::M3.MM(clmonthlyR)
29
M4 = PerformanceAnalytics:::M4.MM(clmonthlyR)
30
}else{
31
source( paste( getwd(),"/R_allocation/coskewkurtosis.R" ,sep="") )
32
M3 = coskewCC(clmonthlyR) ; M4 = cokurtCC(clmonthlyR) ;
33
}
34
35
eps = 0.025
36
rpconstraint<-constraint(assets=N, min_sum=(1-eps), max_sum=(1+eps),
37
min=rep(0,N), max=rep(1,N), weight_seq=generatesequence(),by=.001,rounding=3)
38
rp<- random_portfolios(rpconstraints=rpconstraint,permutations=200)
39
rp <-rp/rowSums(rp)
40
controlDE <- list(reltol=1e-6,steptol=150, itermax = 5000,trace = 100, strategy=6, c=.4,
41
NP=as.numeric(nrow(rp)),initialpop=rp)
42
sol = PortfolioOptim( minriskcriterion = "mES" , MinMaxComp = F, percriskcontribcriterion = "mES" ,
43
Riskupper = Inf , mu = mu, sigma = sigma, M3=M3, M4=M4,
44
alpha = 0.05, alphariskbudget = 0.05, controlDE = controlDE )
45
46
print(sol) # [[1]] weights, [[2]] mean , [[3]] risk, [[4]] perc risk allocation [[5]] absolute risk alloc
47
48
[1] "out = list( minw , sum( minw*mu ) , prisk(minw) , percriskcontrib(minw)"
49
[[1]]
50
par1 par2 par3 par4
51
0.7910335681 0.0001698627 0.0622884156 0.1465081536
52
53
[[2]]
54
[1] 0.006331481
55
56
[[3]]
57
[,1]
58
[1,] 0.01049456
59
60
[[4]]
61
[1] 1.2092963044 0.0003311551 0.0242432012 -0.2338706607
62
63
[[5]]
64
[1] 1.269103e-02 3.475327e-06 2.544218e-04 -2.454370e-03
65
66
sol = PortfolioOptim( minriskcriterion = "mES" , MinMaxComp = T, percriskcontribcriterion = "mES" ,
67
Riskupper = Inf , mu = mu, sigma = sigma, M3=M3, M4=M4,
68
alpha = 0.05, alphariskbudget = 0.05, controlDE = controlDE )
69
70
[[1]]
71
par1 par2 par3 par4
72
0.71887893 0.06307400 0.07585579 0.14219128
73
74
[[2]]
75
[1] 0.006542418
76
77
[[3]]
78
[,1]
79
[1,] 0.01220722
80
81
[[4]]
82
[1] 0.2501506 0.2497638 0.2496753 0.2504103
83
84
[[5]]
85
[1] 0.003053645 0.003048923 0.003047842 0.003056814
86
87
sol = PortfolioOptim( minriskcriterion = "StdDev" , MinMaxComp = F, percriskcontribcriterion = "StdDev" ,
88
Riskupper = Inf , mu = mu, sigma = sigma, M3=M3, M4=M4 , optimize_method = "quadprog" )
89
90
[1] "out = list( minw , sum( minw*mu ) , prisk(minw) , percriskcontrib(minw)"
91
[[1]]
92
[1] 0.84043528 0.03862133 0.03643427 0.08450912
93
94
[[2]]
95
[1] 0.006421218
96
# > 0.006421218*12
97
# [1] 0.07705462
98
[[3]]
99
[,1]
100
[1,] 0.01433945
101
102
[[4]]
103
[1] 0.84043528 0.03862133 0.03643427 0.08450912
104
105
[[5]]
106
[1] 0.012051380 0.000553809 0.000522447 0.001211814
107
108
109
110
111