I am working with the following dataset from quandl: https://www.quandl.com/databases/CSWO (I'm using the sample dataset only). My question is how to obtain the swaption prices from the quotes given. The dataset gives me the following information for each contract:

  1. Currency (in the sample data set only Australian dollars).
  2. Option tenor. I will denote it with $T_{\text{option}}$.
  3. Swap tenor. I will denote it with $T_{\text{swap}}$.
  4. How much the option is in/out of the money given in basis points, e.g. P100 means that the strike is 100 basis points above the ATM strike (Is the ATM strike equal to the current forward rate $F(t; T_{\text{option}}, T_{\text{option}}+T_{\text{swap}}))$ for the time interval $[T_{\text{option}}, T_{\text{option}}+T_{\text{swap}}]$?)

My approach to obtain the swaption prices would be the following: lognormal vola quotes means the Black swaption formula was used to compute the implied volatility. The formula is (see for example page 19 in https://courses.maths.ox.ac.uk/node/view_material/3748):

$$ V^{\text{payer swaption}}(t) = A(t)\left\lbrack R^*(t)N(d_1)-RN(d_2)\right\rbrack $$ where $$ d_1 = \frac{\log\left(\frac{R^*(t)}{R}\right)+\frac{1}{2}\sigma^2(T_0-t)}{\sigma (T_0-t)}, \quad d_2 = d_1 -\sigma\sqrt{T_0-t} $$ and

$$ A(t) = \sum_{i=1}^n\delta_kP(t,T_k) $$ with the payment dates $T_k$ and $\delta_k = T_k-T_{k-1}$ (There is nothing said about the payment frequency in the dataset documentation. How do I know what frequency was used?). $T_0$ is the time at which the swaption can be exercised. $R$ is the strike of the swaption and $R^*(t)$ is the forward rate for the time period $[T_0,T]$ where $T=T_n$ is the time at which the swap matures. The question is now how to insert the given data in the above formula. I would do it the following way:

  1. For $R^*(t)$ choose the swap rate of a swap starting at $T_{\text{option}}$ and maturing at $T_{\text{option}}+T_{\text{swap}}$.
  2. Set $R=R^*(t)\pm \text{basis points offset of ATM strike}$.
  3. For $\sigma$ choose the implied volatility quoted.
  4. To compute $A(t)$ one first hast to bootstrap a zero curve and the obtain the value of $A(t)$ from that zero curve. What instruments do I use to bootstrap the zero curve and how do I do it?
  • $\begingroup$ note I think you might be missing a square root symbol in the denominator of d1.. $\endgroup$
    – Attack68
    Apr 4, 2018 at 14:13

1 Answer 1


Are your implied vols definitely log-normal? Is there any lognormal shifting applied? If not you will struggle to compute the log of say (0.3%/-0.7%) for a swaption which is P-100 in currencies such as EUR and JPY and to some extent GBP and USD.

Swaption prices are often quite useful without the discounting element.

For example consider two prices;

5y30y: with 50bps normal vol or, say, 40 logvol might be priced at 35bps. 
Factoring the PV01 of a 1mm 5y30y swap of, say, 2300 gives a cash value of 80,500 (2300 x 35).
This is a cash price of 805bps of notional.


5y5y: with 50bps normal vol or, say, 40 logvol might be priced at 35bps.
Factoring the PV01 of 1mm notional, say, 450 gives a cash value of 15,750.
This is a cash price of 157.5bps of notional.

So monitoring the above it is actually more difficult to standardise and evaluate the swaptions whose cash price is stated rather than rate price, which in this case is the same at 35bps.

It depends on how precise you want to be with calculating your discount curve, but a very rough measure will be to get swaption prices for 1Y, 2Y 3Y etc and then use the formula from wiki IRS pricing, to determine discount factor points which you could interpolate, either log-linearly or log-cubically:

$$R = \frac{x_0-x_{n_2}}{\sum_{i=1}^{n_1} d_i x_i}$$


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.