24#ifndef quantext_cross_ccy_basis_mtmreset_swap_hpp
25#define quantext_cross_ccy_basis_mtmreset_swap_hpp
27#include <ql/indexes/iborindex.hpp>
28#include <ql/time/schedule.hpp>
55 const QuantLib::ext::shared_ptr<FxIndex>& fxIdx,
bool receiveDomestic =
true, Size foreignPaymentLag = 0,
56 Size recPaymentLag = 0, boost::optional<bool> foreignIncludeSpread = boost::none,
57 boost::optional<Period> foreignLookback = boost::none, boost::optional<Size> foreignFixingDays = boost::none,
58 boost::optional<Size> foreignRateCutoff = boost::none, boost::optional<bool> foreignIsAveraged = boost::none,
59 boost::optional<bool> domesticIncludeSpread = boost::none,
60 boost::optional<Period> domesticLookback = boost::none, boost::optional<Size> domesticFixingDays = boost::none,
61 boost::optional<Size> domesticRateCutoff = boost::none, boost::optional<bool> domesticIsAveraged = boost::none,
62 const bool telescopicValueDates =
false,
63 bool fairSpreadLegIsForeign =
true);
67 void setupArguments(PricingEngine::arguments* args)
const override;
68 void fetchResults(
const PricingEngine::results*)
const override;
88 QL_REQUIRE(
fairForeignSpread_ != Null<Real>(),
"Fair foreign spread is not available");
160 void reset()
override;
void validate() const override
Spread fairDomesticSpread
Cross currency basis MtM resettable swap.
boost::optional< QuantLib::Period > foreignLookback_
Real foreignNominal() const
bool telescopicValueDates_
const QuantLib::ext::shared_ptr< IborIndex > & foreignIndex() const
QuantLib::ext::shared_ptr< FxIndex > fxIndex_
Spread domesticSpread() const
const Currency & foreignCurrency() const
Currency domesticCurrency_
Currency foreignCurrency_
const QuantLib::ext::shared_ptr< IborIndex > & domesticIndex() const
const Currency & domesticCurrency() const
boost::optional< QuantLib::Period > domesticLookback_
QuantLib::ext::shared_ptr< IborIndex > foreignIndex_
Spread fairSpread() const
boost::optional< bool > foreignIsAveraged_
const Schedule & domesticSchedule() const
boost::optional< bool > domesticIncludeSpread_
Spread fairForeignSpread() const
Spread fairForeignSpread_
boost::optional< QuantLib::Size > domesticFixingDays_
Spread foreignSpread() const
Spread fairDomesticSpread() const
void setupArguments(PricingEngine::arguments *args) const override
Spread fairDomesticSpread_
boost::optional< bool > foreignIncludeSpread_
void setupExpired() const override
const Schedule & foreignSchedule() const
Schedule foreignSchedule_
void fetchResults(const PricingEngine::results *) const override
boost::optional< bool > domesticIsAveraged_
bool fairSpreadLegIsForeign_
boost::optional< QuantLib::Size > foreignFixingDays_
boost::optional< Size > foreignRateCutoff_
QuantLib::ext::shared_ptr< IborIndex > domesticIndex_
Schedule domesticSchedule_
boost::optional< Size > domesticRateCutoff_
Swap instrument with legs involving two currencies.