American-transaction costs 1.0.0.0 American option pricer under proportional transaction costs

- Main Page
- Namespaces
- Classes
- Files
- Directories

- File List
- File Members

americanselleroptional.h
Go to the documentation of this file.

    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 TREEPRODUCT_AMERICAN_SELLER_H
    00021 #define TREEPRODUCT_AMERICAN_SELLER_H
    00022
    00023 //#include "americanseller.h"
    00024
    00026
    00031 class TreeProductAmericanSellerOptional : public TreeProductAmericanSeller
    00032 {
    00033
    00034 public:
    00035         TreeProductAmericanSellerOptional (const coefficient expiry, const PayoffBridge& payoff) : TreeProductAmericanSeller(expiry, payoff) {};
    00036
    00037         PiecewiseLinear final_hedge (const Spot& spot) const
    00038         {
    00039           PiecewiseLinear hedge = payoff_hedge (expiry(), spot);
    00040           ensure_solvent (hedge, spot);
    00041           return hedge;
    00042         };
    00043
    00044     coefficient random_exercise (const coefficient t, const Spot& spot, const PiecewiseLinear& current_hedge, const PiecewiseLinear& future_hedge, const coefficient x, coefficient& y, coefficient& S, const Portfolio& portfolio) const
    00045     {
    00046         std::vector<PiecewiseLinear> g;
    00047         g.push_back (payoff_hedge (expiry(), spot));
    00048         if (equal (t,expiry()))
    00049         g.push_back (solvency_cone (spot));
    00050         else
    00051         {
    00052                 g.push_back (future_hedge);
    00053                 g[1].restrict_slope (-spot.ask(), -spot.bid());
    00054         }
    00055
    00056         std::vector<coefficient> p, X;
    00057
    00058         coefficient shares = portfolio.shares();
    00059         untangle_maximum (current_hedge, g, x, shares, p, X);
    00060
    00061         S = X[0];
    00062         y = X[1];
    00063
    00064         return p[0];
    00065    }
    00066
    00067 };
    00068
    00069 #endif // TREEPRODUCT_AMERICAN_SELLER_H

All Classes Namespaces Files Functions Variables Typedefs Defines