Processing math: 100%
Skip to contents

For the Pareto-jump compound Poisson process with index 0<α<1 and cutoff point x0, the corresponding Bernstein function is ψ(x)=1exx0+(x0x)αΓ(1α,x0x),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)k1Δkψ(x)=x0eux(1eu)kαx0αt1+αdu,x>0,k>0.

The Pareto Bernstein function has the Lévy density ν: ν(du)=αxα0uα+1,u>x0.

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

Slots

alpha

The index α

x0

The cutoff point x0

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