Skip to content

Instantly share code, notes, and snippets.

@thistleknot
Last active March 12, 2023 01:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thistleknot/35baf8ce3254cc86ca18b556f851ea21 to your computer and use it in GitHub Desktop.
Save thistleknot/35baf8ce3254cc86ca18b556f851ea21 to your computer and use it in GitHub Desktop.
Stable Correlations
meansize = 4
corrsize = 4
mediansize = 4
commodities_rolling_mean_df = commodities_df.rolling(meansize).mean().dropna(thresh = len(commodities_df)-meansize-corrsize+2)
commodities_rolling_roll_corr_df = commodities_rolling_mean_df.rolling(corrsize).corr()
commodities_rolling_roll_corr_df
correlations = pd.DataFrame()
#correlations_pre = pd.DataFrame()
for c in commodities_rolling_roll_corr_df.columns:
#print(c)
aggregated = pd.DataFrame()
for i in commodities_rolling_mean_df.tail(len(commodities_df)-meansize-corrsize+2).index:
#print(i,c)
subset = commodities_rolling_roll_corr_df.loc[i,c]
aggregated = pd.concat([pd.DataFrame(subset),aggregated],axis=1)
median_cropped = aggregated.T[::-1].rolling(mediansize).median().tail(-corrsize-1)
#correlations_pre = pd.concat([correlations_pre,median_cropped],axis=1)
size_median_cropped_n = len(median_cropped)
correlations = pd.concat([correlations,median_cropped.median(axis=0)],axis=1)
correlations.columns = commodities_rolling_roll_corr_df.columns
crit_one_way = critical_95t2(mediansize)[0]
crit_two_way = critical_95t2(mediansize)[1]
highlights = (np.round(abs(correlations),2)!=1)>crit_one_way
correlations_masked = correlations.copy()
for c in correlations.columns:
for i in correlations.index:
#print(i,c)
if highlights.loc[i,c] == True:
correlations_masked.loc[i,c] = correlations_masked.loc[i,c]
else:
correlations_masked.loc[i,c] = ""
#flow_path = find_max_flow_pairs(correlations_masked)
correlations_masked
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment