How do I find multiple change points in an online dataset? I am trying to develop a Python based script connected to a SQLite3 database to identify distinct system changepoints in an "online" datastream.  Changepoint must be identified in less than 2 minutes after occurance.  Data is collected every 5 seconds and fed to the sqlite database.  Below is a data plot showing a sample data stream with change points manually indentified. 
I have reviewed papers discussing Singular Spectrum Analysis Algorithms and Direct Density Estimation to indentify the change points.  Admittedly both are over my head and seem complicated from a programing standpoint.  I've looked at using a moving mean or variation strategy but false positives show up and some change points have the same mean before and after the change point though its not very common.
Any thoughts on how to find change points given the type of data listed above?  
 A: Please find the description of the algorithm called SaRa here. It can be modified and used as an "online" version of Circular-Binary Segmentation algorithm.
HMM can be modified for your purposes (3 states: normal, above and below, after change point the state is switching to normal again, finding its location according to the online points in a robust way).
But you should also understand that your method will have some "resolution" and will not be able to detect short events if your noise level will be large enough.
Again, super-simple method is to look at mean/median ratio within a sliding window.
Also this paper can be considered as an answer.
A: This seems to be a classical anomaly detection question.
There are several tools for this kind of questions using Matrix Profile:
The details about Matrix Profile could be found here:
https://www.cs.ucr.edu/~eamonn/MatrixProfile.html
Tools that implement this method in Python can be found:

*

*https://tslearn.readthedocs.io/en/stable/auto_examples/misc/plot_matrix_profile.html#sphx-glr-auto-examples-misc-plot-matrix-profile-py

*https://github.com/TDAmeritrade/stumpy

*https://github.com/target/matrixprofile-ts
