For the past few weeks, I’ve been working on a case study that I’d like to describe. The intent is to build an MVP predictive analytics solution that explores the capabilities of Altaridey platform at level 2. “What is level 2”, you ask. In my platform demo and elsewhere, I describe a three-level hierarchy of capabilities of Altaridey. At Level 1, the platform computes a dynamic dependency matrix for the tracked time series and stops at that. Level 2 utilization is the usage of the dependency matrix from level 1 to compute a matrix of pairwise response functions, which enables us to make predictions about future behavior, given a set of observations of current and past behavior. Level 3 utilization involves dynamic control systems, and is mostly concerned with automating the application of insights gained at level 2.

So a level 2 usage is short of an envisioned maximum-value utilization of the platform, but it provides a good foundation for such a use case.


With that in mind, here are the specific aims of the study:

  1. Collect data on about 50 financial market data streams at minute intervals (ETF prices, ag futures, equity market internals).
  2. Recompute and snapshot the dependency matrix once every 100 intervals.
  3. Construct a Level 2 browser that rank-orders the magnitude of the N (N-1) possible pairwise responses obtained from the N tracked stream pairs.
  4. Simulate a trading strategy that selects the highest-response stream pair at each snapshot and trades that stream pair until the next snapshot.
  5. Compare the performance of this strategy to a baseline strategy of a correlation trade using randomly selected stream pairs connected by an edge.


The centerpiece of the browser is the by-now-familiar interactive graph interface seen in the platform demo. However, because we are generating snapshots of the graph at regular intervals, there is an additional switch that selects the dependency matrix to serve as the basis for the generated graph. To simplify the process of finding the highest-response pairwise interaction, the selection of a node in the graph launches the computation of all relevant response functions, and their sorting.

Browser interface with annotations

I will discuss the performance of the trading strategy in a future post, but I’d like to take a moment to discuss the meaning of the “dependency matrix” in the context of Altaridey, and to highlight some advantages of this definition over a conventional correlation matrix approach. I also want to describe the response function formalism and our technique for ranking the response, which becomes critical to our pair selection strategy.

Altaridey seeks to quantify dependency between time series by measuring correlation at a distance, or lagged correlation. In effect, this lagged correlation is a measure of causation, and thus enables us to construct a directed graph, where the direction of an edge indicates the direction of causation. In addition to measuring statistical effects, Altaridey computes something we call the knockout measure, analogous to gene knockout experiments in Biology, where we observe the response in a series to a loss of signal in another series. This knockout measure is melded with the statistical measures to find a dependency coefficient for each signal pair, which is the level 1 product of Altaridey.

At level 2, the dependency graph is converted into a set of coupled ODE’s that reflect the activation/inhibition relationships expressed by the graph. These equations are then integrated in time, subject to an initial pulse in one of the graph nodes (i.e. signals, i.e. time series). To identify the highest response in a given graph, we separately integrate for each of the N possible sets of initial pulses, where N is the total number of nodes in the dependency graph.