The expected return of an option is given by its expected payoff under $P$ over its market price under $Q$.

For the Black-Scholes model, expected call option return is given as (see here):

$$ E(R)=\frac{E^P[(S_T-K)^+]}{e^{-rT}E^Q[(S_T-K)^+]}=\frac{e^{\mu \tau}[S_tN(d_1^*)-e^{\mu \tau}KN(d_2^*)]}{C_t(r,T,\sigma,S,K)}-1 $$

$$\text{with }d_1^*=\frac{\ln S_t/K+(\mu+\frac{1}{2}\sigma^2)\tau}{\sigma\sqrt{\tau}},\qquad d_2^*=d_1^*-\sqrt{\tau}\sigma$$

I implemented the $P$-payoff in MATLAB as

    E(R) = exp((mu-d)*T)*blsprice(S, K, mu, T, sigma,d)

and get correct values (comparing with other studies).

However, I also tried to calculate out the expectation integral numerically in MATLAB as follows:

     E(R2) = integral(@(S_T)max(S_T-K,0).*normpdf(log(S_T),mu-d-sigma^2/2,sigma),0,inf)

(with some arbitrary parameters) and I get a different value.

Can someone explain whether there is error in my code for E(R2), or is MATLAB integration just not accurate enough?

E.g. try with

  • $\begingroup$ You can use Gaussian quadrature methods. $\endgroup$
    – user16651
    Jun 24, 2016 at 13:44
  • $\begingroup$ $$d_2^*=d_1^*-\sqrt{\tau}\sigma$$ $\endgroup$
    – user16651
    Jun 24, 2016 at 13:59
  • $\begingroup$ @BehrouzMaleki Thanks for correcting the typo, this was only in the question text but not in the MATLAB code of function blsprice. $\endgroup$
    – emcor
    Jun 24, 2016 at 14:39
  • $\begingroup$ The function "normpdf(log(S_T),mu-d-sigma^2/2,sigma),0,inf)" should likely be " normpdf(log(S_T),(mu-d-sigma^2/2) T,sigma),0,inf)". $\endgroup$
    – Gordon
    Jun 24, 2016 at 20:58
  • $\begingroup$ @Gordon Yes that $T$ could be added. I had $T=K=S=1$ set in my code, but the results are still unequal. I believe it is due to numerical errors in the integration. $\endgroup$
    – emcor
    Jun 24, 2016 at 21:29

1 Answer 1


Under GBM $$ \frac {dS_t}{S_t} = \mu dt + \sigma dW_t $$ we get $$ S_T = S_0 e^{(\mu - \frac{1}{2}\sigma^2)T + \sigma W_T} $$ suggesting that $$ S_T \sim \text{ln}\mathcal {N} ( \tilde {\mu}, \tilde {\sigma}) $$ where \begin{align} \tilde {\mu} &= \ln S_0 + (\mu - \frac{1}{2}\sigma^2)T \\ \tilde {\sigma} &= \sigma \sqrt {T} \end{align}

Now if $X \sim \text{ln}\mathcal {N} (\mu, \sigma)$, the pdf of $X $ reads $$ p (x) = \frac {1}{x \sigma \sqrt {2\pi}} e^{-\frac {(\ln x - \mu)^2}{2\sigma^2}} $$ showing that the lognormal pdf relates to the normal pdf as follows $$ \text {lognormpdf} (x, \mu, \sigma) = \frac {\text {normpdf}(\ln (x), \mu, \sigma)}{x} $$

So finally: $$ I = \mathbb {E}_0 [(S_T-K)^+] = \int_0^\infty \max(S_T-K,0) p (S_T) dS_T $$ should be calculated as

mu_tilde = log(S_0) + (mu - 0.5*sigma^2)*T
sigma_tilde = sigma*sqrt(T)
I = integral(@(S_T) max(S_T-K,0) .* 1./S_T.*normpdf(log(S_T),mu_tilde,sigma_tilde),0,inf)

So you basically have 3 problems, 2 of which are in the expressions of the drift/diffusion coefficients (but these will remain hidden when picking $S_0=T=1$) and the main one being the missing factor $1/S_T $ to get the lognormal pdf.

  • 1
    $\begingroup$ I checked that indeed using the lognormal-distribution solves the error. $\endgroup$
    – emcor
    Jun 30, 2016 at 12:32
  • $\begingroup$ EOR_MATLAB = integral(@(S_T)max(S_T-K,0).*normpdf(log(S_T),mu-d-sigma^2/2,sigma)./S_T,0,inf)/blsprice(S, K, r, T,sigma,d)-1 $\endgroup$
    – emcor
    Jun 30, 2016 at 12:32
  • $\begingroup$ Glad I could help $\endgroup$
    – Quantuple
    Jun 30, 2016 at 13:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.