Modified to include a rolling mean of the past 4 quarters return prior to inputting it into a rolling 4 period correlation

I came up with an ingenious way to find stable time series correlations.

Using panda’s rolling function.

10 years, reduce to quarterly data.

corr_set = [[df.pct_change(1).rolling(4).corr()]]

then derive 2 pair combinations of corr_set.columns

iterate over those pairs (this can take a long time, this is where clustering comes in handy)

For a pair’s given set of correlations (for each set of 4 quarters) (i.e. rolling windows of 4 quarters means any given point is a measure of a year’s worth of correlations), which is a single list (1 value for each date). then find the median from this list.

If the median correlation is critical. Then you know half the dataset has a solid correlation identified. You also know this measure is the median correlation of returns within any given year period

I also derived the percent each 4 period set had positive and negative correlations which was always above 50% for only one side of either negative or positive (all correlations converged on positive correlations). So I simply display the median correlation found.

This is over a 10 year period.