/usr/include/ql/cashflows/coupon.hpp is in libquantlib0-dev 1.12-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
Copyright (C) 2000, 2001, 2002, 2003 RiskMap srl
Copyright (C) 2003, 2004, 2007 StatPro Italia srl
This file is part of QuantLib, a free-software/open-source library
for financial quantitative analysts and developers - http://quantlib.org/
QuantLib is free software: you can redistribute it and/or modify it
under the terms of the QuantLib license. You should have received a
copy of the license along with this program; if not, please email
<quantlib-dev@lists.sf.net>. The license is also available online at
<http://quantlib.org/license.shtml>.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the license for more details.
*/
/*! \file coupon.hpp
\brief Coupon accruing over a fixed period
*/
#ifndef quantlib_coupon_hpp
#define quantlib_coupon_hpp
#include <ql/cashflow.hpp>
namespace QuantLib {
class DayCounter;
//! %coupon accruing over a fixed period
/*! This class implements part of the CashFlow interface but it is
still abstract and provides derived classes with methods for
accrual period calculations.
*/
class Coupon : public CashFlow {
public:
/*! \warning the coupon does not adjust the payment date which
must already be a business day.
*/
Coupon(const Date& paymentDate,
Real nominal,
const Date& accrualStartDate,
const Date& accrualEndDate,
const Date& refPeriodStart = Date(),
const Date& refPeriodEnd = Date(),
const Date& exCouponDate = Date());
//! \name Event interface
//@{
Date date() const { return paymentDate_; }
//@}
//! \name CashFlow interface
//@{
Date exCouponDate() const { return exCouponDate_; }
//@}
//! \name Inspectors
//@{
virtual Real nominal() const;
//! start of the accrual period
const Date& accrualStartDate() const;
//! end of the accrual period
const Date& accrualEndDate() const;
//! start date of the reference period
const Date& referencePeriodStart() const;
//! end date of the reference period
const Date& referencePeriodEnd() const;
//! accrual period as fraction of year
Time accrualPeriod() const;
//! accrual period in days
Date::serial_type accrualDays() const;
//! accrued rate
virtual Rate rate() const = 0;
//! day counter for accrual calculation
virtual DayCounter dayCounter() const = 0;
//! accrued period as fraction of year at the given date
Time accruedPeriod(const Date&) const;
//! accrued days at the given date
Date::serial_type accruedDays(const Date&) const;
//! accrued amount at the given date
virtual Real accruedAmount(const Date&) const = 0;
//@}
//! \name Visitability
//@{
virtual void accept(AcyclicVisitor&);
//@}
protected:
Date paymentDate_;
Real nominal_;
Date accrualStartDate_,accrualEndDate_, refPeriodStart_,refPeriodEnd_;
Date exCouponDate_;
mutable Real accrualPeriod_;
};
// inline definitions
inline Real Coupon::nominal() const {
return nominal_;
}
inline const Date& Coupon::accrualStartDate() const {
return accrualStartDate_;
}
inline const Date& Coupon::accrualEndDate() const {
return accrualEndDate_;
}
inline const Date& Coupon::referencePeriodStart() const {
return refPeriodStart_;
}
inline const Date& Coupon::referencePeriodEnd() const {
return refPeriodEnd_;
}
}
#endif
|