Formazione sui metodi di ricerca · Quantic Eagle opera solo con capitale proprio. Non gestisce fondi di terzi né offre consulenza finanziaria o segnali di trading.

Quantic Eagle / Research Editions

Dossier di ricerca

Esempio inventato — tre casi con errori intenzionali

Hai concluso una simulazione e vuoi decidere se continuare la ricerca o correggere un problema. Il dossier raccoglie risultati, file e controlli mancanti per spiegare la scelta e permettere a un’altra persona di esaminarla.

Qui equity indica il valore osservato del conto, comprensivo di profitti o perdite non realizzati sulle posizioni aperte. Il saldo (balance) non include quei profitti o perdite non realizzati. Gli strumenti Python leggono questi valori dai file di input: non ricostruiscono osservazioni mancanti e non verificano il metodo di valutazione utilizzato dalla fonte.

Questo dossier usa soltanto dati sintetici: è una dimostrazione, non una valutazione di una strategia di trading.

Questo esempio inventato contiene quattro rapporti: uno misura il calo del conto e tre rilevano anomalie introdotte apposta per provare i controlli.

Il saldo del conto non scende mai: il suo drawdown è 0%. Contando anche guadagni e perdite delle posizioni aperte, il valore del conto scende invece del 13,86% da un massimo precedente. È il calo visibile nelle 12 osservazioni disponibili; fra due rilevazioni potrebbe essere stato maggiore.

Puoi riprodurre sul tuo computer il rapporto «Lavoro assegnato e risultati ricevuti»: in fondo trovi programma, input difettoso e corretto, comandi e risultato atteso. Gli altri tre rapporti sono consultabili, ma qui non sono forniti tutti gli input e il codice per rigenerarli. Nessun rapporto certifica una strategia o la provenienza dei dati. Un hash permette di confrontare l’identità di un file; non dimostra che il suo contenuto sia corretto.

La prossima decisione

Correggi le anomalie, conserva anche i casi di test con anomalie intenzionali e ripeti i controlli interessati. Prima di impiegare capitale reale occorre verificare anche costi, rischio, tempistiche di selezione del modello e di esecuzione, e stabilire chi è responsabile della decisione. L’assenza di anomalie in questi controlli non autorizza l’impiego del sistema in operatività reale.

Rapporti presenti nel dossier

  • Valore del conto osservato
  • Confronto fra i registri delle decisioni
  • Lavoro assegnato e risultati ricevuti
  • Osservazioni richieste dal calcolo

Ogni rapporto risponde alla domanda indicata nel titolo. Leggi gli input, le segnalazioni e i limiti della relativa scheda. Per le verifiche elencate come mancanti non è stato fornito un rapporto.

Controlli senza rapporto di verifica: Quando erano disponibili i dati, Dati per imparare e dati per valutare, Confronto fra le due classifiche

NON VALUTATO: esecuzione degli ordini da parte del broker · inclusione di tutti i costi · storia della selezione · rendimenti futuri

equity / RISULTATO DESCRITTIVO

Valore del conto osservato

Drawdown sulle osservazioni disponibili (%)

0%13,86%

Osservazioni
12

Drawdown massimo osservato
13,86%

Il programma legge i valori del conto presenti nel CSV e misura la caduta da ogni massimo precedente. Il numero delle osservazioni indica quanti valori ha letto. Non ricostruisce i minimi fra due rilevazioni: con dati giornalieri, una perdita durante la giornata può restare invisibile.

Hash dichiarati dei file di input

bcd623762610ef5fdb589b8ed44abe8db08c0778439ee4578dc7c82d4fcfecea

SHA-256 del rapporto di verifica (JSON)

d32726be5684916c19fbaa1f25b95166c65db961f6cc2b10c969a0a2109e8743
Rapporto di verifica e dettagli tecnici
{
  "version": "2.0.0-pilot",
  "command": "equity",
  "input_sha256": "bcd623762610ef5fdb589b8ed44abe8db08c0778439ee4578dc7c82d4fcfecea",
  "parameters": {
    "command": "equity",
    "assume_no_flows": false,
    "initial_groups": 3,
    "test_groups": 2,
    "gap_seconds": 0,
    "top_k": 3
  },
  "result": {
    "scope": "observed_samples_only",
    "observations": 12,
    "first": "2026-01-01T00:00:00Z",
    "last": "2026-01-12T00:00:00Z",
    "largest_gap_seconds": 86400.0,
    "cash_flow_basis": "supplied_zero_flow_column",
    "equity": {
      "max_drawdown_pct": 13.861386138613863,
      "peak_row": 3,
      "trough_row": 6,
      "underwater_pct": [
        0.0,
        4.0,
        0.0,
        2.9702970297029703,
        8.91089108910891,
        13.861386138613863,
        0.0,
        4.901960784313726,
        7.8431372549019605,
        0.0,
        2.912621359223301,
        0.0
      ]
    },
    "balance": {
      "max_drawdown_pct": 0.0,
      "peak_row": 1,
      "trough_row": 1,
      "underwater_pct": [
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0,
        0.0
      ]
    },
    "not_assessed": [
      "between_sample_drawdown",
      "overfitting",
      "temporal_leakage",
      "cost_completeness",
      "broker_accuracy",
      "future_profitability"
    ]
  }
}
trace / ANOMALIE

Confronto fra i registri delle decisioni

Stai riscrivendo la funzione che sceglie gli acquisti e vuoi verificarla prima di sostituire quella in uso. I due registri descrivono la stessa decisione sui titoli inventati A e B: il modello attribuisce 0,7 ad A e 0,6 a B, entrambi acquistabili. Nel primo registro il programma seleziona A; nel secondo B. selected indica il titolo scelto (1) o escluso (0); size è la quantità richiesta, qui una sola azione del titolo selezionato. Cambiano quindi due righe, una per A e una per B. Questi registri conservano punteggi e scelte, ma non il passaggio di codice che li collega: il rapporto rileva la differenza, senza provarne la causa. Nel caso inventato del Museo puoi invece seguire e riprodurre un meccanismo preciso: riordinare i titoli senza riordinare i punteggi. Non abbiamo calcolato quale acquisto sarebbe stato più redditizio.

Anomalie rilevate
2

Prima differenza
Selezione (selected)

Il programma confronta gli stessi identificativi nei due registri e, per ciascuno, legge i campi in un ordine fissato: data della decisione, punteggio, direzione, ammissibilità, selezione e quantità. “Prima differenza” indica la prima discrepanza in questo confronto, non la causa dimostrata del problema né necessariamente il primo evento nel tempo. I passaggi assenti da entrambi i registri e gli eseguiti del broker non sono verificati.

Che cosa indicano le segnalazioni

  • Identificativo: A. Campi diversi: selected, size.
  • Identificativo: B. Campi diversi: selected, size.

Hash dichiarati dei file di input

45eccbc4320b3a0c140d88391cec536720c98e9ae8cadd4855690c6db8f42aabb0ba1fcbcedfdfe40c98dfd04c2c33791bd923232cbbc4aea9f9b2c973e4cd56

SHA-256 del rapporto di verifica (JSON)

0aedbb66973443a80650f797b501e57f0be78103f829a3c20b27976255bd2092
Rapporto di verifica e dettagli tecnici
{
  "version": "3.0.0-pilot",
  "command": "trace",
  "input_sha256": [
    "45eccbc4320b3a0c140d88391cec536720c98e9ae8cadd4855690c6db8f42aab",
    "b0ba1fcbcedfdfe40c98dfd04c2c33791bd923232cbbc4aea9f9b2c973e4cd56"
  ],
  "result": {
    "scope": "declared_trace_only_not_execution_or_cost_parity",
    "issues": [
      {
        "id": "A",
        "stage": "selected",
        "changed_fields": [
          "selected",
          "size"
        ],
        "left": {
          "selected": "1",
          "size": 1.0
        },
        "right": {
          "selected": "0",
          "size": 0.0
        }
      },
      {
        "id": "B",
        "stage": "selected",
        "changed_fields": [
          "selected",
          "size"
        ],
        "left": {
          "selected": "0",
          "size": 0.0
        },
        "right": {
          "selected": "1",
          "size": 1.0
        }
      }
    ],
    "left_rows": 2,
    "right_rows": 2,
    "exact_match": false,
    "first_difference": {
      "id": "A",
      "stage": "selected",
      "changed_fields": [
        "selected",
        "size"
      ],
      "left": {
        "selected": "1",
        "size": 1.0
      },
      "right": {
        "selected": "0",
        "size": 0.0
      }
    },
    "not_assessed": [
      "missing_stages_in_both_traces",
      "broker_fills",
      "source_code_closure",
      "cost_model"
    ]
  },
  "verdict": "ANOMALIES"
}
batches / ANOMALIE

Lavoro assegnato e risultati ricevuti

Prima di ripetere un backtest vuoi sapere quali fonti correggere. Chiedi a due assistenti AI di cercare date incoerenti e valori mancanti in quattro CSV, A, B, C e D: assegni A e B al primo, C e D al secondo. Nel caso inventato ogni risposta contiene invece una scheda per tutti e quattro i file. Ricevi otto schede sugli stessi quattro CSV, non otto fonti nuove: devi confrontare i rapporti ripetuti e riconciliare le segnalazioni prima di decidere quali dati correggere. Il controllo qui sotto segnala quattro schede fuori incarico e quattro ripetizioni, otto anomalie in totale; i due criteri possono riguardare lo stesso file. Una consegna corretta contiene una scheda per ogni file assegnato, senza le schede dell’altro incarico. Questo programma verifica gli identificativi dichiarati; non prova quali file siano stati realmente letti, la qualità dell’analisi o l’indipendenza dei giudizi. Nel Museo il bisogno è diverso: un secondo parere sugli stessi originali, senza mostrare al secondo revisore il verdetto precedente.

Anomalie rilevate
8

Risultati distinti richiesti
4

Un batch è un gruppo di elementi assegnati alla stessa richiesta. Il controllo confronta gli identificativi assegnati con quelli presenti nei risultati restituiti. Un risultato può generare più segnalazioni, per esempio perché riguarda un elemento non assegnato a quella richiesta ed è anche duplicato. Il conteggio delle anomalie non equivale quindi al numero di problemi indipendenti e non misura la qualità delle analisi.

Che cosa indicano le segnalazioni

  • Identificativo: C. Richiesta: one. La risposta contiene un risultato che non era assegnato a questa richiesta.
  • Identificativo: D. Richiesta: one. La risposta contiene un risultato che non era assegnato a questa richiesta.
  • Identificativo: A. Richiesta: two. La risposta contiene un risultato che non era assegnato a questa richiesta.
  • Identificativo: A. Richiesta: two. Questo risultato è stato restituito più di una volta.
  • Identificativo: B. Richiesta: two. La risposta contiene un risultato che non era assegnato a questa richiesta.
  • Identificativo: B. Richiesta: two. Questo risultato è stato restituito più di una volta.
  • Identificativo: C. Richiesta: two. Questo risultato è stato restituito più di una volta.
  • Identificativo: D. Richiesta: two. Questo risultato è stato restituito più di una volta.

Hash dichiarati dei file di input

789fe77a3db498e27a400055108c93bd08d488cbbce96e95b26148c1477e60e2

SHA-256 del rapporto di verifica (JSON)

775b59048763d693a21efd1b8083ad4913edda11118942492bc02f5f9a91e943
Rapporto di verifica e dettagli tecnici
{
  "version": "3.0.0-pilot",
  "command": "batches",
  "input_sha256": [
    "789fe77a3db498e27a400055108c93bd08d488cbbce96e95b26148c1477e60e2"
  ],
  "result": {
    "scope": "declared_identity_partition_only",
    "targets": 4,
    "issues": [
      {
        "code": "RESPONSE_OUTSIDE_REQUEST",
        "batch": "one",
        "id": "C"
      },
      {
        "code": "RESPONSE_OUTSIDE_REQUEST",
        "batch": "one",
        "id": "D"
      },
      {
        "code": "RESPONSE_OUTSIDE_REQUEST",
        "batch": "two",
        "id": "A"
      },
      {
        "code": "DUPLICATE_RESPONSE",
        "batch": "two",
        "id": "A"
      },
      {
        "code": "RESPONSE_OUTSIDE_REQUEST",
        "batch": "two",
        "id": "B"
      },
      {
        "code": "DUPLICATE_RESPONSE",
        "batch": "two",
        "id": "B"
      },
      {
        "code": "DUPLICATE_RESPONSE",
        "batch": "two",
        "id": "C"
      },
      {
        "code": "DUPLICATE_RESPONSE",
        "batch": "two",
        "id": "D"
      }
    ],
    "not_assessed": [
      "answer_quality",
      "model_context",
      "economic_benefit",
      "retry_idempotency"
    ]
  },
  "verdict": "ANOMALIES"
}
windows / ANOMALIE

Osservazioni richieste dal calcolo

Stai preparando un indicatore da passare alla regola che decide un acquisto. Prima del calcolo devi avere tutti i prezzi previsti dalla sua finestra. Il calendario inventato di questo rapporto richiede 1, 2 e 3 gennaio 2026; il file contiene soltanto il giorno 1 con valore 11 e il giorno 3 con valore 13. Per la decisione del giorno 3 manca dunque il valore del 2 gennaio. Il rapporto segnala MISSING_OBSERVATION, così puoi fermare la preparazione prima che un input incompleto raggiunga la regola o il modello. Recupera il valore dalla fonte; se non puoi, lascia quella decisione bloccata per dato mancante. Questo rapporto non calcola l’indicatore né simula l’acquisto. Nel caso della media mobile vedi invece quale ordine può cambiare se si usa una seduta più vecchia per nascondere la lacuna. Le date di questo rapporto appartengono a un calendario didattico, non alle sedute di una borsa.

Anomalie rilevate
1

Decisioni esaminate
1

Prima di calcolare un indicatore, il programma cerca tutte le osservazioni richieste dal calendario dichiarato. Segnala separatamente una data assente, una cella vuota e un dato arrivato dopo la decisione. Controlla la presenza e i tempi, non la correttezza della formula né la provenienza dei valori.

Che cosa indicano le segnalazioni

  • Momento della decisione: 2026-01-03T00:00:00Z. La finestra non contiene tutte le osservazioni previste dal calendario dichiarato. Date richieste ma assenti: 2026-01-02T00:00:00Z.

Hash dichiarati dei file di input

5b501d08ef6c4264e3b82465fd3cf01e0f4efd50f6637bb1d6e86869e73d76be

SHA-256 del rapporto di verifica (JSON)

946c0fd3d864037dd5a42e448c572379405b428c00dd2cd1de4fc0d283dce3ff
Rapporto di verifica e dettagli tecnici
{
  "version": "3.0.0-pilot",
  "command": "windows",
  "input_sha256": [
    "5b501d08ef6c4264e3b82465fd3cf01e0f4efd50f6637bb1d6e86869e73d76be"
  ],
  "result": {
    "scope": "single_series_declared_calendar_and_availability",
    "required_observations": 3,
    "windows": [
      {
        "decision_at": "2026-01-03T00:00:00Z",
        "expected": [
          "2026-01-01T00:00:00Z",
          "2026-01-02T00:00:00Z",
          "2026-01-03T00:00:00Z"
        ],
        "missing": [
          "2026-01-02T00:00:00Z"
        ],
        "late": [],
        "nulls": [],
        "codes": [
          "MISSING_OBSERVATION"
        ]
      }
    ],
    "issues": [
      {
        "decision_at": "2026-01-03T00:00:00Z",
        "expected": [
          "2026-01-01T00:00:00Z",
          "2026-01-02T00:00:00Z",
          "2026-01-03T00:00:00Z"
        ],
        "missing": [
          "2026-01-02T00:00:00Z"
        ],
        "late": [],
        "nulls": [],
        "codes": [
          "MISSING_OBSERVATION"
        ]
      }
    ],
    "not_assessed": [
      "exchange_calendar_accuracy",
      "provider_revisions",
      "feature_formula",
      "model_fit_exposure"
    ]
  },
  "verdict": "ANOMALIES"
}

Riproduci le otto segnalazioni

Questo esempio inventato contiene quattro identificativi, A, B, C e D, che rappresentano altrettanti CSV da analizzare. Il primo incarico assegna A e B; il secondo C e D. Le risposte dichiarano invece di aver analizzato tutti e quattro i CSV in entrambi gli incarichi. Il programma confronta gli identificativi assegnati con quelli restituiti: non legge i CSV rappresentati e non valuta le analisi.

QE-BATCH-01/1.0 · Il programma pubblico contiene le stesse funzioni del controllo batches, versione 3.0.0-pilot, che ha prodotto il rapporto «Lavoro assegnato e risultati ricevuti» di questa pagina. Puoi eseguirlo con Python 3, senza installare librerie aggiuntive.

  1. Scarica nella stessa cartella il programma e i tre file JSON elencati sotto. Il programma deve chiamarsi QE-BATCH-01.py: se il browser conserva l’estensione .txt, rinominalo prima di eseguirlo.
  2. Apri un terminale in quella cartella ed esegui il primo comando. Verrà creato report-broken.json; per proteggere un risultato già salvato, il programma rifiuta di sovrascrivere un file esistente.
  3. Confronta report-broken.json con batches-expected.json. Devono coincidere versione, hash dell’input, risultato e verdetto: quattro segnalazioni per identificativi fuori dall’incarico e quattro per risposte duplicate, otto in totale.
  4. Esegui il secondo comando sul file corretto fornito. report-corrected.json deve contenere una lista issues vuota e il verdetto NO_FINDINGS_IN_SCOPE: ogni risposta contiene gli identificativi del proprio incarico, una sola volta.
python QE-BATCH-01.py batches-broken.json --out report-broken.json
python QE-BATCH-01.py batches-corrected.json --out report-corrected.json

ANOMALIES indica che il programma ha rilevato difetti nei dati forniti: in questo esercizio è il risultato atteso. NO_FINDINGS_IN_SCOPE significa soltanto che non ha trovato difetti nell’assegnazione dichiarata e negli identificativi restituiti. Nessuno dei due verdetti dimostra la qualità delle analisi, il beneficio economico del lavoro o l’assenza di duplicazioni quando un incarico viene ritentato.

La guida è in preparazione. Le risorse di questo sito sono gratuite. Puoi chiedere una sola email quando sarà pronta; non sono disponibili acquisti o prenotazioni.

Avvisami quando sarà pronta

A cura di Quantic Eagle LTD · Formazione generale sui metodi di ricerca. Chi siamo.

Torna su