This posts implements a policy class that can be used to configure the behaviour of other classes, such as numerical algorithms, at compile time.
In this post, I augment a constant coefficient geometric Brownian motion process by a single jump whose time of occurrence is known. The random variable representing the jump size follows a normal mixture distribution. To get a feeling for the impact of predictable jumps on option prices, we inspect the shape of a few model implied probability densities and volatility smiles.
We consider a simple and tractable model for an asset price process that is subject to a large jump with a known time of occurrence. These situations often arise around scheduled news releases such as quarterly earnings announcements, monetary policy decisions or political elections. This post is the first in a series on this topic. I provide the general pricing setup and derive the characteristic function of the corresponding logarithmic return process including drift adjustment. Future posts then make specific choices for the jump size distribution and provide examples for the corresponding implied volatility smiles.
In this pose, we consider an Ornstein-Uhlenbeck stochastic clock whose instantaneous rate of activity process has an inverse Gaussian stationary distribution. We use the previously obtained relationship between the cumulant generation function of the stationary distribution and that of the background driving Lévy process and show that the latter can be represented as the sum of an inverse Gaussian processes and a compound Poisson process with chi-squared distributed increments.
In this post, we consider stochastic clocks whose instantaneous rate of activity follows a square root process. We present all intermediate steps in the derivation of the characteristic function of the corresponding time change. The corresponding steps closely resemble those in the derivation of the zero-coupon bond price in the Cox et al. (1985) model for the short-term interest rate.
In C++, we often use the substitution failure is not an error (SFINAE) rule in template overload resolution. A common problem is to write template specializations for class template arguments that expose member functions with a certain signature. The below macro allows to easily create member function detector type traits for user defined classes
In this post, we consider one particular specification of the background driving Lévy process in the general Ornstein-Uhlenbeck stochastic clock dynamics introduced in a previous post. We show that a compound Poisson process with exponentially distributed increments yields a gamma stationary distribution for the instantaneous rate of activity. We also discuss how the problem could be approached from the other end by imposing the stationary distribution and finding the corresponding background driving Lévy process.
In the last post, I provided a brief introduction to forward mode automatic differentiation with CppAD. In this post, I propose to use automatic differentiation for the computation of cumulants of option pricing models based on characteristic functions. This is useful, for example, when pricing European vanilla options using the Fang and Oosterlee (2008) COS method. Here, the first four cumulants are used to determine the integration range.
In quantitative finance, automatic differentiation is commonly used to efficiently compute price sensitivities. See Homescu (2011) for a general introduction and overview. I recently started to look into it with two different applications in mind: i) computation of moments from characteristic functions and ii) computation of implied densities from parametric volatility smiles. In this post, I provide a short introduction into computing general order derivatives with CppAD in forward mode.
I worked through most of this book when studying for MATH5985 “Term Structure Modelling” at UNSW. The attached document lists some potential typos/inconsistencies in the notation of the 2005 printing.