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