2
$\begingroup$

The question is what R optimization could be applicable to find a vector of weights that when, multiplied by S matrix creates equal rows sums, and when set in the objective function returns the minimal value.
The code will be reused for different number and combination of assets.
n = number of assets
x = vector of weights per asset (the solution of the optimization X1,…,Xn) #unknown
R = matrix of returns for n number of assets
S = a given matrix of numbers with 2 rows and n columns
Objective: minimize the fun.obj

fun.obz <- function(R, x, na.rm = TRUE) {
covmat <- var(R = R, na.rm = na.rm)
 utc <- upper.tri(covmat)
 wt.var <- sum(diag(covmat) * x^2)
wt.cov <- sum(x[row(covmat)[utc]] *
                 x[col(covmat)[utc]] *
                 covmat[utc])
 variance <- wt.var + 2 * wt.cov
return(variance)  }

Constraints:
The sum of x == 1
Each x >= 0 #positive
S[1,] == S[2,] meaning S[1,]-S[2,] == 0 # the sum of each column is equal or with a small tolerance.

Create data

library('Quandl')
a1 = Quandl("YAHOO/AAPL", transform ="rdiff", start_date="2013-12-31", type="xts")
a2 = Quandl("YAHOO/GOOG", transform ="rdiff", start_date="2013-12-31", type="xts")
a3 = Quandl("YAHOO/MSFT", transform ="rdiff", start_date="2013-12-31", type="xts")

a4 = Quandl("YAHOO/HPQ", transform ="rdiff", start_date="2013-12-31", type="xts")
a5 = Quandl("YAHOO/ORCL", transform ="rdiff", start_date="2013-12-31", type="xts")
R = merge(a1$`Adjusted Close`,a2$`Adjusted Close`,a3$`Adjusted Close`,a4$`Adjusted Close`, a5$`Adjusted Close`, all=TRUE)
colnames(R) = c('AAPL','GOOG','MSFT','HPQ','ORCL')
n = ncol(R)
S = matrix( c(-0.003296857,-0.003361181,-0.005320475,0.001920951,-0.0017016479,-0.005304732, -0.007212091,-0.003841529,0.004978937,-0.0001444762), byrow=TRUE, ncol=5)
colnames(S) = c('AAPL','GOOG','MSFT','HPQ','ORCL')
rownames(S) = c('S1','S2')
$\endgroup$
  • $\begingroup$ This seems like a standard optimization problem, which probably "textbook solutions" which I would search. Technically, it seems like your objective function is a quadratic expression of the form t(x)Rx or something very similar to it, and your constraint is the null space of the matrix S or some variations of it. sounds like you'll find directions in any standard (possibly advanced level) linear algebra textbook. $\endgroup$ – amit Jan 30 '17 at 21:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.