1 /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 3 /* 4 Copyright (C) 2002, 2003 Ferdinando Ametrano 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 #include <ql/instruments/forwardvanillaoption.hpp> 22 23 namespace QuantLib { 24 ForwardVanillaOption(Real moneyness,const Date & resetDate,const ext::shared_ptr<StrikedTypePayoff> & payoff,const ext::shared_ptr<Exercise> & exercise)25 ForwardVanillaOption::ForwardVanillaOption( 26 Real moneyness, 27 const Date& resetDate, 28 const ext::shared_ptr<StrikedTypePayoff>& payoff, 29 const ext::shared_ptr<Exercise>& exercise) 30 : OneAssetOption(payoff, exercise), 31 moneyness_(moneyness), resetDate_(resetDate) {} 32 setupArguments(PricingEngine::arguments * args) const33 void ForwardVanillaOption::setupArguments( 34 PricingEngine::arguments* args) const { 35 OneAssetOption::setupArguments(args); 36 ForwardVanillaOption::arguments* arguments = 37 dynamic_cast<ForwardVanillaOption::arguments*>(args); 38 QL_REQUIRE(arguments != 0, "wrong argument type"); 39 40 arguments->moneyness = moneyness_; 41 arguments->resetDate = resetDate_; 42 43 } 44 fetchResults(const PricingEngine::results * r) const45 void ForwardVanillaOption::fetchResults( 46 const PricingEngine::results* r) const { 47 OneAssetOption::fetchResults(r); 48 const ForwardVanillaOption::results* results = 49 dynamic_cast<const ForwardVanillaOption::results*>(r); 50 QL_ENSURE(results != 0, 51 "no results returned from pricing engine"); 52 delta_ = results->delta; 53 gamma_ = results->gamma; 54 theta_ = results->theta; 55 vega_ = results->vega; 56 rho_ = results->rho; 57 dividendRho_ = results->dividendRho; 58 } 59 60 } 61 62