R中的投资组合权重和循环序列

时间:2015-02-14 14:07:57

标签: r loops portfolio

我试图从这段代码中得到一些组合:具体来说,我希望,对于每个级别的激进主义,我有一个资产获得所有超重的所有组合,而所有其他的获得equaly欠加权(所以:+行动主义[i];向下:-activism [i] / 4)

这个想法是要削弱所有现有的权重(1),然后只提出需要提升的权重(2)。

activism=c(0.05,0.1,0.2,0.5); 
length(activism);
weights=c(0.2,0.2,0.2,0.2,0.2); 
portfolio=matrix(nrow=20,ncol=5); 
for (i in 20) {
for (j in length(activism)){
for(k in length(weights)){
portfolio[i,k]=weights[k]- activism[j]/(length(weight)-1) 
}}}`

代码不起作用有两个原因: 1)我从第(1)部分得到一个完全不同的表 2)我不知道如何设置" if"在第(2)部分,尽管我试图查找尽可能多的指南。

我意识到这可能是一个简单的问题,但所有其他类似的问题都是用不同的语言(C / python等),而且我对编程代码并不熟悉。

1 个答案:

答案 0 :(得分:0)

我对这个功能不太满意,但似乎有效。随意改进。请注意,在功能外部分配权重。只有从相同的权重开始,该功能才有效。事情变得更加混乱。 等待一些改进。

activism <- c(0.05,0.1,0.2,0.5); 
weights <- c(0.2,0.2,0.2,0.2,0.2); 
test <- function(vec,weight){
#signature vector,scalor-> matrix
#reassign weights
n <-  length(vec)
a <- vec[1]+weight 
b <- vec[-1]-(weight/(n-1))
tmp <-  c(a,b[-1])
results <-  a * diag(length(vec)) + (matrix(1,nrow=n,ncol=n) - diag(n))*b[1]
return (results)
}
lapply(activism,function(x)test(weights,x))