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, 2005, 2006 StatPro Italia srl
6 Copyright (C) 2006 Katiuscia Manzoni
7 Copyright (C) 2006 Chiara Fornarola
8 Copyright (C) 2009 Roland Lichters
9 Copyright (C) 2009 Ferdinando Ametrano
10
11 This file is part of QuantLib, a free-software/open-source library
12 for financial quantitative analysts and developers - http://quantlib.org/
13
14 QuantLib is free software: you can redistribute it and/or modify it
15 under the terms of the QuantLib license. You should have received a
16 copy of the license along with this program; if not, please email
17 <quantlib-dev@lists.sf.net>. The license is also available online at
18 <http://quantlib.org/license.shtml>.
19
20 This program is distributed in the hope that it will be useful, but WITHOUT
21 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
22 FOR A PARTICULAR PURPOSE. See the license for more details.
23*/
24
25/*! \file euribor.hpp
26 \brief %Euribor index
27*/
28
29#ifndef quantlib_euribor_hpp
30#define quantlib_euribor_hpp
31
32#include <ql/indexes/iborindex.hpp>
33
34namespace QuantLib {
35
36 //! %Euribor index
37 /*! Euribor rate fixed by the ECB.
38
39 \warning This is the rate fixed by the ECB. Use EurLibor
40 if you're interested in the London fixing by BBA.
41 */
42 class Euribor : public IborIndex {
43 public:
44 Euribor(const Period& tenor,
45 const Handle<YieldTermStructure>& h = {});
46 };
47
48 //! Actual/365 %Euribor index
49 /*! Euribor rate adjusted for the mismatch between the actual/360
50 convention used for Euribor and the actual/365 convention
51 previously used by a few pre-EUR currencies.
52 */
53 class Euribor365 : public IborIndex {
54 public:
55 Euribor365(const Period& tenor,
56 const Handle<YieldTermStructure>& h = {});
57 };
58
59 //! 1-week %Euribor index
60 class EuriborSW : public Euribor {
61 public:
62 explicit EuriborSW(const Handle<YieldTermStructure>& h = {})
63 : Euribor(Period(1, Weeks), h) {}
64 };
65
66 //! 2-weeks %Euribor index
67 class Euribor2W : public Euribor {
68 public:
69 explicit Euribor2W(const Handle<YieldTermStructure>& h = {})
70 : Euribor(Period(2, Weeks), h) {}
71 };
72
73 //! 3-weeks %Euribor index
74 class Euribor3W : public Euribor {
75 public:
76 explicit Euribor3W(const Handle<YieldTermStructure>& h = {})
77 : Euribor(Period(3, Weeks), h) {}
78 };
79
80 //! 1-month %Euribor index
81 class Euribor1M : public Euribor {
82 public:
83 explicit Euribor1M(const Handle<YieldTermStructure>& h = {})
84 : Euribor(Period(1, Months), h) {}
85 };
86
87 //! 2-months %Euribor index
88 class Euribor2M : public Euribor {
89 public:
90 explicit Euribor2M(const Handle<YieldTermStructure>& h = {})
91 : Euribor(Period(2, Months), h) {}
92 };
93
94 //! 3-months %Euribor index
95 class Euribor3M : public Euribor {
96 public:
97 explicit Euribor3M(const Handle<YieldTermStructure>& h = {})
98 : Euribor(Period(3, Months), h) {}
99 };
100
101 //! 4-months %Euribor index
102 class Euribor4M : public Euribor {
103 public:
104 explicit Euribor4M(const Handle<YieldTermStructure>& h = {})
105 : Euribor(Period(4, Months), h) {}
106 };
107
108 //! 5-months %Euribor index
109 class Euribor5M : public Euribor {
110 public:
111 explicit Euribor5M(const Handle<YieldTermStructure>& h = {})
112 : Euribor(Period(5, Months), h) {}
113 };
114
115 //! 6-months %Euribor index
116 class Euribor6M : public Euribor {
117 public:
118 explicit Euribor6M(const Handle<YieldTermStructure>& h = {})
119 : Euribor(Period(6, Months), h) {}
120 };
121
122 //! 7-months %Euribor index
123 class Euribor7M : public Euribor {
124 public:
125 explicit Euribor7M(const Handle<YieldTermStructure>& h = {})
126 : Euribor(Period(7, Months), h) {}
127 };
128
129 //! 8-months %Euribor index
130 class Euribor8M : public Euribor {
131 public:
132 explicit Euribor8M(const Handle<YieldTermStructure>& h = {})
133 : Euribor(Period(8, Months), h) {}
134 };
135
136 //! 9-months %Euribor index
137 class Euribor9M : public Euribor {
138 public:
139 explicit Euribor9M(const Handle<YieldTermStructure>& h = {})
140 : Euribor(Period(9, Months), h) {}
141 };
142
143 //! 10-months %Euribor index
144 class Euribor10M : public Euribor {
145 public:
146 explicit Euribor10M(const Handle<YieldTermStructure>& h = {})
147 : Euribor(Period(10, Months), h) {}
148 };
149
150 //! 11-months %Euribor index
151 class Euribor11M : public Euribor {
152 public:
153 explicit Euribor11M(const Handle<YieldTermStructure>& h = {})
154 : Euribor(Period(11, Months), h) {}
155 };
156
157 //! 1-year %Euribor index
158 class Euribor1Y : public Euribor {
159 public:
160 explicit Euribor1Y(const Handle<YieldTermStructure>& h = {})
161 : Euribor(Period(1, Years), h) {}
162 };
163
164
165 //! 1-week %Euribor365 index
166 class Euribor365_SW : public Euribor365 {
167 public:
168 explicit Euribor365_SW(const Handle<YieldTermStructure>& h = {})
169 : Euribor365(Period(1, Weeks), h) {}
170 };
171
172 //! 2-weeks %Euribor365 index
173 class Euribor365_2W : public Euribor365 {
174 public:
175 explicit Euribor365_2W(const Handle<YieldTermStructure>& h = {})
176 : Euribor365(Period(2, Weeks), h) {}
177 };
178
179 //! 3-weeks %Euribor365 index
180 class Euribor365_3W : public Euribor365 {
181 public:
182 explicit Euribor365_3W(const Handle<YieldTermStructure>& h = {})
183 : Euribor365(Period(3, Weeks), h) {}
184 };
185
186 //! 1-month %Euribor365 index
187 class Euribor365_1M : public Euribor365 {
188 public:
189 explicit Euribor365_1M(const Handle<YieldTermStructure>& h = {})
190 : Euribor365(Period(1, Months), h) {}
191 };
192
193 //! 2-months %Euribor365 index
194 class Euribor365_2M : public Euribor365 {
195 public:
196 explicit Euribor365_2M(const Handle<YieldTermStructure>& h = {})
197 : Euribor365(Period(2, Months), h) {}
198 };
199
200 //! 3-months %Euribor365 index
201 class Euribor365_3M : public Euribor365 {
202 public:
203 explicit Euribor365_3M(const Handle<YieldTermStructure>& h = {})
204 : Euribor365(Period(3, Months), h) {}
205 };
206
207 //! 4-months %Euribor365 index
208 class Euribor365_4M : public Euribor365 {
209 public:
210 explicit Euribor365_4M(const Handle<YieldTermStructure>& h = {})
211 : Euribor365(Period(4, Months), h) {}
212 };
213
214 //! 5-months %Euribor365 index
215 class Euribor365_5M : public Euribor365 {
216 public:
217 explicit Euribor365_5M(const Handle<YieldTermStructure>& h = {})
218 : Euribor365(Period(5, Months), h) {}
219 };
220
221 //! 6-months %Euribor365 index
222 class Euribor365_6M : public Euribor365 {
223 public:
224 explicit Euribor365_6M(const Handle<YieldTermStructure>& h = {})
225 : Euribor365(Period(6, Months), h) {}
226 };
227
228 //! 7-months %Euribor365 index
229 class Euribor365_7M : public Euribor365 {
230 public:
231 explicit Euribor365_7M(const Handle<YieldTermStructure>& h = {})
232 : Euribor365(Period(7, Months), h) {}
233 };
234
235 //! 8-months %Euribor365 index
236 class Euribor365_8M : public Euribor365 {
237 public:
238 explicit Euribor365_8M(const Handle<YieldTermStructure>& h = {})
239 : Euribor365(Period(8, Months), h) {}
240 };
241
242 //! 9-months %Euribor365 index
243 class Euribor365_9M : public Euribor365 {
244 public:
245 explicit Euribor365_9M(const Handle<YieldTermStructure>& h = {})
246 : Euribor365(Period(9, Months), h) {}
247 };
248
249 //! 10-months %Euribor365 index
250 class Euribor365_10M : public Euribor365 {
251 public:
252 explicit Euribor365_10M(const Handle<YieldTermStructure>& h = {})
253 : Euribor365(Period(10, Months), h) {}
254 };
255
256 //! 11-months %Euribor365 index
257 class Euribor365_11M : public Euribor365 {
258 public:
259 explicit Euribor365_11M(const Handle<YieldTermStructure>& h = {})
260 : Euribor365(Period(11, Months), h) {}
261 };
262
263 //! 1-year %Euribor365 index
264 class Euribor365_1Y : public Euribor365 {
265 public:
266 explicit Euribor365_1Y(const Handle<YieldTermStructure>& h = {})
267 : Euribor365(Period(1, Years), h) {}
268 };
269
270}
271
272#endif
273

source code of quantlib/ql/indexes/ibor/euribor.hpp