Monte-Carlo Pricing under a Hybrid Local Volatility...
Transcript of Monte-Carlo Pricing under a Hybrid Local Volatility...
Monte-Carlo Pricing under a Hybrid Local
Volatility model
Sebastien Gurrieri
Mizuho International plc
GPU Technology ConferenceSan Jose, 14-17 May 2012
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Introduction
Key Interests in Finance
Pricing of exotic derivatives
Monte-Carlo simulations
Local Volatility model for Foreign Exchange Rates (FX)
Hybrid with Interest Rate models (IR)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Introduction
Key Interests in Finance
Pricing of exotic derivatives
Monte-Carlo simulations
Local Volatility model for Foreign Exchange Rates (FX)
Hybrid with Interest Rate models (IR)
Key Interests in CUDA
High-dimensional Monte-Carlo simulations
Texture memory (layered)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Introduction
Plan of the talk
Description of the problem and motivation for parallelprogramming and textures
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Introduction
Plan of the talk
Description of the problem and motivation for parallelprogramming and textures
Outline of implementation in CUDA
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Introduction
Plan of the talk
Description of the problem and motivation for parallelprogramming and textures
Outline of implementation in CUDA
Numerical tests
Call/Put options in Local Volatility (LV) modelExotic swaps in LV modelExotic swaps in Hybrid LV model
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Introduction
Plan of the talk
Description of the problem and motivation for parallelprogramming and textures
Outline of implementation in CUDA
Numerical tests
Call/Put options in Local Volatility (LV) modelExotic swaps in LV modelExotic swaps in Hybrid LV model
Conclusion on performance and use in industry
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The product: Power-Reverse Dual Coupon Swap (PRDC)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The product: Power-Reverse Dual Coupon Swap (PRDC)
Underlying swap: for a series of dates 0 ≤ Ti ≤ 30 years
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The product: Power-Reverse Dual Coupon Swap (PRDC)
Underlying swap: for a series of dates 0 ≤ Ti ≤ 30 years
receive option on FXi with strike Ki :
+max(FXi − Ki , 0)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The product: Power-Reverse Dual Coupon Swap (PRDC)
Underlying swap: for a series of dates 0 ≤ Ti ≤ 30 years
receive option on FXi with strike Ki :
+max(FXi − Ki , 0)
pay option on IRi with strike Qi :
−max(IRi − Qi , 0)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The product: Exotic exercise
Target Redemption Note (TARN) with target A
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The product: Exotic exercise
Target Redemption Note (TARN) with target A
Monitor coupon sum
Ci =
i∑
k=1
max(FXk − Kk , 0)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The product: Exotic exercise
Target Redemption Note (TARN) with target A
Monitor coupon sum
Ci =
i∑
k=1
max(FXk − Kk , 0)
if Ci > A, cancel all remaining cash-flows
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The product: Main features
Sensitive to FX smile
→ modelling of smile
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The product: Main features
Sensitive to FX smile
→ modelling of smile
Sensitive to FX-IR correlation, IR volatility
→ modelling of IR stochasticity
→ multi-factor FX-IR hybrid
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The product: Main features
Sensitive to FX smile
→ modelling of smile
Sensitive to FX-IR correlation, IR volatility
→ modelling of IR stochasticity
→ multi-factor FX-IR hybrid
Path-dependent due to exotic exercise
→ mainly Monte-Carlo
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The model: Dupire’s Local Volatility [1]
Diffusion with volatility σ(t,FX )
dFX
FX= (rd − rf )dt + σ(t,FX )dW
rd is the domestic interest rate
rf is the foreign interest rate
dW is a Brownian motion
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The model: Calibration to the market of FX options
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The model: Calibration to the market of FX options
Market characterized by implied volatility θ(t,FX )
→ once differentiable in t, twice in FX (ideally)
→ satisfies non-arbitrage conditions (ideally)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The model: Calibration to the market of FX options
Market characterized by implied volatility θ(t,FX )
→ once differentiable in t, twice in FX (ideally)
→ satisfies non-arbitrage conditions (ideally)
Model fits the market exactly for Dupire’s condition
σ2(t,FX ) = f(∂θ
∂t,∂θ
∂FX,∂2θ
∂FX 2
)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The model: Sampling the volatility
LV matrix defined as
σni = σ(tn,FXi)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The model: Sampling the volatility
LV matrix defined as
σni = σ(tn,FXi)
Typical size ∼ 200× 200 = 40, 000 entries
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The model: Sampling the volatility
LV matrix defined as
σni = σ(tn,FXi)
Typical size ∼ 200× 200 = 40, 000 entries
Bi-linear interpolation in t and FX
→ texture memory [2]
→ simple but lacks flexibility
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
The model: Sampling the volatility
LV matrix defined as
σni = σ(tn,FXi)
Typical size ∼ 200× 200 = 40, 000 entries
Bi-linear interpolation in t and FX
→ texture memory [2]
→ simple but lacks flexibility
Linear interpolation in FX at known t
→ layered textures
→ slightly more complicated but more flexible and/oraccurate
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
Summary
Multi-factor and path-dependent product
→ Monte-Carlo simulation
→ good speed-up expected with CUDA
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
Summary
Multi-factor and path-dependent product
→ Monte-Carlo simulation
→ good speed-up expected with CUDA
Model requires interpolation of a matrix
→ benefit from texture memory
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Description of the problem
Summary
Multi-factor and path-dependent product
→ Monte-Carlo simulation
→ good speed-up expected with CUDA
Model requires interpolation of a matrix
→ benefit from texture memory
Multiple cash-flows, monitoring, smile-modelling
→ large number of time steps
→ high-dimensional problem
→ inline random number generation
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Single-thread:
• On each path j , at each time tn
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Single-thread:
• On each path j , at each time tn
1 calculate next uniform random number
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Single-thread:
• On each path j , at each time tn
1 calculate next uniform random number
2 transform to Gaussian, then Brownian motion increment dW jn
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Single-thread:
• On each path j , at each time tn
1 calculate next uniform random number
2 transform to Gaussian, then Brownian motion increment dW jn
3 read previous spot FX jn from memory
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Single-thread:
• On each path j , at each time tn
1 calculate next uniform random number
2 transform to Gaussian, then Brownian motion increment dW jn
3 read previous spot FX jn from memory
4 calculate volatility σ by calling texture at (tn,FXjn)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Single-thread:
• On each path j , at each time tn
1 calculate next uniform random number
2 transform to Gaussian, then Brownian motion increment dW jn
3 read previous spot FX jn from memory
4 calculate volatility σ by calling texture at (tn,FXjn)
5 calculate new spot
FXjn+1 = FX j
ne(rd−rf −
12σ2)(tn+1−tn)+σdW
jn
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Single-thread:
• On each path j , at each time tn
1 calculate next uniform random number
2 transform to Gaussian, then Brownian motion increment dW jn
3 read previous spot FX jn from memory
4 calculate volatility σ by calling texture at (tn,FXjn)
5 calculate new spot
FXjn+1 = FX j
ne(rd−rf −
12σ2)(tn+1−tn)+σdW
jn
6 calculate product(s)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Single-thread:
• On each path j , at each time tn
1 calculate next uniform random number
2 transform to Gaussian, then Brownian motion increment dW jn
3 read previous spot FX jn from memory
4 calculate volatility σ by calling texture at (tn,FXjn)
5 calculate new spot
FXjn+1 = FX j
ne(rd−rf −
12σ2)(tn+1−tn)+σdW
jn
6 calculate product(s)
7 write new spot in memory
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Single-thread:
• On each path j , at each time tn
1 calculate next uniform random number
2 transform to Gaussian, then Brownian motion increment dW jn
3 read previous spot FX jn from memory
4 calculate volatility σ by calling texture at (tn,FXjn)
5 calculate new spot
FXjn+1 = FX j
ne(rd−rf −
12σ2)(tn+1−tn)+σdW
jn
6 calculate product(s)
7 write new spot in memory
• Loop on path, then time.
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread:
Sequential in time, parallel on paths
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread:
Sequential in time, parallel on paths
Grid configuration
1-dimensional grid of Nblocks blocks1-dimensional blocks of Nthreads threadss = Nblocks × Nthreads = number of concurrent threads
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread:
Sequential in time, parallel on paths
Grid configuration
1-dimensional grid of Nblocks blocks1-dimensional blocks of Nthreads threadss = Nblocks × Nthreads = number of concurrent threads
Thread j calculates paths j , j + s, j + 2s, etc ...
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread:
Sequential in time, parallel on paths
Grid configuration
1-dimensional grid of Nblocks blocks1-dimensional blocks of Nthreads threadss = Nblocks × Nthreads = number of concurrent threads
Thread j calculates paths j , j + s, j + 2s, etc ...
Thread j must remember previous spot values for pathsj , j + s, j + 2s, etc ...
→ too much for shared memory
→ store previous spot values in global memory
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread:
Thread j :
calculates products on paths j , j + s, j + 2s, etc ...sums them in local variablewrites sums in shared memory
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread:
Thread j :
calculates products on paths j , j + s, j + 2s, etc ...sums them in local variablewrites sums in shared memory
Synchronize
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread:
Thread j :
calculates products on paths j , j + s, j + 2s, etc ...sums them in local variablewrites sums in shared memory
Synchronize
In each block:
one thread is attributed to each productaccumulates in a local variable all thread sums for this productwrites ”block-partial” sum in global memory
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread:
Global memory contains ”block-partial” sums for eachproduct, each block, at each time
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread:
Global memory contains ”block-partial” sums for eachproduct, each block, at each time
Transfer to host
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread:
Global memory contains ”block-partial” sums for eachproduct, each block, at each time
Transfer to host
On host, sum results of all blocks.
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread: remark on random number generation
typical number of times: 500
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread: remark on random number generation
typical number of times: 500
typical number of factors: 2, but easily going to 3 and more
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread: remark on random number generation
typical number of times: 500
typical number of factors: 2, but easily going to 3 and more
typical number of simulations: 100K, but may want more
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread: remark on random number generation
typical number of times: 500
typical number of factors: 2, but easily going to 3 and more
typical number of simulations: 100K, but may want more
global generation requires minimum global memory
500× 2× 100, 000 × 4 = 400MB
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Multi-thread: remark on random number generation
typical number of times: 500
typical number of factors: 2, but easily going to 3 and more
typical number of simulations: 100K, but may want more
global generation requires minimum global memory
500× 2× 100, 000 × 4 = 400MB
cannot run on all devices, too restrictive for praticalapplications
→ use inline generation
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Texture:
Desired interpolation
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Texture:
Texture interpolation
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Texture:
Linear rescaling is required
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Texture:
Linear rescaling is required
Given spots FX0,FX1, · · · FXM−1, volatilities σ0, σ1, · · · σM−1
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Texture:
Linear rescaling is required
Given spots FX0,FX1, · · · FXM−1, volatilities σ0, σ1, · · · σM−1
The volatility at any spot FX is
σ(FX ) = tex(αFX + β)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Texture:
Linear rescaling is required
Given spots FX0,FX1, · · · FXM−1, volatilities σ0, σ1, · · · σM−1
The volatility at any spot FX is
σ(FX ) = tex(αFX + β)
with
α =M − 1
M(FXM−1 − FX0)
β =1
M
(1
2− (M − 1)
FX0
FXM−1 − FX0
)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Texture:
Bi-linear interpolation with standard texture
σ(t,FX ) = tex2D(αFX + β, γt + δ)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Implementation Outline
Texture:
Bi-linear interpolation with standard texture
σ(t,FX ) = tex2D(αFX + β, γt + δ)
Linear interpolation with layered texture
σ(tn,FX ) = tex1DLayered(αFX + β, n)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Numerical Tests
Vanilla Options:
Performance of the texture (500 time steps, 500K simulations)
50% ∼ 70% speed gains with texture
good accuracy of the texture interpolation
∼ 100 points sufficient
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Numerical Tests
Vanilla Options:
Gain (single thread vs. GTX 460)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Numerical Tests
Exotic Swap (one factor):
Additional state variable on path j
Cji =
i∑
k=1
max(FX jk − Kk , 0)
→ one more read/write access from global memory
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Numerical Tests
Exotic Swap (one factor):
Additional state variable on path j
Cji =
i∑
k=1
max(FX jk − Kk , 0)
→ one more read/write access from global memory
Product calculated only at cash-flow times (at most 120)
→ less operations than for vanillas (500)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Numerical Tests
Exotic Swap (one factor):
Gain (single thread vs. GTX 460)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Numerical Tests
Exotic Swap (hybrid 2F):
rd follows Hull-White model
drd = (θ − ard )dt + σrdWr
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Numerical Tests
Exotic Swap (hybrid 2F):
rd follows Hull-White model
drd = (θ − ard )dt + σrdWr
it has a correlation ρ with FX
dWFX = g1√dt
dWr = (ρg1 +√
1− ρ2g2)√dt
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Numerical Tests
Exotic Swap (hybrid 2F):
rd follows Hull-White model
drd = (θ − ard )dt + σrdWr
it has a correlation ρ with FX
dWFX = g1√dt
dWr = (ρg1 +√
1− ρ2g2)√dt
2 additional state variable on path j
r j , e∫ T
0r jdt (numeraire)
→ two more read/write accesses to global memory
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Numerical Tests
Exotic Swap (hybrid 2F):
Gain (single thread vs. GTX 460)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Conclusion
Extention to 3F, barriers
→ very similar to 2F, TARN
→ should not be a problem
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Conclusion
Extention to 3F, barriers
→ very similar to 2F, TARN
→ should not be a problem
Extention to callables
→ Longstaff-Schwartz not entirely parallel
→ should not be a problem but gains may be lower
→ use Malliavin calculus? (Abbas-Turki, GTC 2010)
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Conclusion
Large gains on GTX 460 and for realistic products and pricingconfigurations
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Conclusion
Large gains on GTX 460 and for realistic products and pricingconfigurations
Possibility to run more simulations
→ more accurate Greeks
→ more efficient risk management
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Conclusion
Large gains on GTX 460 and for realistic products and pricingconfigurations
Possibility to run more simulations
→ more accurate Greeks
→ more efficient risk management
Value-at-Risk and Potential Exposure calculations possiblewithout approximations
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Conclusion
Large gains on GTX 460 and for realistic products and pricingconfigurations
Possibility to run more simulations
→ more accurate Greeks
→ more efficient risk management
Value-at-Risk and Potential Exposure calculations possiblewithout approximations
Large number of scenario testing possible on exotic portfolios
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
Disclaimer
This publication has been prepared by Sebastien Gurrieri of Mizuho International plcsolely for the purpose of presentation at this conference. The opinions expressed inthis presentation are those of the author and do not necessarily reflect the view ofMizuho International plc, which is not responsible for any use which may be made ofits contents.
It is not, and should not be construed as, an offer or solicitation to buy, or sell, anysecurity, or any interest in a security or enter into any transaction. This publicationmay include details of instruments that have not been issued. There is no guaranteethat such instruments will be issued in the future.
This publication has been prepared solely from publicly available information.Information contained herein and the data underlying it have been obtained from, orbased upon, sources believed by the author to be reliable. However, no assurance canbe given that the information, data or any computations based thereon, is accurate orcomplete. Opinions stated in this report are subject to change without notice.There are risks associated with the financial instruments and transactions described inthis publication. Investors should consult their own financial, legal, accounting and taxadvisors about the risks, the appropriate tools to analyse an investment and thesuitability of an investment in their particular circumstances. Mizuho International plcis not responsible for assessing the suitability of any investment. Investment decisionsand responsibility for any investments is the sole responsibility of the investor. Neitherthe author, Mizuho International plc nor any affiliate accepts any liability whatsoeverwith respect to the use of this report or its contents.
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo
References
1 B. Dupire, ”Pricing with a smile,” Risk 7, pp. 18-20, Jan.1994.
2 A. Bernemann, R. Schreyer and K. Spanderen, ”AcceleratingExotic Option Pricing and Model Calibration Using GPUs”,Working Paper, Feb. 2011.
3 http://sebgur.fr/sgdev.html
Sebastien Gurrieri Hybrid Local Volatility in Monte-Carlo