【问题标题】:How can I repeat a simulation a function 250 times?如何重复模拟一个函数 250 次?
【发布时间】:2021-06-03 01:55:17
【问题描述】:

我正在尝试模拟假设的股票收益。这已使用:

set.seed(1)

simulate_returns <- function(T) {
  sim_return <- MASS::mvrnorm(n = T, mu = mu, Sigma = sigma)
  sim_return <- as_tibble(sim_return)
  
  return(sim_return)
}

我现在有兴趣重复这个模拟 250 次,并找到 250 个数据帧中每个数据帧的均值和方差,这必须用 ggplot 写出来。

我做了这个循环,但它似乎不起作用:

simulate_loop[i] <- for (i in 1:250) {
  
  sigma[i] <- simulate_returns(100) %>%
    cov(use = "pairwise.complete.obs") # Compute return sample covariance matrix %>% 
  
  mu[i] <- simulate_returns(100) %>% 
    colMeans() %>% 
    as.matrix() 

  simu_loop[i] <- compute_efficient_frontier(mu[i], sigma[i])

}  

【问题讨论】:

    标签: r finance quantitative


    【解决方案1】:

    我认为你所追求的是这样的,simu_loop &lt;- c() 初始化 simu_loop 外部 for 循环。

    simu_loop <- c()
    
    for (i in 1:250) {
      x <- simulate_returns(100)
    
      sigma[i] <- x %>%
        cov(use = "pairwise.complete.obs") # Compute return sample covariance matrix %>%
    
      mu[i] <- x %>%
        colMeans() %>%
        as.matrix()
    
      simu_loop[i] <- compute_efficient_frontier(mu[i], sigma[i])
    
    }
    

    【讨论】:

    • 这可能是......当我运行循环时,它现在返回以下内容:```rep(1, N) 中的错误:无效的 'times'-argument 另外:错误消息:1 : I sigma[i] % cov(use = "pairwise.complete.obs") : 要替换的项目数不是替换长度的倍数 2: I mu[i] % colMeans() %>% as.matrix() : 要替换的项目数不是替换长度的倍数 ```
    猜你喜欢
    • 2021-11-30
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多