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 EUROPEAN_H 00021 #define EUROPEAN_H 00022 00023 //#include "treeproduct.h" 00024 00025 //#include "../piecewiselinear/piecewiselinear.h" 00026 //#include "../spot.h" 00027 //#include "../payoff/bridge.h" 00028 00029 #include "../config.h" 00030 00032 class TreeProductEuropean : public TreeProduct 00033 { 00034 public: 00035 TreeProductEuropean (const coefficient expiry, const PayoffBridge& payoff) : TreeProduct (expiry), _payoff (payoff) {}; 00036 00044 PiecewiseLinear interim_hedge (const coefficient t, const Spot& spot, const PiecewiseLinear& future_hedge) const 00045 { 00046 #ifdef USE_ASSERT 00047 assert (t<expiry()); 00048 #endif 00049 PiecewiseLinear current = future_hedge; 00050 current.restrict_slope (-spot.ask(), -spot.bid()); 00051 return current; 00052 }; 00053 00054 Portfolio payoff (const Spot& spot) const 00055 { 00056 return _payoff(spot); 00057 } 00058 00059 PiecewiseLinear payoff_hedge (const Spot& spot) const 00060 { 00061 return portfolios_that_can_afford (payoff(spot), spot); 00062 } 00063 00064 private: 00065 PayoffBridge _payoff; 00066 }; 00067 00068 #endif // EUROPEAN_H