The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

VolSurface::Calibration::Equities

DESCRIPTION

This module implements Binary.com's volatility surface calibration algorithm which is based on SABR. The SABR (Stochastic alpha, beta, rho) model is a stochastic volatility model, which is used to estimate the volatility smile in the derivatives market. For a more general overview of the general SABR model, please refer https://en.wikipedia.org/wiki/SABR_volatility_model.

calibration_param_names

Calibration parameter names. It is hard-coded here because it needs to be in this sequence.

term_by_day

Get all the terms in a surface in ascending order.

parameterization

The parameterized (and, thus, smoothed) version of this surface.

smile_points

The points across a smile.

It can be delta points, moneyness points or any other points that we might have in the future.

function_to_optimize

The function that we want to optimize.

default_initial_guess

Initial guess for parameters. We need to start with something.

strike_ratio

Bounds for moneyness (strike ratio of 1 is equivalent to 100% moneyness).

compute_parameterization

Returns a hash reference with new parameterization and calibration_error. These new parameters are calculated using the current parameterization values saved in cache if present, else it would use default parameterization.

my $new_values = $self->compute_parameterization; my $new_params = $new_values->{values}; my $new_calibration_error = $new_values->{calibration_error};

get_calibrated_surface

compute the calibrated surface with the parameters being passed. my $calibrated = $calibrator->get_calibrated_surface($parameters);

_calculate_calibrated_vol

The method that calculates calibrated vol using given parameters

_get_params_from

calculation metohds which mostly do "mathematical" jobs.

_calculate_skew

The calibration approach is based upon modeling the term structure of ATM Volatility and ATM Skew using exponential functions.

_calculate_kurtosis

kurtosis can be manipulated using a simple growth rate function. Kurtosis provides a symmetric control over the wings of a surface. Kurtosis basically shifts the wings of the curve in a symetric way.

_optimize

Algorithm change - now based on centroid calculations A function that optimizes a set of parameters against a function. This optimization method is based on Amoeba optimization. We use a form of the Downhill Simplex Method or Nelder-Mead (available as the R function optim). This can also be coded in other languages.

AUTHOR

Binary.com, <support at binary.com>

BUGS

Please report any bugs or feature requests to bug-volsurface-calibration-equities at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=VolSurface-Calibration-Equities. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command. perldoc VolSurface::Calibration::Equities You can also look for information at: