Skip to contents

The covariance matrix of the process noise accumulated over a sampling interval \(\Delta t\) in the linear stochastic differential equation model, i.e. $$ \boldsymbol{\Psi}_{\Delta t} = \int_{0}^{\Delta t} \exp \left( s \boldsymbol{\Phi} \right) \boldsymbol{\Sigma} \exp \left( s \boldsymbol{\Phi}^{\prime} \right) \mathrm{d} s , $$ where \(\boldsymbol{\Phi}\) is the drift matrix and \(\boldsymbol{\Sigma}\) is the covariance matrix of volatility or randomness in the process.

Usage

LinSDECovDeltaT(phi, sigma, delta_t = 1)

Arguments

phi

Numeric \(q \times q\) matrix. The drift matrix which represents the rate of change of the solution in the absence of any random fluctuations (\(\boldsymbol{\Phi}\)).

sigma

Numeric matrix. Symmetric matrix, usually the covariance matrix of volatility or randomness in the process (\(\boldsymbol{\Sigma}\)).

delta_t

Positive finite numeric scalar. Sampling interval \(\Delta t\).

Value

Returns a symmetric numeric matrix (\(\boldsymbol{\Psi}_{\Delta t}\)).

Details

The integral is computed with the block matrix exponential of Van Loan (1978), composed over subintervals so that strongly decaying drifts do not overflow. The drift may be singular (for example, \(\boldsymbol{\Phi} = \mathbf{0}\) gives \(\Delta t \boldsymbol{\Sigma}\)). The map is linear in \(\boldsymbol{\Sigma}\), so sigma may be any symmetric matrix, not only a covariance matrix. For a positive semidefinite sigma, the result is the process noise covariance psi_l %*% t(psi_l) returned by LinSDE2SSM().

References

Van Loan, C. F. (1978). Computing integrals involving the matrix exponential. IEEE Transactions on Automatic Control, 23(3), 395–404. doi:10.1109/TAC.1978.1101743

Author

Ivan Jacob Agaloos Pesigan

Examples

phi <- matrix(
  data = c(
    -0.357, 0.771, -0.450,
    0.0, -0.511, 0.729,
    0.0, 0.0, -0.693
  ),
  nrow = 3
)
sigma <- matrix(
  data = c(
    0.24455556, 0.02201587, -0.05004762,
    0.02201587, 0.07067800, 0.01539456,
    -0.05004762, 0.01539456, 0.07553061
  ),
  nrow = 3
)
LinSDECovDeltaT(
  phi = phi,
  sigma = sigma,
  delta_t = 1.0
)
#>             [,1]        [,2]         [,3]
#> [1,]  0.17479162 0.071389045 -0.045893045
#> [2,]  0.07138904 0.079226364  0.004766117
#> [3,] -0.04589305 0.004766117  0.058979885