【问题标题】:portfolio weights and loop sequence in RR中的投资组合权重和循环序列
【发布时间】:2015-02-14 14:07:56
【问题描述】:

我试图从这段代码中得到一些组合:具体来说,我希望对于每个行动主义级别,我拥有一个资产的所有组合都得到所有超重,而所有其他资产得到相等权重过低(所以向上:+activism[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) 我不知道如何设置第 (2) 部分中的“如果”,尽管我尝试查找尽可能多的指南。

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

【问题讨论】:

  • 这有点技术性。您能否进一步简化问题并给出所需的输出?您能否提供执行您想做的其他程序的参考?
  • 我会发布一张图片(第二好的:postimg.org/image/tdp3gjpw9)。绿色的我有我想要得到的东西,左边的红色是我目前的结果。
  • for (i in 1:20)。内循环也一样。

标签: r loops portfolio


【解决方案1】:

我对这个功能不太满意,但它似乎可以工作。随意改进。请注意,权重是在函数之外分配的。仅当您从相等的权重开始时,该功能才有效。事情变得更加混乱。 等待一些改进。

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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 2021-06-15
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    相关资源
    最近更新 更多