/usr/include/ql/experimental/barrieroption/discretizeddoublebarrieroption.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 | /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
Copyright (C) 2015 Thema Consulting SA
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 discretizedbarrieroption.hpp
\brief discretized barrier option
*/
#ifndef quantlib_discretized_double_barrier_option_h
#define quantlib_discretized_double_barrier_option_h
#include <ql/discretizedasset.hpp>
#include <ql/methods/lattices/bsmlattice.hpp>
#include <ql/experimental/barrieroption/doublebarrieroption.hpp>
#include <ql/pricingengines/vanilla/discretizedvanillaoption.hpp>
namespace QuantLib {
//! Standard discretized option helper class
/*! This class is used with the BinomialDoubleBarrierEngine to
implement a standard binomial algorithm for double barrier
options
*/
class DiscretizedDoubleBarrierOption : public DiscretizedAsset {
public:
DiscretizedDoubleBarrierOption(const DoubleBarrierOption::arguments&,
const StochasticProcess& process,
const TimeGrid& grid = TimeGrid());
void reset(Size size);
const Array& vanilla() const {
return vanilla_.values();
}
const DoubleBarrierOption::arguments& arguments() const {
return arguments_;
}
virtual std::vector<Time> mandatoryTimes() const {
return stoppingTimes_;
}
void checkBarrier(Array &optvalues, const Array &grid) const;
protected:
void postAdjustValuesImpl();
private:
DoubleBarrierOption::arguments arguments_;
std::vector<Time> stoppingTimes_;
DiscretizedVanillaOption vanilla_;
};
//! Derman-Kani-Ergener-Bardhan discretized option helper class
/*! This class is used with the BinomialDoubleBarrierEngine to
implement the enhanced binomial algorithm of E.Derman, I.Kani,
D.Ergener, I.Bardhan ("Enhanced Numerical Methods for Options with
Barriers", 1995)
\note This algorithm is only suitable if the payoff can be approximated
linearly, e.g. is not usable for cash-or-nothing payoffs.
*/
class DiscretizedDermanKaniDoubleBarrierOption : public DiscretizedAsset {
public:
DiscretizedDermanKaniDoubleBarrierOption(const DoubleBarrierOption::arguments&,
const StochasticProcess& process,
const TimeGrid& grid = TimeGrid());
void reset(Size size);
std::vector<Time> mandatoryTimes() const {
return unenhanced_.mandatoryTimes();
}
protected:
void postAdjustValuesImpl();
private:
void adjustBarrier(Array &optvalues, const Array &grid);
DiscretizedDoubleBarrierOption unenhanced_;
};
}
#endif
|