Untitled
unknown
python
9 months ago
2.6 kB
4
Indexable
################# # CELL 1 ################# auto_corr_res = {} z = 1.960 def fisher_transform(r): return 0.5 * np.log((1 + r) / (1 - r)) def inv_fisher_transform(x): return (np.exp(2 * x) - 1) / (np.exp(2 * x) + 1) def compute_auto_corr(x, n): return x.clip(-1, 1).corr(x.clip(-1, 1).shift(n)) def compute_upper_lower(x, lag): auto_corr = compute_auto_corr(x, lag) z_r = fisher_transform(auto_corr) n = len(x) - lag se = 1 / np.sqrt(n - 3) se_z = se * z u = z_r + se_z l = z_r - se_z return inv_fisher_transform(l), inv_fisher_transform(u) for error_col in col_taxon["error"]: error_series = trades_preds[error_col].dropna().clip(-1, 1) auto_corr = error_series.corr(error_series.shift(1)) n = error_series.shape[0] z_r = fisher_transform(auto_corr) se = 1 / np.sqrt(n - 3) se_z = se * z u = z_r + se_z l = z_r - se_z auto_corr_res[error_col] = { "corr": auto_corr, "lower": inv_fisher_transform(l), "upper": inv_fisher_transform(u), } auto_corr_df = pd.DataFrame(auto_corr_res).T auto_corr_df ################# # CELL 2 ################# error_cols_oi = col_taxon["error"] multi_autocorr_res = {} lags = range(1, 2001, 10) for error_col in tqdm(error_cols_oi): error_series = trades_preds[error_col].dropna().clip(-1, 1) auto_corrs = [] for lag in lags: auto_corrs.append(compute_auto_corr(error_series, lag)) multi_autocorr_res[error_col] = auto_corrs multi_autocorr_re_up = {} multi_autocorr_re_low = {} for error_col in tqdm(error_cols_oi): error_series = trades_preds[error_col].dropna().clip(-1, 1) auto_corrs_up = [] auto_corrs_low = [] for lag in lags: u, l = compute_upper_lower(error_series, lag) auto_corrs_up.append(u) auto_corrs_low.append(l) multi_autocorr_re_up[f"{error_col}"] = auto_corrs_up multi_autocorr_re_low[f"{error_col}"] = auto_corrs_low multi_autocorr_up = pd.DataFrame(multi_autocorr_re_up, index=lags) multi_autocorr_low = pd.DataFrame(multi_autocorr_re_low, index=lags) multi_autocorr = pd.DataFrame(multi_autocorr_res, index=lags) ################# # CELL 3 ################## plt.figure(figsize=(30, 20)) plt.title("ACF of All Trades, for selected models") for error_col in error_cols_oi: plt.fill_between( multi_autocorr.index, multi_autocorr_re_low[error_col], multi_autocorr_re_up[error_col], alpha=0.3, ) plt.plot(multi_autocorr[error_col], label=error_col) plt.legend()
Editor is loading...
Leave a Comment