Skip to content

Conversation

@JoseKling
Copy link
Owner

Implementing marked and multivariate Hawkes processes

Because of the increased complexity, I don't think there is a way to keep everything in a single type, like with Poisson processes, but still trying to follow as best as I can. I am keeping consistent with the implementation of History, where unmarked univariate histories have marks nothing and multivariate histories have integer marks.

For now, I am considering multivariate mutually exciting processes and univariate processes where marks affect the jump size. All with exponential kernel.

Ideas for improvement or generalization welcome.

- `HawkesProcess`
- `UnivariateHawkesProcess`
- `MultivariateHawkesProcess`
Everything else still not implemented.
@codecov
Copy link

codecov bot commented Nov 19, 2025

Codecov Report

❌ Patch coverage is 94.69027% with 18 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/hawkes/multivariate/intensity.jl 91.30% 6 Missing ⚠️
src/hawkes/multivariate/multivariate_hawkes.jl 80.95% 4 Missing ⚠️
src/hawkes/univariate/intensity.jl 93.44% 4 Missing ⚠️
src/hawkes/univariate/univariate_hawkes.jl 82.60% 4 Missing ⚠️

📢 Thoughts on this report? Let us know!

Changed file structure so each type of Hawkes process is in its own
folder.
`Intensity`, `simulation`, `time_change` and `fit` implemented for univariate
processes.
Missing `time_change` and `fit` for multivariate processes.
- UnivariateHawkesProcess encompasses UnmarkedUnivariateHawkesProcess
- MultivariateHawkesProcess implemented

Missing: fit method for multivariate Hawkes processes
@JoseKling
Copy link
Owner Author

Three variants of the Hawkes process.

Unmarked univariate Hawkes process

  • parameters $\mu, \alpha, \omega \in R_{\geq 0}$
  • event history - event times $t_1, \dots, t_n$

$$\lambda(t) = \mu + \sum_{t_j < t} \alpha ~ e^{-\omega (t - t_j)}$$

Marked univariate Hawkes process

  • parameters $\mu, \alpha, \omega \in R_{\geq 0}$
  • event history - marked times $(t_1, m_1), \dots, (t_n, m_n)$, $m_i \geq 0$

$$\lambda(t) = \mu + \sum_{t_j < t} \alpha ~ m_j ~ e^{-\omega (t - t_j)}$$

Unmarked multivariate Hawkes process

  • parameters $\mu, \omega \in R^d_{\geq 0}$, $\alpha \in R^{d \times d}_{\geq 0}$
  • event history - marked times $(t_1, m_1), \dots, (t_n, m_n)$, $m_i \in {1, \dots, d}$ (the marginal process)

$$\lambda_l(t) = \mu_l + \sum_{t_j < t} \alpha_{m_j, l} ~ e^{-\omega_l (t - t_j)}$$

Each marginal process has fixed base intensity and decay rate, and the jump intensity determines the influence of a marginal process on another.

Possible improvements (probably for a future PR)

  • A fit method for the multivariate Hawkes process
  • General kernel functions
  • Optimize intensity, ground_intensity and integrated_ground_intensity when the t argument is a vector (if this becomes a problem)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants