1 /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 
3 /*
4  Copyright (C) 2004 Neil Firth
5  Copyright (C) 2007 StatPro Italia srl
6 
7  This file is part of QuantLib, a free-software/open-source library
8  for financial quantitative analysts and developers - http://quantlib.org/
9 
10  QuantLib is free software: you can redistribute it and/or modify it
11  under the terms of the QuantLib license.  You should have received a
12  copy of the license along with this program; if not, please email
13  <quantlib-dev@lists.sf.net>. The license is also available online at
14  <http://quantlib.org/license.shtml>.
15 
16  This program is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
18  FOR A PARTICULAR PURPOSE.  See the license for more details.
19 */
20 
21 /*! \file stulzengine.hpp
22     \brief 2D European Basket formulae, due to Stulz (1982)
23 */
24 
25 #ifndef quantlib_stulz_engine_hpp
26 #define quantlib_stulz_engine_hpp
27 
28 #include <ql/instruments/basketoption.hpp>
29 #include <ql/processes/blackscholesprocess.hpp>
30 
31 namespace QuantLib {
32 
33     //! Pricing engine for 2D European Baskets
34     /*! This class implements formulae from
35         "Options on the Minimum or the Maximum of Two Risky Assets",
36             Rene Stulz,
37             Journal of Financial Ecomomics (1982) 10, 161-185.
38 
39         \ingroup basketengines
40 
41         \test the correctness of the returned value is tested by
42               reproducing results available in literature.
43     */
44     class StulzEngine : public BasketOption::engine {
45       public:
46         StulzEngine(
47             const ext::shared_ptr<GeneralizedBlackScholesProcess>& process1,
48             const ext::shared_ptr<GeneralizedBlackScholesProcess>& process2,
49             Real correlation);
50         void calculate() const;
51       private:
52         ext::shared_ptr<GeneralizedBlackScholesProcess> process1_;
53         ext::shared_ptr<GeneralizedBlackScholesProcess> process2_;
54         Real rho_;
55     };
56 
57 }
58 
59 
60 #endif
61