ARG model¶
The code is an implementation of ARG model given in [R1]. Its major features include:
- simulation of stochastic volatility and returns
- estimation using both MLE and GMM
- option pricing
References¶
[R1] | Stanislav Khrapov and Eric Renault (2014) “Affine Option Pricing Model in Discrete Time”, working paper, New Economic School. <http://goo.gl/yRVsZp> |
[R2] | Christian Gourieroux and Joann Jasiak (2006) “Autoregressive Gamma Processes”, 2006, Journal of Forecasting, 25(2), 129–152. doi:10.1002/for.978 |
[R3] | Serge Darolles, Christian Gourieroux, and Joann Jasiak (2006) “Structural Laplace Transform and Compound Autoregressive Models” Journal of Time Series Analysis, 27(4), 477–503. doi:10.1111/j.1467-9892.2006.00479.x |
Class documentation¶
-
class
argamma.arg.
ARG
(param=None)[source]¶ Class for ARG model.
\[E\left[\left.\exp\left\{ -uY_{t}\right\} \right|Y_{t-1}\right] =\exp\left\{ -a(u)Y_{t-1}-b(u)\right\}\]Attributes
vol Volatility series ret Asset return series param Parameters of the model maturity Maturity of the option or simply time horizon. Fraction of a year, i.e. 30/365 riskfree Risk-free rate of return per day Methods
afun
(uarg, param)Function a(). bfun
(uarg, param)Function b(). cfun
(uarg, param)Function c(). plot_abc
(uarg, param)Plot a() and b() functions on the same plot. vsim
([nsim, nobs, param])Simulate ARG(1) process for volatility. vsim2
([nsim, nobs, param])Simulate ARG(1) process for volatility. rsim
([param])Simulate returns given ARG(1) process for volatility. load_data
([vol, ret])Load data into the model object. estimate_mle
([param_start, model, bounds])Estimate model parameters via Maximum Likelihood. estimate_gmm
([param_start, model])Estimate model parameters using GMM. cos_restriction
()Restrictions used in COS method of option pricing. charfun
(varg)Risk-neutral conditional characteristic function. option_premium
([vol, moneyness, maturity, ...])Model implied option premium via COS method. -
afun
(uarg, param)[source]¶ Function a().
\[a\left(u\right)=\frac{\rho u}{1+cu}\]Parameters: uarg : array
Grid
param : ARGparams instance
Model parameters
Returns: array
Same dimension as uarg
-
bfun
(uarg, param)[source]¶ Function b().
\[b\left(u\right)=\delta\log\left(1+cu\right)\]Parameters: uarg : array
Grid
param : ARGparams instance
Model parameters
Returns: array
Same dimension as uarg
-
cfun
(uarg, param)[source]¶ Function c().
\[c\left(u\right)=\delta\log\left\{1+\frac{cu}{1-\rho}\right\}\]Parameters: uarg : array
Grid
param : ARGparams instance
Model parameters
Returns: array
Same dimension as uarg
-
charfun
(varg)[source]¶ Risk-neutral conditional characteristic function.
Parameters: varg : array
Grid for evaluation of CF. Real values only.
Returns: array
Same dimension as varg
Notes
This method is used by COS method of option pricing
-
estimate_gmm
(param_start=None, model='vol', **kwargs)[source]¶ Estimate model parameters using GMM.
Parameters: param_start : ARGparams instance
Starting value for optimization
model : str
- Type of the model to estimate. Must be in:
- ‘vol’
- ‘ret’
- ‘joint’
uarg : array
Grid to evaluate a and b functions
zlag : int, optional
Number of lags in the instrument. Default is 1
Returns: param_final : ARGparams instance
Estimated model parameters
mygmm.Results instance
GMM estimation results
-
estimate_mle
(param_start=None, model=None, bounds=None)[source]¶ Estimate model parameters via Maximum Likelihood.
Parameters: param_start : ARGparams instance, optional
Starting value for optimization
model : str
- Type of model to estimate. Must be in:
- ‘vol’
- ‘ret’
- ‘joint’
bounds : list of tuples
Bounds on parameters, i.e. [(min, max)]
Returns: param_final : ARGparams instance
Estimated parameters
results : OptimizeResult instance
Optimization output
-
load_data
(vol=None, ret=None)[source]¶ Load data into the model object.
Parameters: vol : (nobs, ) array
Volatility time series
ret : (nobs, ) array
Return time series
Model implied option premium via COS method.
Parameters: vol : array_like
Current variance per day
moneyness : array_like
Log-forward moneyness, np.log(strike/price) - riskfree * maturity
maturity : float, optional
Maturity of the option or simply time horizon. Fraction of a year, i.e. 30/365
riskfree : float, optional
Risk-free rate of return per day
call : bool array_like
Call/Put flag
data : pandas DataFrame, record array, or dictionary of arrays
Structured data. Mandatory labels: vol, moneyness, maturity, riskfree, call
npoints : int
Number of points on the grid. The more the better, but slower.
Returns: array_like
Model implied option premium via COS method
-
rsim
(param=None)[source]¶ Simulate returns given ARG(1) process for volatility.
Parameters: param : ARGparams instance
Model parameters
Returns: (nobs, nsim) array
Simulated data
-
vsim
(nsim=1, nobs=100, param=None)[source]¶ Simulate ARG(1) process for volatility.
\[\begin{split}Z_{t}|Y_{t-1}&\sim\mathcal{P}\left(\beta Y_{t-1}\right)\\ Y_{t}|Z_{t}&\sim\gamma\left(\delta+Z_{t},c\right)\end{split}\]Parameters: nsim : int
Number of series to simulate
nobs : int
Number of observations to simulate
param : ARGparams instance
Model parameters
Returns: (nobs, nsim) array
Simulated data
-
vsim2
(nsim=1, nobs=100, param=None)[source]¶ Simulate ARG(1) process for volatility.
Uses non-central Chi-square distribution to simulate in one step.
Parameters: nsim : int
Number of series to simulate
nobs : int
Number of observations to simulate
param : ARGparams instance
Model parameters
Returns: (nobs, nsim) array
Simulated data
-