Welcome to THETAWIKI. If you like to create or edit a page please make sure to login or register an account. All registered users please make sure to provide a valid email address.

Bender

From ThetaWiki
Revision as of 17:57, 19 December 2011 by WikiSysop (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

PRMIA talk: State-of-the-art option pricing by simulation

Option pricing with Monte Carlo methods is often required for estimation of precise market-risk. However, until recently pricing securities with early exercise or issuer’s call features remained practically infeasible in simulation settings. The main challenges for practical usage of an option valuation by simulation is the avoidance of nested simulation and the estimation of confidence bounds of the price. Using practical examples, this talk will outline the recent developments satisfying these requirements.

The presentation slides for Christian Bender’s talk: State-of-the-art option pricing by simulation, held on 02.06.2008, 18:00h at the PRMIA chapter meeting.

Upper bounds for early exercisable option

A detailed description of the algorithm can be found in the paper: Iterating cancellable snowballs and related exotics

Bender's Algorithm can be represented in ThetaScript:

%% The model American computes an approximation 
%% of the price "P" of a continuously exercisable put 
%% option based on 50 exercise dates.  
model American
    import K	"Strike"
    import T	"Maturity time"
    export P_LS	"Option Value (Least-Squares)"
    export V_max
    export M_pi "Martingale"
    export U
    export ret
 
    % Return option price approximations
    P_LS = E(V!)
    P_Bender = E(V_max!)
 
    % Initialize process parameters
    n = 50;        % number of time-steps
    S = 100;       % Asset price 	
    sigma = 0.4;   % Volatility   
    r = 0.05;      % Interest-rate
    EUR = 1;       % Disount factor
    W = 0          % Wiener process
    fork
        loop inf
            Theta @dt
            dW = sqrt(@dt) * randn()
            W = W + dW
            S = S * exp( (r-0.5*sigma^2)*@dt + sigma*dW)                        
            EUR = EUR * exp(-r *@dt)
        end		
    end
    % End of stochastic process
 
    % Begin Least-Squares Monte-Carlo
    fork
        loop n				          	
            Theta T/n				  
            if E(V!) < (K-S)*EUR
                V = (K-S)*EUR
            end                             		                
        end
        V = max(K-S,0)*EUR
    end
    % End of Least-Squares Monte-Carlo
 
    % Begin Bender's upper bound
    M_pi = 0
    V_max = V_max!
    fork
        loop n
            U = E(ret!)                
            ret = (W! - W)/(T/n) * V!               
            M_pi = M_pi + U * (W! - W)*EUR 	            
            Theta T/n                
            V_max = max(V_max!, max(K-S,0)*EUR - M_pi)              
        end
        V_max = V - M_pi
    end
    % End of Bender's upper bound
end