Class CGMY

Inheritance Relationships

Base Type

Class Documentation

class CGMY : public otyca::LevyProcess

Represents the CGMY stochastic process model.

The CGMY process is a pure-jump Lévy process widely used in financial modeling, particularly for capturing asset returns with jumps and heavy tails. It is characterized by four parameters:

  • C: Activity level of small jumps

  • G: Decay rate of positive jumps

  • M: Decay rate of negative jumps

  • Y: Tail heaviness (or jump intensity) parameter

The CGMY process generalizes several well-known models, including the Variance Gamma process (when Y=0) and the stable process (when Y∈(0,2) and C is constant).

This class provides methods for evaluating process characteristics, simulating paths, and computing relevant quantities for applications such as option pricing and risk management.

See also

“Carr, P., Geman, H., Madan, D.B., and Yor, M. The Fine Structure of Asset Returns: An Empirical

Investigation, Journal of Business, 2002” for more detailed background.

Note

The process reduces to a Brownian motion in the appropriate parameter limits.

Public Functions

inline CGMY(double C, double G, double M, double Y)
inline CGMY()
inline virtual CGMY *clone() const

Clone the current LevyProcess instance.

Returns:

A pointer to a newly allocated copy.

virtual ~CGMY()
virtual arma::cx_colvec characteristic_exponent(const arma::cx_colvec &u) const override

Compute the characteristic exponent at a set of frequencies.

Parameters:

u – Complex-valued column vector of Fourier arguments.

Returns:

characteristic exponent vector.

virtual std::vector<arma::cx_colvec> characteristic_exponent_derivatives(const arma::cx_colvec &u) const override

Compute the derivatives of the characteristic exponent.

Parameters:

u – Complex-valued column vector of Fourier arguments.

Returns:

A vector of derivatives of characteristic exponent with respect to parameters

inline double get_c() const
inline double get_g() const
inline double get_m() const
inline double get_y() const
inline void set_c(double c)
inline void set_g(double g)
inline void set_m(double m)
inline void set_y(double y)
virtual void set_transformed_calibration_parameters(const std::vector<double>&)

set the transformed parameters for calibration.

Parameters:

transformed_calibration_parameters – the transformed calibration parameters

inline virtual void set_parameters(const std::vector<double> &parameters)

Set the model’s raw parameters.

Parameters:

parameters – A vector of new parameter values.

virtual std::vector<double> transformation_derivatives() const

Get derivatives of the transformation with respect to the raw parameters.

Used for Jacobian computation during calibration.

Returns:

A vector of derivatives (default: all 1).

virtual std::vector<double> get_transformed_calibration_parameters() const

get the transformed parameters for calibration.

Returns:

the transformed parameters for calibration

inline virtual std::vector<double> get_parameters() const

Get the model’s raw parameters.

Returns:

A vector containing the model’s parameters.

virtual std::vector<double> get_transformed_calibration_parameter_variances() const
inline virtual std::string name() const

Get the model’s name.

Returns:

A string representing the name of the model.

inline virtual std::vector<std::string> get_parameter_names() const

Get the names of the model parameters.

Default implementation assigns names as “p1”, “p2”, etc.

Returns:

A vector of parameter names.

inline void set_multiplier(double m)