Posted by
Luigi Ballabio on
Nov 10, 2005; 8:26am
URL: http://quantlib.414.s1.nabble.com/bug-report-negative-price-for-an-American-put-option-using-Bjerksund-and-Stensland-approximation-tp4195p4196.html
On 11/08/2005 02:41:40 PM,
[hidden email] wrote:
> I have a bug report: I encountered a negative price for an American
> put option using Bjerksund and Stensland approximation.
Jan,
it seems that there are values (typically, small volatilities,
large cost of carry and/or far-away maturities) for which the trigger
price is less than the strike; this causes the approximation to break
down. For the time being, I added a check which raises an exception if
such a condition occurs (so that at least incorrect values are not
returned silently.) I'll try and get more information on the problem.
Later,
Luigi
P.S. If you want to patch your sources, look for the line
Real I = B0 + (BInfinity - B0) * (1 - std::exp(ht));
in bjerksundstenslandengine.cpp and add the following check after it:
QL_REQUIRE(I >= X, "broken Bjerksund-Stensland approximation");
----------------------------------------
The nice thing about standards is that there are so many of them to
choose from.
-- Andrew S. Tanenbaum