楼主: cyl.88
15434 44

[期权交易] heston随机波动模型参数估计问题 [推广有奖]

21
cyl.88 发表于 2014-3-25 12:07:02
cyl.88 发表于 2014-3-25 09:26
好的  谢谢!
mcmc methods for continuous-time financial econometrics.pdf (1.08 MB, 需要: 1 个论坛币) 关于volatility的分布为正态分布取到负值的问题 这篇论文里有解释 p60

22
cyl.88 发表于 2014-3-25 12:19:18
Chemist_MZ 发表于 2014-3-24 23:46
你可以去查一查相关的文献,我记得一般方差用的是inverse gamma distribution,volatiltiy应该就是开根号 ...
我找了一些论文,找到了其它参数的先验分布,volatility正态分布有可能取到负值的问题也已经搞明白,但关于初始波动率是不清楚,论文我传不上来。。,"Stochastic Volatility and Jumps: Exponentially Affine Yes or No ? An Empirical Analysis of S&P500 Dynamics" p8 ,p10,可以帮我看一下吗? 屏幕快照 2014-03-23 下午6.38.58.png 屏幕快照 2014-03-23 下午6.38.15.png

23
TimeT 发表于 2014-3-27 22:46:28
cyl.88 发表于 2014-3-24 20:13
model
{
   mu ~ dnorm(1,0.04)
我没有仔细研究你的程序(你的像是个WINBUGS程序),而且你的程序中很多[ i]都没显示,这是我在论坛读WINBUGS程序时看到的问题(论坛以为[i ]是要求显示斜体字),不过有一点想法供你参考:
你的v数组在第5行(注意:如我所说,[ i ]没显示),只定义了从2到n,没有定义v[1],后面你的rmean[2] 定义时会用到v[1],所以你不给v[1]赋值,当然程序会出错。但是你完全可以给v[1]设一个先验(prior)分布(而不是一个常数0.5)啊。例如v[1]~dunif(0,1)之类(这个先验分布不一定适合你的问题,只是举个例),这样做也就是把v[1]也当成需要估计的参数来估计(由WINBUGS计算出其后验(posterior)分布),你看呢?

24
TimeT 发表于 2014-3-27 22:59:36
cyl.88 发表于 2014-3-25 12:19
我找了一些论文,找到了其它参数的先验分布,volatility正态分布有可能取到负值的问题也已经搞明白,但关 ...
依我看,使用WINBUGS,就不必拘泥于先验分布的形式(当然先验分布的取值范围要当心,例如只能为正数的参数最好不要用正态分布作为先验分布),因为不管什么先验分布,WINBUGS一般都能算出结果来。很多论文中挑选先验分布是为了计算方便(我的理解:选conjugate的先验分布就是为了计算方便,甚至有时可以得出close-form formula),但是,如你用WINBUGS,反正计算(什么样的先验分布对使用MCMC方法硬算的计算机来说)总归是差不多的,所以不必费脑选先验分布类型(当然取值范围不对,WINBUGS会陷入错误之中)。
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Chemist_MZ + 20 + 20 + 1 + 1 + 1 分析的有道理

总评分: 经验 + 20  论坛币 + 20  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

25
cyl.88 发表于 2014-3-28 13:56:13
TimeT 发表于 2014-3-27 22:59
依我看,使用WINBUGS,就不必拘泥于先验分布的形式(当然先验分布的取值范围要当心,例如只能为正数的参数 ...
谢谢 ,我明白了。另一方面, 如果我是为了估计样本最后一期的波动率,初始的波动率设一个常数就可以了吧?

26
cyl.88 发表于 2014-3-28 14:01:57
TimeT 发表于 2014-3-27 22:59
依我看,使用WINBUGS,就不必拘泥于先验分布的形式(当然先验分布的取值范围要当心,例如只能为正数的参数 ...
winbugs是不是越迭代到后面越慢?我开始50000次还挺快的,后面就很慢,100000次用了一个通宵 ,最后还不收敛,dic 是灰色的 ,一般100000都能收敛了吧?会不会程序有错?

27
TimeT 发表于 2014-3-29 18:54:13
cyl.88 发表于 2014-3-28 14:01
winbugs是不是越迭代到后面越慢?我开始50000次还挺快的,后面就很慢,100000次用了一个通宵 ,最后还不收 ...
我觉得你说的情况是WINBUGS不常见的(可能是我始终用较简单的模型,不用复杂的模型的缘故,见的不多),可能是你的程序太繁了,程序不能收敛可能是由于变量太多了,或者你的设定取值范围太大。当然,WINBUGS(或OPENBUGS)不是万能的,算不出来也会有,尤其是非常复杂的模型。我个人认为,复杂的模型不是好模型(因为:金融中的模型永远是不对的,为了拟合数据,把模型弄得很复杂在很多情况下是为了拟合而做,就会失去模型的经济意义了),当然,这只是作为菜鸟的个人意见,可能是不对的。

有点小提示:你可以用Brooks-Gelman-Rubin ratio (bgs diag钮,我的机器装了WINDOWS高版本后只能用OPENBUGS,可能与WINBUGS略微不同) 是否接近于1来看是否收敛。

28
TimeT 发表于 2014-3-29 18:58:10
cyl.88 发表于 2014-3-28 13:56
谢谢 ,我明白了。另一方面, 如果我是为了估计样本最后一期的波动率,初始的波动率设一个常数就可以了吧 ...
我觉得初始波动率设成常数从计算角度没错,但是从经济意义来说,我不太愿意接受(因为你是在做随机波动率模型,波动率是不可观察的,你如何知道现时刻的波动率=0.5或是某个确定的数值呢?)这样的设置。如果是我,我会把它也当一个参数来估计。

29
Chemist_MZ 在职认证  发表于 2014-3-29 19:48:00
TimeT 发表于 2014-3-29 18:58
我觉得初始波动率设成常数从计算角度没错,但是从经济意义来说,我不太愿意接受(因为你是在做随机波动率 ...
他的意思可能是Vt的条件分布取决于Vt-1,因此第一个观测点的先验分布比较难找,因此用0.5代替,其实和随便simulate一个意思差不多,只是给算法一个初始值而已,跟GARCH差不多。用一段historical data估计v[1]应该是最老的数据,v[end]才是现在的,我们更关心现在的,数据够长应该v[1]的初值选择影响很小。
扫头像关注公众号“二点三西格玛”衍生品定价与风险管理

30
cyl.88 发表于 2014-3-30 23:00:27
Chemist_MZ 发表于 2014-3-29 19:48
他的意思可能是Vt的条件分布取决于Vt-1,因此第一个观测点的先验分布比较难找,因此用0.5代替,其实和随便 ...
和你们讨论后我现在比较明白了,谢谢~
我现在准备两种都试试,先按你说的把初始波动率设为前一百个数据得便准差了;
第二种根据heton模型设初始波动率服从N(theta,sig^2) 屏幕快照 2014-03-30 下午10.55.34.png

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2026-1-1 02:28