Coverage Report

Created: 2025-08-05 06:45

/src/quantlib/ql/experimental/callablebonds/callablebondconstantvol.cpp
Line
Count
Source (jump to first uncovered line)
1
/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3
/*
4
 Copyright (C) 2008 Allen Kuo
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/callablebonds/callablebondconstantvol.hpp>
21
#include <ql/quotes/simplequote.hpp>
22
#include <ql/termstructures/volatility/flatsmilesection.hpp>
23
#include <utility>
24
25
namespace QuantLib {
26
27
    CallableBondConstantVolatility::CallableBondConstantVolatility(const Date& referenceDate,
28
                                                                   Volatility volatility,
29
                                                                   DayCounter dayCounter)
30
0
    : CallableBondVolatilityStructure(referenceDate),
31
0
      volatility_(ext::shared_ptr<Quote>(new SimpleQuote(volatility))),
32
0
      dayCounter_(std::move(dayCounter)), maxBondTenor_(100 * Years) {}
Unexecuted instantiation: QuantLib::CallableBondConstantVolatility::CallableBondConstantVolatility(QuantLib::Date const&, double, QuantLib::DayCounter)
Unexecuted instantiation: QuantLib::CallableBondConstantVolatility::CallableBondConstantVolatility(QuantLib::Date const&, double, QuantLib::DayCounter)
33
34
    CallableBondConstantVolatility::CallableBondConstantVolatility(const Date& referenceDate,
35
                                                                   Handle<Quote> volatility,
36
                                                                   DayCounter dayCounter)
37
0
    : CallableBondVolatilityStructure(referenceDate), volatility_(std::move(volatility)),
38
0
      dayCounter_(std::move(dayCounter)), maxBondTenor_(100 * Years) {
39
0
        registerWith(volatility_);
40
0
    }
Unexecuted instantiation: QuantLib::CallableBondConstantVolatility::CallableBondConstantVolatility(QuantLib::Date const&, QuantLib::Handle<QuantLib::Quote>, QuantLib::DayCounter)
Unexecuted instantiation: QuantLib::CallableBondConstantVolatility::CallableBondConstantVolatility(QuantLib::Date const&, QuantLib::Handle<QuantLib::Quote>, QuantLib::DayCounter)
41
42
    CallableBondConstantVolatility::CallableBondConstantVolatility(Natural settlementDays,
43
                                                                   const Calendar& calendar,
44
                                                                   Volatility volatility,
45
                                                                   DayCounter dayCounter)
46
0
    : CallableBondVolatilityStructure(settlementDays, calendar),
47
0
      volatility_(ext::shared_ptr<Quote>(new SimpleQuote(volatility))),
48
0
      dayCounter_(std::move(dayCounter)), maxBondTenor_(100 * Years) {}
Unexecuted instantiation: QuantLib::CallableBondConstantVolatility::CallableBondConstantVolatility(unsigned int, QuantLib::Calendar const&, double, QuantLib::DayCounter)
Unexecuted instantiation: QuantLib::CallableBondConstantVolatility::CallableBondConstantVolatility(unsigned int, QuantLib::Calendar const&, double, QuantLib::DayCounter)
49
50
    CallableBondConstantVolatility::CallableBondConstantVolatility(Natural settlementDays,
51
                                                                   const Calendar& calendar,
52
                                                                   Handle<Quote> volatility,
53
                                                                   DayCounter dayCounter)
54
0
    : CallableBondVolatilityStructure(settlementDays, calendar), volatility_(std::move(volatility)),
55
0
      dayCounter_(std::move(dayCounter)), maxBondTenor_(100 * Years) {
56
0
        registerWith(volatility_);
57
0
    }
Unexecuted instantiation: QuantLib::CallableBondConstantVolatility::CallableBondConstantVolatility(unsigned int, QuantLib::Calendar const&, QuantLib::Handle<QuantLib::Quote>, QuantLib::DayCounter)
Unexecuted instantiation: QuantLib::CallableBondConstantVolatility::CallableBondConstantVolatility(unsigned int, QuantLib::Calendar const&, QuantLib::Handle<QuantLib::Quote>, QuantLib::DayCounter)
58
59
    Volatility CallableBondConstantVolatility::volatilityImpl(const Date&,
60
                                                              const Period&,
61
0
                                                              Rate) const {
62
0
        return volatility_->value();
63
0
    }
64
65
    Volatility CallableBondConstantVolatility::volatilityImpl(
66
0
                                                     Time, Time, Rate) const {
67
0
        return volatility_->value();
68
0
    }
69
70
71
    ext::shared_ptr<SmileSection>
72
    CallableBondConstantVolatility::smileSectionImpl(Time optionTime,
73
0
                                                     Time) const {
74
0
        Volatility atmVol = volatility_->value();
75
0
        return ext::shared_ptr<SmileSection>(
76
0
                                    new FlatSmileSection(optionTime,
77
0
                                                         atmVol,
78
0
                                                         dayCounter_));
79
0
    }
80
81
}
82