Anyone tried function handle of blsprice?

For those who are familiar with blsprice,please kindly ignore the next paragraph.
blsprice is in the financial toolbox to price Call/Put Options using Black-Scholes model. The syntax is: [Call, Put] = blsprice(Price, Strike, Rate, Time, Volatility, Yield) e.g.[Call, Put] = blsprice(100, 95, 0.1, 0.25, 0.5) returns call and put prices of $13.70 and $6.35, respectively.
I would like to create a function handle (like funh = @(x)blsprice(x,Strike, Rate, Time, Volatility, Yield) which enables me to control whether it is call or put, cos the result x would be depending on that. Does anyone knows how to do it? Thanks so much!

1 件のコメント

Fangjun Jiang
Fangjun Jiang 2011 年 11 月 3 日
I don't understand the question. x is your input argument. Why did you say "the result x would be depending on that"?
The function returns two outputs. You can always ignore the one that you don't need. Use ~ in R2009b or later might help. [~, Put] = blsprice(100, 95, 0.1, 0.25, 0.5)

サインインしてコメントする。

 採用された回答

Walter Roberson
Walter Roberson 2011 年 11 月 3 日

1 投票

If you are trying to create a function handle that is able to select the second output of a function, then unfortunately there is no way to do that in MATLAB other than to use an auxiliary real function along the line of
function output = selectoutput(funct,x,number)
[t1,t2] = funct(x);
if number == 2
result = t2;
else
result = t1;
end
end

3 件のコメント

Zoe Zhang
Zoe Zhang 2011 年 11 月 3 日
Thanks, still a little puzzled.
The function handle is supposed to be passed into a quad integration, but how to make this to work?
funct = @(x)blsprice(x,Strike, Rate, Time, Volatility, Yield);
quad(selectoutput(funct,x,2),lb,ub);
Walter Roberson
Walter Roberson 2011 年 11 月 3 日
I should not have used "function" as a variable name -- opps!
quad(@(x) selectoutput(funct,x,2),lb,ub)
Zoe Zhang
Zoe Zhang 2011 年 11 月 3 日
Works well~ Thanks you :-)

サインインしてコメントする。

その他の回答 (1 件)

Nikolay
Nikolay 2012 年 4 月 26 日

0 投票

Hi fellas
could you help me with this. If I have the value of the call (c) can I use some kind of solver to find what the S0 and SIG are? I need them for the merton model
[c, p] = blsprice(S0, K, R, T, SIG, Q)

2 件のコメント

Zoe Zhang
Zoe Zhang 2012 年 4 月 26 日
if u r trying to find sig, you don't really need solver. Check out doc blsimpv; if you need to search for S0, check out fzero, fminsearch etc.
Nikolay
Nikolay 2012 年 4 月 30 日
thank you

サインインしてコメントする。

カテゴリ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by