Files
TR_Agent/PaPP v2/Analisi
Pietro GiacobazziandDevin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> 19c2e0ac72 PaPP v2: cartella Analisi (script, risultati, metodologia incroci)
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-06-17 07:40:41 +00:00
..

PaPP v2 — Analisi dei pattern di incrocio

Questa cartella contiene l'analisi statistica di cosa succede dopo che due linee si incrociano (le 9 linee del sistema: prezzo, Mediana, 7 MA), gli script per riprodurla e i risultati.

Risultati di riferimento: EURUSD D1, dal 1999 (l'euro reale esiste dal 1999; i dati pre-1999 forniti dal broker sono sintetici e vengono esclusi).


1. Da dove vengono i dati

I dati sono generati in MetaTrader dallo script PaPP v2/PaPP_CrossExport.mq5, ancorato a D1 esattamente come l'indicatore. Produce due file:

file contenuto
PaPP_crosses_<SYM>_D1.csv un record per ogni incrocio tra le 9 linee
PaPP_bars_<SYM>_D1.csv un record per ogni giorno D1 (la baseline)

Per ogni record sono salvati:

  • contesto al momento dell'evento: distanza dalla Mediana, ampiezza del cluster, trend (sopra/sotto MA365), e le metriche velocita' / accelerazione / volatilita' calcolate come mediana delle 7 scale (no ATR di MetaTrader);
  • esiti futuri a 1/3/5/10/20 giorni: rendimento, max favorevole/avverso, ritorno alla Mediana, e la traiettoria completa cret_1 … cret_20 (rendimento cumulato giorno per giorno, in percentuale).

Le 36 coppie sono tutte le combinazioni delle 9 linee; ogni coppia ha 2 direzioni (dir=+1 la 1a linea passa sopra la 2a, dir=-1 sotto) → 72 casi.


2. Le 3 correzioni metodologiche (perche' l'analisi e' "onesta")

Una media grezza dei rendimenti dopo un incrocio e' fuorviante. Abbiamo corretto i tre problemi tipici:

2.1 Bias di periodo → confronto con una baseline nello stesso regime

Non confrontiamo il rendimento post-incrocio con zero, ma con quello di un giorno qualunque nello stesso regime di mercato. Il regime e' definito da: trend (sopra/sotto MA365) × tercile del cluster × tercile della velocita'.

extra-rendimento = rendimento dopo l'incrocio rendimento medio della baseline nello stesso regime

Se l'extra e' ~0, l'incrocio non aggiunge nulla oltre al contesto. (Su EURUSD il drift di fondo della baseline e' risultato ~0, quindi non c'era un bias rialzista che gonfiava i numeri.)

2.2 "Movimenti piccoli" → effetto in unita' di volatilita'

L'extra-rendimento e' espresso anche come frazione della deviazione standard del movimento tipico a quell'orizzonte (eff = extra / sd_baseline_h), cosi' un +0.3% pesa diversamente a 5 o a 20 giorni.

2.3 Finestre sovrapposte + tanti test → bootstrap a blocchi + multi-test

  • Gli eventi vicini condividono il futuro (autocorrelazione) → la significativita' e' calcolata con block bootstrap (blocchi temporali di 20 giorni), non con il t-test classico.
  • Testiamo 72 casi × 5 orizzonti → alcuni "vincono" per fortuna. Applichiamo la correzione Benjamini-Hochberg (q-value): consideriamo robusti solo i casi con q < 0.10.

3. Verifiche di correttezza

Lo script full_table.py esegue 4 controlli automatici:

  • V1 la direzione registrata coincide col segno di (AB) all'incrocio (~99.9%);
  • V2 cret_1 coincide esattamente con ret_1 (differenza 0);
  • V3 ricalcolo indipendente della media di un pattern (combacia col summary);
  • V4 la baseline ha drift ~0 (atteso su FX).

4. Come riprodurre

# 1) genera i due CSV da MetaTrader (PaPP_CrossExport.mq5) e copiali in ./data
# 2) dalla cartella scripts:
cd scripts
python excess_analysis.py EURUSD 1999     # summary + top per orizzonte
python full_table.py      EURUSD 1999     # verifiche + tabella 72 casi
python plot_trajectories.py EURUSD 1999   # grafico traiettorie extra-rendimento

Dipendenze: pandas, numpy, matplotlib. I risultati finiscono in ./results.


5. Risultati principali (EURUSD, 1999+)

A) Mean-reversion (il segnale piu' robusto, vale per quasi tutte le coppie): dopo un incrocio il prezzo torna a toccare la Mediana entro 20 giorni nel 7794% dei casi, in 24 giorni mediani.

B) Edge direzionali significativi (q<0.10), legati alle scale lunghe:

  • SALGONO: MA365xMA7 +, MA365xMA182 ±, MA365xMA121 , MA121xMA7 +, MA121xMA3 +, PRICExMA121 ;
  • SCENDONO: MA182xMA30 +, MA365xMA121 + (forte a 20g);
  • gli incroci tra MA cortissime e prezzo↔MA brevi sono neutri (rumore).

Lettura onesta: gli edge direzionali sono reali ma modesti (~0.10.3 sigma, +0.20.5% di extra, 5559% di probabilita' di battere la baseline). Il tema ricorrente e' la MA121 (semestrale). I casi con pochi campioni (n<40) vanno trattati con cautela anche se "significativi".

Vedi results/tabella_incroci_EURUSD_1999.md per la tabella completa dei 72 casi.


6. Contenuto della cartella

Analisi/
├── README.md                 questo documento
├── scripts/
│   ├── _common.py            utility (load, regime, bootstrap, BH)
│   ├── excess_analysis.py    extra-rendimento + significativita'
│   ├── full_table.py         verifiche + tabella 72 casi
│   └── plot_trajectories.py  grafico traiettorie
├── results/
│   ├── summary_EURUSD_1999.csv
│   ├── tabella_incroci_EURUSD_1999.csv
│   ├── tabella_incroci_EURUSD_1999.md
│   └── trajectories_EURUSD_1999.png
└── data/
    └── README.md             dove mettere i CSV di input (non versionati)