/src/quantlib/ql/termstructures/volatility/swaption/swaptionconstantvol.cpp
Line | Count | Source (jump to first uncovered line) |
1 | | /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ |
2 | | |
3 | | /* |
4 | | Copyright (C) 2008 Ferdinando Ametrano |
5 | | Copyright (C) 2006, 2007 StatPro Italia srl |
6 | | Copyright (C) 2015 Peter Caspers |
7 | | |
8 | | This file is part of QuantLib, a free-software/open-source library |
9 | | for financial quantitative analysts and developers - http://quantlib.org/ |
10 | | |
11 | | QuantLib is free software: you can redistribute it and/or modify it |
12 | | under the terms of the QuantLib license. You should have received a |
13 | | copy of the license along with this program; if not, please email |
14 | | <quantlib-dev@lists.sf.net>. The license is also available online at |
15 | | <http://quantlib.org/license.shtml>. |
16 | | |
17 | | This program is distributed in the hope that it will be useful, but WITHOUT |
18 | | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
19 | | FOR A PARTICULAR PURPOSE. See the license for more details. |
20 | | */ |
21 | | |
22 | | #include <ql/quotes/simplequote.hpp> |
23 | | #include <ql/termstructures/volatility/flatsmilesection.hpp> |
24 | | #include <ql/termstructures/volatility/swaption/swaptionconstantvol.hpp> |
25 | | #include <utility> |
26 | | |
27 | | namespace QuantLib { |
28 | | |
29 | | // floating reference date, floating market data |
30 | | ConstantSwaptionVolatility::ConstantSwaptionVolatility(Natural settlementDays, |
31 | | const Calendar& cal, |
32 | | BusinessDayConvention bdc, |
33 | | Handle<Quote> vol, |
34 | | const DayCounter& dc, |
35 | | const VolatilityType type, |
36 | | const Real shift) |
37 | 0 | : SwaptionVolatilityStructure(settlementDays, cal, bdc, dc), volatility_(std::move(vol)), |
38 | 0 | maxSwapTenor_(100 * Years), volatilityType_(type), shift_(shift) { |
39 | 0 | registerWith(volatility_); |
40 | 0 | } Unexecuted instantiation: QuantLib::ConstantSwaptionVolatility::ConstantSwaptionVolatility(unsigned int, QuantLib::Calendar const&, QuantLib::BusinessDayConvention, QuantLib::Handle<QuantLib::Quote>, QuantLib::DayCounter const&, QuantLib::VolatilityType, double) Unexecuted instantiation: QuantLib::ConstantSwaptionVolatility::ConstantSwaptionVolatility(unsigned int, QuantLib::Calendar const&, QuantLib::BusinessDayConvention, QuantLib::Handle<QuantLib::Quote>, QuantLib::DayCounter const&, QuantLib::VolatilityType, double) |
41 | | |
42 | | // fixed reference date, floating market data |
43 | | ConstantSwaptionVolatility::ConstantSwaptionVolatility(const Date& referenceDate, |
44 | | const Calendar& cal, |
45 | | BusinessDayConvention bdc, |
46 | | Handle<Quote> vol, |
47 | | const DayCounter& dc, |
48 | | const VolatilityType type, |
49 | | const Real shift) |
50 | 0 | : SwaptionVolatilityStructure(referenceDate, cal, bdc, dc), volatility_(std::move(vol)), |
51 | 0 | maxSwapTenor_(100 * Years), volatilityType_(type), shift_(shift) { |
52 | 0 | registerWith(volatility_); |
53 | 0 | } Unexecuted instantiation: QuantLib::ConstantSwaptionVolatility::ConstantSwaptionVolatility(QuantLib::Date const&, QuantLib::Calendar const&, QuantLib::BusinessDayConvention, QuantLib::Handle<QuantLib::Quote>, QuantLib::DayCounter const&, QuantLib::VolatilityType, double) Unexecuted instantiation: QuantLib::ConstantSwaptionVolatility::ConstantSwaptionVolatility(QuantLib::Date const&, QuantLib::Calendar const&, QuantLib::BusinessDayConvention, QuantLib::Handle<QuantLib::Quote>, QuantLib::DayCounter const&, QuantLib::VolatilityType, double) |
54 | | |
55 | | // floating reference date, fixed market data |
56 | | ConstantSwaptionVolatility::ConstantSwaptionVolatility( |
57 | | Natural settlementDays, |
58 | | const Calendar& cal, |
59 | | BusinessDayConvention bdc, |
60 | | Volatility vol, |
61 | | const DayCounter& dc, |
62 | | const VolatilityType type, |
63 | | const Real shift) |
64 | 0 | : SwaptionVolatilityStructure(settlementDays, cal, bdc, dc), |
65 | 0 | volatility_(ext::shared_ptr<Quote>(new SimpleQuote(vol))), |
66 | 0 | maxSwapTenor_(100*Years), volatilityType_(type), shift_(shift) {} Unexecuted instantiation: QuantLib::ConstantSwaptionVolatility::ConstantSwaptionVolatility(unsigned int, QuantLib::Calendar const&, QuantLib::BusinessDayConvention, double, QuantLib::DayCounter const&, QuantLib::VolatilityType, double) Unexecuted instantiation: QuantLib::ConstantSwaptionVolatility::ConstantSwaptionVolatility(unsigned int, QuantLib::Calendar const&, QuantLib::BusinessDayConvention, double, QuantLib::DayCounter const&, QuantLib::VolatilityType, double) |
67 | | |
68 | | // fixed reference date, fixed market data |
69 | | ConstantSwaptionVolatility::ConstantSwaptionVolatility( |
70 | | const Date& referenceDate, |
71 | | const Calendar& cal, |
72 | | BusinessDayConvention bdc, |
73 | | Volatility vol, |
74 | | const DayCounter& dc, |
75 | | const VolatilityType type, |
76 | | const Real shift) |
77 | 0 | : SwaptionVolatilityStructure(referenceDate, cal, bdc, dc), |
78 | 0 | volatility_(ext::shared_ptr<Quote>(new SimpleQuote(vol))), |
79 | 0 | maxSwapTenor_(100*Years), volatilityType_(type), shift_(shift) {} Unexecuted instantiation: QuantLib::ConstantSwaptionVolatility::ConstantSwaptionVolatility(QuantLib::Date const&, QuantLib::Calendar const&, QuantLib::BusinessDayConvention, double, QuantLib::DayCounter const&, QuantLib::VolatilityType, double) Unexecuted instantiation: QuantLib::ConstantSwaptionVolatility::ConstantSwaptionVolatility(QuantLib::Date const&, QuantLib::Calendar const&, QuantLib::BusinessDayConvention, double, QuantLib::DayCounter const&, QuantLib::VolatilityType, double) |
80 | | |
81 | | ext::shared_ptr<SmileSection> |
82 | | ConstantSwaptionVolatility::smileSectionImpl(const Date& d, |
83 | 0 | const Period&) const { |
84 | 0 | Volatility atmVol = volatility_->value(); |
85 | 0 | return ext::shared_ptr<SmileSection>( |
86 | 0 | new FlatSmileSection(d, atmVol, dayCounter(), referenceDate(), |
87 | 0 | Null<Rate>(), volatilityType_, shift_)); |
88 | 0 | } |
89 | | |
90 | | ext::shared_ptr<SmileSection> |
91 | | ConstantSwaptionVolatility::smileSectionImpl(Time optionTime, |
92 | 0 | Time) const { |
93 | 0 | Volatility atmVol = volatility_->value(); |
94 | 0 | return ext::shared_ptr<SmileSection>( |
95 | 0 | new FlatSmileSection(optionTime, atmVol, dayCounter(), Null<Rate>(), |
96 | 0 | volatilityType_, shift_)); |
97 | 0 | } |
98 | | |
99 | | Volatility ConstantSwaptionVolatility::volatilityImpl(const Date&, |
100 | | const Period&, |
101 | 0 | Rate) const { |
102 | 0 | return volatility_->value(); |
103 | 0 | } |
104 | | |
105 | | Volatility ConstantSwaptionVolatility::volatilityImpl(Time, |
106 | | Time, |
107 | 0 | Rate) const { |
108 | 0 | return volatility_->value(); |
109 | 0 | } |
110 | | |
111 | | } |