Manuale Operativo · v3.0
Monitor 3v
Auto-Ottimizzatore Walk-Forward
Guida completa agli indicatori, al backtest quantitativo avanzato con stop-loss e timeout, all'ottimizzatore sequenziale a 3 fasi e al workflow operativo per pair trading su crypto futures.
Rolling OLS
Markov 5 Param
Walk-Forward IS/OOS
Stop-Loss + Timeout
Equity Curve
3 Fasi Sequenziali
Indice
01 OLS Z-Score
02 ΔZ — Accelerazione
03 Sparkline Refresh
04 Pausa Auto-Refresh
05 Hedge Ratio β
06 Correlazione ρ
07 Half-Life (OU)
08 Regime di Markov
09 ADF t-stat
10 Elimina Coppia ✦
11 Backtest OLS Avanzato ✦
12 Filtro Markov Backtest ✦
13 Auto-Ottimizzatore OLS ✦
14 Ottimizzatore Markov ✦
15 Ottimizzatore Direzione
16 Hedge Calculator
17 Workflow Operativo
Indicatori Principali
OLS Z-Score
Segnale principale di ingresso / uscita
01
Lo spread tra i due asset è calcolato via regressione OLS su log-prezzi su una finestra rolling (lookback). Il residuo viene normalizzato:
Z = (spread − μ) / σ. In Monitor 3v l'engine lavora su fino a 1000 barre storiche per il backtest/ottimizzazione, mantenendo la finestra rolling normale per il live.Z ≥ +2
SELL A · BUY B — spread troppo alto
Short A / Long B
Z ≤ −2
BUY A · SELL B — spread troppo basso
Long A / Short B
|Z| ≤ 0.5
Spread tornato alla media → exit trade
CHIUDI
|Z| 0 – 2
Nessun segnale operativo
NEUTRO
Usa sempre Z in combinazione con ρ ≥ 0.70 e Regime Mean-Rev. Un Z estremo in regime Trending è un falso segnale ad alta probabilità.
ΔZ — Accelerazione dello Spread
Freccia + valore sotto il Z · Timing dell'entry
02
ΔZ = Z_corrente − Z_precedente rispetto all'ultimo refresh da 60s. Indica se lo spread sta tornando verso la media (freccia verde) o si sta allontanando (freccia rossa). Non entrare mai con ΔZ in direzione contraria alla mean-reversion.Z > +2, ΔZ < 0 ↓
Spread alto e già in rientro — alta prob. mean-reversion
ENTRY ottimale
Z > +2, ΔZ > 0 ↑
Spread ancora in espansione — rischio continuazione
ASPETTA
Z < −2, ΔZ > 0 ↑
Spread basso e in risalita — condizione speculare
ENTRY ottimale
Z < −2, ΔZ < 0 ↓
Spread ancora in caduta — non anticipare
ASPETTA
Sparkline Z — Storico Refresh
Mini grafico SVG · Ultimi 15 refresh (~15 min) in sessione
03
Mostra l'evoluzione del Z negli ultimi 15 refresh da 60s. Non usa dati OLS storici — è la sequenza dei valori Z calcolati in sessione. Si azzera al reload. Lettura rapida: curva che inverte dal picco = mean-reversion in corso. Salita continua = trending, non operare.
Linea verde
|Z|>2 e in discesa verso zero — mean-rev in corso
Segnale confermato
Linea rossa
|Z|>2 e in salita — spread che si allontana
Segnale a rischio
Linea indigo
|Z|≤2 — nessun segnale attivo
Monitora
Pausa Auto-Refresh
Bottone ⏸ in header · Barra progresso sottile
04
Il monitor si aggiorna ogni 60 secondi. La barra indigo sotto l'header mostra il progresso. Il pulsante ⏸ congela completamente l'auto-refresh senza perdere lo stato — essenziale durante lettura del modale o calcolo sizing.
⏸ → barra gialla
Ring e barra si fermano. I dati rimangono invariati.
Pausa attiva
▶ → riprende
Continua dal secondo esatto — non ricomincia da zero
Ripresa esatta
⟳ Refresh manuale
Funziona sempre, anche in pausa
Ignora pausa
Attiva la pausa ogni volta che apri il modale dettaglio per leggere Markov, backtest e calcolare il sizing senza sovrascritture.
Indicatori Statistici
Hedge Ratio β
Rapporto di copertura delta-neutro · Label adattive al segnale Z
05
Coefficiente della regressione OLS:
log(A) = α + β · log(B) + ε. Definisce quante unità di B sono necessarie per ogni unità di A per essere market-neutral. Le label del Hedge Calculator si adattano al segno di Z automaticamente.β ≈ 1.0
Stessa esposizione dollare su A e B
Pair bilanciato
β > 1.0
B più volatile di A — ridurre nozionale B
Sbilanciato B
β < 1.0
A più volatile di B — ridurre nozionale A
Sbilanciato A
β instabile
Cambia molto tra refresh — ridurre lookback
Lookback troppo lungo
Correlazione ρ
Gate di qualità — Badge PASS / FAIL in ogni card
06
Correlazione di Pearson tra i log-prezzi nell'ultima finestra rolling. È il filtro di qualità: le card con ρ sotto soglia mostrano badge FAIL e lo Z viene oscurato. Senza correlazione sufficiente il concetto di spread mean-reverting non ha senso statistico.
ρ ≥ 0.85
Z-score affidabile — opera normalmente
Pair eccellente
0.70 ≤ ρ < 0.85
Segnali validi — aumenta cautela su size
PASS — Accettabile
ρ < 0.70
Pair non cointegrato nel periodo corrente
FAIL — Non operare
Half-Life (OU)
Velocità di mean-reversion · Modello Ornstein-Uhlenbeck · Calibra il Timeout
07
Stima il tempo medio (in barre) affinché lo spread torni a metà della distanza dalla media. Calcolato tramite AR(1):
HL = −ln(2) / ln(φ). In Monitor 3v guida anche il parametro Timeout: impostare maxBars ≈ 3× HL assicura che i trade non rimangano aperti su spread che non rientrano entro la finestra attesa.HL < 5 barre
Difficile da tradare — costi divorano il P&L
Troppo veloce
5 ≤ HL ≤ 30
Finestra operativa ideale per intraday/swing
Ottimale
30 < HL ≤ 100
Richiede capital allocation lunga, rischio regime
Lento
HL > 100 o 999
Spread ≈ random walk — non operare
Non mean-reverting
Regole pratiche: lookback ≈ 3–5× HL. Se HL = 20 barre → lookback 60–100. Timeout backtest ≈ 3× HL per evitare trade aperti oltre la finestra di reversion attesa.
Regime di Markov
Catena a 3 stati · 5 parametri configurabili · Ottimizzazione automatica
08
Classifica lo spread in 3 stati discreti tramite la soglia
thr: Basso (Z<−thr), Neutro (|Z|≤thr), Alto (Z>thr). Stima la matrice di transizione empirica su due finestre (recente + storica) combinate con peso wRecent. La probabilità P(MR) è la media delle probabilità di rientro dal basso e dall'alto.P(MR) = wRecent × P_win(stato→neutro) + (1−wRecent) × P_full(stato→neutro)
I 5 parametri: thr · winPct · pGreen · pRed · wRecent — tutti ottimizzabili
↩ Mean-Rev · P(MR) ≥ pGreen
Spread torna sistematicamente alla media (default pGreen = 0.55)
Verde — Opera
~ Incerto · pRed < P(MR) < pGreen
Regime in transizione — riduci size
Ambra — Cautela
→ Trending · P(MR) ≤ pRed
Spread persiste lontano dalla media (default pRed = 0.35)
Rosso — Stop
Regola operativa: opera solo quando |Z| ≥ entryZ AND Regime = Mean-Rev AND ΔZ conferma rientro. I 5 parametri Markov sono ottimizzabili automaticamente dall'Ottimizzatore Markov (sezione 14).
ADF t-stat
Test Augmented Dickey-Fuller · Direzione + Filtro preemptivo nell'Ottimizzatore
09
Verifica se lo spread è stazionario. In Monitor 3v viene usato in due contesti: nell'Ottimizzatore Direzione per confrontare A/B vs B/A, e come filtro preemptivo nella fase 1 dell'Auto-Ottimizzatore — ogni lookback con
|ρ₁| > 0.97 (AR(1), spread ≈ random walk) viene saltato senza sprecare combo sulla griglia soglie.t < −3.43
Cointegrazione molto forte — direzione affidabile
Stazionario (1%)
−3.43 ≤ t < −2.86
Accettabile — usa con cautela
Borderline (5%)
t ≥ −2.86
Spread non cointegrato — evita questa direzione
Non stazionario
Gestione Card e Backtest Avanzato NUOVO IN v3
Elimina Coppia Nuovo
Icona cestino direttamente nelle card · Griglia · Tabella · Basket triplet
10
In Monitor 3v ogni card porta un bottone cestino (icona trash-2) nella barra del titolo, a sinistra della stella preferiti. Disponibile in vista griglia (tenue a riposo, rossa al hover), nella vista tabella (colonna Azioni) e per le card triplet basket. Non richiede di aprire il modale.
Vista griglia — coppia normale
Trash-2 tenue a sinistra stella, hover rosso → toast conferma Sì/No
Click → toast
Vista tabella — colonna Azioni
Bottone rosso esplicito per ogni riga della tabella
Elimina riga
Vista griglia — basket triplet
Stessa posizione, chiama deleteBasketPair()
Elimina triplet
La cancellazione richiede conferma toast (Sì / No). La coppia viene rimossa da
monitor26.json e il monitor si aggiorna immediatamente.Backtest OLS Avanzato v3
4 parametri · 8 metriche · Stop-Loss su Z · Timeout in barre · Equity Curve canvas
11
Il motore
_btCore() simula la strategia mean-reversion sulla serie Z storica (fino a 1000 barre). In v3 è esteso con stop-loss su Z e timeout in barre e produce 8 metriche di qualità. Tutti e 4 i parametri aggiornano il backtest in tempo reale all'editing.Entry: |Z| ≥ entryZ [AND markovMask se filtro attivo]
Exit: |Z| ≤ exitZ OR segno cambia → profitto
Stop: |Z| ≥ stopZ (spread che diverge) → perdita forzata
Timeout: barre aperte ≥ maxBars → chiusura forzata
Costo round-trip stimato: 0.30% per trade
Entrata |Z| ≥
Soglia ingresso (default 2.0). Più alta → meno trade, qualità maggiore
entryZ
Uscita |Z| ≤
Soglia uscita (default 0.5). Zero = aspetta zero crossing
exitZ
Stop-Loss |Z| ≥
Chiusura forzata in perdita se Z continua a divergere (default 4.0)
stopZ
Timeout (barre)
Chiude il trade dopo N barre aperte (999 = disabilitato)
maxBars
ROI Netto
P&L lordo − costi, in % spread medio
Rendimento
Win Rate
≥ 55% su 20+ trade = statisticamente rilevante
% profittevoli
Tempo Medio
Confronta con Half-Life atteso per coerenza del timing
Holding period
Max Drawdown
Perdita cumulativa max peak-to-trough sull'equity curve
Rischio
Profit Factor
GrossWin / GrossLoss. ≥1.5 buono, ≥1.0 accettabile
Qualità segnale
Sharpe sui trade
mean/σ × √n_trade. Normalizzato per frequenza
Rendimento/rischio
Cons.Loss
Perdite consecutive massime — indicatore di drawdown psicologico
Serie nera
Equity Curve
Canvas P&L cumulativo per trade (verde = positivo, rosso = negativo)
Visuale storica
Il backtest manuale è in-sample sulla serie Z corrente. Usa l'Auto-Ottimizzatore (sezione 13) per ottenere una valutazione genuina out-of-sample tramite walk-forward split.
Filtro Markov nel Backtest Nuovo
Toggle ON/OFF · Rolling mask barra-per-barra · No look-ahead · Badge regime live
12
Il toggle Filtro Markov attiva una maschera rolling che permette entry solo nelle barre in cui il regime era Mean-Reverting al momento dell'ingresso. Calcolata barra-per-barra dalla funzione
_computeMarkovMask(): ogni posizione i usa solo dati [0..i-1], zero look-ahead. Il badge mostra il regime corrente della coppia.Toggle OFF
Backtest normale — entry su qualsiasi Z oltre la soglia
Nessun filtro
Toggle ON
Entry solo quando P(MR) ≥ pGreen con i markovSettings correnti
Filtro Markov
Badge regime
Emoji + P(MR)% corrente — stato live della coppia
Regime live
Il filtro usa i
state.markovSettings correnti. Se l'Ottimizzatore Markov è già stato eseguito e applicato, il filtro usa automaticamente i parametri ottimali. L'Auto-Ottimizzatore OLS rispetta il filtro: se attivo durante la ricerca, cerca i migliori parametri Z già con il Markov applicato.Auto-Ottimizzazione NUOVO IN v3
Auto-Ottimizzatore OLS v3
3 fasi sequenziali · ADF preemptivo · Walk-Forward IS/OOS · Scoring selezionabile · Top-5
13
Algoritmo riscritto in 3 fasi sequenziali che riducono le combo inutili del 60–70% mantenendo la qualità dei risultati. Tutto è configurabile prima del lancio tramite il pannello Configurazione Ottimizzatore (accordion sopra i bottoni, collassato di default).
▸ FASE 1 — Timeframe + Lookback (richiede fetch API, ~1–2s per TF)
Scarica 1000 barre per ogni TF della griglia. Per ogni lookback applica il filtro ADF preemptivo: se la serie Z ha autocorrelazione AR(1) |ρ₁| > 0.97, è praticamente un random walk — il lookback viene saltato immediatamente senza sprecare risorse. Sugli altri, usa una griglia Z ridotta (2 EZ, 1 XZ, 2 SZ) per ranking rapido. Conserva i 2 migliori TF+LB candidati.
▸ FASE 2 — EntryZ + ExitZ + StopZ + MaxBars (no fetch, su dati già in RAM)
Esegue la griglia fine completa solo sui 2 candidati sopravvissuti dalla fase 1. Split IS/OOS configurabile (slider 50–85%, default 70/30). Accumula tutti i risultati validi per il ranking top-5. Progress bar mostra avanzamento in tempo reale.
▸ FASE 3 — Markov (zero fetch, ~2s, opzionale)
Se "Markov auto" è spuntato nella config, esegue automaticamente l'ottimizzatore Markov usando i parametri OLS appena trovati come fissi. Attiva il filtro Markov se i parametri trovati migliorano il ROI.
Scarica 1000 barre per ogni TF della griglia. Per ogni lookback applica il filtro ADF preemptivo: se la serie Z ha autocorrelazione AR(1) |ρ₁| > 0.97, è praticamente un random walk — il lookback viene saltato immediatamente senza sprecare risorse. Sugli altri, usa una griglia Z ridotta (2 EZ, 1 XZ, 2 SZ) per ranking rapido. Conserva i 2 migliori TF+LB candidati.
▸ FASE 2 — EntryZ + ExitZ + StopZ + MaxBars (no fetch, su dati già in RAM)
Esegue la griglia fine completa solo sui 2 candidati sopravvissuti dalla fase 1. Split IS/OOS configurabile (slider 50–85%, default 70/30). Accumula tutti i risultati validi per il ranking top-5. Progress bar mostra avanzamento in tempo reale.
▸ FASE 3 — Markov (zero fetch, ~2s, opzionale)
Se "Markov auto" è spuntato nella config, esegue automaticamente l'ottimizzatore Markov usando i parametri OLS appena trovati come fissi. Attiva il filtro Markov se i parametri trovati migliorano il ROI.
⚡ Rapida (~15s)
TF corrente, 3 LB, 4 EZ, 3 XZ, 2 SZ — check veloce
Fast
⚙ Standard (~60s)
4 TF, 5 LB, 7 EZ, 4 XZ, 5 SZ, 3 MB — default consigliato
Standard
🔬 Profonda (~3-5min)
6 TF, 8 LB, 10 EZ, 5 XZ, 6 SZ, 4 MB — massima precisione
Deep
Parametri da ottimizzare
6 checkbox: TF · LB · Entry/Exit Z · Stop Z · Timeout · Markov auto. Se deselezionato usa il valore corrente come fisso.
Scelta libera
Split IS/OOS
Slider 50–85%. Default 70% IS / 30% OOS. Preview numerica in tempo reale.
Walk-Forward
Min Trades IS
Combo con meno trade nell'IS vengono scartate (default 5)
Filtro statist.
✂ 1 Split
Un solo taglio IS/OOS — più veloce
Standard
🔄 Rolling 3×
3 finestre scorrevoli. Combo accettata solo se ≥ 2/3 finestre OOS positive
Anti-overfit max
Bilanciato (default)
Calmar × √Trades × WinRate — equilibrio rischio / rendimento / frequenza
Raccomandato
Max ROI grezzo
Massimizza solo il rendimento — può premiare combo con pochi trade fortunati
Aggressivo
Max Sharpe
mean(returns)/σ × √n — ideale per portafogli multi-coppia
Portafoglio
Max Profit Factor
GrossWin / GrossLoss — focus puro sulla qualità del segnale
Qualità
Min Max Drawdown
Minimizza la perdita massima — per capitali da proteggere
Conservativo
Robustezza OOS
min(IS_roi, OOS_roi) — massima priorità all'anti-overfitting
Anti-overfit
6 parametri ottimali
TF · LB · EntryZ · ExitZ · StopZ · Timeout
Best combo
ROI In-Sample (IS)
Rendimento sul 70% usato per la ricerca
Training
ROI Out-of-Sample (OOS)
Verde = OOS > 0 e ≥ 25% IS (robusto). Rosso = overfitting
Validazione
Score composito
Valore del criterio scelto — confrontabile tra run diversi
Score
Top-5 candidati
Lista cliccabile: ogni riga applica quella combo immediatamente
Scelta manuale
"Applica al Monitor" scrive TF, Lookback, EntryZ, ExitZ, StopZ, Timeout nello
state globale e negli input del backtest. Il monitor usa i parametri ottimali dal prossimo refresh.Ottimizzatore Markov Nuovo
720 combo · Zero fetch API · IS/OOS · Confronto ROI con/senza filtro · Coverage
14
Il bottone "Ottimizza Markov" cerca i 5 parametri ottimali usando la
historyZ già in memoria — zero chiamate API, completato in ~2 secondi. Usa gli stessi parametri OLS correnti (o quelli appena trovati dall'ottimizzatore OLS) come fissi. Griglia: 5×4×4×3×3 = 720 combinazioni.Griglie di ricerca:
thr: [0.50, 0.75, 1.00, 1.25, 1.50] ← soglia stati basso/alto
winPct: [25%, 40%, 55%, 70%] ← ampiezza finestra recente
pGreen: [0.45, 0.52, 0.60, 0.65] ← soglia regime MR verde
pRed: [0.30, 0.38, 0.45] ← soglia regime trending
wRecent: [0.50, 0.65, 0.80] ← peso finestra recente vs storico
ROI + filtro IS
Rendimento IS con i parametri Markov ottimali applicati
Con filtro
ROI senza filtro IS
Baseline — stessa coppia e parametri OLS, senza Markov
Baseline
Coverage
% barre in regime MR — misura quanto è restrittivo il filtro
% barre attive
Il filtro è accettato solo se ROI+filtro > ROI senza filtro. Se la coppia non beneficia (già uniformemente MR), il pannello avvisa. "Applica Markov Ottimale" scrive i 5 parametri in
state.markovSettings e attiva il filtro nel backtest automaticamente.Strumenti di Analisi
Ottimizzatore Direzione
Icona ⇄ su ogni card · Punteggio composito A/B vs B/A
15
In OLS la scelta di quale asset è Y (dipendente) cambia β, spread e Z. L'ottimizzatore calcola entrambe le direzioni e assegna un punteggio composito. La direzione vincente definisce anche le label del Hedge Calculator.
ADF t-stat
Stazionarietà dello spread — più negativo = meglio
Peso 40%
Half-Life
Velocità di reversion — più basso = meglio
Peso 40%
|Z| corrente
Segnale d'ingresso più forte nella direzione
Peso 20%
Hedge Calculator
Sizing delta-neutro · Label Long/Short adattive al segnale Z
16
Calcola il nozionale di B dato l'importo su A:
$ B = $ A × β. Le label si aggiornano automaticamente in base al segno di Z, eliminando ogni ambiguità tra segnale e sizing.Z > 0 → Short A, Long B
Spread alto: A sopravvalutato rispetto a B
Vendi A · Compra B
Z < 0 → Long A, Short B
Spread basso: A sottovalutato rispetto a B
Compra A · Vendi B
Totale = $A + $B
Dividi il margine disponibile equamente tra le due gambe
Esposizione lorda
Workflow Operativo
Workflow Operativo Monitor 3v — 16 Step
1
Gestisci la lista — usa il cestino per rimuovere pair inattivi
Clicca l'icona trash-2 direttamente sulla card senza aprire il modale. Conferma nel toast. Mantieni la lista pulita per un'esperienza di monitoring chiara.
2
Seleziona exchange + timeframe + lookback iniziali
Inizia con 1h / 100 barre. L'Auto-Ottimizzatore affinerà tutto — questo è solo il punto di partenza. Regola: lookback ≈ 3–5× Half-Life atteso.
3
Verifica ρ ≥ 0.70 (badge PASS)
Se FAIL, cambia coppia o timeframe. Senza correlazione lo Z non ha significato statistico — non procedere oltre.
4
Controlla Half-Life e scegli la direzione
HL ottimale: 5–30 barre. Poi clicca ⇄ sulla card per l'Ottimizzatore Direzione — scegli la direzione con ADF più negativo e HL più basso prima di procedere.
5
Pausa ⏸ → Apri il modale dettaglio
Attiva sempre la pausa prima di aprire il modale per evitare sovrascritture durante la lettura. Il timer riprenderà dal secondo esatto della pausa.
6
Configura l'ottimizzatore — scegli modalità e criterio
Apri il pannello Configurazione (accordion). Per la prima volta: Standard / Bilanciato / 1 Split / Min Trades 5. Spunta "Markov auto" per eseguire le 3 fasi in sequenza automatica.
7
Lancia "Auto-Ottimizza OLS" — leggi la progress bar
Fase 1 (TF+LB) → Fase 2 (Soglie Z) → Fase 3 (Markov). La barra mostra l'avanzamento per fase. Al termine appare il pannello con IS ROI, OOS ROI, Score e Top-5.
8
Valuta IS vs OOS — scegli il candidato più robusto
OOS verde = positivo e ≥ 25% IS → robusto. OOS rosso = overfitting. Se il best è rosso, guarda il Top-5 e clicca il candidato con OOS migliore. Spesso il 2° o 3° è più sicuro del 1°.
9
Valuta il pannello Markov (se abilitato)
Controlla ROI+filtro vs ROI senza filtro e la Coverage. Se il filtro migliora il backtest, clicca "Applica Markov Ottimale al Monitor". Se la coverage è troppo bassa (<30%) valuta di rinunciare al filtro.
10
Applica le impostazioni — TF + LB + Soglie + Markov
"Applica al Monitor" scrive tutti i parametri OLS nello state globale. "Applica Markov Ottimale" scrive i 5 parametri Markov. Al prossimo refresh il monitor usa tutto in automatico.
11
Verifica Regime Markov live — badge sulla card
Opera solo con P(MR) ≥ pGreen (badge verde). In regime Trending o Incerto aspetta il cambio di regime. Non forzare entry contro la struttura del mercato — il filtro è ciò che distingue un setup valido da un falso segnale.
12
Attendi |Z| ≥ entryZ ottimale + ΔZ che conferma il rientro
Non usare più Z = 2 fisso — usa il valore ottimizzato. ΔZ deve essere in direzione della media (freccia verde). Se rossa = spread ancora in espansione, aspetta il prossimo refresh.
13
Leggi la sparkline — conferma visiva
Curva con picco + inversione = mean-rev in corso. Sparkline in salita continua = non operare. Usa la sparkline come terza conferma dopo Z e ΔZ.
14
Calcola il sizing con Hedge Calculator
Inserisci il nozionale su A → ottieni il nozionale su B per essere delta-neutro. Controlla che le label (Long/Short) corrispondano al segnale Z. Totale = $A + $B = esposizione lorda.
15
Gestisci il trade con Stop-Loss + Timeout
Applica gli stessi parametri stopZ e maxBars dell'ottimizzatore al trade reale. Se |Z| supera stopZ → chiudi in perdita immediata. Se il trade supera maxBars senza rientrare → chiudi a mercato. Non aspettare oltre.
16
Esci a |Z| ≤ exitZ — rivaluta periodicamente i parametri
Non aspettare il ritorno a zero perfetto. Ogni settimana (o dopo eventi macro rilevanti) riapri il modale e rilancia l'ottimizzatore in modalità Standard per aggiornare i parametri con dati più recenti — il mercato cambia, i parametri ottimali cambiano con esso.