【问题标题】:Store Markov Chain Montecarlo simulations into dataframe and visualize it将马尔可夫链蒙特卡罗模拟存储到数据框中并可视化它
【发布时间】:2021-06-25 16:18:22
【问题描述】:

我正在尝试模拟股票价格的演变,所以我决定使用 MCMC 模拟(不过我不知道是否有一个库可以帮助我)。 我打算做的是:

  1. 在给定多个参数的情况下,创建一个模拟股票价格演变的函数:
price.path <- function(p, t, meanr, sdr){
  score <- c(0,rnorm(t))
  retorno <- meanr + sdr*score
  prices <- p*exp(cumsum(retorno))
}

返回价格随机过程的向量。

  1. 多次运行模拟(最多 100,000 次),并存储找到的每条路径。我认为最好将其存储在数据框中。

我没有找到一种方法将所有向量存储到一个数据框中,而不必为每一列命名(命名每一列是不必要的,而且浪费时间),所以我决定使用 purrr。我尝试使用 map 函数来获取一个不需要名称的列表。之后我会使用 map_dfc 函数,将列表转换为具有琐碎名称(...1、...2、...3 等)的数据框,我使用 rnorm 进行了尝试,效果很好。

map(seq(1,run), price.path, 
    p = 20,
    t = 10,
    meanr = 0.00008,
    sdr = 0.00015)

其中“运行”是一个整数。这种方法不起作用,因为 map 函数“认为”我在第一个参数中给它的向量必须在函数中使用。我不想要这个,因为我只是将向量用作占位符,它没有用处或真正的意义。它基本上只计算价格路径的运行情况,这真的无关紧要。这会导致 map 抛出错误,因为其中一个参数未使用。

  1. 最后,我想使用 ggplot 和另一个地图函数来可视化每个价格路径。我还没有进入这部分,因为我有点卡在第二步了。

如果你们能给我一些关于第 2 步的帮助,我将不胜感激。到目前为止,对我的程序的一些见解是好的,非常欢迎在可视化部分提供一点帮助。提前致谢。

【问题讨论】:

  • 不知道有什么好方法来组织这个,除了你已经尝试过的。我的建议是只使用小得多的数字(少量的步骤和少量的路径),直到你得到一些工作,然后弄清楚如何扩大它。你可以试试 r-help 邮件列表。

标签: r finance montecarlo markov-chains mcmc


【解决方案1】:

要解决map 的第一个问题,请使用如下公式表示法:

library(tidyverse)

run <- 1000
all_sims <- map(seq(1,run), ~ price.path(p = 20, t = 10, meanr = 0.00008, sdr = 0.00015))

然后,您可以将结果存储在长格式数据框中。我还创建了列来计算每次迭代和每次模拟运行。

df1 <- tibble(
  simvalues = unlist(all_sims),
  iteration = rep(seq(1,11), run),
  sim_number = unlist(map(1:run, ~ rep(.x, 11)))
)

然后您可以绘制结果以实现以下目标:

df1 %>% 
  ggplot(aes(x = iteration, y = simvalues, color = sim_number)) +
  geom_path()

【讨论】:

    【解决方案2】:

    这将解决map 问题:

    map(seq(1,run), 
    ~price.path(
            p = 20,
            t = 10,
            meanr = 0.00008,
            sdr = 0.00015
        )
    )
    

    解决名字问题:

    my_runs <- seq(1,run)
    names(my_runs) <- paste0('some_great_name_for_each_run', my_runs)
    map_dfc(my_runs, ~price.path(
            p = 20,
            t = 10,
            meanr = 0.00008,
            sdr = 0.00015
        ))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多