SERVING THE QUANTITATIVE FINANCE COMMUNITY

 
User avatar
Cuchulainn
Posts: 63413
Joined: July 16th, 2004, 7:38 am
Location: Amsterdam
Contact:

Finite difference and control variates

June 28th, 2015, 11:18 am

QuoteOriginally posted by: outrunNice extra info Cuch!You're welcome. Actually, I tested almost all uses case and methods for the binomial method. It became so much fun that I probably spent more time than I had planned. In any case, I can use the method to test other methods against. And I did it all w/o class hierarchies, just 2 algorithms + 1 generic ADT needed. I customize them using lambda functions. The new C++11 features are cool.The Nelson Ramaswamy method looks super-elegant. I have not done the code yet but NR looks very promising. I mention again: Stefani Mueller's thesis is cool, IMO.
Last edited by Cuchulainn on June 27th, 2015, 10:00 pm, edited 1 time in total.
My C++ Boost code gives
262537412640768743.999999999999250072597198185688879353856337336990862707537410378210647910118607313

http://www.datasimfinancial.com
http://www.datasim.nl
 
User avatar
mutley
Topic Author
Posts: 745
Joined: February 9th, 2005, 3:51 pm

Finite difference and control variates

June 28th, 2015, 1:37 pm

OK using explicit Euler, i compute the price of a European and after each step back, i compare the ratio of the regressed price at each grid point with that of BlackScholes result - i then take this ratio per grid point and adapt the regressed value i get for the American (before any early exercise conditions are applied). so if the European was 99% of the BS result, i will multiply the regressed price of the American by 100%/99% to "fix" it. I also update the European grid with the BS prices (so that the adjustment ratio at each time step is small and incremental).here I price 2yr put, 100% spot strike, 15% vol and 4% rates, no divs. The numbers shown are abs(ln(price[dt] / price[inf])) where price[inf] are my "true" prices if you ran the thing for ages (these may not be reference accurate prices but it gives you the idea).DT Explicit European Explicit American Adjusted American ADE European ADE American1/5 125.02% 128.78% 8.29% 85.98% 56.41%1/10 73.09% 74.44% 5.45% 24.66% 18.55%1/20 37.79% 36.64% 1.84% 5.61% 4.62%1/30 23.98% 21.84% 0.31% 2.43% 2.08%1/50 12.88% 11.17% 0.45% 0.89% 0.77%1/100 5.66% 5.89% 1.00% 0.25% 0.20%1/250 2.12% 2.18% 0.39% 0.07% 0.02%1/500 1.04% 1.02% 0.14% 0.05% 0.00%1/1000 0.52% 0.48% 0.05% 0.04% 0.01%1/2000 0.26% 0.21% 0.00% 0.04% 0.01%Running the same for 80% spot strike:DT Explicit European Explicit American Adjusted American ADE European ADE American1/5 6.16% 5.51% 5.62% 38.80% 5.83%1/10 26.48% 22.77% 3.27% 3.42% 7.62%1/20 1.86% 0.57% 1.95% 1.36% 1.34%1/30 26.20% 23.99% 1.07% 0.89% 0.19%1/50 1.17% 2.12% 0.43% 0.39% 0.09%1/100 5.98% 5.91% 0.23% 0.10% 0.06%1/250 3.95% 3.97% 0.11% 0.01% 0.00%1/500 0.04% 0.49% 0.06% 0.01% 0.01%1/1000 0.80% 0.87% 0.02% 0.01% 0.02%1/2000 0.12% 0.01% 0.00% 0.01% 0.02%So, basically, it works in its aim of improving the numerical error observed in the explicit euler method quite considerably. It brings about a convergence quicker than ADE for the ATM strike. Although i would argue its fairly limited in scope, like all control variate schemes. The things i price at work have no similar product to use.Cuch, I know "no one uses explicit euler for PDE" - i personally use ADE everywhere i can. However, it was an idea trying out as i hadn't heard of anything analogous to control variates outside of MC.
 
User avatar
mutley
Topic Author
Posts: 745
Joined: February 9th, 2005, 3:51 pm

Finite difference and control variates

June 28th, 2015, 1:40 pm

in my poorly-formatted tables, "Adjusted American"represents the error term coming off my adjusted grid for pricing the American version of the payoff. Error term for the ADE american is likewise in the last column. DT = 1/2000 (i.e. 4000 steps for 2yr) was my "reference" price for the convergence
 
User avatar
Cuchulainn
Posts: 63413
Joined: July 16th, 2004, 7:38 am
Location: Amsterdam
Contact:

Finite difference and control variates

June 28th, 2015, 3:05 pm

Mutley,the table is?DT / Explicit European/ Explicit American/ Adjusted American/ ADE European/ ADE American1/1000 0.80% 0.87% 0.02% 0.01% 0.02% So, we can conclude that adjusted America is almost as accurate as ADE but (much?) faster?
Last edited by Cuchulainn on June 27th, 2015, 10:00 pm, edited 1 time in total.
My C++ Boost code gives
262537412640768743.999999999999250072597198185688879353856337336990862707537410378210647910118607313

http://www.datasimfinancial.com
http://www.datasim.nl
 
User avatar
mutley
Topic Author
Posts: 745
Joined: February 9th, 2005, 3:51 pm

Finite difference and control variates

June 28th, 2015, 3:13 pm

yes, that's my broad conclusion - but not to ignore the fact it is strongly typed on having a suitable proxy with a closed form - whereas ADE is pretty much bullet proof (in my opinion)
 
User avatar
Cuchulainn
Posts: 63413
Joined: July 16th, 2004, 7:38 am
Location: Amsterdam
Contact:

Finite difference and control variates

June 28th, 2015, 4:27 pm

QuoteOriginally posted by: mutleyyes, that's my broad conclusion - but not to ignore the fact it is strongly typed on having a suitable proxy with a closed form - whereas ADE is pretty much bullet proof (in my opinion)Thank you. Are you using the average of the up and down sweeps approach?I had some MSc students who applied ADE to UVM and so on.http://www.wilmott.com/messageview.cfm? ... 98422There a couple of things to do yet in ADE.
Last edited by Cuchulainn on June 27th, 2015, 10:00 pm, edited 1 time in total.
My C++ Boost code gives
262537412640768743.999999999999250072597198185688879353856337336990862707537410378210647910118607313

http://www.datasimfinancial.com
http://www.datasim.nl
 
User avatar
mutley
Topic Author
Posts: 745
Joined: February 9th, 2005, 3:51 pm

Finite difference and control variates

June 28th, 2015, 4:35 pm

I use ADE in my UVM pricers at work; i espouse its benefits vs CN to the Strats but it has fallen on deaf ears thus far. What i now need to do for another pricer is ADE across 1x diffusive (lnS) and 1x auxiliary dimension (call it X).I think what i should do is run one sweep in increasing lnS, increasing X and the other sweep in decreasing lnS, decreasing X. like a pair of rasters sweeping across a telly screen, one from top left, one from bottom rightthat sound about right to you or have i generalised ADE in 2dim wrong?
 
User avatar
Cuchulainn
Posts: 63413
Joined: July 16th, 2004, 7:38 am
Location: Amsterdam
Contact:

Finite difference and control variates

June 28th, 2015, 4:39 pm

QuoteWhat i now need to do for another pricer is ADE across 1x diffusive (lnS) and 1x auxiliary dimension (call it X).I think what i should do is run one sweep in increasing lnS, increasing X and the other sweep in decreasing lnS, decreasing X. like a pair of rasters sweeping across a telly screen, one from top left, one from bottom rightIs it like an Asian-style option?So, V_t = V_SS + V_X or a bit more sophis?Quoteone from top left, one from bottom rightyes. Or BL <-> TR is probably equivalent.
Last edited by Cuchulainn on June 27th, 2015, 10:00 pm, edited 1 time in total.
My C++ Boost code gives
262537412640768743.999999999999250072597198185688879353856337336990862707537410378210647910118607313

http://www.datasimfinancial.com
http://www.datasim.nl
 
User avatar
mutley
Topic Author
Posts: 745
Joined: February 9th, 2005, 3:51 pm

Finite difference and control variates

June 28th, 2015, 5:01 pm

bit like an asian - aux dimension represents total variance elapsed since last reset; same concepts apply though.yes dont imagine / desire to see any sensitivity to order / direction of sweeping.
 
User avatar
Cuchulainn
Posts: 63413
Joined: July 16th, 2004, 7:38 am
Location: Amsterdam
Contact:

Finite difference and control variates

June 28th, 2015, 5:42 pm

QuoteOriginally posted by: mutleybit like an asian - aux dimension represents total variance elapsed since last reset; same concepts apply though.yes dont imagine / desire to see any sensitivity to order / direction of sweeping.In the anchoring paper with Alan L. and Paul W. I applied ADE to a similar problem. In C++ and checked against Mathematica NDSOLVE. Here it is free online :)http://onlinelibrary.wiley.com/doi/10.1 ... .10366/pdf // I have sent a pm
Last edited by Cuchulainn on June 27th, 2015, 10:00 pm, edited 1 time in total.
My C++ Boost code gives
262537412640768743.999999999999250072597198185688879353856337336990862707537410378210647910118607313

http://www.datasimfinancial.com
http://www.datasim.nl
 
User avatar
mutley
Topic Author
Posts: 745
Joined: February 9th, 2005, 3:51 pm

Finite difference and control variates

June 28th, 2015, 6:00 pm

Thanks will take a look. While you're here, so to speak, have you ever used ADE with second-order in time methods like hopscotch (think this is the term?). Was thinking about using it between resets to improve the accuracy. Just wondering whether it is something you have already done
 
User avatar
Cuchulainn
Posts: 63413
Joined: July 16th, 2004, 7:38 am
Location: Amsterdam
Contact:

Finite difference and control variates

June 29th, 2015, 5:46 am

QuoteOriginally posted by: mutleyThanks will take a look. While you're here, so to speak, have you ever used ADE with second-order in time methods like hopscotch (think this is the term?). Was thinking about using it between resets to improve the accuracy. Just wondering whether it is something you have already doneJames,So you are talking about a thingy like V_tt = something in (S,A) etc. if so, then ADE is applicable. There's stuff around that ADE addresses. While ago her someone used it to model avalanches in Canada. It is also possible to reduce V_tt to a 1st order system.Is that the idea?BTW hopscotch still pertains to classic BC PDE in general but also applicable to V_tt I reckon..
My C++ Boost code gives
262537412640768743.999999999999250072597198185688879353856337336990862707537410378210647910118607313

http://www.datasimfinancial.com
http://www.datasim.nl
 
User avatar
mutley
Topic Author
Posts: 745
Joined: February 9th, 2005, 3:51 pm

Finite difference and control variates

June 29th, 2015, 5:46 am

I guess my one criticism of it is the need to produce ex-ante boundary conditions in order to begin each sweep. This is fine for simple payoffs where there is no time value at the boundaries but for more complex payoffs etc I am considering filling these using implicit (as my space steps are probably too fine for explicit to be stable). Any ideas on a better way to approach this?
 
User avatar
Cuchulainn
Posts: 63413
Joined: July 16th, 2004, 7:38 am
Location: Amsterdam
Contact:

Finite difference and control variates

June 29th, 2015, 5:50 am

QuoteOriginally posted by: mutleyI guess my one criticism of it is the need to produce ex-ante boundary conditions in order to begin each sweep. This is fine for simple payoffs where there is no time value at the boundaries but for more complex payoffs etc I am considering filling these using implicit (as my space steps are probably too fine for explicit to be stable). Any ideas on a better way to approach this?You mean far-field (infinity) boundaries? One possibility is to form a mini ADE system there to get what I called computed Dirichlet BC and then sweep in the usual way?
Last edited by Cuchulainn on June 28th, 2015, 10:00 pm, edited 1 time in total.
My C++ Boost code gives
262537412640768743.999999999999250072597198185688879353856337336990862707537410378210647910118607313

http://www.datasimfinancial.com
http://www.datasim.nl
ABOUT WILMOTT

PW by JB

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


Twitter LinkedIn Instagram

JOBS BOARD

JOBS BOARD

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


GZIP: On