24#ifndef quantext_cross_ccy_basis_swap_helper_hpp
25#define quantext_cross_ccy_basis_swap_helper_hpp
27#include <ql/termstructures/yield/ratehelpers.hpp>
54 const Handle<Quote>& spreadQuote,
const Handle<Quote>& spotFX, Natural settlementDays,
55 const Calendar& settlementCalendar,
const Period& swapTenor, BusinessDayConvention rollConvention,
56 const QuantLib::ext::shared_ptr<QuantLib::IborIndex>& flatIndex,
57 const QuantLib::ext::shared_ptr<QuantLib::IborIndex>& spreadIndex,
const Handle<YieldTermStructure>& flatDiscountCurve,
58 const Handle<YieldTermStructure>& spreadDiscountCurve,
bool eom =
false,
bool flatIsDomestic =
true,
59 boost::optional<QuantLib::Period> flatTenor = boost::none,
60 boost::optional<QuantLib::Period> spreadTenor = boost::none, Real spreadOnFlatLeg = 0.0, Real flatGearing = 1.0,
61 Real spreadGearing = 1.0,
const Calendar& flatCalendar = Calendar(),
62 const Calendar& spreadCalendar = Calendar(),
63 const std::vector<Natural>& spotFXSettleDaysVec = std::vector<Natural>(),
64 const std::vector<Calendar>& spotFXSettleCalendar = std::vector<Calendar>(), Size paymentLag = 0,
65 Size flatPaymentLag = 0, boost::optional<bool> includeSpread = boost::none,
66 boost::optional<Period> lookback = boost::none, boost::optional<Size> fixingDays = boost::none,
67 boost::optional<Size> rateCutoff = boost::none, boost::optional<bool> isAveraged = boost::none,
68 boost::optional<bool> flatIncludeSpread = boost::none, boost::optional<Period> flatLookback = boost::none,
69 boost::optional<Size> flatFixingDays = boost::none, boost::optional<Size> flatRateCutoff = boost::none,
70 boost::optional<bool> flatIsAveraged = boost::none,
const bool telescopicValueDates =
false);
78 QuantLib::ext::shared_ptr<CrossCcyBasisSwap>
swap()
const {
return swap_; }
82 void accept(AcyclicVisitor&)
override;
93 QuantLib::ext::shared_ptr<QuantLib::IborIndex>
flatIndex_;
125 QuantLib::ext::shared_ptr<CrossCcyBasisSwap>
swap_;
Cross Ccy Basis Swap Rate Helper.
RelinkableHandle< YieldTermStructure > spreadDiscountRLH_
void setTermStructure(YieldTermStructure *) override
bool telescopicValueDates_
boost::optional< bool > flatIncludeSpread_
Currency flatLegCurrency_
std::vector< Natural > spotFXSettleDaysVec_
RelinkableHandle< YieldTermStructure > termStructureHandle_
boost::optional< QuantLib::Size > fixingDays_
boost::optional< QuantLib::Size > flatFixingDays_
boost::optional< QuantLib::Period > lookback_
RelinkableHandle< YieldTermStructure > flatDiscountRLH_
boost::optional< bool > isAveraged_
boost::optional< Size > flatRateCutoff_
void accept(AcyclicVisitor &) override
boost::optional< Size > rateCutoff_
Calendar settlementCalendar_
QuantLib::ext::shared_ptr< QuantLib::IborIndex > spreadIndex_
Currency spreadLegCurrency_
Handle< YieldTermStructure > spreadDiscountCurve_
QuantLib::Period flatTenor_
QuantLib::ext::shared_ptr< CrossCcyBasisSwap > swap_
void initializeDates() override
boost::optional< QuantLib::Period > flatLookback_
Real impliedQuote() const override
QuantLib::ext::shared_ptr< QuantLib::IborIndex > flatIndex_
Handle< YieldTermStructure > flatDiscountCurve_
BusinessDayConvention rollConvention_
QuantLib::ext::shared_ptr< CrossCcyBasisSwap > swap() const
boost::optional< bool > includeSpread_
boost::optional< bool > flatIsAveraged_
QuantLib::Period spreadTenor_
std::vector< Calendar > spotFXSettleCalendarVec_
Cross currency basis swap instrument.