20#include <ql/pricingengines/americanpayoffatexpiry.hpp>
21#include <ql/math/distributions/normaldistribution.hpp>
27 Real variance,
const ext::shared_ptr<StrikedTypePayoff>& payoff,
29 : spot_(spot), discount_(discount), dividendDiscount_(dividendDiscount),
30 variance_(variance), knock_in_(knock_in) {
33 "positive spot value required");
36 "positive discount required");
39 "positive dividend discount required");
42 "negative variance not allowed");
53 ext::shared_ptr<CashOrNothingPayoff> coo =
54 ext::dynamic_pointer_cast<CashOrNothingPayoff>(payoff);
56 K_ = coo->cashPayoff();
60 ext::shared_ptr<AssetOrNothingPayoff> aoo =
61 ext::dynamic_pointer_cast<AssetOrNothingPayoff>(payoff);
99 QL_FAIL(
"invalid option type");
113 if (log_S_H_ * phi >0)
162 QL_FAIL(
"invalid option type");
DiscountFactor dividendDiscount_
AmericanPayoffAtExpiry(Real spot, DiscountFactor discount, DiscountFactor dividendDiscount, Real variance, const ext::shared_ptr< StrikedTypePayoff > &payoff, bool knock_in=true)
Cumulative normal distribution function.
Real DiscountFactor
discount factor between dates