You are definitely correct in this example. There is one caveat though. I think that is an error in the book and despite it being defined as a continuous rate, they actually use it like it would not be (see below). I you convert it to continuous it matches the book.
I have NOT read the book. The book may explain interest rate conventions somewhere. Irrespective, the author himself (or whoever wrote that section) definitely mixed this up and the notation is sloppy and wrong.
A few side remarks before showing what I think is wrong here:
- Usually interest rates would not be continuous. How adjustment for actual rates work can be seen here. Usually there are daycount differences between quotes of implied vol and interest rates.
- In actual pricing engines, there is a distinction between 'Premium Date' and 'Price Date' where the former is when you actually pay the premium, and the latter when you price the option. That is not something most implemented BS pricers you can get in programming languages like Matlab and others handle correctly (makes little difference as long as you do not have deferred premium).
- Some of the nuances are discussed here; e.g. what is the notional currency, what is the price currency, what ccy is the call option in
Call on EUR = Put on USD
etc.
- Even IVOL itself is tricky in FX as is outlined here
Interestingly, the book defines the forward by using continuous interest rates. This means that the quotes should be continuous already.
Now, there is the problem. I think they are NOT. Why? Let me demonstrate with some code. The formulation with the the forward rate is not really Garman Kohlhagen but Black. Makes no difference though as you can see here.
I coded both in Julia. I hope the screenshots are self explanatory, if not, let me know. Let's define the models (GK and Black) first.
Now we can compute both. It will require computing the forward and I simply used the formula outlined in your picture. Since t=1
I simply excluded it.
Exactly what you get (as is expected, given you simply code out the given formula). Note that I used both GK and Black and it all matches, which it should based on continuous compounding of rates. However, as mentioned before, interest rates are usually not continuous. Continuous rates should be lower than it's discrete analogue. So I ran a test. The reason I added the 365/365
is to allow for $\tau \neq1$ and to show that technically it is possible to account for actual market conventions (daycount varies across countries and interest rate quotations, so there is no one size fits all transformation).
Et voilà ! That is the (incorrect) result. You can take it one step further and compute CIP with discrete rates to see if Wystup's formula (Black) works (ignoring the way he denotes it).
That said, even if it were explained somewhere in the book, defining the forward as $X*exp^{(rd-rf)*\tau}$, while claiming $r_d = 3$% and $r_f = 2.5$% is simply wrong. Just like most people (I know) would not denote spot as X
. That said, FX Vol Smile Construction by Uwe Wystup and Dimitri Reiswich, among many other books and papers written by Uwe Wystup, is a brilliant piece of work. If the link does not work anymore, just Google it. Making errors is just human, and I am certain I have a couple obvious typos in this answer as well.
Hope it still helps.