/usr/include/ql/experimental/credit/riskyassetswap.hpp is in libquantlib0-dev 1.7.1-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 123 124 125 126 127 128 129 130 131 | /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
Copyright (C) 2008, 2009 Roland Lichters
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 riskyassetswap.hpp
\brief Risky asset-swap instrument
*/
#ifndef quantlib_risky_asset_swap_hpp
#define quantlib_risky_asset_swap_hpp
#include <ql/instrument.hpp>
#include <ql/termstructures/defaulttermstructure.hpp>
#include <ql/termstructures/yieldtermstructure.hpp>
#include <ql/termstructures/credit/defaultprobabilityhelpers.hpp>
#include <ql/time/schedule.hpp>
namespace QuantLib {
//! Risky asset-swap instrument
class RiskyAssetSwap : public Instrument {
public:
RiskyAssetSwap(bool fixedPayer,
Real nominal,
const Schedule& fixedSchedule,
const Schedule& floatSchedule,
const DayCounter& fixedDayCounter,
const DayCounter& floatDayCounter,
Rate spread,
Rate recoveryRate_,
const Handle<YieldTermStructure>& yieldTS,
const Handle<DefaultProbabilityTermStructure>& defaultTS,
Rate coupon = Null<Rate>());
Real fairSpread ();
Real floatAnnuity() const;
Real nominal() { return nominal_; }
Rate spread() { return spread_; }
bool fixedPayer() { return fixedPayer_; }
private:
void setupExpired() const;
bool isExpired() const;
void performCalculations() const;
Real fixedAnnuity() const;
Real parCoupon() const;
Real recoveryValue() const;
Real riskyBondPrice() const;
// calculated values
mutable Real fixedAnnuity_;
mutable Real floatAnnuity_;
mutable Real parCoupon_;
mutable Real recoveryValue_;
mutable Real riskyBondPrice_;
// input
bool fixedPayer_;
Real nominal_;
Schedule fixedSchedule_, floatSchedule_;
DayCounter fixedDayCounter_, floatDayCounter_;
Rate spread_;
Rate recoveryRate_;
Handle<YieldTermStructure> yieldTS_;
Handle<DefaultProbabilityTermStructure> defaultTS_;
mutable Real coupon_;
};
// risky-asset-swap helper for probability-curve bootstrap
class AssetSwapHelper : public DefaultProbabilityHelper {
public:
AssetSwapHelper(const Handle<Quote>& spread,
const Period& tenor,
Natural settlementDays,
const Calendar& calendar,
const Period& fixedPeriod,
BusinessDayConvention fixedConvention,
const DayCounter& fixedDayCount,
const Period& floatPeriod,
BusinessDayConvention floatConvention,
const DayCounter& floatDayCount,
Real recoveryRate,
const RelinkableHandle<YieldTermStructure>& yieldTS,
const Period& integrationStepSize = Period());
Real impliedQuote() const;
void setTermStructure(DefaultProbabilityTermStructure*);
private:
void update();
void initializeDates();
Period tenor_;
Natural settlementDays_;
Calendar calendar_;
BusinessDayConvention fixedConvention_;
Period fixedPeriod_;
DayCounter fixedDayCount_;
BusinessDayConvention floatConvention_;
Period floatPeriod_;
DayCounter floatDayCount_;
Real recoveryRate_;
RelinkableHandle<YieldTermStructure> yieldTS_;
Period integrationStepSize_;
Date evaluationDate_;
boost::shared_ptr<RiskyAssetSwap> asw_;
RelinkableHandle<DefaultProbabilityTermStructure> probability_;
};
}
#endif
|