全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 悬赏大厅 求助成功区
2118 3
2014-11-01
悬赏 50 个论坛币 已解决
固定期初、期末价格,模拟中间股票走势。给出大致算法、思路即可。能给R代码更好!!

最佳答案

robvsn 查看完整内容

思路: 从期初价格和期末价格分别生成random walk 序列,直到两序列中间有差距小于sigma的点存在。把两个序列在这一点拼起来。 sigma是波动率,应该选择合适的波动率,如果输入的波动率太小,程序会给出建议的最小值。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-11-1 17:58:17
思路: 从期初价格和期末价格分别生成random walk 序列,直到两序列中间有差距小于sigma的点存在。把两个序列在这一点拼起来。
sigma是波动率,应该选择合适的波动率,如果输入的波动率太小,程序会给出建议的最小值。
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-11-1 22:22:02
思路: 从期初价格和期末价格分别生成random walk 序列,直到两序列中间有差距小于sigma的点存在。把两个序列在这一点拼起来。
sigma是波动率,应该选择合适的波动率,如果输入的波动率太小,程序会给出建议的最小值。
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-11-2 01:03:32

二叉树即可,布朗桥也行,但是很复杂

用二叉树吧,代码只是一个思路, r最近没动,所以风格是c++的。有问题欢迎提问
已知量:
设时间以年为单位T,年化波动率为sigma, 年化无风险利率为r。期初价格st,期末价格sT
节点数N
假设风险中性世界里(现实世界是不是无所谓,只不过在这个世界里结果和真实世界一样而又简单)
1.一共有N个节点,每个节点时间单位为T/N.
2.每个节点向上幅度u=exp(T/N*sigma) 向下幅度d=exp(-T/N*sigma) , 向上概率p=(exp(rT/N)-d)/(u-d),向下概率1-p.
3.解方程:
st*u^n*d^(N-n)=sT, 即log(sT/st)=(2n-N)T/N*sigma, 即n=(log(sT/st)N/(sigma*T)+N)/2
把n算出来即可。n理论上应该是整数,所以你要尽量取N大一点,这样四舍五入得到n模拟出来的sT和真实sT误差会很小。
4.接下来只要安排具体那几步向上走,那几步向下走即可
生成随机数rand,均匀分布 0,1.
double s[N+1];
s[0]=st;
int number_u=n; int number_d=N-n;int flag;
for(int i=0;i<=N;i++)
{if (rand<p) { s[i+1]=s[i-1]*u; number_u-=1;}
else s[i+1]=s*d, number_d-=1;
if (number_u==0){flag=1; break}
if(number_d==0){flag=-1;break}
}
if (flag==1)
   for (i=N-number_d;i<=N;i++) s[i+1]=s*d;
if (flag==-1)
   for (i=N-number_u;i<=N;i++) s[i+1]=s*u;
大概意思就是,如果随机数小于上升概率,那就让下一个节点向上走,反之亦然。但是由于你终点价格固定了,说明向上向下走的步数也就固定了,所以如果向下或向上的步数已经模拟完了,剩下的都给相反方向即可。
最后把数组s画出来就好了

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群