Coverage Report

Created: 2025-08-05 06:45

/src/quantlib/ql/experimental/variancegamma/variancegammamodel.hpp
Line
Count
Source (jump to first uncovered line)
1
/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3
/*
4
Copyright (C) 2010 Adrian O' Neill
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
20
/*! \file variancegammamodel.hpp
21
    \brief Variance Gamma model
22
*/
23
24
#ifndef quantlib_variance_gamma_model_hpp
25
#define quantlib_variance_gamma_model_hpp
26
27
#include <ql/models/model.hpp>
28
#include <ql/experimental/variancegamma/variancegammaprocess.hpp>
29
30
namespace QuantLib {
31
32
    //! Variance Gamma model
33
    /*! References:
34
35
        Dilip B. Madan, Peter Carr, Eric C. Chang (1998)
36
        "The variance gamma process and option pricing,"
37
        European Finance Review, 2, 79-105
38
39
        \warning calibration is not implemented for VG
40
    */
41
    class VarianceGammaModel : public CalibratedModel {
42
      public:
43
        explicit VarianceGammaModel(
44
                      const ext::shared_ptr<VarianceGammaProcess>& process);
45
46
        // sigma
47
0
        Real sigma() const { return arguments_[0](0.0); }
48
        // nu
49
0
        Real nu() const { return arguments_[1](0.0); }
50
        // theta
51
0
        Real theta() const { return arguments_[2](0.0); }
52
53
        // underlying process
54
0
        ext::shared_ptr<VarianceGammaProcess> process() const { return process_; }
55
56
    protected:
57
      void generateArguments() override;
58
      ext::shared_ptr<VarianceGammaProcess> process_;
59
    };
60
61
}
62
63
#endif
64