Bowmain Consulting

Wilberforce Specification
Part of Project Denning

This is not a formal document. It contains information (ramblings) about features of the Wilberforce application that have been considered for implementation, or have been implemented. Some attempt has been made to ensure that this document matches with the actual development of Wilberforce, but it is almost certain that from time to time, it will not.


Wilberforce consists of single form split into LHS and RHS panes.

Trade Display

  1. Portfolios are displayed in the LHS pane. Clicking on a portfolio node displays the trades belonging to the porfolio.
  2. Trades are displayed in tabular form in a DataGrid control in the RHS pane. Trade display will be read-only.
  3. Trade nodes can be added to the LHS pane. Clicking on the node will display the corresponding trade in the RHS pane.

Trade Entry

  1. Clicking on a trade in the RHS form displays the trade in an appropriate trade edit form.

Market Data

  1. On start up, the application loads market data from the database (currently Microsoft Access). Market data values are available from the "ticker manager" by RIC. For example, the RIC "3M EUR LIBOR Telerate 37750" might be used to request the 3 month EUR LIBOR rate.
  2. The application does not allow the user to save any market data. (TEMP)
  3. The application does not provide for dynamic data feeds. (TEMP)
  4. Enhance the application so that it can process live price feeds. (TODO)

Yeild Curves

What is a Yield Curve?

Yield curves supply discount factor information. What is a discount factor? 100 in the hand now is worth more that a promise to pay 100 in a years time. Why? Because if the "going" annual interest rate is 6.25%, then 100 now will be worth 106.25 in a years time. The promise to 100 in a years time is only worth 100/106.25 = 0.9412 of a that of the 100 in hand now. (Note that the calculation does not the possibility of default take into consideration) The factor 0.9412 is the discount factor. The reader is referred to any introductory book on derivatives pricing for further details.

Discount factors can be implied from the price of various instruments. In particular, short term rates, FRAs and swaps. By combining the information from these instruments it is possible to construct a discount curve stretching to 20 years.


  1. On start up, the application loads yield curves from the database.
  2. Yield curves are accessed by name. A yield curve name consist of scope (public/private), name, type (FX, Interest Rate, etc), underlying (USD Libor, GB Libor, etc).
  3. The user cannot create new yield curve with Wilberforce - they must be manually set up in the database.
  4. The user cannot save any edited values.
  5. The application provides 2D graphical representations of yield curves.

Volatility Surfaces

What is a volatility smile?

The cost of out-of-the-money options are more expensive than expected if their values are calculated using BS and volatilities and rates consistent with at-the-money options.


A good question.

BS assumes the price of the underlying at maturity is a log-normal distributed random variable, say X. I.e. X is normally distributed where X=ln(S) and the random variable S is the final price of the underlying.

Studies show that the distribution of prices at some point in the future has fatter tails and is more peaked than a normal distribution. The result is that out-of-the-money option prices are more expensive than predicted by a simple BS model. Other studies point out that markets, particularly equity markets tend to undergo sudden jumps. Models of jump diffusion are capable to producing smiles. All of these answers however pre-suppose an element of objectiveness that option prices do not really have.

Prices are driven by the market. Fund managers in particular are risk-averse and are blamed for driving up the price of out-of-the-money options which they purchase to protect themselves against losses from large market movements. The prices determined by the market determine the risk-neutral probabilities.

An analogy is useful. Bookies are able to quote odds for each animal. However bookies have no real (objective) method of determining the probability of any animal winning, rather the odds reflect the popularity of animals in the market, I.e. the "market view" of the likelihood of the animal winning. The probabilities implied by the odds are a "risk-neutral" probability measure - the odds are determined by the bookie ensuring that he does not risk any money on the outcome of the race.

The situation with options is similar. The volatility smile at any maturity determines the risk-neutral probability distribution at that maturity. The well known result is that if CK is the value of a call with strike K, then the probability distribution is

p = e-rt2CK/∂K2

The proof is relatively trivial.

, so and .

Exercise: Check the above by differentiating BS formula.

The formula above requires that the volatilty smile is twice continuously differentiable. Unfortunately the market only provides a limited sample of call price Ci with strike Ki, and all other values must be interpolated. That provides some constraints on how we must do that interpolation. Linear interpolation is out because it is not differential at Ki. The (probably) simplest interpolation method that can be made to work is natural cubic spline, which we implement. Other implementations are available in the literature, and these will be implement in the future. Cubic splines are not ideal - a change in the position of one point changes the shape of the whole curve, and that probably does not make business sense. If the demand for a option with a particular strike increases, why should the prices of options at the other end of the smile be effected.

Once the probability distribution p is known, it is possible to price more exotic options.


Pricing Functionality

  1. Wilberforce will be able to calculate the implied volatilities associated with a volatility smile.
  2. Wilberforce will use natural cubic spline to imterpolate between strikes.
  3. TODO
  4. Floating vs Sticky smiles

User Functionality

  1. On start up, the application loads volatility surfaces from the database.
  2. Volatility surface are accessed by name. A yield curve name consist of scope (public/private), name, type (FX, Interest Rate, etc), underlying (USD LIBOR, GBP LIBOR, etc).
  3. The user cannot create new volatility surfaces with Wilberforce - they must be manually set up in the database.
  4. The user cannot save any edited values.
  5. The user can edit (a) the maturity tenors and dates of volatility smiles, (b) the strikes, (c) the extrapolation factors, and (d) the volatility and price values at the grid points on a volatility surface.
  6. Strikes can be displayed by absolute value, or as a percentage of spot.
  7. The application does not provide for dynamic price feeds.
  8. The application provides a volatility calculator. (TODO)
  9. The application signals the presence of negative forward volatilities by displaying suspect cells with a red background, and displaying a warning message above the displayed surface. (TODO)

A snapshot of an early version of the volatility surface application is shown below.


  1. A date calculator is required to translate tenors into dates. For example, if today is the 13th of March 2005, then the tenor "3m" corresponds to the date 13th of June, 2005, provided that the 13th is not a holiday.
  2. A business day database needs to be established.
  3. The market data manager contains a number of other manager objects:
    • Ticker manager - which supplies raw market data (e.g. price information).
    • Volatility surface manager - which manages volatility surfaces.
    • Yield curve manager - which manages yield curves.
    • Exchange rate manager - which manages exchange rate curves.
  4. There is no attempt to consider the effects of cost of carry incurred between the transaction date and premium delivery, and between expiry and delivery. (Enhancement to option model)
  5. The application uses calendar days for all calculations. The application could be modified to optionally use trading days when performing calculations involving volatility. (This would require the application to incorporate a non-business day database.)
  6. The current calculation engine could be enhanced to support more calculation nodes.

Copyright Bowmain Ltd, 2004