Financial programming for Quants

Category: Options pricing

The Vanna-Volga Method

This is part 1 of 4 posts that I would like to share on FX Volatility surfaces. The posts assume that the reader is familiar with the concept of volatility skew. There are many excellent references out there and I don’t want to repeat what you can already find in texts.

This part will focus on how FX traders build a volatility surface. Beginning with three data points \(25\Delta\) put(\(75\Delta\) call) volatility, at-the-money volatility and \(25\Delta\) call(\(75\Delta\) put) volatilities, we are to interpolate the curve. The curve should be arb free. Traders use a thumb-rule called the Vanna-Volga method.

VV is extremely intuitive. The idea is to construct a portfolio of \(1\) long call, short \(\Delta\) units of the stock and short the three calls (\(25\Delta\), \(50\Delta\) and \(75\Delta\)) in the proportion \((x_{1},x_{2},x_{3})\). For the portfolio to be arb-free, we set vega, volga and vanna to zero. This yields \((x_{1},x_{2},x_{3})\). The weights can be used to compute the vanna-volga adjustment. The market price of the option is simply the sum of the Black Scholes Price and the vanna-volga adjustment.

I could write a first order approximation of the adjustment as :

\(\text{Adjustment}= \text{Vega}\times(\text{IV} – \text{Flat volatility }\sigma_{atm})\)

And a second order one as :

\text{Adjustment} &= \text{Vega}\times(\text{IV} – \text{Flat volatility }\sigma_{atm}) \\
&+ \text{Volga}\times(IV – \text{Flat volatility }\sigma_{atm})^{2}

Solving the above for IV, it’s easy to extract a first-order and second-order approximation.

This document outlines the Vanna-Volga method and a sample code snippet in Python. In my next post, I plan to write on other stochastic volatility models and their C++ implementation.

Binomial trees

The random behavior of financial variables such as stock prices, interest rates, FX rates, credit spreads can be approximated using two-state lattices known as Binomial trees. Binomial trees are useful for a variety of European-style and American-style derivatives.


Consider an asset with an initial value \(S_{0}\) at time \(t=0\). During a time period \(\Delta{t}\), the asset price can go up to \(Su\) with probability \(p\) or down to \(Sd\) with probability \(q=1-p\). The asset price \(S\) is a Bernoulli random variable.

Continue reading

Monte Carlo Methods

A beautiful rendering of the Bugatti Veyron with 2 million polygons worth of information using ray-tracing! The science behind ray-tracing is to use the Monte-carlo methods to simulate the random paths of light through any given pixel and create a 3D-image.

Simulations are central to finance and risk management. They allow us to price complex financial instruments e.g. European style options for which no analytic pricing formula is available. They allow risk managers to simulate a portfolio’s profit and loss performance for a specified time horizon. Repeated trials within the simulation produce a frequency distribution for the changes in the portfolio value. The cutoff point beyond which there is very low probability of greater losses is an estimate of VAR.

Continue reading

© 2019 Quantophile

Theme by Anders NorenUp ↑