25#include <ql/errors.hpp>
26#include <ql/exercise.hpp>
27#include <ql/time/calendars/nullcalendar.hpp>
29#include <boost/optional.hpp>
39 RebatedExercise(
const Exercise& exercise,
const Real
rebate = 0.0,
const Natural rebateSettlementDays = 0,
40 const Calendar& rebatePaymentCalendar = NullCalendar(),
41 const BusinessDayConvention rebatePaymentConvention = Following);
44 const Calendar& rebatePaymentCalendar,
const BusinessDayConvention rebatePaymentConvention);
46 RebatedExercise(
const Exercise& exercise,
const std::vector<Real>&
rebates,
const Natural rebateSettlementDays = 0,
47 const Calendar& rebatePaymentCalendar = NullCalendar(),
48 const BusinessDayConvention rebatePaymentConvention = Following);
50 RebatedExercise(
const Exercise& exercise,
const std::vector<Real>&
rebates,
const Period& rebateSettlementPeriod,
51 const Calendar& rebatePaymentCalendar,
const BusinessDayConvention rebatePaymentConvention);
53 RebatedExercise(
const Exercise& exercise,
const std::vector<Date>& exerciseDates,
const std::vector<Real>&
rebates,
54 const Period& rebateSettlementPeriod,
const Calendar& rebatePaymentCalendar = NullCalendar(),
55 const BusinessDayConvention rebatePaymentConvention = Following);
56 Real
rebate(Size index)
const;
71 "rebate with index " << index <<
" does not exist (0..." << (
rebates_.size() - 1) <<
")");
76 QL_REQUIRE(type_ == European || type_ == Bermudan,
"for american style exercises the rebate payment date "
77 <<
"has to be calculted in the client code");
Rebated exercise with exercise dates != notification dates and arbitrary period.
const std::vector< Real > & rebates() const
Real rebate(Size index) const
std::vector< Date > exerciseDates_
Calendar rebatePaymentCalendar_
BusinessDayConvention rebatePaymentConvention_
Period rebateSettlementPeriod_
Date rebatePaymentDate(Size index) const
std::vector< Real > rebates_