Investigating a Geometric Asian Call Pricing Discrepancy
Summary
The document describes a discrepancy between a closed-form price for a geometric Asian call and a Monte Carlo estimate. The author uses a formula parameterized by spot, strike, maturity, volatility, interest rate, and a monitoring count, and reports that the two methods agree at one year but diverge for longer maturities. A worked parameter set and a simulation standard error are given, but the excerpt does not include the plotted values or the earlier formula it references.
The question is unresolved in the supplied material: there is no answer diagnosing the difference or confirming that the formula matches the simulation setup. A valid comparison depends on details such as whether averaging is discrete or continuous, the observation dates, inclusion of the initial spot, and the maturity scaling of the variance and drift terms. The code alone cannot establish which convention is intended. The reported mismatch is a useful prompt to reconcile model assumptions and implementation before using the analytic price as a Monte Carlo control variate.
Key ideas
- The author compares a closed-form geometric Asian call price with a Monte Carlo estimate.
- The reported difference appears for maturities beyond one year in the described setup.
- The excerpt does not provide a diagnosis or enough simulation detail to identify the cause.
- The comparison depends on matching the averaging schedule and conventions in the formula and simulation.
- A control variate requires a correct analytic expectation under the same model used by the simulation.
Tags
Full text
# Closed-form equation for geometric asian call option
# Closed-form equation for geometric asian call option
I'm looking to use the geometric asian option as a control variable for a monte carlo simulation. However, I have an issue with the closed-form equation to get the geometric price.
I'm using the formula from a previous related Q&A on this site:
When I compute it for T=1, it gives me the right price. But when T > 1, the price found is different from the solution that I get from MC.
With the parameters below, I get 9.124 and something around 9.65 with MC (SE = 0.02).
Here is the code I use:
```
import numpy as np
from scipy.stats import norm
np.random.seed(1)
#### Closed form equation for geometric asian option ####
def BS_geo(S0,K,T,vol,r,n,type):
varbis = vol**2 * (((n+1)*(2*n+1))/(6*(n**2)))
rbis = (varbis/2) + (r-((vol**2)/2)) * ((n+1)/(2*n))
d1 = (np.log(S0/K) + ( (rbis+0.5*varbis)*T)) / np.sqrt(varbis)*np.sqrt(T)
d2 = d1 - (np.sqrt(varbis)*np.sqrt(T))
if type == "Call":
price = np.exp(-r*T) * (S0*np.exp(rbis*T)*norm.cdf(d1)-K*norm.cdf(d2))
else:
price = np.exp(-r*T) * (K*norm.cdf(-d2) - S0*np.exp(rbis*T)*norm.cdf(-d1))
return price
S0=100
K=105
T=3
vol = 0.25
r = 0.05
n= 100
type = "Call"
print(BS_geo(S0,K,T,vol,r,n,type))
```
When I compute it for different T between 1 and 20, here is what I got. Orange line is from Monte Carlo and the blue one from the closed-form equation.Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.