How Random Volatility Changes a European Call Price
Summary
The document compares Monte Carlo prices for a European call under constant volatility and under volatility sampled once per path from a lognormal distribution. It raises the question of why the random-volatility estimate is slightly below the constant-volatility estimate despite the intuition that added dispersion should increase a convex payoff. The answers point to the shape of the option price as a function of volatility and Jensen's inequality: the effect depends on curvature over the volatility range, rather than on volatility dispersion alone.
The discussion is limited and somewhat inconsistent: one answer characterizes the relevant price curve as concave in the stated moneyness region, while another calls it convex and offers an informal explanation based on the sampled distribution. It provides no rigorous derivation or controlled comparison, and the quoted simulation is only an estimate under its specified assumptions. The example is useful as a prompt to check model parameterization and option-price curvature before inferring a general result.
Key ideas
- The example compares a constant-volatility call model with volatility drawn once per simulated path.
- The price impact of volatility uncertainty depends on the curvature of option value across volatility levels.
- Jensen's inequality can explain how averaging volatility-dependent prices differs from pricing at an average volatility.
- The answers disagree about the relevant curvature and do not establish a general price ordering.
Tags
Full text
# Should an uncertain volatility model option be priced higher or lower than a constant volatility model option?
# Should an uncertain volatility model option be priced higher or lower than a constant volatility model option?
These are quite simple models, so forgive me If my question is basic.
I am implementing Monte Carlo simulation for European call option pricing under two setups:
Constant volatility (GBM with σ = 0.2) Uncertain volatility where σ is sampled from a lognormal distribution per path. The mean is 0.2 and standard deviation 0.05.
In theory, I expected the uncertain volatility case to produce a higher option price due to increased dispersion and convexity of the payoff.
However, my results show:
Constant volatility price: ~10.43 Uncertain volatility price: ~10.40
A marginal difference but still prompts me to inquire. I even tried later using the Heston model and got a price of 8.89.
If someone could please explain theoretically what it should be and why I am getting these numbers I would appreciate it. Here is my code:
```
import numpy as np
import matplotlib.pyplot as plt
# -----------------------------
# PARAMETERS
# -----------------------------
S0 = 100
K = 100
r = 0.05
T = 1.0
N = 100000
steps = 252
dt = T / steps
sigma = 0.2
np.random.seed(42)
# -----------------------------
# CONSTANT VOLATILITY MODEL
# -----------------------------
def monte_carlo_constant_vol():
S = np.full(N, S0)
for _ in range(steps):
Z = np.random.normal(0, 1, N)
S = S * np.exp((r - 0.5 * sigma**2) * dt + sigma * np.sqrt(dt) * Z)
payoff = np.maximum(S - K, 0)
price = np.exp(-r * T) * np.mean(payoff)
return price, payoff
# -----------------------------
# UNCERTAIN VOLATILITY MODEL
# -----------------------------
def monte_carlo_uncertain_vol():
S = np.full(N, S0)
sigma_mean = 0.2
sigma_std = 0.05
sigma_paths = np.random.lognormal(
mean=np.log(sigma_mean**2 / np.sqrt(sigma_std**2 + sigma_mean**2)),
sigma=np.sqrt(np.log(1 + (sigma_std**2 / sigma_mean**2))),
size=N
)
for _ in range(steps):
Z = np.random.normal(0, 1, N)
S = S * np.exp((r - 0.5 * sigma_paths**2) * dt +
sigma_paths * np.sqrt(dt) * Z)
payoff = np.maximum(S - K, 0)
price = np.exp(-r * T) * np.mean(payoff)
return price, payoff, sigma_paths
# -----------------------------
# RUN SIMULATIONS
# -----------------------------
const_price, const_payoffs = monte_carlo_constant_vol()
uncertain_price, uncertain_payoffs, sigma_paths = monte_carlo_uncertain_vol()
print("Constant Volatility Price:", const_price)
print("Uncertain Volatility Price:", uncertain_price)
# -----------------------------
```
## Answer by Rylan (score 1)
https://quant.stackexchange.com/a/85670
I've only skimmed this but it seems related: Option Price vs. Implied Volatility
Option prices being a concave function of IV for ATM/ITM (yours is arguably ITM as the forward price is above the strike price) would imply that variance in IV decreases price (by a Jensen's inequality type argument.)
## Answer by Max Michlits (score 0)
https://quant.stackexchange.com/a/85717
Look at this plot. As you can see, the price function is convex. Your log odds distribution has a fat tail (which "penalized" linearly) while closer to 0 the curve flattens. While the historgram fails to show this perfectly, the smallest sigma in sigma_paths I got wass 0.677 which is already borderline in the less penalized zone. After that its all linear, so the only time where you favour one over the other is when sigma is super low which you get in the uncertain model.
A Monte Carlo Simulation of a price is not a model capable of learning anything uncertainty related, its simply an average of price paths.
I'm sure if you dig through the math Jensen's inequality will show up and give you the inequality.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.