29 const std::vector<Time>& rateTimes, std::vector<ext::shared_ptr<Payoff> > payoffs)
30 : numberOfExercises_(rateTimes.empty() ? 0 : rateTimes.size() - 1), rateTimes_(rateTimes),
31 payoffs_(
std::move(payoffs)) {
35 "Rate times must contain at least two values");
37 evolveTimes.pop_back();
81 std::unique_ptr<MarketModelExerciseValue>
MarketModelMultiProduct::CashFlow value(const CurveState &) const override
MarketModelMultiProduct::CashFlow cf_
Size numberOfExercises() const override
void nextStep(const CurveState &) override
std::valarray< bool > isExerciseTime() const override
std::vector< ext::shared_ptr< Payoff > > payoffs_
std::vector< Time > rateTimes_
std::unique_ptr< MarketModelExerciseValue > clone() const override
std::vector< Time > possibleCashFlowTimes() const override
const EvolutionDescription & evolution() const override
EvolutionDescription evolution_
BermudanSwaptionExerciseValue(const std::vector< Time > &rateTimes, std::vector< ext::shared_ptr< Payoff > >)
Curve state for market-model simulations
virtual Rate coterminalSwapAnnuity(Size numeraire, Size i) const =0
virtual Rate coterminalSwapRate(Size i) const =0
Market-model evolution description.
Abstract base class for option payoffs.
#define QL_REQUIRE(condition, message)
throw an error if the given pre-condition is not verified
std::size_t Size
size of a container
void checkIncreasingTimes(const std::vector< Time > ×)
check for strictly increasing times, first time greater than zero