QuantLib: a free/open-source library for quantitative finance
Fully annotated sources - version 1.32
Loading...
Searching...
No Matches
interpolatedswaptionvolatilitycube.hpp
1/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3/*
4 Copyright (C) 2006 Ferdinando Ametrano
5 Copyright (C) 2023 Ignacio Anguita
6
7 This file is part of QuantLib, a free-software/open-source library
8 for financial quantitative analysts and developers - http://quantlib.org/
9
10 QuantLib is free software: you can redistribute it and/or modify it
11 under the terms of the QuantLib license. You should have received a
12 copy of the license along with this program; if not, please email
13 <quantlib-dev@lists.sf.net>. The license is also available online at
14 <http://quantlib.org/license.shtml>.
15
16 This program is distributed in the hope that it will be useful, but WITHOUT
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
18 FOR A PARTICULAR PURPOSE. See the license for more details.
19*/
20
25#ifndef quantlib_interpolated_swaption_volatility_cube_hpp
26#define quantlib_interpolated_swaption_volatility_cube_hpp
27
28#include <ql/termstructures/volatility/swaption/swaptionvolcube.hpp>
29#include <ql/math/interpolations/interpolation2d.hpp>
30
31namespace QuantLib {
32
34
39 public:
53 const Handle<SwaptionVolatilityStructure>& atmVolStructure,
54 const std::vector<Period>& optionTenors,
55 const std::vector<Period>& swapTenors,
56 const std::vector<Spread>& strikeSpreads,
57 const std::vector<std::vector<Handle<Quote> > >& volSpreads,
58 const ext::shared_ptr<SwapIndex>& swapIndexBase,
59 const ext::shared_ptr<SwapIndex>& shortSwapIndexBase,
62
63 void performCalculations() const override;
65
67 const Matrix& volSpreads(Size i) const { return volSpreadsMatrix_[i]; }
68 ext::shared_ptr<SmileSection> smileSectionImpl(const Date& optionDate,
69 const Period& swapTenor) const override;
70 ext::shared_ptr<SmileSection> smileSectionImpl(Time optionTime,
71 Time swapLength) const override;
73 private:
74 mutable std::vector<Interpolation2D> volSpreadsInterpolator_;
75 mutable std::vector<Matrix> volSpreadsMatrix_;
76 };
77
81 [[deprecated("renamed to InterpolatedSwaptionVolatilityCube")]]
83
84}
85
86#endif
Concrete date class.
Definition: date.hpp:125
Shared handle to an observable.
Definition: handle.hpp:41
ext::shared_ptr< SmileSection > smileSectionImpl(const Date &optionDate, const Period &swapTenor) const override
Matrix used in linear algebra.
Definition: matrix.hpp:41
swaption-volatility cube
const std::vector< std::vector< Handle< Quote > > > & volSpreads() const
ext::shared_ptr< SwapIndex > shortSwapIndexBase() const
ext::shared_ptr< SwapIndex > swapIndexBase() const
const std::vector< Spread > & strikeSpreads() const
const std::vector< Period > & swapTenors() const
const std::vector< Period > & optionTenors() const
Time swapLength(const Period &swapTenor) const
implements the conversion between swap tenor and swap (time) length
Real Time
continuous quantity with 1-year units
Definition: types.hpp:62
std::size_t Size
size of a container
Definition: types.hpp:58
Definition: any.hpp:35
InterpolatedSwaptionVolatilityCube SwaptionVolCube2