我有下面的R代码来生成100个随机权重
# Creating a matrix to store the weights
all_wts <- matrix(nrow = 100,
ncol = length(tickers)) ### number of tickers 4
# run the for loop 100 times.
for (i in 1:100) {
wts <- runif(length(tickers))
wts <- wts/sum(wts)
# Storing weight in the matrix
all_wts[i,] <- wts }
因此,我应该有一个权重矩阵$$ w= \开始{bmatrix} w_1和w_2和w_3和w_4 \ \虚拟点和\虚拟点和\虚拟点\虚拟点和\虚拟点和\虚拟点和\虚拟点\ \结束{bmatrix}$$
其中第一行$$ w^* = \开始{bmatrix} w1&w2&w3&w4\结束{bmatrix} $$是第一组随机权重,等等。
现在,我的第二步是将第一组随机权重乘以另一个名为$$R_t $$的矩阵,其中$$R_t = \开始{bmatrix} A_1 & A_2 & A_3 & A_4 \ \vdots &\vdots &\vdots \ A_{1,252}& A_{2,252}& A_{3,252}& A_{4,252} \ \end{bmatrix}$$代码将为
a1 <- all_wts[1,]
b <- log.return
yts <- rowSums(a1 * b)
然后我用第二个随机权重重复这个乘法
a2 <- all_wts[2,]
b <- log.return
yts2 <- rowSums(a2*b)
我对所有100个随机权重都这样做,我的问题是,我如何编写一个代码来实现每个随机权重的所有乘法,然后将第二步的结果存储到一个新的矩阵中,这样我就可以移动到需要第二步结果的第三步。
我设法做了计算,但迭代次数更多,例如100次,将很难重复该过程
1条答案
按热度按时间jqjz2hbq1#
让我们来没有循环:
由于您没有提供
log.return
的任何示例数据,因此没有对此进行测试,但它应该可以工作。默认情况下,apply
会尝试将结果简化为向量或矩阵,但如果方便的话,您可以添加参数simplify = FALSE
以获得list
的结果。