Serving the Quantitative Finance Community

 
User avatar
hgeorgako
Topic Author
Posts: 0
Joined: September 17th, 2005, 1:49 am

Finite Difference error

January 30th, 2008, 9:52 pm

Here's a simple American Put and Call.S=100, K=50, sigma=70%, r=5%, b=5%, T=1.81My grid is an implicit method with respect to the actual S and not log(S)Question: How far should i extend Smax and how many asset steps should i use? I seem to be pricing all other options correctly except for deep ITM ones with high vol.Any recommended setting of such parameters that work for these type of options? Obviously, the more steps i take,the better my result...but i would like to avoid that and cleverly choose the upper bound/step combo.
 
User avatar
Cuchulainn
Posts: 20252
Joined: July 16th, 2004, 7:38 am
Location: 20, 000

Finite Difference error

January 31st, 2008, 6:37 am

How does your FD scheme handle the free boundary constraints?
 
User avatar
Alan
Posts: 2958
Joined: December 19th, 2001, 4:01 am
Location: California
Contact:

Finite Difference error

January 31st, 2008, 2:55 pm

QuoteOriginally posted by: hgeorgakoHere's a simple American Put and Call.S=100, K=50, sigma=70%, r=5%, b=5%, T=1.81My grid is an implicit method with respect to the actual S and not log(S)Question: How far should i extend Smax and how many asset steps should i use? I seem to be pricing all other options correctly except for deep ITM ones with high vol.Any recommended setting of such parameters that work for these type of options? Obviously, the more steps i take,the better my result...but i would like to avoid that and cleverly choose the upper bound/step combo.My two cents:1. Don't use S, use x = log S2. Even though your method is implicit, set your grid so that an explicit method will converge: dx = sigma sqrt[dt] or somesuch3. Now you need xmax, not Smax; set xmax = x0 + N sigma sqrt[T], where N = small integer, say 3. Same idea for xmin.With 1,2,3, I predict everything will then work fine.regards,
Last edited by Alan on January 30th, 2008, 11:00 pm, edited 1 time in total.
 
User avatar
hgeorgako
Topic Author
Posts: 0
Joined: September 17th, 2005, 1:49 am

Finite Difference error

February 1st, 2008, 7:13 pm

Even for European i see a discrepancy. It doesn't have to do with the free boundary condition. I would also like to stay away from logS space since i'm dealing with discrete dividends and the transformation messes me up. So let's say i price a European way ITM call, put with high vol in S-space using an implicit scheme....anything that i can do to get better accuracy? I'm currently defining Smax as 6 sd's away from the ATMF. S does not fall on a grid point and i order to get the Option premium at underlying i use a cubic interpolation method. Grid size = 1000 x 1000Thanks in advance.H.
Last edited by hgeorgako on January 31st, 2008, 11:00 pm, edited 1 time in total.
 
User avatar
Cuchulainn
Posts: 20252
Joined: July 16th, 2004, 7:38 am
Location: 20, 000

Finite Difference error

February 1st, 2008, 7:46 pm

There was a discussion on this (see esp. Dec 10 post where there is a reference, Peter Forsyth and coll.) hereQuote ITM call, put with high vol in S-space using an implicit scheme....anything that i can do to get better accuracy?What's high vol? better accuracy compared to? Are you using Crank Nicolson? Quotei'm dealing with discrete dividends How do you (plan to) model these? Grid size = 1000 x 1000 sounds like a lot. Why will 200X200 not work?Question: if you take NO dividends, does your FDM scheme work OK?
Last edited by Cuchulainn on January 31st, 2008, 11:00 pm, edited 1 time in total.
 
User avatar
hgeorgako
Topic Author
Posts: 0
Joined: September 17th, 2005, 1:49 am

Finite Difference error

February 1st, 2008, 9:43 pm

No dividends. American case. Dirichlet boundary conditions at S = 0 and Smax = ATMF * exp(sigma^2/2 * T + 6*sigma*sqrt(T)) ; ATMF = So*e^(r-q)T - FV of DivsExtreme case of 1000 * 1000 grid ( Call = 61.30295, Put = 7.17124) Actual values should be closer to 61.09639 and 6.94701 (computed using another finite difference off-the shelf algorithm that i believe to be reliable)S = 100, K = 50, vol = 70%, r = 5%, q = 0, T= 1.81I'm not doing any grid refinement in the S direction. It's a constant grid in S..not LogS. Since the strike is far removed from the underlying...i might be experiencing problems with the local refinement of the points at the important regions (K and S) (K for maturity and S for time = 0)Again, the problem occurs for deep ITM and OTM options. regards.H.
 
User avatar
Cuchulainn
Posts: 20252
Joined: July 16th, 2004, 7:38 am
Location: 20, 000

Finite Difference error

February 2nd, 2008, 11:37 am

Extreme case of 1000 * 1000 grid ( Call = 61.30295, Put = 7.17124) Actual values should be closer to 61.09639 and 6.94701 (computed using another finite difference off-the shelf algorithm that i believe to be reliable)S = 100, K = 50, vol = 70%, r = 5%, q = 0, T= 1.81I priced a Put (call is easy) using exponential fitting, 1/2-implicit penalty method with eps = 0.001 and CN time averaging using:NS = 500, NT >= 2.5 * 1000 at S = 100Then P = 6.948225with a variety of Smax (6*K, 10*K, 20*K). Agrees with your 'reliable' FDM. BTW, is it a commercial package or your own FDM? So, problems even with no dividend. Since you have not said which scheme you use exactly, I can only guess why your price is wrong. Normally, small vol is a problem but not large vol (BTW fitting works with any vol!). A wild guess is your centred differencing starts hicking for large vol??Maybe try a vol = .2 and see what answer you get. //The greeks for above are del = -0.1009, gamma = 0.001958, theta = -3.8355I also check ITM prices for S20==> 30.6498530, 24.0903540, 19.38250, 15.8698370, 11.0754980, 9.40189190, 8.051373 Quote S does not fall on a grid point and i order to get the Option premium at underlying i use a cubic interpolation methodPut it on a grid point and see what happens
Last edited by Cuchulainn on February 1st, 2008, 11:00 pm, edited 1 time in total.
 
User avatar
Cuchulainn
Posts: 20252
Joined: July 16th, 2004, 7:38 am
Location: 20, 000

Finite Difference error

February 3rd, 2008, 10:26 am

QuoteOriginally posted by: outrunQuotePut it on a grid point and see what happens Yes, you can keep S0 and K both in the middle of the grid by adding a timedrift to the grid.You mean, a transformation like S -> S/(S + K) or something?
 
User avatar
bambi
Posts: 0
Joined: December 19th, 2005, 11:57 am

Finite Difference error

February 5th, 2008, 1:38 pm

"Dirichlet condition at Smin and Smax" : how do you exactlly write the scheme on the boundary lines of your grid : v(i,j+1)(v(i,j),Smin,r,q,dt) and v(i,j+1)(v(i,j),Smax,r,q,dt)Cheers
 
User avatar
hgeorgako
Topic Author
Posts: 0
Joined: September 17th, 2005, 1:49 am

Finite Difference error

February 5th, 2008, 2:27 pm

For Calls: V[0] = 0V[Smax] = Smax * exp(b-r)*(T-t) - K*exp(-r * (T-t))For Puts:V[0] = K * exp(-r * (T-t))V[Smax] = 0------------------------------Can you folks comment on the type of grid refinement that should be employed if the Spot price is far removed from the strike price.A simple log transformation places many points near S=0 (where they're not needed) and a constant S grid place more points at the Smax region (where they're also not needed). Cuchulainn, does your exponential fitting alleviate any of these concerns? Also, my goal is to use a minimal number of grid points. I can get more accurate numbers with a smaller spot/time refinement but i want to avoid this if possible. regards.h.
Last edited by hgeorgako on February 4th, 2008, 11:00 pm, edited 1 time in total.
 
User avatar
Cuchulainn
Posts: 20252
Joined: July 16th, 2004, 7:38 am
Location: 20, 000

Finite Difference error

February 5th, 2008, 2:44 pm

QuoteCan you folks comment on the type of grid refinement that should be employed if the Spot price is far removed from the strike price.A simple log transformation places many points near S=0 (where they're not needed) and a constant S grid place more points at the Smax region (where they're also not needed). Cuchulainn, does your exponential fitting alleviate any of these concerns? Also, my goal is to use a minimal number of grid points. I can get more accurate numbers with a smaller spot/time refinement but i want to avoid this if possible. In my previous post I tested my scheme with your data and it was accurate. What is the concern? Performance? I'm confused.Grid refinements solve problems in one sense and cause more problems in another sense. No free lunch with FDM.
 
User avatar
Cuchulainn
Posts: 20252
Joined: July 16th, 2004, 7:38 am
Location: 20, 000

Finite Difference error

February 5th, 2008, 2:46 pm

QuoteOriginally posted by: outrunh, the online calculator is European, so that makes sense (the call being ok, the put being off)regarding the node placement, I would make the middle node drift from S0 to the strike K & see what happens. The nice thing about that is that you will have far less noise in your solution (if you vary S0) due to nodes moving across the strike.But Hgeorg's is American, more complicated now? What happens to the PDE itself?