1/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3/*
4 Copyright (C) 2009 Jose Aparicio
5
6 This file is part of QuantLib, a free-software/open-source library
7 for financial quantitative analysts and developers - http://quantlib.org/
8
9 QuantLib is free software: you can redistribute it and/or modify it
10 under the terms of the QuantLib license. You should have received a
11 copy of the license along with this program; if not, please email
12 <quantlib-dev@lists.sf.net>. The license is also available online at
13 <http://quantlib.org/license.shtml>.
14
15 This program is distributed in the hope that it will be useful, but WITHOUT
16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17 FOR A PARTICULAR PURPOSE. See the license for more details.
18*/
19
20#include <ql/experimental/credit/recoveryratequote.hpp>
21
22namespace QuantLib {
23
24 const Real RecoveryRateQuote::IsdaConvRecoveries[] = {
25 0.65,// SECDOM
26 0.4, // SNRFOR
27 0.2, // SUBLT2
28 0.2, // JRSUBUT2
29 0.15 // PREFT1
30 };
31
32 std::map<Seniority, Real> makeIsdaConvMap() {
33 return RecoveryRateQuote::makeIsdaMap(
34 arrayIsdaRR: RecoveryRateQuote::IsdaConvRecoveries);
35 }
36
37 RecoveryRateQuote::RecoveryRateQuote(Real value,
38 Seniority seniority)
39 : seniority_(seniority), recoveryRate_(value) {
40 QL_REQUIRE(value == Null<Real>() ||
41 (value >= 0. && value <= 1.),
42 "Recovery value must be a fractional unit.");
43 }
44
45 Real RecoveryRateQuote::setValue(Real value) {
46 Real diff = value-recoveryRate_;
47 if (diff != 0.0) {
48 recoveryRate_ = value;
49 notifyObservers();
50 }
51 return diff;
52 }
53
54 void RecoveryRateQuote::reset() {
55 setValue(Null<Real>());
56 seniority_ = NoSeniority;
57 }
58
59}
60

source code of quantlib/ql/experimental/credit/recoveryratequote.cpp