Tuesday, September 12, 2017

How to get greeks using Monte-Carlo for arbitrary option?


Let's assume I have an arbitrary option that I can price using Monte-Carlo simulation. What is the general approach (i.e. without relying on specific option type) to calculating the greeks in this case?


Edit: I woud like to add a few links on the topic that I found useful:




Answer



You need to compute your greeks as finite differences, but the full procedure may be pretty tricky. I will use vega as the example here. Let's begin by designating your Monte Carlo estimator as a function V(σ,s,M) where σ is the volatility as usual, s is the seed to your random number generator, and M is the sample count.


To begin with, recall that the Monte Carlo estimate of any value converges with the square root of the sample count. In particular, if you choose, say, M=100, you can run your estimator N=500 times to get estimate {Vn}500i=1, obtaining the standard deviation Σ100 of those estimates.


Having done this, we now know the standard error of the estimator for any M to be


eMΣ100100M



There are three possible cases:



  1. You can control the random seed s, or the set of random samples, used by the Monte Carlo estimator

  2. You cannot control s.

  3. You cannot even control the sample count M.


In the first case, you can use the fact that s has been controlled to get a reasonable estimate of vega with relatively little extra work.


Find an M such that the error in option price eM is tolerable. Choose a seed s0 and a small increment Δσ in the volatility, and compute


(1)=V(σ+Δσ,s0,M)V(σΔσ,s0,M)2Δσ

and (2)=V(σ+12Δσ,s0,M)V(σ12Δσ,s0,M)Δσ


If (1)(2) then you have a good estimate and you are done.



The reason this works so nicely is that, by controlling the seed, our difference computations


δ=V(σ+Δσ,s0,M)V(σΔσ,s0,M)

are direct Monte Carlo estimators of the vega, since the shared seed implies the samples xi match in the difference of sums. That is δ=(1MMi=1f(xi,σ+Δσ))(1MMi=1f(xi,σΔσ))=1MMi=1f(xi,σ+Δσ)f(xi,σΔσ)


The second case where you cannot control the seed, on the other hand, is rather more difficult. Here, you will have a different error e to the true value every time you run the function.


For brevity, let's let e±=V(σ±Δσ,s±,M).


Of course we do not know the value of e± or of s±, but we do at least have our estimate of the size of e± as noted above. Therefore, the error in δ is approximately eM2. You need to choose M so large that δeM2.


Not knowing the value of δ a priori makes this difficult, but usually in a trading context one can specify an acceptable absolute error ϵ in vega. In that case, we can demand ϵ<eM2Δσ

which translates to M>Σ2100200ϵ2Δσ2.


The third case, where you can control neither the random seed s nor the sample count M should be treated as the second case above. You simply treat each run of the algorithm as a single sample.


No comments:

Post a Comment

technique - How credible is wikipedia?

I understand that this question relates more to wikipedia than it does writing but... If I was going to use wikipedia for a source for a res...