SERVING THE QUANTITATIVE FINANCE COMMUNITY

• 1
• 2

rajnikant
Topic Author
Posts: 10
Joined: September 12th, 2003, 11:09 am

### Monte Carlo for American Options

Has anybody tried that. Hull's book says it is difficult to implement Monte Carlo for American Options. My problem is that my Exotic is an intensely path dependent American Option. To start with I was trying to price an American Option but no luck. Here is my code..see if you something very silly. My values are converging for a price almost double Europen Option. Shouldn't they be converging to the same value. (p.s.: Don't tell me the random number generator!}Enclosed:Monte Carlo for Simple American OptionSub SimpleAmericanOption()' Simple American Call OptionDim InitialPrice, StrikePrice, Barrier, Count As IntegerDim StockReturn, Volatility, Dividend, Shock, Maturity, Iterations As DoubleDim Counter, Rowname As IntegerDim Stocktree1(), Stocktree2() As DoubleDim Optiontree1(), Optiontree2() As DoubleDim intI, Stockcolumn, Optioncolumn As IntegerDim dt, dz As Double' Specifies model initial values and parameters'Specifies Random number seedSeed = 2000'Specifies number of iterationsIterations = 500Volatility = 0.25InitialPrice = 217StockReturn = 0.052Shock = 1 / 365StrikePrice = 250Rowname = 1Stockcolumn = 2Optioncolumn = 3Maturity = 3 / Shock'Sizes Array length based on desired maturity of the optionReDim Stocktree1(Maturity)ReDim Stocktree2(Maturity)ReDim Optiontree1(Maturity)ReDim Optiontree2(Maturity)Workbooks.Item(1).ActivateFor i = 1 To Iterations'Fills the stockprice tree Stocktree1(0) = InitialPrice Stocktree2(0) = InitialPrice intI = 1 While intI < Maturity dt = (StockReturn - (0.5 * (Volatility ^ 2))) * Shock dz = ((Shock) ^ 0.5) * Volatility * WorksheetFunction.NormSInv(Ran()) On Error GoTo Line2:' dz and -dz for antithetic adjustment Stocktree1(intI) = Stocktree1(intI - 1) * Exp(dt + dz) Stocktree2(intI) = Stocktree2(intI - 1) * Exp(dt - dz) intI = intI + 1Line2: Wend 'Fills in the loop control variables Count = 0 'Traces stock tree for 30 consecutive days of barrier 'Need to go upto 1259 - 30 days only intI = Maturity - 2 'Calculates the optiontree Optiontree1(Maturity - 1) = Application.Max(Stocktree1(Maturity - 1) - StrikePrice, 0) Optiontree2(Maturity - 1) = Application.Max(Stocktree2(Maturity - 1) - StrikePrice, 0) While intI > 0 Optiontree1(intI) = Application.Max(Optiontree1(intI + 1) * Exp(-StockReturn * Shock), Stocktree1(intI) - StrikePrice) Optiontree2(intI) = Application.Max(Optiontree2(intI + 1) * Exp(-StockReturn * Shock), Stocktree2(intI) - StrikePrice) intI = intI - 1 Wend 'No option to call on day 0, hence simple discount Optiontree1(0) = Optiontree1(1) * Exp(-StockReturn * Shock) Optiontree2(0) = Optiontree2(1) * Exp(-StockReturn * Shock) 'Changes the column in which the result is to be printed after every 60000 iterations 'Resets rowname to 1 after 30000 runs If i Mod 30001 = 0 Then Stockcolumn = Stockcolumn + 2 If i Mod 30001 = 0 Then Optioncolumn = Optioncolumn + 2 If i Mod 30001 = 0 Then Rowname = 1 'Prints the stockvalue after 1260 days and resulting option price Sheets(2).Cells(Rowname, Stockcolumn).Value = 0.5 * (Stocktree1(Maturity - 1) + Stocktree2(Maturity - 1)) Sheets(2).Cells(Rowname, Optioncolumn).Value = 0.5 * (Optiontree1(0) + Optiontree2(0)) Rowname = Rowname + 1 'Saves after every 500 iterations, remember doing CTRL + S all the time If i Mod 500 = 0 Then ActiveWorkbook.SaveNext iEnd Sub

Aaron
Posts: 6433
Joined: July 23rd, 2001, 3:46 pm

### Monte Carlo for American Options

Last edited by Aaron on September 11th, 2003, 10:00 pm, edited 1 time in total.

ppauper
Posts: 70239
Joined: November 15th, 2001, 1:29 pm

### Monte Carlo for American Options

Last edited by ppauper on November 15th, 2004, 11:00 pm, edited 1 time in total.

yinya
Posts: 10
Joined: May 9th, 2003, 2:52 pm

### Monte Carlo for American Options

longstaff & schwarz have the following very good article: Longstaff, F. A. & Schwartz, E. S. (2001), “Valuing american options by simulation: A simple least squares approach”, Review of Financial Studies Vol.14, No. 1 (Spring 2001), 113-147done some (school)work on it, and at least at first sight their method works very well, though as usual with MC it can be fairly intensive on computational power, depending on the preciseness you require, and, naturally, your random number generator makes a significant difference...

rajnikant
Topic Author
Posts: 10
Joined: September 12th, 2003, 11:09 am

### Monte Carlo for American Options

Quote'Calculates the optiontreeOptiontree1(Maturity - 1) = Application.Max(Stocktree1(Maturity - 1) - StrikePrice, 0)Optiontree2(Maturity - 1) = Application.Max(Stocktree2(Maturity - 1) - StrikePrice, 0)While intI > 0Optiontree1(intI) = Application.Max(Optiontree1(intI + 1) * Exp(-StockReturn * Shock), Stocktree1(intI) - StrikePrice)Optiontree2(intI) = Application.Max(Optiontree2(intI + 1) * Exp(-StockReturn * Shock), Stocktree2(intI) - StrikePrice)intI = intI - 1Wend'No option to call on day 0, hence simple discountOptiontree1(0) = Optiontree1(1) * Exp(-StockReturn * Shock)Optiontree2(0) = Optiontree2(1) * Exp(-StockReturn * Shock)Hi All, Aaron, I am really sorry about ran(). Actually I wrote a random number generator of my own, which is what this program was calling and hence the error. Can't trust VB random number generator, it is periodic..add to that the imperfections with Normsinv(); no better way to ask for trouble. Don't get the other objection though. I am trying to simulate in the risk neutral world. The logic beings(t+1) = s(t)*exp(r-vol^2*0.5*dt)*exp(vol^dz). So ending up with high prices doesn't make that much sense. In fact I am getting "good" convergence with European Call Option. My worry is that my high call values can be partly attributed to almost always early exercise of Amercian Option. (pst..My boss will fire me if I say it very often ).As far as the problem of figuring out exercise boundary is concerned, I thought the quoted code does precisely that. I have been thru Longstaff's paper. Will implement it once I get past the simple American Option! BTW, I came across Paul's paper on Early Exercise of American Option. Have yet to read it properly to see if I share the same fate as his paper.Ppauper thanks for the reference to http://www.mcqmc.org/ RegardsR

ppauper
Posts: 70239
Joined: November 15th, 2001, 1:29 pm

### Monte Carlo for American Options

Last edited by ppauper on November 15th, 2004, 11:00 pm, edited 1 time in total.

trc
Posts: 95
Joined: April 4th, 2002, 2:28 pm

### Monte Carlo for American Options

The basic premise of this paper is that the exercise boundary has the form S=F(B), where S is one of the state variables and B the remainingstate variables.Even if the exercise bounday has this form the choice of S is usually not abritray and how does one know which S to chose.In the main example (call on the maximum of two assets) the exercise boundary does not have this form instead it consists of two such curves:S_1=F(S_1) and S_2=G(S_1).For a general exotic nothing is known about the exercise boundary.I wonder how the S=F(B) model fits this case.

Collector
Posts: 4733
Joined: August 21st, 2001, 12:37 pm

### Monte Carlo for American Options

You can also play arround with American MC

ppauper
Posts: 70239
Joined: November 15th, 2001, 1:29 pm

### Monte Carlo for American Options

Last edited by ppauper on November 15th, 2004, 11:00 pm, edited 1 time in total.

rajnikant
Topic Author
Posts: 10
Joined: September 12th, 2003, 11:09 am

### Monte Carlo for American Options

Hi,I have used Longstaff algorithm to price American Puts and the results are converging fine (and quick). But I am not getting similar results with Amercican Calls (I mean the algorithm should throw same price as European Call but it is not). An idea what could be the reason?Regardsrajni

spursfan
Posts: 893
Joined: October 7th, 2001, 3:43 pm

### Monte Carlo for American Options

why bother - use the put-call symmetry instead (swap share price with strike price and risk-free rate with div yield)mike

mj
Posts: 3449
Joined: December 20th, 2001, 12:32 pm

### Monte Carlo for American Options

re american calls -- its a very degenerate case in that you have to develop the exercise strategy of do not early exercise. It doesn't surprise me that Longstaff-Schwartz doesn't find this. MJ

nitishranjan
Posts: 10
Joined: June 11th, 2003, 5:21 am

### Monte Carlo for American Options

doesn't that make Longstaff algo incomplete? BTW does all single stock American Call Options (including path dependent ones) are the same as European Call Options. Most of the lit being discussed here is on American Put Options, does anybody know of Call Option treatments. Any reference will be a great help.-- "It's at times like this, when I'm trapped in a Vogon airlock with a manfrom Betelgeuse, and about to die of asphyxiation in deep space, that Ireally wish I'd listened to what my mother told me when I was young."- Arthur Dent in Douglas Adams' The Hitchhiker's Guide to Galaxy
Last edited by nitishranjan on October 6th, 2003, 10:00 pm, edited 1 time in total.

ppauper
Posts: 70239
Joined: November 15th, 2001, 1:29 pm

### Monte Carlo for American Options

Last edited by ppauper on November 15th, 2004, 11:00 pm, edited 1 time in total.

vietdung
Posts: 30
Joined: February 12th, 2007, 2:40 pm

### Monte Carlo for American Options

The Call payoff is (S-K)+ while the Put payoff is (K-S)+ (a bounded meter) so that why a Put converge better than a Call.About the exercised frontier of American I have a question that can we know the form of the frontier's courbe before we calculate the frontier's points (The method here is of Ibanez and Zapatero) ?That means with only the strike and spot price can we imagine how is the form of the frontier's courbe ( a quadratic , a cubic or a linear ) ?Thanks alots

Wilmott.com has been "Serving the Quantitative Finance Community" since 2001. Continued...

 JOBS BOARD

Looking for a quant job, risk, algo trading,...? Browse jobs here...

GZIP: On