QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
forwardstructure.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) 2000, 2001, 2002, 2003 RiskMap srl
5 Copyright (C) 2003, 2004 StatPro Italia srl
6 Copyright (C) 2009 Ferdinando Ametrano
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/*! \file forwardstructure.hpp
23 \brief Forward-based yield term structure
24*/
25
26#ifndef quantlib_forward_structure_hpp
27#define quantlib_forward_structure_hpp
28
30
31namespace QuantLib {
32
33 //! %Forward-rate term structure
34 /*! This abstract class acts as an adapter to YieldTermStructure allowing
35 the programmer to implement only the <tt>forwardImpl(Time)</tt> method
36 in derived classes.
37
38 Zero yields and discounts are calculated from forwards.
39
40 Forward rates are assumed to be annual continuous compounding.
41
42 \ingroup yieldtermstructures
43 */
45 public:
46 /*! \name Constructors
47 See the TermStructure documentation for issues regarding
48 constructors.
49 */
50 //@{
51 explicit ForwardRateStructure(
53 explicit ForwardRateStructure(
54 const Date& referenceDate,
55 const Calendar& cal = Calendar(),
57 const std::vector<Handle<Quote> >& jumps = {},
58 const std::vector<Date>& jumpDates = {});
61 const Calendar& cal,
63 const std::vector<Handle<Quote> >& jumps = {},
64 const std::vector<Date>& jumpDates = {});
65 //@}
66 protected:
67 /*! \name Calculations
68
69 These methods must be implemented in derived classes to
70 perform the actual calculations. When they are called,
71 range check has already been performed; therefore, they
72 must assume that extrapolation is required.
73 */
74 //@{
75 //! instantaneous forward-rate calculation
76 virtual Rate forwardImpl(Time) const = 0;
77 /*! Returns the zero yield rate for the given date calculating it
78 from the instantaneous forward rate \f$ f(t) \f$ as
79 \f[
80 z(t) = \int_0^t f(\tau) d\tau
81 \f]
82
83 \warning This default implementation uses an highly inefficient
84 and possibly wildly inaccurate numerical integration.
85 Derived classes should override it if a more efficient
86 implementation is available.
87 */
88 virtual Rate zeroYieldImpl(Time) const;
89 //@}
90
91 //! \name YieldTermStructure implementation
92 //@{
93 /*! Returns the discount factor for the given date calculating it
94 from the zero rate as \f$ d(t) = \exp \left( -z(t) t \right) \f$
95 */
96 DiscountFactor discountImpl(Time) const override;
97 //@}
98 };
99
100
101 // inline definitions
102
104 if (t == 0.0) // this acts as a safe guard in cases where
105 return 1.0; // zeroYieldImpl(0.0) would throw.
106
108 return DiscountFactor(std::exp(-r*t));
109 }
110
111}
112
113#endif
calendar class
Definition: calendar.hpp:61
Concrete date class.
Definition: date.hpp:125
day counter class
Definition: daycounter.hpp:44
Forward-rate term structure
virtual Rate zeroYieldImpl(Time) const
DiscountFactor discountImpl(Time) const override
virtual Rate forwardImpl(Time) const =0
instantaneous forward-rate calculation
Shared handle to an observable.
Definition: handle.hpp:41
virtual Natural settlementDays() const
the settlementDays used for reference date calculation
virtual const Date & referenceDate() const
the date at which discount = 1.0 and/or variance = 0.0
virtual DayCounter dayCounter() const
the day counter used for date/time conversion
Interest-rate term structure.
const std::vector< Date > & jumpDates() const
const DefaultType & t
Real Time
continuous quantity with 1-year units
Definition: types.hpp:62
Real DiscountFactor
discount factor between dates
Definition: types.hpp:66
unsigned QL_INTEGER Natural
positive integer
Definition: types.hpp:43
Real Rate
interest rates
Definition: types.hpp:70
Definition: any.hpp:35
ext::shared_ptr< YieldTermStructure > r
Interest-rate term structure.