Skip to contents

For the Pareto-jump compound Poisson process with index \(0 < \alpha < 1\) and cutoff point \(x0\), the corresponding Bernstein function is $$ \psi(x) = 1 - e^{-x x_0} + (x_0 x)^\alpha \Gamma(1-\alpha, x_0 x) , x>0 . $$

Details

For this Bernstein function, the higher-order alternating iterated forward differences are known in closed form but cannot be evaluated numerically without the danger of loss of significance. But we can use numerical integration (here: stats::integrate()) to approximate it with the following representation: $$ {(-1)}^{k-1} \Delta^k \psi(x) = \int_{x_0}^\infty e^{-ux} (1-e^{-u})^k \alpha \frac{{x_0}^\alpha}{t^{1+\alpha}} du, x>0, k>0 . $$

The Pareto Bernstein function has the Lévy density \(\nu\): $$ \nu(du) = \alpha \frac{x_0^\alpha}{u^{\alpha + 1}}, \quad u > x_0 . $$

The Pareto Bernstein function, in combination with a linear Bernstein function can be used to approximate the Bernstein function of an \(\alpha\)-stable subordinator, see Sec. 5.3 of (Loroño 2015) .

Slots

alpha

The index \(\alpha\)

x0

The cutoff point \(x_0\)

References

Loroño LF (2015). Selected topics in financial engineering: first-exit times and dependence structures of Marshall-Olkin Kind. Ph.D. thesis, University of the Basque Country.

Examples

# Create an object of class ParetoBernsteinFunction
ParetoBernsteinFunction()
#> An object of class "ParetoBernsteinFunction"
#> 	 (invalid or not initialized)
ParetoBernsteinFunction(alpha = 0.2, x0 = 1e-2)
#> An object of class "ParetoBernsteinFunction"
#> - alpha: 0.2
#> - x0: 0.01

# Create a Lévy density
bf <- ParetoBernsteinFunction(alpha = 0.7, x0 = 1e-2)
levy_density <- getLevyDensity(bf)
integrate(
  function(x) pmin(1, x) * levy_density(x),
  lower = attr(levy_density, "lower"),
  upper = attr(levy_density, "upper")
)
#> 0.1093688 with absolute error < 7.4e-05

# Evaluate the Bernstein function
bf <- ParetoBernsteinFunction(alpha = 0.3, x0 = 1)
calcIterativeDifference(bf, 1:5)
#> [1] 0.9421122 0.9865239 0.9963303 0.9989241 0.9996704

# Calculate shock-arrival intensities
bf <- ParetoBernsteinFunction(alpha = 0.8, x0 = 1e-2)
calcShockArrivalIntensities(bf, 3)
#> [1] 0.03709606 0.03709606 0.00846491 0.03709606 0.00846491 0.00846491 0.02132417
calcShockArrivalIntensities(bf, 3, tolerance = 1e-4)
#> [1] 0.037096063 0.037096063 0.008464909 0.037096063 0.008464909 0.008464909
#> [7] 0.021324170

# Calculate exchangeable shock-arrival intensities
bf <- ParetoBernsteinFunction(alpha = 0.4, x0 = 1e-2)
calcExShockArrivalIntensities(bf, 3)
#> [1] 0.04823193 0.02054932 0.14003630
calcExShockArrivalIntensities(bf, 3, tolerance = 1e-4)
#> [1] 0.04823193 0.02054932 0.14003630

# Calculate exchangeable shock-size arrival intensities
bf <- ParetoBernsteinFunction(alpha = 0.2, x0 = 1e-2)
calcExShockSizeArrivalIntensities(bf, 3)
#> [1] 0.12750303 0.07180652 0.37062172
calcExShockSizeArrivalIntensities(bf, 3, tolerance = 1e-4)
#> [1] 0.12750303 0.07180651 0.37062172

# Calculate the Markov generator
bf <- ParetoBernsteinFunction(alpha = 0.6, x0 = 1e-2)
calcMDCMGeneratorMatrix(bf, 3)
#>            [,1]       [,2]        [,3]       [,4]
#> [1,] -0.2257529  0.1306000  0.04112552 0.05402745
#> [2,]  0.0000000 -0.1822196  0.11448366 0.06773596
#> [3,]  0.0000000  0.0000000 -0.12497779 0.12497779
#> [4,]  0.0000000  0.0000000  0.00000000 0.00000000
calcMDCMGeneratorMatrix(bf, 3, tolerance = 1e-4)
#>            [,1]       [,2]        [,3]       [,4]
#> [1,] -0.2257529  0.1306000  0.04112552 0.05402745
#> [2,]  0.0000000 -0.1822196  0.11448366 0.06773596
#> [3,]  0.0000000  0.0000000 -0.12497779 0.12497779
#> [4,]  0.0000000  0.0000000  0.00000000 0.00000000