楼主: firetarget
5725 6

自己编的MATLAB BS公式 出现问题 请教高手 [推广有奖]

  • 0关注
  • 0粉丝

小学生

14%

还不是VIP/贵宾

-

威望
0
论坛币
278 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
64 点
帖子
3
精华
0
在线时间
0 小时
注册时间
2005-3-19
最后登录
2010-4-23

楼主
firetarget 发表于 2007-7-12 14:41:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

小弟初学MATLAB没几天,编了个算权证的公式,可是出现问题,出了inf,计算无法继续.请高手指点,见笑了.

function p = bs(r,t,sigma,s,x)

% This function calculates the value of

% Define varibales

% r--无风险利率 连续复利 单位:年

% t--权证到期时间

% sigma--标的股票波动率

% s--标的股票现价

% x--权证规定的执行价格

r = input('Enter the value of r: ');

t = input('Enter the valur of t: ');

sigma = input('Enter the value of sigma: ');

s = input('Enter the value of s: ');

x = input('Enter the value of x: ');

d1 = (log(s/x)+(r+sigma^2/2)*t)/sigma*sqrt(t)

d2= d1-sigma*sqrt(t)

p=x*exp(-r*t)*normcdf(-d2,0,1)-s*normcdf(-d1,0,1)

??? Input must be real.

Error in ==> erfc at 21

y = erfcore(x,1);

Error in ==> normcdf at 68

p = 0.5 * erfc(-z ./ sqrt(2));

Error in ==> bs at 16

p=x*exp(-r*t)*normcdf(-d2,0,1)-s*normcdf(-d1,0,1)

二维码

扫码加我 拉你入群

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

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

关键词:MATLAB matla atlab 请教高手 bs公式 MATLAB 高手 公式

沙发
statax 发表于 2007-7-12 14:59:00
我不懂BS啊,不好意思。 如果有空,也请帮忙看看我的关于BP网的问题。thanks.
Use it, or lose it!

藤椅
yiyo900 发表于 2007-7-12 17:06:00

d1 = (log(s/x)+(r+sigma^2/2)*t)/(sigma*sqrt(t));

d2 = d1-(sigma*sqrt(t));

call = s* normcdf(d1) - x* exp(-r*t) * normcdf(d2)

put = x* exp(-r*t) * normcdf(-d2) - s* normcdf(-d1)

板凳
firetarget 发表于 2007-7-12 22:42:00

为什么你的normcdf(d1)不是normcdf(d1,0,1)呢?不应该是标准正态分布么?

d1(isnan(d1))=0这段代码是作什么用的?能给讲一下么?

报纸
zhangader 在职认证  发表于 2007-7-13 06:10:00

NaN是表示“Not a Number”的简写,表示非数字变量,isnan(d1)逻辑判断变量d1中有没有非数字元素(可以通俗理解其功能为is NaN ?),并且给出相应的位置,d1(isnan(d1))=0,表示将d1中非数字元素换成0。

比如MATLAB计算A=0 ,B=0,C=A/B,其结果不确定,就是“NaN”;变量C和任何其他变量的运算结果都是“NaN”;

比如 D =C*1;则D也是“NaN”;

不知清楚了没有。


normcdf(d1)和normcdf(d1,0,1)在MATLAB中是一回事,主要是MATLAB怕你累着了,关心你,不让你再写0,1了。normcdf(d1)默认为均值是0,方差是1的振态分布函数,如果不是0,1,就要用normcdf(d1,均值,方差)形式,

[此贴子已经被作者于2007-7-13 6:35:16编辑过]

地板
firetarget 发表于 2007-7-13 12:46:00
恩 清楚了 谢谢指点哈 以后还请多多讲解.

7
matlab-007 发表于 2015-3-5 11:51:37
你先看一下z的值,再调用

p = 0.5 * erfc(-z ./ sqrt(2));

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 15:37