QuantLib: a free/open-source library for quantitative finance
Fully annotated sources - version 1.32
Loading...
Searching...
No Matches
hestonexpansionengine.hpp
1/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3/*
4 Copyright (C) 2014 Fabien Le Floc'h
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
24#ifndef quantlib_heston_expansion_engine_hpp
25#define quantlib_heston_expansion_engine_hpp
26
27#include <ql/pricingengines/genericmodelengine.hpp>
28#include <ql/models/equity/hestonmodel.hpp>
29#include <ql/instruments/vanillaoption.hpp>
30
31namespace QuantLib {
32
34
47 : public GenericModelEngine<HestonModel,
48 VanillaOption::arguments,
49 VanillaOption::results> {
50 public:
52
53 HestonExpansionEngine(const ext::shared_ptr<HestonModel>& model,
55
56 void calculate() const override;
57
58 private:
60 };
61
69 public:
70 virtual ~HestonExpansion() = default;
71 virtual Real impliedVolatility(Real strike, Real forward) const = 0;
72 };
73
81 public:
82 LPP2HestonExpansion(Real kappa, Real theta, Real sigma, Real v0, Real rho, Real term);
83 Real impliedVolatility(Real strike, Real forward) const override;
84
85 private:
88 Real z0(Real t, Real kappa, Real theta,
89 Real delta, Real y, Real rho) const;
90 Real z1(Real t, Real kappa, Real theta,
91 Real delta, Real y, Real rho) const;
92 Real z2(Real t, Real kappa, Real theta,
93 Real delta, Real y, Real rho) const;
94 };
95
103 public:
104 LPP3HestonExpansion(Real kappa, Real theta, Real sigma, Real v0, Real rho, Real term);
105 Real impliedVolatility(Real strike, Real forward) const override;
106
107 private:
110 Real z0(Real t, Real kappa, Real theta,
111 Real delta, Real y, Real rho) const;
112 Real z1(Real t, Real kappa, Real theta,
113 Real delta, Real y, Real rho) const;
114 Real z2(Real t, Real kappa, Real theta,
115 Real delta, Real y, Real rho) const;
116 Real z3(Real t, Real kappa, Real theta,
117 Real delta, Real y, Real rho) const;
118 };
119
126 public:
127 FordeHestonExpansion(Real kappa, Real theta, Real sigma, Real v0, Real rho, Real term);
128 Real impliedVolatility(Real strike, Real forward) const override;
129
130 private:
132 };
133
134}
135
136
137#endif
Real impliedVolatility(Real strike, Real forward) const override
Base class for some pricing engine on a particular model.
Heston-model engine for European options based on analytic expansions.
const HestonExpansionFormula formula_
virtual Real impliedVolatility(Real strike, Real forward) const =0
virtual ~HestonExpansion()=default
Real z0(Real t, Real kappa, Real theta, Real delta, Real y, Real rho) const
Real impliedVolatility(Real strike, Real forward) const override
Real z2(Real t, Real kappa, Real theta, Real delta, Real y, Real rho) const
Real z1(Real t, Real kappa, Real theta, Real delta, Real y, Real rho) const
Real z3(Real t, Real kappa, Real theta, Real delta, Real y, Real rho) const
Real z0(Real t, Real kappa, Real theta, Real delta, Real y, Real rho) const
Real impliedVolatility(Real strike, Real forward) const override
Real z2(Real t, Real kappa, Real theta, Real delta, Real y, Real rho) const
Real z1(Real t, Real kappa, Real theta, Real delta, Real y, Real rho) const
QL_REAL Real
real number
Definition: types.hpp:50
Definition: any.hpp:35