📝

Draft article

This draft is visible to admins and superusers only. Sign in with an authorized account.

← Torna agli articoli
August 21, 2026
5 min di lettura

Metodi di controllo sintetico per la valutazione delle strategie di trading

Metodi di controllo sintetico per la valutazione delle strategie di trading
#causal-inference
#synthetic-control
#counterfactual
#evaluation
#econometrics

Questa serie ha trascorso molto tempo su un percorso verso un falso limite: selezione. L'indice di Sharpe deflazionato valuta il vincitore di una ricerca. La probabilità di overfitting del backtest valuta la ricerca stessa. L'onesto negativo è ciò che accade quando indichi entrambi una strategia che volevi effettivamente negoziare. Quell'apparecchio risponde bene a una domanda: ho trovato questo perché l'ho guardato troppe volte?

Non tocca un secondo percorso completamente separato: confuso. Hai cambiato una cosa: hai implementato un nuovo algoritmo di esecuzione, cambiato un parametro, reagito a un regime e le prestazioni sono migliorate. Non c'è stata alcuna ricerca. Non si è verificato alcun problema di test multipli. E il miglioramento potrebbe non avere nulla a che fare con te, perché la volatilità è raddoppiata nella settimana in cui hai spedito. Nessuna quantità di deflazione rileva questo problema, perché la deflazione corregge per le prove e ne hai eseguito solo una.

Il metodo di controllo sintetico (SCM), sviluppato da Abadie e Gardeazabal (2003) e perfezionato da Abadie, Diamond e Hainmueller (2010, 2015), attacca direttamente il confondimento. Costruisce un controfattuale: una combinazione ponderata di strumenti che non hai toccato, scelta in modo da seguire da vicino lo strumento trattato prima dell'intervento. La divergenza post-intervento tra i due è la stima dell'effetto. Fondamentalmente, l’SCM è dotato di un criterio di falsificazione che indica quando non può produrre un controfattuale credibile e di un valore p basato sulla permutazione che non richiede di credere ad alcuna storia asintotica.

Perché le alternative ovvie falliscono

Percorsi di confronto controfattuale

Il confronto prima-dopo confonde l'intervento con tutto ciò che è cambiato in quella data. Il confronto con un singolo strumento di riferimento fallisce perché nessun singolo asset segue il tuo: questa è la Trappola dello strumento singolo dall'altra direzione: se la struttura idiosincratica di uno strumento può falsificare un vantaggio, la struttura idiosincratica di uno strumento può anche falsificare un controllo. Il pool di donatori di SCM è la risposta formale esattamente a questa obiezione: invece di scegliere un asset comparabile, si lascia che i dati pre-periodo scelgano un paniere ponderato di essi.

La differenza nelle differenze merita più di una frase, perché è quasi mancata. DiD confronta il cambiamento nell'unità trattata con il cambiamento in un gruppo di controllo e identifica l'effetto solo sotto tendenze parallele: in assenza dell'intervento, trattati e controllo si sarebbero mossi insieme. Nei mercati finanziari questa ipotesi è quasi indifendibile: gli asset differiscono in termini di beta, regime di volatilità, livello di liquidità e i loro percorsi relativi vagano. SCM sostituisce l'ipotesi con un oggetto adattato: invece di assumere un controllo che si muove in parallelo, ne costruisce uno e poi mostra quanto bene è stato effettivamente tracciato. Se il tracciamento è errato, ti viene detto di fermarti.

Il Metodo

Costruzione del donatore di controllo sintetico

Impostazione e notazione

Considera J+1J + 1 unità (asset, strategie o portafogli) osservate TT periodi. L'unità 1 è l'unità trattata: l'asset o la strategia in cui sei intervenuto. Unità 2,,J+12, \ldots, J+1 costituiscono il pool di donatori di unità comparabili non trattate.

Permettere Y1tIY_{1t}^I denotano il risultato per l'unità trattata in quel momento tt con l'intervento, e Y1tNY_{1t}^N il risultato senza di esso. L'effetto del trattamento al momento t>T0t > T_0 È:

τ1t=Y1tIY1tN\tau_{1t} = Y_{1t}^I - Y_{1t}^N

Osserviamo Y1tIY_{1t}^I direttamente. L'intero problema è la stima Y1tNY_{1t}^N.

Costruire il controllo sintetico

Stime SCM Y1tNY_{1t}^N come media ponderata dei risultati dei donatori:

Y^1tN=j=2J+1wjYjt\hat{Y}_{1t}^N = \sum_{j=2}^{J+1} w_j \, Y_{jt}

dove il vettore dei pesi w=(w2,,wJ+1)\mathbf{w} = (w_2, \ldots, w_{J+1})' soddisfa wj0w_j \geq 0 per tutti jj E jwj=1\sum_j w_j = 1.

Questi due vincoli funzionano davvero. Costringono il controllo sintetico ad essere una combinazione convessa di donatori, il che impedisce l'estrapolazione al di fuori del supporto dei dati. Una regressione non vincolata può fornirti un controfattuale costruito da una posizione lunga 3,4x in una moneta contro una posizione corta 2,4x in un'altra: numericamente un ottimo adattamento pre-periodo e un controfattuale che non corrisponde a nessun portafoglio che nessuno potrebbe detenere. Il vincolo di convessità rende il controfattuale interpretabile e i pesi scarsi: in genere solo una manciata di donatori ottiene un peso diverso da zero e puoi leggerli.

Selezione del peso ottimale

I pesi sono scelti per ridurre al minimo la distanza tra l'unità trattata e il controllo sintetico nel periodo pre-intervento:

minwX1X0wV=minw(X1X0w)V(X1X0w)\min_{\mathbf{w}} \| \mathbf{X}_1 - \mathbf{X}_0 \mathbf{w} \|_V = \min_{\mathbf{w}} (\mathbf{X}_1 - \mathbf{X}_0 \mathbf{w})' \mathbf{V} (\mathbf{X}_1 - \mathbf{X}_0 \mathbf{w})

Dove X1\mathbf{X}_1 è un (k×1)(k \times 1) vettore delle caratteristiche pre-intervento dell’unità trattata, X0\mathbf{X}_0 è il (k×J)(k \times J) matrice delle stesse caratteristiche per il pool di donatori, e V\mathbf{V} è un (k×k)(k \times k) matrice diagonale semidefinita positiva che assegna importanza a ciascun predittore.

V\mathbf{V} viene scelto mediante convalida incrociata: pick V\mathbf{V} tale che il risultato w(V)\mathbf{w}^*(\mathbf{V}) minimizza l’errore quadratico medio di previsione (MSPE) della variabile di risultato nel periodo pre-intervento. Questa è un'ottimizzazione nidificata: un loop over esterno V\mathbf{V}, una soluzione interna vincolata per w\mathbf{w}.

Variabili predittive per applicazioni di trading

Dove Abadie et al. utilizzato il PIL pro capite e la composizione del settore, le applicazioni commerciali richiedono:

  • Caratteristiche del rendimento: rendimento medio, volatilità, asimmetria, curtosi nel periodo precedente
  • Misure di liquidità: spread medio, volume giornaliero, rapporto di illiquidità Amihud
  • Caratteristiche della microstruttura: squilibrio del flusso degli ordini, tasso di arrivo degli scambi, rapporto quota-to-trade
  • Esposizioni fattoriali: beta rispetto ai fattori di mercato, momentum, valore e volatilità
  • Risultati ritardati: valori PnL cumulativi in diverse date pre-intervento

I risultati ritardati contano di più. Abadie et al. (2010) mostrano che se il controllo sintetico corrisponde all'unità trattata in termini di risultati ritardati in una lunga finestra pre-intervento, controlla implicitamente i confondenti non osservati in un modello a fattori lineari, che è l'intera ragione per cui il metodo vale la pena. Non sei obbligato a nominare il fattore confondente che ha guidato il tuo PnL. È necessario trovare anche donatori che sono stati esposti ad esso.

Dove si applica

Ponti causali tra regimi di mercato

Scenario 1: valutazione di un nuovo algoritmo di esecuzione

Distribuisci una nuova pianificazione TWAP su uno strumento e desideri il suo effetto sul deficit di implementazione. Sia la metrica che la famiglia di algoritmi sono trattati in modo approfondito altrove: vedere carenza di implementazione e TCA per la scomposizione dei costi e algoritmi TWAP/VWAP/POV per gli stessi scheduler. Il contributo SCM è il livello di valutazione in alto: il pool di donatori è costituito dagli stessi strumenti che eseguono ancora il vecchio programmatore, nella stessa finestra, quindi i cambiamenti a livello di sede nella diffusione o nel volume si ripercuotono sia sui trattati che sui donatori.

Periodo pre-intervento: 60 giorni di borsa aperta prima dello switch. Periodo post intervento: 30 giorni lavorativi successivi. La stima dell’effetto è il divario:

τ^1t=Y1tactualY^1tsynthetic,t>T0\hat{\tau}_{1t} = Y_{1t}^{\text{actual}} - \hat{Y}_{1t}^{\text{synthetic}}, \quad t > T_0

Se il nuovo scheduler riduce realmente i costi, τ^1t<0\hat{\tau}_{1t} < 0 con insistenza dopo T0T_0 – e, cosa ancora più importante, il divario trattato si trova al di fuori della nuvola dei divari dei donatori.

Scenario 2: impatto di un evento di mercato

Una modifica del programma tariffario, un progetto pilota, un'imposta sulle transazioni o una modifica delle regole dell'interruttore colpisce una sede. Unità trattata: la tua strategia sulla sede interessata. Pool di donatori: la stessa coppia nelle sedi in cui il cambiamento non è stato toccato. Gli effetti della struttura tariffaria sull'esecuzione sono trattati separatamente in commissioni e sconti maker-taker; SCM è ciò che trasforma "i nostri riempimenti sono peggiorati dopo la modifica" in una stima con un valore nullo allegato.

Scenario 3: cambio di strategia regime-condizionale

Si passa dalla ritorno alla media allo slancio su un asset quando si attiva un segnale di rilevamento del regime. L'interruttore ha battuto il restare fermo? Pool di donatori: risorse simili in cui il segnale è stato attivato ma non hai cambiato. Notate qui la trappola: se il segnale del regime si attiva in tutto il mercato, anche i vostri donatori verranno curati e il progetto crolla. Vedi la regola di spillover di seguito.

Test placebo e inferenza

Traiettorie del placebo e percorso testato

L'inferenza di SCM è basata sulla permutazione. Il caso generale per la costruzione di un null empirico mediante ricampionamento anziché affidarsi a una distribuzione in forma chiusa è illustrato in Monte Carlo e metodi bootstrap per backtest; quella che segue è la costruzione specifica di SCM.

Placebo in tempo reale

Spostare la data dell'intervento indietro nel periodo precedente – a metà, diciamo – e ripetere l'operazione. Se l'SCM rileva un "effetto del trattamento" in una data in cui non è successo nulla, sta rilevando la divergenza preesistente, non il tuo intervento. Un controllo sintetico credibile non mostra alcun effetto in caso di false date di intervento.

Placebo nello spazio (test di permutazione)

Applicare l'intera procedura SCM a ciascun donatore, fingendo che ciascuno a turno fosse l'unità trattata:

  1. Per ogni donatore jj, costruire un controllo sintetico dai donatori rimanenti più l'unità trattata originale.
  2. Calcolare il gap post-intervento gapjt=YjtY^jtsynth\text{gap}_{jt} = Y_{jt} - \hat{Y}_{jt}^{\text{synth}}.
  3. Confrontare il gap dell'unità trattata con la distribuzione dei gap del placebo.

Il valore p è un rango:

p=rank of treated unit’s post/pre MSPE ratioJ+1p = \frac{\text{rank of treated unit's post/pre MSPE ratio}}{J + 1}

Dove

MSPE ratio=MSPEpostMSPEpre=1TT0t>T0(Y1tY^1tN)21T0tT0(Y1tY^1tN)2\text{MSPE ratio} = \frac{\text{MSPE}_{\text{post}}}{\text{MSPE}_{\text{pre}}} = \frac{\frac{1}{T - T_0} \sum_{t > T_0} (Y_{1t} - \hat{Y}_{1t}^N)^2}{\frac{1}{T_0} \sum_{t \leq T_0} (Y_{1t} - \hat{Y}_{1t}^N)^2}

Il rapporto, piuttosto che il divario post-periodo grezzo, è la statistica giusta: un donatore che non è mai stato in buona forma mostrerà un ampio divario post-periodo per ragioni che non hanno nulla a che fare con qualsiasi intervento, e dividendo per il suo MSPE pre-periodo si penalizza esattamente questo.

Questa è la stessa mossa inferenziale del Deflated Sharpe Ratio: classifica il tuo candidato all'interno di una distribuzione di riferimento generata empiricamente, mai contro lo zero. DSR classifica il vincitore rispetto a un test nullo al meglio di N; SCM classifica l'unità trattata rispetto a un valore nullo su unità. Stimatore diverso, stessa disciplina e si applica lo stesso avvertimento: con J=15J = 15 donatori è il valore p più piccolo ottenibile 1/160.061/16 \approx 0.06. Un test di permutazione non può risolvere oltre la propria granularità, quindi un piccolo pool di donatori limita l'importanza che hai il diritto di rivendicare, non importa quanto grande sia l'effetto.

Filtraggio pratico

Abadie et al. raccomandare di escludere le unità placebo con scarso adattamento pre-intervento – pre-MSPE superiore a kk volte quello dell'unità trattata, con kk tipicamente da 2 a 20. I placebo inadeguati hanno denominatori minuscoli e producono enormi rapporti MSPE, contaminando la distribuzione di riferimento e rendendo insignificante l'unità trattata. Riportare il rapporto a diverse soglie; se il tuo valore p è significativo solo in un particolare kk, hai trovato un parametro di accordatura, non un effetto.

Implementazione

Procedura di analisi controfattuale

Il codice seguente utilizza solo numpy E scipy quindi la meccanica è visibile. Alternative di produzione — SparseSC (Ricerca Microsoft), pysyncon, SyntheticControlMethods - gestire i casi limite e scalare meglio.

Costruzione della matrice dei predittori

import numpy as np
import pandas as pd
from scipy.optimize import minimize


def build_predictors(series: pd.Series, T0: int) -> np.ndarray:
    """
    Extract predictor vector from pre-intervention data.
    Features: mean return, volatility, skewness, kurtosis,
              plus lagged outcome values at regular intervals.
    """
    pre = series.iloc[:T0]
    daily_ret = pre.diff().dropna()

    stats = [
        daily_ret.mean(),
        daily_ret.std(),
        daily_ret.skew(),
        daily_ret.kurtosis(),
    ]

    lag_indices = np.linspace(0, T0 - 1, 5, dtype=int)
    lags = pre.iloc[lag_indices].values.tolist()

    return np.array(stats + lags)

df ecco un pannello dei rendimenti cumulativi: unità trattate nella colonna 0, donatori nel resto, una riga per barra. Utilizzare rendimenti cumulativi, non livelli di prezzo.

X1 = build_predictors(df["Treated"], T0).reshape(-1, 1)   # (k x 1)
X0 = np.column_stack([                                    # (k x J)
    build_predictors(df[col], T0) for col in df.columns[1:]
])

Ottimizzazione del peso

def solve_weights(
    X1: np.ndarray,
    X0: np.ndarray,
    Y1_pre: np.ndarray,
    Y0_pre: np.ndarray,
) -> np.ndarray:
    """
    Solve for optimal synthetic control weights.

    Nested optimization:
      Outer: optimize V (predictor importance)
      Inner: optimize w (donor weights) given V
    """
    k = X1.shape[0]
    J = X0.shape[1]

    def solve_w_given_V(V_diag: np.ndarray) -> np.ndarray:
        """Inner: find w minimizing weighted predictor distance."""
        V = np.diag(V_diag)

        def objective(w):
            gap = X1.flatten() - X0 @ w
            return gap @ V @ gap

        constraints = {"type": "eq", "fun": lambda w: np.sum(w) - 1.0}
        bounds = [(0, 1)] * J
        w0 = np.ones(J) / J

        result = minimize(objective, w0, method="SLSQP",
                         bounds=bounds, constraints=constraints,
                         options={"maxiter": 1000, "ftol": 1e-12})
        return result.x

    def outer_objective(V_diag: np.ndarray) -> float:
        """Outer: minimize pre-period MSPE given V."""
        w = solve_w_given_V(np.abs(V_diag))
        return np.mean((Y1_pre - Y0_pre @ w) ** 2)

    V0 = np.ones(k)
    result = minimize(outer_objective, V0, method="Nelder-Mead",
                     options={"maxiter": 5000, "xatol": 1e-8})

    return solve_w_given_V(np.abs(result.x))


Y1_pre = df["Treated"].iloc[:T0].values
Y0_pre = df.iloc[:T0, 1:].values
weights = solve_weights(X1, X0, Y1_pre, Y0_pre)

for col, w in zip(df.columns[1:], weights):
    if w > 0.01:
        print(f"  {col}: {w:.4f}")

La serie gap è allora df["Treated"].values - df.iloc[:, 1:].values @ weights, tracciato rispetto alla data dell'intervento insieme alle lacune dei donatori nell'esecuzione del placebo di seguito.

Test placebo

def run_placebo_tests(df: pd.DataFrame, T0: int) -> pd.DataFrame:
    """In-space placebo: treat each unit in turn as if intervened upon."""
    results = []
    all_columns = df.columns.tolist()

    for placebo_col in all_columns:
        donor_cols = [c for c in all_columns if c != placebo_col]
        donor_df = df[donor_cols]

        X1_p = build_predictors(df[placebo_col], T0).reshape(-1, 1)
        X0_p = np.column_stack([
            build_predictors(donor_df[c], T0) for c in donor_cols
        ])

        w_p = solve_weights(
            X1_p, X0_p,
            df[placebo_col].iloc[:T0].values,
            donor_df.iloc[:T0].values,
        )
        gap_p = df[placebo_col].values - donor_df.values @ w_p

        mspe_pre = np.mean(gap_p[:T0] ** 2)
        mspe_post = np.mean(gap_p[T0:] ** 2)

        results.append({
            "unit": placebo_col,
            "mspe_pre": mspe_pre,
            "mspe_post": mspe_post,
            "mspe_ratio": mspe_post / mspe_pre if mspe_pre > 1e-10 else np.inf,
            "gap_series": gap_p,
            "is_treated": placebo_col == "Treated",
        })

    return pd.DataFrame(results)


placebo_results = run_placebo_tests(df, T0)

treated_pre = placebo_results.loc[placebo_results["is_treated"], "mspe_pre"].values[0]
filtered = placebo_results[placebo_results["mspe_pre"] <= 5 * treated_pre]

treated_ratio = filtered.loc[filtered["is_treated"], "mspe_ratio"].values[0]
p_value = (filtered["mspe_ratio"] >= treated_ratio).sum() / len(filtered)
print(f"MSPE ratio (treated): {treated_ratio:.2f}   p = {p_value:.3f}")

Calibrazione dello stimatore

C’è una dimostrazione che vale la pena eseguire e una dimostrazione che vale la pena rifiutare. Generando dati panel sintetici, inserendo un effetto del +0,3% al giorno, recuperando circa il +0,3% al giorno e presentandoli come prova che dimostra solo che SLSQP converge. È circolare e questo blog non lo pubblica.

Ciò a cui sono utili i dati sintetici è la calibrazione: lo stesso standard applicato nel pezzo DSR e nel PBO, dove il valore nullo noto è ciò che rende affidabile la statistica. Due controlli, entrambi eseguiti su dati generati da un modello a fattori lineari con il conteggio dei donatori e la durata pre-periodo effettivamente disponibile:

  1. Potenza con entità dell'effetto nota. Inietta un effetto di entità nota. Il divario post-periodo stimato lo recupera ed entro quale errore? Riduci la dimensione dell'effetto fino a quando il recupero non fallisce: quel pavimento è l'effetto più piccolo che la geometria del tuo pannello può rilevare e qualsiasi risultato reale al di sotto di esso è rumore indipendentemente dal suo valore p.
  2. Dimensione sotto un vero valore nullo. Iniettare niente. Esegui l'intera pipeline del placebo. Il valore p dovrebbe essere approssimativamente uniforme [0,1][0, 1], quindi dovrebbe scendere sotto 0,10 circa il 10% delle volte attraverso estrazioni ripetute. Se si attiva molto più spesso, il set di predittori o la soglia del filtro sono significativi per la produzione e la pipeline viene interrotta prima ancora di toccare dati reali.

Il controllo 2 è quello che le persone saltano e quello che conta. Eseguilo prima.

Considerazioni pratiche

Sistema di valutazione causale equilibrato

Scelta del pool di donatori

I donatori devono essere plausibilmente paragonabili all'unità trattata e non interessati dall'intervento. Per il lavoro di esecuzione: lo stesso algoritmo su strumenti simili: stesso settore, decile di capitalizzazione di mercato, livello di liquidità. La tassonomia dei livelli in convalida multi-simbolo è direttamente riutilizzabile qui; le proprietà che rendono gli strumenti un valido test di robustezza li rendono anche un valido pool di donatori. Per gli eventi in sede: lo stesso strumento sulle sedi il cambiamento non è arrivato.

Escludi unità con spillover. Se la modifica dell'algoritmo su uno strumento ha alterato la quotazione su strumenti correlati, tali strumenti vengono parzialmente trattati. Lasciarli inseriti distorce il controllo sintetico verso il percorso post-periodo dell'unità trattata e riduce la stima verso lo zero: un difetto di progettazione che produce risultati nulli con la stessa facilità con cui un controllo errato produce risultati positivi.

L'adattamento pre-intervento è l'intero argomento

La credibilità di SCM si basa interamente sull'adattamento pre-periodo. Riportare la MSPE pre-intervento e mostrare l'idoneità. Un pre-adattamento scadente invalida tutto il dopo T0T_0.

Abadie et al. (2015) affermano chiaramente la regola: se nessuna combinazione convessa di donatori riproduce la traiettoria pre-intervento dell'unità trattata, non applicare il metodo. Questo è un criterio di falsificazione onesto ed è più raro di quanto dovrebbe essere: la maggior parte degli stimatori restituisce un numero indipendentemente da ciò che gli viene fornito. SCM ti dice quando non può produrre un controfattuale credibile, e la risposta corretta a quel messaggio è pubblicare l’errore, non ampliare il pool di donatori finché l’idoneità non migliora. Ampliare il pool per inseguire il pre-adattamento è lo stesso overfitting, il resto di questa serie riguarda il trasferimento alla fase di controllo-costruzione.

Overfitting nei pannelli corti

La quantità specifica di SCM da monitorare è il rapporto dei donatori JJ alle osservazioni pre-periodo T0T_0. Con JJ pesi liberi montati T0T_0 punti, il pre-adattamento perfetto diventa ottenibile mediante la costruzione JJ approcci T0T_0 - e un preadattamento perfetto ottenuto in questo modo non contiene informazioni. Mantenere T0T_0 sostanzialmente più grande di JJ; se una strategia è stata eseguita per 30 giorni prima del cambiamento e hai 20 candidati donatori, non hai un problema di SCM, hai un'interpolazione. Mitigazioni:

  1. Regolarizzazione: aggiunge SparseSC 1\ell_1 E 2\ell_2 penalità per l'ottimizzazione del peso.
  2. Limitare il pool di donatori: meno donatori, meglio giustificati, battono più donatori, al costo di una griglia di permutazione più grossolana, poiché JJ imposta anche il valore p minimo. Quella tensione è reale e non ha una risoluzione chiara.
  3. SCM aumentato: Ben-Michael, Feller e Rothstein (2021) utilizzano un modello di risultati per correggere i bias quando il pre-adattamento perfetto è irraggiungibile.

Non-stazionarietà

Esegui l’SCM sui rendimenti cumulativi, mai sui livelli dei prezzi: i livelli invitano ad adattamenti spuri. Confermare che il divario pre-intervento sia medio zero e stazionario prima di fidarsi della divergenza post-intervento; i meccanismi ADF ed Engle-Granger per questo, inclusi i valori critici corretti necessari quando si testa un residuo adattato piuttosto che una serie osservata, sono trattati in arbitraggio statistico e trading di coppie.

Unità trattate multiple

La distribuzione su più risorse contemporaneamente interrompe il design della singola unità trattata. Estensioni: progetti di SCM aggregato (effetti medi tra le unità trattate) e di adozione scaglionata (Ben-Michael et al., 2022) per unità trattate in momenti diversi.

Quando non utilizzare SCM

Struttura causale ambigua

Adatto per: un intervento discreto e ben definito in data nota; un ragionevole pool di donatori di unità comparabili non trattate; interventi non anticipati in anticipo, poiché l'anticipazione muove prima l'unità trattata T0T_0 e viola l'identificazione.

Poco adatto a: trattamento continuo, ad esempio un parametro che varia nel corso delle settimane; ambienti senza comparabili realmente non trattati; valutazione ad alta frequenza in cui il rapporto segnale-rumore sconfigge la stima del peso.

Conclusione

Traiettorie reali e sintetiche che si risolvono insieme

Selezione e confondimento sono modalità di fallimento diverse e richiedono strumenti diversi. DSR e PBO valutano la ricerca. SCM valuta il controfattuale ed è l'unico strumento di questa serie che affronta il caso in cui hai eseguito esattamente un esperimento e non puoi ancora fidarti del risultato.

La ragione per preferirlo rispetto a un benchmark ad hoc non è perché produce effetti più ampi – spesso ne produce di minori – ma perché può rifiutarsi. Se nessuna combinazione convessa di donatori traccia il tuo strumento prima dell'intervento, SCM lo dice e tu ti fermi. Se il divario trattato si trova all'interno della nuvola del donatore, il valore p del placebo lo dice e riporti un valore nullo. Queste due uscite rappresentano il valore del metodo, e una revisione SCM senza un MSPE pre-periodo riportato e un valore p del placebo ha saltato le uniche parti che lo rendono più di un grafico di due linee divergenti.


Ulteriori letture

  • Abadie, A., Diamond, A. e Hainmueller, J. (2010). "Metodi di controllo sintetico per casi di studio comparativi." Giornale dell'American Statistical Association, 105(490), 493-505.
  • Abadie, A. (2021). "Utilizzo di controlli sintetici: fattibilità, requisiti dei dati e aspetti metodologici". Giornale di letteratura economica, 59(2), 391-425.
  • Ben-Michael, E., Feller, A. e Rothstein, J. (2021). "Il metodo di controllo sintetico aumentato." Giornale dell'American Statistical Association, 116(536), 1789-1803.
  • Cunningham, S. (2021). Inferenza causale: il mixtape. Capitolo 10: Controllo sintetico. Disponibile su mixtape.scunning.com. -Ricerca Microsoft. SparseSC: controlli sintetici sparsi. github.com/microsoft/SparseSC.
Disclaimer: le informazioni fornite in questo articolo hanno solo scopo didattico e informativo e non costituiscono consulenza finanziaria, di investimento o di trading. Il trading di criptovalute comporta un rischio significativo di perdita.

Autori

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

Resta un Passo Avanti al Mercato

Iscriviti alla nostra newsletter per approfondimenti esclusivi sul trading con IA, analisi di mercato e aggiornamenti sulla piattaforma.

Rispettiamo la tua privacy. Annulla l'iscrizione in qualsiasi momento.