PaPP v2: cartella Analisi (script, risultati, metodologia incroci)
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
parent
2070d44ce6
commit
19c2e0ac72
@@ -0,0 +1,43 @@
|
||||
"""Grafico delle traiettorie di extra-rendimento (giorno per giorno) dopo l'incrocio.
|
||||
|
||||
Disegna l'extra-rendimento cumulato (cret_1..20 - baseline stesso regime) per un
|
||||
insieme di pattern (default: i piu' consistenti legati alla MA121/MA365).
|
||||
|
||||
Uso:
|
||||
python plot_trajectories.py [SYMBOL] [YEAR_MIN]
|
||||
Output:
|
||||
../results/trajectories_<SYM>_<YEAR>.png
|
||||
"""
|
||||
import os, sys, numpy as np
|
||||
import matplotlib
|
||||
matplotlib.use("Agg")
|
||||
import matplotlib.pyplot as plt
|
||||
from _common import load_pair, add_regime, regime_edges, HERE
|
||||
|
||||
SYM = sys.argv[1] if len(sys.argv) > 1 else "EURUSD"
|
||||
YEAR = int(sys.argv[2]) if len(sys.argv) > 2 else 1999
|
||||
RESULTS = os.path.normpath(os.path.join(HERE, "..", "results"))
|
||||
HZ = list(range(1, 21))
|
||||
|
||||
cr, ba = load_pair(SYM, YEAR)
|
||||
edges = regime_edges(ba)
|
||||
cr = add_regime(cr, edges); ba = add_regime(ba, edges)
|
||||
bmean = {h: ba.groupby("regime")[f"cret_{h}"].mean() for h in HZ}
|
||||
bglob = {h: ba[f"cret_{h}"].mean() for h in HZ}
|
||||
|
||||
sel = [("MA121xMA7", 1), ("MEDxMA121", -1), ("PRICExMA121", -1), ("MA121xMA3", 1), ("MA365xMA7", 1)]
|
||||
plt.figure(figsize=(11, 6))
|
||||
for pair, d in sel:
|
||||
g = cr[(cr.pair == pair) & (cr.dir == d)]
|
||||
if len(g) < 20:
|
||||
continue
|
||||
exc = [(g[f"cret_{h}"] - g["regime"].map(bmean[h]).fillna(bglob[h])).mean() for h in HZ]
|
||||
plt.plot(HZ, exc, marker="o", ms=3, label=f"{pair} dir={d:+d} (n={len(g)})")
|
||||
plt.axhline(0, color="k", lw=.8)
|
||||
plt.title(f"{SYM} ({YEAR}+) - extra-rendimento medio vs baseline (stesso regime)")
|
||||
plt.xlabel("giorni dopo l'incrocio"); plt.ylabel("extra-rendimento cumulato (%)")
|
||||
plt.legend(); plt.grid(alpha=.3); plt.tight_layout()
|
||||
os.makedirs(RESULTS, exist_ok=True)
|
||||
outp = os.path.join(RESULTS, f"trajectories_{SYM}_{YEAR}.png")
|
||||
plt.savefig(outp, dpi=130)
|
||||
print("salvato:", outp)
|
||||
Reference in New Issue
Block a user