tick: A Python Library Where Point Processes and Proximal Optimization Meet
Module for statistical learning, with a particular emphasis on time-dependent modelling
At a glance
- What is it?
- tick is a Python 3 statistical learning library built around a generic optimization core, aimed at time-dependent models such as Hawkes point processes. It is a good fit if you need to infer or simulate Hawkes kernels, and a poor fit if you want a general-purpose ML toolkit.
- Who is it for?
- Adopt tick if your work is Hawkes process inference or simulation, or if you need a proximal solver exposed as a Python class, and you can accept a C++ build step and Python 3.5 or newer. Do not adopt it as a general tabular ML library; it has no model zoo and no pipeline abstractions, and its GLM support is one module among several.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 92 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The Gap tick Fills: Event Streams, Not Rows
Most Python machine learning libraries assume a table: rows are samples, columns are features, and the order of rows does not matter. tick assumes the opposite for a large part of its surface area. The README describes it as a module for statistical learning with a particular emphasis on time-dependent modeling, and the concrete object it targets is the point process, where the data is a sequence of event times and the question is what drives the rate at which those events arrive. The intended users are researchers and engineers working on event data: the README lists pharmacovigilance signal detection with the French national social security, high-frequency order book modeling in finance, and information propagation on Twitter during the 2017 French presidential campaign. Those three cases share a structure. You have several interacting event types, you suspect past events raise or lower the intensity of future ones, and you want parameters that quantify that influence. A logistic regression on aggregated counts throws away the timing; tick keeps it.
What the Optimization Core Actually Exposes
The README is explicit that the core of the library is an optimization module, and that the inference and simulation tools sit on top of it. That module is described as providing model computational classes, solvers, and proximal operators for regularization. The proximal piece is the design decision worth noting: rather than special-casing each regularizer inside each solver, tick separates the smooth part of an objective from the non-smooth penalty and lets a proximal operator handle the latter. That is what makes the same solver machinery usable for a sparse Hawkes model and for a penalized generalized linear model. The library also ships linear, logistic, and Poisson regression, and it can simulate Hawkes processes with what the README calls standard or exotic kernels. The inference side is narrower and more specific: exponential kernels, sums of exponentials, linear combinations of basis kernels, and sparse interactions. That list is the honest description of the model family. If your kernel is not expressible as a combination of the basis functions the library provides, the inference path is not going to cover you, and the README does not claim otherwise.
Installing tick and the C++ Build Step
Installation is a single command: pip install tick. The README warns that installation may take a few minutes because it builds and links C++ extensions, which is the practical detail that matters most for anyone scripting a container build or a CI job. The verification step is equally short: python3 -c "import tick;" should produce no error. If the extensions fail to link, that import is where you find out, not at model fit time. Source builds are handled separately and the README points to an INSTALL document in the repository rather than inlining the steps. Platform support is stated plainly: Linux and OSX are the supported targets, and Windows is described as experimental. Python 3.5 or newer is required. The library is released with support from Intel and uses the Intel Math Kernel Library, which the README frames as a performance matter for Xeon and Xeon Phi processors. One caveat worth flagging: the README does not list the Python dependencies inline, only telling you to have the required dependencies in your environment, so you will need to check the packaging metadata or the INSTALL document before pinning a reproducible environment.
The Windows and Kernel Constraints You Should Weigh First
Two limitations are stated by the project itself rather than inferred. The first is the Windows build, labelled experimental. An experimental platform label in a library whose install step compiles and links C++ extensions is a real risk, not a formality, because the failure mode is a build error rather than a degraded feature. The second is the kernel vocabulary. Hawkes inference in tick covers exponential kernels, sums of exponentials, basis-kernel combinations, and sparse interactions. That is a broad but bounded family. A power-law kernel, which is common in seismology and in some network cascade work, is not in that list. There is also a structural limitation that follows from the design: because the optimization core is generic, you are expected to assemble the model. tick is not a framework that will pick a link function for you or cross-validate a pipeline. The README's own framing, that the inference and simulation tools are intended for end-users, sits a level above a scikit-learn style estimator interface, and anyone expecting fit and predict on a Hawkes object should read the examples before assuming that shape.
tick Compared with statsmodels for Point Processes
The obvious alternative for a Python user who needs regression and time series models is statsmodels. The difference in approach is architectural. statsmodels is a statistics library organised around model classes with formula interfaces, summary tables, and a very wide catalogue of estimators, from ARIMA to discrete choice models. Point process support there is limited and not the centre of gravity. tick inverts the priority: its centre of gravity is the proximal optimization core, and the regression models are a layer on top of it. Practically, that means if you want a Hawkes likelihood with an L1 penalty on the interaction matrix, tick is built for exactly that composition, while in statsmodels you would be assembling the likelihood and the penalty yourself. The trade runs the other way for breadth. If your task is a standard GLM with a clean summary output, statsmodels will give you the inferential apparatus and tick will give you a solver. Choose based on whether the point process is the subject of your work or an accessory to it.
Maintenance, Releases, and the BSD-3-Clause Terms
The repository is not archived and the last push recorded is June 2026, with three releases in the 0.8.0 line between April and May 2026. The version numbering, 0.8.0.0 then 0.8.0.1 then 0.8.0.2 within weeks, suggests patch-level activity rather than a stable 1.0 API, and nothing in the supplied material promises API stability across minor versions. Budget for upgrade work if you pin to a specific 0.8.0.x build and later move. On licensing: tick is distributed under the 3-Clause BSD licence, per the README and the LICENSE.txt file it references. That is a permissive licence, which in general terms means you can use, modify and redistribute the code provided the copyright notice and licence text are retained, and it does not carry the copyleft obligations of the GPL family. This is a description of what the licence identifier means, not legal advice; if you are embedding tick in a distributed product, have your own counsel read LICENSE.txt. The README also asks for a citation via the arXiv paper 1707.03003 if you use tick in a scientific publication, which is a request rather than a licence condition.
Who Should Install tick and What to Check First
The decision turns on one question: is your primary object a point process with interactions you want to estimate? If yes, tick is one of the few Python libraries that puts Hawkes inference and simulation next to a proximal solver, and the pip install path is short. If your work is tabular prediction, time series forecasting with seasonal components, or deep learning, tick is the wrong tool and the README does not pretend otherwise. The first thing to verify is the build: run the install and the import check on the exact platform and Python version you intend to deploy, because a C++ extension that links on your laptop may not link in a slim container image. The second is model coverage: open the auto_examples gallery linked from the README and confirm that an example matches your kernel assumption, since the documented inference options are exponential kernels, sums of exponentials, basis combinations, and sparse interactions, and a mismatch there is a dead end rather than a tuning problem.
Editorial conclusion
Adopt tick if your work is Hawkes process inference or simulation, or if you need a proximal solver exposed as a Python class, and you can accept a C++ build step and Python 3.5 or newer. Do not adopt it as a general tabular ML library; it has no model zoo and no pipeline abstractions, and its GLM support is one module among several. Before committing, run pip install tick and then python3 -c "import tick;" to confirm the compiled extensions link on your platform, and check whether the exponential-kernel Hawkes learner in the auto_examples gallery matches the kernel shape your data actually needs.
Community notes