楼主: 锦sè♀
21474 12

[期权交易] 求matlab代码 反算期权隐含波动率 [推广有奖]

  • 2关注
  • 0粉丝

已卖:310份资源

本科生

59%

还不是VIP/贵宾

-

威望
0
论坛币
1296 个
通用积分
0.7807
学术水平
1 点
热心指数
2 点
信用等级
1 点
经验
2767 点
帖子
73
精华
0
在线时间
71 小时
注册时间
2013-6-2
最后登录
2022-5-17

楼主
锦sè♀ 在职认证  学生认证  发表于 2014-12-13 15:40:07 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
根据BS公式
p=-s*n(-d1)+k*exp^rt*n(-d2)
在已知行权价格为k的期权价格为p,现货价格为s,无风险利率为r,剩余到期天数/360为t的情况下,反解出公式中的隐含波动率sigma。


上述反解如何用matlab实现呀?可以提供正确代码的重谢~
二维码

扫码加我 拉你入群

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

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

关键词:matlab代码 MATLAB matla atlab Mat matlab

回帖推荐

Chemist_MZ 发表于6楼  查看完整内容

具体输入的数值? Volatility = blsimpv(Price, Strike, Rate, Time, Value, Limit, Yield, Tolerance, Class) Limit 是可以改变solver搜索解到界限,比如默认是1,那么600%的implied vol肯定就搜不到就会返回NaN,意思是已经达到搜索的上限,但是还没有找到符合精度的解 Yield就是dividend yield Tolerance,就是容忍度或者精度,比如你输入的option的价格是10,Tol=0.01,那solver找到一个implied volatiltiy使得 ...

本帖被以下文库推荐

沙发
Chemist_MZ 在职认证  发表于 2014-12-13 21:25:46
matlab有自带的函数,

blsimpv(...) for BS model. blkimpv(...) for Black model. 可以查看帮助文件。
已有 1 人评分经验 论坛币 学术水平 收起 理由
chengzhifu2013 + 80 + 80 + 3 精彩帖子

总评分: 经验 + 80  论坛币 + 80  学术水平 + 3   查看全部评分

藤椅
锦sè♀ 在职认证  学生认证  发表于 2014-12-13 21:42:51
Chemist_MZ 发表于 2014-12-13 21:25
matlab有自带的函数,

blsimpv(...) for BS model. blkimpv(...) for Black model. 可以查看帮助文件。
又遇到你啦,这样输入blsimpv(s,k,r,t,put),结果是NAN

板凳
Chemist_MZ 在职认证  发表于 2014-12-13 21:44:09
锦sè♀ 发表于 2014-12-13 21:42
又遇到你啦,这样输入blsimpv(s,k,r,t,put),结果是NAN
具体输入的数值?

报纸
锦sè♀ 在职认证  学生认证  发表于 2014-12-13 21:52:26
锦sè♀ 发表于 2014-12-13 21:42
又遇到你啦,这样输入blsimpv(s,k,r,t,put),结果是NAN
而且该公式没有看涨看跌的选项诶,输入的期权价格默认是看涨期权的,看跌期权的要怎么计算呢?

地板
Chemist_MZ 在职认证  发表于 2014-12-13 22:00:21
锦sè♀ 发表于 2014-12-13 21:52
而且该公式没有看涨看跌的选项诶,输入的期权价格默认是看涨期权的,看跌期权的要怎么计算呢?
具体输入的数值?

Volatility = blsimpv(Price, Strike, Rate, Time, Value, Limit, Yield, Tolerance, Class)

Limit 是可以改变solver搜索解到界限,比如默认是1,那么600%的implied vol肯定就搜不到就会返回NaN,意思是已经达到搜索的上限,但是还没有找到符合精度的解

Yield就是dividend yield

Tolerance,就是容忍度或者精度,比如你输入的option的价格是10,Tol=0.01,那solver找到一个implied volatiltiy使得BS price等于或者小于10.01的时候就会停下来,因为已经够精度了

Class 输入{'Call'} 或者 {'Put'}
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
见路不走 + 10 + 10 + 1 + 1 + 1 精彩帖子
锦sè♀ + 5 + 1 + 1 + 1 热心帮助其他会员

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

7
锦sè♀ 在职认证  学生认证  发表于 2014-12-13 22:00:40
锦sè♀ 发表于 2014-12-13 21:52
而且该公式没有看涨看跌的选项诶,输入的期权价格默认是看涨期权的,看跌期权的要怎么计算呢?
Volatility = blsimpv(100, 95, 0.075, 0.25, 10, 0.5, 0, [], {'Call'});这是范例,可以计算出结果
我输入的Volatility=blsimpv(2166.29, 2000, 0.03, 0.25, 50, 0.5, 0, [], {'Call'}),显示NaN

8
锦sè♀ 在职认证  学生认证  发表于 2014-12-13 22:06:38
Chemist_MZ 发表于 2014-12-13 22:00
具体输入的数值?

Volatility = blsimpv(Price, Strike, Rate, Time, Value, Limit, Yield, Tolerance ...
亲~我换成 Volatility=blsimpv(2166.29, 2000, 0.03, 0.25, 50, 7, 10, [], {'Call'})输入就正确了诶,你好棒。不过结果是 4.0797,太离谱了点。。。我再试试其他时点的数据,谢咯~~

9
Chemist_MZ 在职认证  发表于 2014-12-13 22:07:50
锦sè♀ 发表于 2014-12-13 22:00
Volatility = blsimpv(100, 95, 0.075, 0.25, 10, 0.5, 0, [], {'Call'});这是范例,可以计算出结果
我 ...
你strike 2000的call,指数现在2166.29,你option只卖50块钱?这比intrinsic value都低了,你花50买了然后马上行权能得116块,直接无风险得到66,这是套利。一个套利的价格无套利模型是calibrate不出来的。如果是put就应该可以把{'Call'}改成{'Put'}
已有 1 人评分经验 论坛币 学术水平 收起 理由
chengzhifu2013 + 100 + 100 + 5 一语中的

总评分: 经验 + 100  论坛币 + 100  学术水平 + 5   查看全部评分

10
chengzhifu2013 发表于 2015-10-12 20:50:49
关于计算隐含波动率,看你要什么样的精度了。如果考虑到微笑,就得建立非线性模型来估计了。这个方面可以参考Hull和suo在02年写的一篇关于估计隐含波动率的文章

Focus on the task at hand.

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

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2025-12-26 07:52