24#ifndef quantlib_normal_clv_model_hpp
25#define quantlib_normal_clv_model_hpp
27#include <ql/patterns/lazyobject.hpp>
28#include <ql/math/interpolations/linearinterpolation.hpp>
29#include <ql/math/interpolations/lagrangeinterpolation.hpp>
30#include <ql/math/matrix.hpp>
31#include <ql/time/date.hpp>
32#include <ql/functional.hpp>
44 class GBSMRNDCalculator;
45 class OrnsteinUhlenbeckProcess;
46 class GeneralizedBlackScholesProcess;
50 NormalCLVModel(
const ext::shared_ptr<GeneralizedBlackScholesProcess>& bsProcess,
51 ext::shared_ptr<OrnsteinUhlenbeckProcess> ouProcess,
52 const std::vector<Date>& maturityDates,
85 const ext::shared_ptr<OrnsteinUhlenbeckProcess>
ouProcess_;
98 const std::vector<Time>
t_;
102 const ext::shared_ptr<InterpolationData>
data_;
108 const ext::shared_ptr<GeneralizedBlackScholesProcess>
bsProcess_;
1-D array used in linear algebra.
Framework for calculation on demand and result caching.
Matrix used in linear algebra.
const ext::shared_ptr< InterpolationData > data_
Real operator()(Time t, Real x) const
const ext::shared_ptr< OrnsteinUhlenbeckProcess > ouProcess_
const std::vector< Date > maturityDates_
void performCalculations() const override
std::vector< Time > maturityTimes_
const ext::shared_ptr< GeneralizedBlackScholesProcess > bsProcess_
Real invCDF(const Date &d, Real q) const
Real cdf(const Date &d, Real x) const
ext::function< Real(Time, Real)> g_
const ext::shared_ptr< OrnsteinUhlenbeckProcess > ouProcess_
const ext::shared_ptr< GBSMRNDCalculator > rndCalculator_
Array collocationPointsX(const Date &d) const
Array collocationPointsY(const Date &d) const
ext::function< Real(Time, Real)> g() const
template class providing a null value for a given type.
Real Time
continuous quantity with 1-year units
Real Volatility
volatility
std::size_t Size
size of a container
std::vector< LinearInterpolation > interpl_
const LagrangeInterpolation lagrangeInterpl_
InterpolationData(const NormalCLVModel &model)
const std::vector< Time > t_