Untitled
unknown
python
a year ago
2.6 kB
8
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