To understand how Bloomberg prices foreign exchange vanilla options , I extract the following screenshot from its OVML function.

enter image description here

The Black-Scholes formua for vanilla options are \begin{split} & P=\phi\big(Se^{-R_fT}N(\phi d_1)-Xe^{-R_dT}N(\phi d_2)\big) \\ & d_1 = \frac{\ln(\frac{S}{X})+(R_d-R_f)T+0.5\sigma^2T}{\sigma\sqrt{T}} \\ & d_2 = d_1-\sigma\sqrt{T} \end{split} where

$\phi$: 1 for call; -1 for put

$S$: Spot rate

$X$: Strike rate

$R_d$: Domestic interest rate

$R_f$: Foreign interest rate

$\sigma$: Volatility

$T$: Time horizon

From the screenshot, I get

\begin{split} & S = 1.3347 \\ & X = 1.3338 \\ & T = \frac{22}{252} = 0.08730 \text{ yrs} \\ & \sigma = 0.0655 \end{split}

I also look up that the $R_{USD} = 0.75$ and $R_{CAD}=0.50$. Plugging these numbers in, I get

$d_1 = \frac{\ln(\frac{1.3347}{1.3338})+(0.75-0.50)\times 0.08730+0.5\times 0.0655^2 \times 0.08730}{0.0655 \sqrt{0.08730}} = 1.5580$

$d_2=1.5580 - 0.0655*\sqrt{0.0873} = 1.5386$

and $P = 1.3347 \times e^{0.50\times 0.0873}\times N(1.5580) - 1.3338\times e^{-0.75\times 0.0873}\times N(1.5386) = 0.03864$, which is nowhere close to Bloomberg's result of 0.07452.

I also tried multiplying volatility by $\sqrt{12}$, assuming that the volaility they gave is monthly not annualized. The resulting price is 0.05624, which doesn't match either.

I also tried changing 0.75 and 0.5 into 0.0075 and 0.005, assuming that the interest rates are in percentages. The resulting price is 0.01688, which also doesn't match.

What am I missing?

  • 1
    $\begingroup$ Be careful with the Bloomberg output: you have requested the price in USD. The BSM formula if applied directly gives the price in CAD, which you could convert to USD if desired. Or you could request the CAD price from Bbg. (Even with this change however I do not get the exact value, I get about 7800 versus Bbg 7451). $\endgroup$
    – nbbo2
    Commented Apr 10, 2017 at 20:01
  • $\begingroup$ Thank you noob2! Would you please let me know what values for volatility and interest rates you used? Did you treat US as domestic and Canadian as foreign? Using my second method and multiplying by 1.3 (roughly the exchange rate) yields 0.073112. Should I do it this way? $\endgroup$
    – Ye Tian
    Commented Apr 10, 2017 at 20:35
  • 1
    $\begingroup$ I was using domestic 0.0050, foreign 0.0075, vol 0.0655 and 20 trading days from 20170323 to 20170421 (20170414 is a holiday). $\endgroup$
    – nbbo2
    Commented Apr 10, 2017 at 20:39
  • $\begingroup$ I got 0.016 using these numbers :(. $\endgroup$
    – Ye Tian
    Commented Apr 10, 2017 at 20:45

3 Answers 3


Be careful of your rate conventions!

The issue here is that all your rates are expected to be in units of domestic vs 1 unit of foreign. So for example USDCAD is 1.3347, you really need to be using 1/1.3347 = 0.749 USD per 1 CAD.

So, your inputs need to be $$ \begin{align} S &= 1 / 1.3347 \\ X &= 1 / 1.3338 \\ R_d &= 0.75\% \\ R_f &= 0.50\% \\ \sigma &= 6.55\% \\ T &= 22/252 \end{align} $$ If you do this calculation you will get $$ P = 0.005614 $$ Now, the output of this is also in units of domestic per 1 unit of foreign notional (as pointed out by noob2). e.g. 0.005614 USD per 1 CAD notional. To get from CAD notional to USD notional, divide by $X$. $$ P_d = P / X = 0.7488\% $$ You can compare this to the $0.7452\%$ from your Bloomberg screenshot.

  • 3
    $\begingroup$ On top of that, vol should probably be 7.05% since the screenshot is showing "client buys" - 6.55% is the bid vol. A tinier issue (very tiny) is probably the interest rates - but you can ignore interest rates if you take a closer look at BBG and note that they will give you the forward directly too! Also, BBG is always in calendar vols, so use ACT.365 to get T. $\endgroup$ Commented Apr 11, 2017 at 13:31
  • $\begingroup$ @FinanceGuyThatCantCode All good points. One thing I'll add is that the depo rates from BBG need to be converted from their rate convention in order to be plugged in here. $\endgroup$
    – msitt
    Commented Apr 11, 2017 at 13:36
  • 1
    $\begingroup$ Actually - just tested it on BBG - it does seem like 6.55% is more likely the vol to use, but the other points stand. BBG did use a forward of 1.33407 (forward points were quoted as -6.31). Shows US OIS as 0.815% and CAD implied as 0.269% $\endgroup$ Commented Apr 11, 2017 at 13:38
  • $\begingroup$ Why we are dividing P by X (strike price) can you explain it . $\endgroup$
    – Amit
    Commented Sep 30, 2019 at 6:31
  • $\begingroup$ What @msitt indirectly uses is the Black-Scholes put call symmetry. This is presented in the typical fx option books (Wystup, Clark). And here, what is given is actually the price of a USD Put, not of a USD Call. $\endgroup$
    – jherek
    Commented Oct 2, 2019 at 7:48

The answer given is mostly wrong: @msitt uses a convoluted way without explicitly mentioning it (put-call symmetry) to actually give the price of a USD Put, not of a USD Call as requested. Here is a more direct and correct approach.

I will consider, as mentioned by @FinanceGuyThatCantCode, that the volatility convention is ACT/365, which is standard.

I will also use the straightforward measures for USD/CAD: domestic=CAD, foreign=USD. The Black-Scholes price in the domestic measure (CAD) uses simply $S=1.33347, X=1.3338$. There are however two maturities to consider: $T_p=\frac{31}{365}$ (spot to payment) and $T=\frac{29}{365}$ (time to maturity). Then use $T_p$ to compute the forward $f=S e^{(r-q)T_p}$ and the discount factor $B(0,T)=e^{-r T_p}$, and $T$ to compute the total variance $\sigma^2 T$, with $\sigma=0.0655$. You then apply the Black-76 formula $$C_{CAD} = B(0,T) \left[f N(d_1)-X N(d_2)\right]$$ This price is in CAD. Now just convert it to USD by dividing by $S$. $$C_{USD}=\frac{C_{CAD}}{S}\,.$$ With $r=0.005$ and $q=0.0075$, this gives $C_{USD}=0.75922$%.

Now the rates are probably given in a specific different daycount convention. Using the rates $r=0.00269, q=0.00815$ from @FinanceGuyThatCantCode, which he implied from Bloomberg, I obtain $$C_{USD}=0.7465\%\,.$$ For USD 1 million, we have $C= 7465$ USD.


You can have a look here and there. The latter will show what BBG does with implied rates (or forward - which is a setting). This will, apart form some daycount differences (which are explained in the links) match BBG 100%.


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