American-transaction costs 1.0.0.0
American option pricer under proportional transaction costs
|
00001 /* 00002 American option pricer under proportional transaction costs 00003 Copyright (C) 2011 Alet Roux alet.roux@york.ac.uk 00004 00005 This program is free software: you can redistribute it and/or modify 00006 it under the terms of the GNU General Public License as published by 00007 the Free Software Foundation, either version 3 of the License, or 00008 (at your option) any later version. 00009 00010 This program is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 GNU General Public License for more details. 00014 00015 You should have received a copy of the GNU General Public License 00016 along with this program. If not, see <http://www.gnu.org/licenses/>. 00017 00018 */ 00019 00020 #ifndef PAYOFFBUTTERFLY_H 00021 #define PAYOFFBUTTERFLY_H 00022 00023 //#include "payoff.h" 00024 00026 00030 class PayoffButterfly : public Payoff 00031 { 00032 public: 00033 PayoffButterfly (const coefficient K, const coefficient d) 00034 : _K (K), _d (d) 00035 {} 00036 00037 Portfolio operator() (const Spot& spot) const 00038 { 00039 if (greaterthan (spot.underlying(),_K+_d) || lessthan (spot.underlying(),_K-_d)) 00040 return Portfolio (0,0); 00041 00042 if (greaterthan (_K, spot.underlying())) 00043 return Portfolio (0, spot.underlying() - _K + _d); 00044 00045 return Portfolio (0, _K + _d - spot.underlying()); 00046 } 00047 00048 PayoffButterfly* clone() const 00049 { 00050 return new PayoffButterfly (*this); 00051 } 00052 00053 private: 00054 coefficient _K, _d; 00055 }; 00056 00057 #endif // PAYOFFBUTTERFLY_H