QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
interpolatedswaptionvolatilitycube.hpp
Go to the documentation of this file.
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
21/*! \file interpolatedswaptionvolatilitycube.hpp
22 \brief Swaption volatility cube, fit-later-interpolate-early approach
23*/
24
25#ifndef quantlib_interpolated_swaption_volatility_cube_hpp
26#define quantlib_interpolated_swaption_volatility_cube_hpp
27
30
31namespace QuantLib {
32
33 //! Interpolated Swaption Volatility Cube
34 /*! This class implements the Interpolated Swaption Volatility Cube,
35 which is able to interpolate between the volatility spreads provided.
36
37 */
39 public:
40 /*! The swaption vol cube is made up of ordered swaption vol surface
41 layers, each layer referring to a swap index of a given length
42 (in years), all indexes belonging to the same family. In order
43 to identify the family (and its market conventions) an index of
44 whatever length from that family must be passed in as
45 swapIndexBase.
46
47 Often for short swap length the swap index family is different,
48 e.g. the EUR case: swap vs 6M Euribor is used for length>1Y,
49 while swap vs 3M Euribor is used for the 1Y length. The
50 shortSwapIndexBase is used to identify this second family.
51 */
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,
61 //! \name LazyObject interface
62 //@{
63 void performCalculations() const override;
64 //@}
65 //! \name SwaptionVolatilityCube inspectors
66 //@{
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;
72 //@}
73 private:
74 mutable std::vector<Interpolation2D> volSpreadsInterpolator_;
75 mutable std::vector<Matrix> volSpreadsMatrix_;
76 };
77
78}
79
80#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
abstract base classes for 2-D interpolations
Definition: any.hpp:35
Swaption volatility cube.