问题是:在monte carlo模拟中,我如何才能循环运行一个函数,每次记录下这个函数的结果。例如模拟一万次股票价格,我每次用函数算一个期权的价格,该函数已经写好了,用循环语句保留下每次该函数计算的期权价格,最后求一个分布。
请教高手,如果能解答,赠送1000论坛币,请与我QQ联系:449626820。谢谢。
[此贴子已经被作者于2007-1-10 21:39:04编辑过]
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
假设你的函数为f(),设一万次的模拟结果为result.price.代码如下:
result.price<-rep(NA,10000) #初始化
for (i in 1:10000) result.price<-f(...) #...为你的函数参数,要保证每次运行都有随机结果。
你所说的求分布,请具体些,不知道你的意思。你可以简单画一个直方图,qq图之类的看看分布类型
hist(result.price) #直方图
qqnorm(result.price) #画qq线,看是否来自正态
最后可以加上
plot(density(result.price))看看估计的密度曲线是什么样的,大致判断是什么分布
继续作图
hist(result.price)
points(denstiy(result.price),type="l")##于直方图上加密度估计曲线
我是统计的,这上面统计的不少,版主也是哦
实际上该问题的核心是求该函数的股价及结果的分布问题,可从两方面入手:
1、研究该分布的分布形态,这可以采用四楼所说的方法,不过四楼还可以说得具体一些;
2、直接利用你所计算的结果重新进行模拟,一般采用的是非参数方法,不采用非参数的方法就必须利用(伪)随机数发生器。
以上提供的仅仅是思路,楼主能否讲得再具体点,我好详细做答。
四楼的plot(density(...))就是利用随机模拟对得到的价格序列进行非参数密度估计,画出密度图型