QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
fdklugeextouspreadengine.hpp
Go to the documentation of this file.
1/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3/*
4 Copyright (C) 2011 Klaus Spanderen
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 fdklugeextouspreadengine.hpp
21 \brief FD Kluge/extended Ornstein-Uhlenbeck engine
22 for a simple power-gas spread option
23*/
24
25#ifndef quantlib_fd_kluge_extou_spread_engine_hpp
26#define quantlib_fd_kluge_extou_spread_engine_hpp
27
28#include <ql/pricingengine.hpp>
34
35namespace QuantLib {
36
37 class YieldTermStructure;
38 class ExtOUWithJumpsProcess;
39 class ExtendedOrnsteinUhlenbeckProcess;
40
42 : public GenericEngine<VanillaOption::arguments,
43 VanillaOption::results> {
44 public:
47
49 ext::shared_ptr<KlugeExtOUProcess> klugeOUProcess,
50 ext::shared_ptr<YieldTermStructure> rTS,
51 Size tGrid = 25,
52 Size xGrid = 50,
53 Size yGrid = 10,
54 Size uGrid = 25,
55 ext::shared_ptr<GasShape> gasShape = ext::shared_ptr<GasShape>(),
56 ext::shared_ptr<PowerShape> powerShape = ext::shared_ptr<PowerShape>(),
57 const FdmSchemeDesc& schemeDesc = FdmSchemeDesc::Hundsdorfer());
58
59 void calculate() const override;
60
61 private:
62 const ext::shared_ptr<KlugeExtOUProcess> klugeOUProcess_;
63 const ext::shared_ptr<YieldTermStructure> rTS_;
65 const ext::shared_ptr<GasShape> gasShape_;
66 const ext::shared_ptr<PowerShape> powerShape_;
68 };
69}
70
71#endif
const ext::shared_ptr< GasShape > gasShape_
const ext::shared_ptr< KlugeExtOUProcess > klugeOUProcess_
const ext::shared_ptr< PowerShape > powerShape_
const ext::shared_ptr< YieldTermStructure > rTS_
FdmExtOUJumpModelInnerValue::Shape PowerShape
FdmExtOUJumpModelInnerValue::Shape GasShape
std::vector< std::pair< Time, Real > > Shape
template base class for option pricing engines
inner value calculator for an exponential extended Ornstein Uhlenbeck grid
inner value calculator for the Ornstein Uhlenbeck plus exponential jumps model (Kluge Model)
std::size_t Size
size of a container
Definition: types.hpp:58
joint Kluge process an d Ornstein Uhlenbeck process
Definition: any.hpp:35
Base class for pricing engines.
static FdmSchemeDesc Hundsdorfer()
Vanilla option on a single asset.