📝

Draft article

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

← Makalelere geri dön
August 21, 2026
5 dakikalık okuma

Ticaret Stratejilerini Değerlendirmeye Yönelik Sentetik Kontrol Yöntemleri

Ticaret Stratejilerini Değerlendirmeye Yönelik Sentetik Kontrol Yöntemleri
#causal-inference
#synthetic-control
#counterfactual
#evaluation
#econometrics

Bu seri, sahte bir kenara giden tek bir yolda uzun zaman harcadı: seçim. Deflated Sharpe Oranı bir aramanın kazananını fiyatlandırır. Backtest Aşırı Uyum Olasılığı aramanın kendisini fiyatlandırır. Dürüst olumsuz, her ikisini de gerçekten ticaret yapmak istediğiniz bir stratejiye yönlendirdiğinizde olan şeydir. Bu aparat bir soruya iyi cevap veriyor: Bunu çok fazla baktığım için mi buldum?

Tamamen ayrı ikinci bir rotaya dokunmuyor: kafa karıştırıcı. Bir şeyi değiştirdiniz; yeni bir yürütme algoritması uyguladınız, bir parametreyi değiştirdiniz, bir rejime tepki verdiniz ve performansı artırdınız. Arama yapılmadı. Çoklu test sorunu yaşanmadı. Ve bu gelişmenin hâlâ sizinle hiçbir ilgisi olmayabilir, çünkü dalgalanma, gönderim yaptığınız haftada iki katına çıktı. Hiçbir deflasyon bunu yakalayamaz çünkü deflasyon denemeler için düzeltme yapar ve siz yalnızca bir deneme çalıştırırsınız.

Abadie ve Gardeazabal (2003) tarafından geliştirilen ve Abadie, Diamond ve Hainmueller (2010, 2015) tarafından geliştirilen Sentetik Kontrol Yöntemi (SCM), doğrudan kafa karıştırıcılığa saldırır. Bir karşı-olgusal oluşturur; dokunmadığınız aletlerin ağırlıklı bir kombinasyonunu oluşturur; bu kombinasyon, tedavi edilen aleti müdahaleden önce yakından takip edecek şekilde seçilmiştir. İkisi arasındaki müdahale sonrası farklılık sizin etki tahmininizdir. En önemlisi SCM, size ne zaman güvenilir bir karşı olgu üretemeyeceğini söyleyen bir yanlışlama kriteri ve herhangi bir asimptotik hikayeye inanmanızı gerektirmeyen permütasyona dayalı bir p değeri ile birlikte gelir.

Açık Alternatifler Neden Başarısız?

Karşıolgusal karşılaştırma yolları

Önce-sonra karşılaştırması, müdahaleyi o tarihte değişen her şeyle karıştırıyor. Tek bir kıyaslama enstrümanıyla karşılaştırma başarısız olur çünkü tek bir varlık sizinkini takip etmez. Bu, diğer yönden Tek Enstrüman Tuzağı'dır: Bir enstrümanın kendine özgü yapısı bir üstünlüğü taklit edebiliyorsa, bir enstrümanın kendine özgü yapısı da bir kontrol taklidi yapabilir. SCM'nin bağışçı havuzu tam olarak bu itirazın resmi yanıtıdır: karşılaştırılabilir bir varlık seçmek yerine dönem öncesi verilerin ağırlıklı bir sepet seçmesine izin verirsiniz.

Farklılıklar arasındaki fark bir cümleden daha fazlasını hak ediyor çünkü bu, kıl payı atlatılan bir durum. DiD, tedavi edilen birimdeki değişikliği kontrol grubundaki değişiklikle karşılaştırır ve etkiyi yalnızca paralel eğilimler altında tanımlar: müdahale olmasaydı, tedavi edilen ve kontrol birlikte hareket ederdi. Finansal piyasalarda bu varsayım neredeyse savunulamaz niteliktedir; varlıklar beta, oynaklık rejimi ve likidite kademesinde farklılık gösterir ve bunların göreceli yolları değişkendir. SCM, varsayımı uygun bir nesneyle değiştirir: paralel hareket eden bir kontrolü varsaymak yerine, bir tane oluşturur ve sonra size gerçekte ne kadar iyi takip edildiğini gösterir. Kötü takip edilirse durmanız söylenir.

Yöntem

Sentetik kontrol bağışçısı yapımı

Kurulum ve Gösterim

Düşünün J+1J + 1 boyunca gözlemlenen birimler (varlıklar, stratejiler veya portföyler) TT dönemler. Birim 1 işlenen birim, yani müdahale ettiğiniz varlık veya stratejidir. Birimler 2,,J+12, \ldots, J+1 karşılaştırılabilir tedavi edilmemiş birimlerin donör havuzunu oluşturur.

İzin vermek Y1tIY_{1t}^I o andaki tedavi edilen birimin sonucunu belirtir tt müdahale ile ve Y1tNY_{1t}^N onsuz sonuç. tedavi etkisi zamanında t>T0t > T_0 şu:

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

Gözlemliyoruz Y1tIY_{1t}^I doğrudan. Bütün sorun tahminde bulunmak Y1tNY_{1t}^N.

Sentetik Kontrolün Oluşturulması

SCM tahminleri Y1tNY_{1t}^N donör sonuçlarının ağırlıklı ortalaması olarak:

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

ağırlık vektörü nerede w=(w2,,wJ+1)\mathbf{w} = (w_2, \ldots, w_{J+1})' tatmin eder wj0w_j \geq 0 herkes için jj Ve jwj=1\sum_j w_j = 1.

Bu iki kısıtlama gerçek iş yapar. Sentetik kontrolü, donörlerin dışbükey bir kombinasyonu olmaya zorlarlar, bu da veri desteği dışında ekstrapolasyonu önler. Kısıtlanmamış bir regresyon, size bir kripto paradaki 3,4x uzun pozisyona karşı diğerindeki 2,4x kısa pozisyona karşı oluşturulmuş bir karşı olgusal sunabilir - sayısal olarak harika bir dönem öncesi uyum ve kimsenin tutamayacağı hiçbir portföye karşılık gelmeyen bir karşı olgusal. Dışbükeylik kısıtlaması karşıt olguyu yorumlanabilir hale getirir ve ağırlıkları seyrekleştirir: genellikle yalnızca bir avuç dolusu bağışçı sıfırdan farklı ağırlık alır ve bunları okuyabilirsiniz.

Optimum Ağırlık Seçimi

Ağırlıklar, müdahale öncesi dönemde tedavi edilen ünite ile sentetik kontrol arasındaki mesafeyi en aza indirecek şekilde seçilir:

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})

Neresi X1\mathbf{X}_1 bir (k×1)(k \times 1) Tedavi edilen ünite için müdahale öncesi özelliklerin vektörü, X0\mathbf{X}_0 bu (k×J)(k \times J) donör havuzu için aynı özelliklere sahip matris ve V\mathbf{V} bir (k×k)(k \times k) Her tahminciye önem veren pozitif yarı tanımlı diyagonal matris.

V\mathbf{V} çapraz doğrulamayla seçilir: seç V\mathbf{V} öyle ki sonuçta ortaya çıkan w(V)\mathbf{w}^*(\mathbf{V}) müdahale öncesi dönemde sonuç değişkeninin ortalama kare tahmin hatasını (MSPE) en aza indirir. Bu iç içe geçmiş bir optimizasyondur; bir dış döngü V\mathbf{V}, bir iç kısıtlı çözüm w\mathbf{w}.

Ticaret Uygulamaları için Tahmin Değişkenleri

Abadie ve ark. Kişi başına kullanılan GSYİH ve endüstri kompozisyonu, ticaret uygulamalarının istediği:

  • Getiri özellikleri: dönem öncesi ortalama getiri, oynaklık, çarpıklık, basıklık
  • Likidite önlemleri: ortalama spread, günlük hacim, Amihud likidite azlığı oranı
  • Mikroyapı özellikleri: sipariş akışı dengesizliği, ticaretin geliş oranı, teklif-işlem oranı
  • Faktör riskleri: piyasa betası, momentum, değer ve oynaklık faktörleri
  • Gecikmeli sonuçlar: çeşitli müdahale öncesi tarihlerdeki kümülatif PnL değerleri

Gecikmiş sonuçlar en önemlisidir. Abadie ve ark. (2010), eğer sentetik kontrol, uzun bir müdahale öncesi pencere boyunca gecikmeli sonuçlar açısından tedavi edilen üniteyle eşleşirse, doğrusal bir faktör modeli altında gözlemlenmeyen karıştırıcıları örtülü olarak kontrol ettiğini göstermektedir - bu da yöntemin zahmete değer olmasının tüm nedenidir. PnL'nizi yönlendiren kafa karıştırıcının adını vermenize gerek yok. Buna maruz kalan bağışçıları da bulmanız gerekiyor.

Bunun Geçerli Olduğu Yerler

Piyasa rejimleri arasında nedensel köprüler

Senaryo 1: Yeni Bir Yürütme Algoritmasının Değerlendirilmesi

Bir cihaza yeni bir TWAP planı dağıtıyorsunuz ve bunun uygulama eksikliği üzerindeki etkisini istiyorsunuz. Hem metrik hem de algoritma ailesi başka bir yerde derinlemesine ele alınmıştır - maliyet ayrıştırması için uygulama eksikliği ve TCA ve zamanlayıcıların kendileri için TWAP/VWAP/POV algoritmaları konusuna bakın. SCM katkısı, en üstteki değerlendirme katmanıdır: Donör havuzu, aynı pencere üzerinden eski zamanlayıcıyı çalıştıran araçların aynısıdır, dolayısıyla yayılma veya hacimdeki mekan çapındaki değişiklikler, hem tedavi edilen hem de bağışçıları etkiler.

Müdahale öncesi dönem: Geçişten 60 işlem günü önce. Müdahale sonrası dönem: 30 işlem günü sonrası. Etki tahmini boşluktur:

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

Yeni planlayıcı gerçekten maliyeti düşürürse, τ^1t<0\hat{\tau}_{1t} < 0 ısrarla sonrasında T0T_0 - ve daha da önemlisi, tedavi edilen boşluk, donör boşlukları bulutunun dışında kalıyor.

Senaryo 2: Piyasa Olayının Etkisi

Ücret tarifesi değişikliği, küçük pilot uygulama, işlem vergisi veya devre kesici kural değişikliği tek bir mekanı etkiler. Tedavi edilen birim: etkilenen mekana ilişkin stratejiniz. Donör havuzu: Değişikliğin etkilemediği mekanlarda aynı çift. Uygulama üzerindeki ücret yapısı etkileri, yapıcı-alıcı ücretleri ve indirimler bölümünde ayrı ayrı ele alınır; SCM, "değişiklikten sonra dolumlarımız daha da kötüleşti" ifadesini boş değer eklenmiş bir tahmine dönüştüren şeydir.

Senaryo 3: Rejim-Koşullu Strateji Değişimi

Bir rejim tespit sinyali tetiklendiğinde, bir varlıkta ortalamaya dönüşten ivmeye geçiş yaparsınız. Anahtar, yerinde kalmanın üstesinden geldi mi? Donör havuzu: Sinyalin tetiklendiği ancak sizin geçiş yapmadığınız benzer varlıklar. Buradaki tuzağa dikkat edin; eğer rejim piyasa çapında sinyal verirse bağışçılarınız da tedavi edilir ve tasarım çöker. Aşağıdaki yayılma kuralına bakın.

Plasebo Testleri ve Çıkarım

Plasebo yörüngeleri ve test edilen yol

SCM'nin çıkarımı permütasyona dayalıdır. Kapalı formlu bir dağıtıma güvenmek yerine yeniden örnekleme yoluyla ampirik bir sıfır oluşturmanın genel durumu Monte Carlo ve geri testler için önyükleme yöntemleri; Aşağıda SCM'ye özgü yapı yer almaktadır.

Zamanında Plasebo

Müdahale tarihini ön döneme (örneğin yarıya kadar) geri alın ve yeniden çalıştırın. Eğer SCM hiçbir şeyin olmadığı bir tarihte bir "tedavi etkisi" bulursa, bu sizin müdahaleniz değil, önceden var olan farklılığı tespit ediyordur. Güvenilir bir sentetik kontrol, yanlış müdahale tarihlerinde hiçbir etki göstermez.

Uzayda Plasebo (Permütasyon Testi)

SCM prosedürünün tamamını her donöre uygulayın ve her birinin tedavi edilen birim olduğunu varsayalım:

  1. Her bağışçı için jj, kalan donörlerden artı orijinal tedavi edilen üniteden sentetik bir kontrol oluşturun.
  2. Müdahale sonrası boşluğu hesaplayın gapjt=YjtY^jtsynth\text{gap}_{jt} = Y_{jt} - \hat{Y}_{jt}^{\text{synth}}.
  3. Tedavi edilen birimin boşluğunu plasebo boşluklarının dağılımıyla karşılaştırın.

P değeri bir sıralamadır:

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

Neresi

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}

Dönem sonrası ham boşluktan ziyade oran doğru istatistiktir: hiçbir zaman tam olarak uygun olmayan bir donör, herhangi bir müdahaleyle hiçbir ilgisi olmayan nedenlerden dolayı büyük bir post-boşluk gösterecektir ve dönem öncesi MSPE'ye bölmek tam olarak bunu cezalandırır.

Bu, Deflated Sharpe Ratio'in yaptığı çıkarımsal hareketin aynısıdır; adayınızı asla sıfıra karşı değil, ampirik olarak oluşturulmuş bir referans dağılımı içinde sıralayın. DSR, kazananınızı N'nin en iyisi olan boş denemelere göre sıralar; SCM, tedavi edilen biriminizi birimler üzerinden sıfıra göre sıralar. Farklı tahminci, aynı disiplin ve aynı uyarı geçerlidir: J=15J = 15 bağışçılar için ulaşılabilir en küçük p değeri 1/160.061/16 \approx 0.06. Bir permütasyon testi kendi ayrıntı düzeyinin ötesinde çözümleyemez; bu nedenle, küçük bir bağış havuzu, etki ne kadar büyük görünürse görünsün, ne kadar önem iddia etmeye hak kazandığınızı sınırlar.

Pratik Filtreleme

Abadie ve ark. müdahale öncesi uyumu zayıf olan plasebo birimlerinin hariç tutulması önerilir - MSPE öncesi daha fazla kk tedavi edilen birimin katıyla kk tipik olarak 2 ila 20. Uygun olmayan plaseboların paydaları çok küçüktür ve muazzam MSPE oranları üretir, referans dağılımını kirletir ve tedavi edilen ünitenizin dikkat çekici görünmesine neden olur. Oranı çeşitli eşiklerde bildirin; p değeriniz yalnızca belirli bir noktada anlamlıysa kk, bir efekt değil, bir ayar parametresi buldunuz.

Uygulama

Karşıolgusal analiz hattı

Aşağıdaki kod yalnızca kullanır numpy Ve scipy böylece mekanizmalar görünür hale gelir. Üretim alternatifleri — SparseSC (Microsoft Araştırması), pysyncon, SyntheticControlMethods — uç durumları ele alın ve daha iyi ölçeklendirin.

Tahmin Matrisi Yapımı

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 burada kümülatif getirilerin bir paneli var - 0 sütununda işlenmiş birim, geri kalanında bağışçılar, çubuk başına bir satır. Fiyat seviyelerini değil, kümülatif getirileri kullanın.

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:]
])

Ağırlık Optimizasyonu

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}")

O zaman boşluk serisi df["Treated"].values - df.iloc[:, 1:].values @ weights, aşağıdaki plasebodan elde edilen donör boşluklarının yanı sıra müdahale tarihine göre çizilmiştir.

Plasebo Testleri

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}")

Tahminciyi Kalibre Etme

Yürütülmeye değer bir gösteri ve reddedilmeye değer bir gösteri vardır. Sentetik panel verileri oluşturmak, günde +%0,3 etki enjekte etmek, kabaca günde +%0,3'lük iyileşme sağlamak ve bunu kanıt olarak sunmak yalnızca SLSQP'nin yakınsadığını kanıtlar. Bu bir döngüseldir ve bu blog onu yayınlamaz.

Sentetik verilerin işe yaradığı şey kalibrasyondur — DSR parçası ve PBO'da uygulanan aynı standarttır; burada istatistiği güvenilir kılan bilinen sıfırdır. İki kontrol, her ikisi de, gerçekte sahip olduğunuz donör sayısı ve dönem öncesi süre ile birlikte doğrusal faktör modelinden oluşturulan veriler üzerinde çalışır:

  1. Bilinen bir etki boyutunda güç. Bilinen büyüklükte bir etki enjekte edin. Tahmini dönem sonrası fark bunu telafi eder mi ve hangi hata dahilinde? Kurtarma başarısız oluncaya kadar efekt boyutunu aşağıya doğru kaydırın; bu zemin, panel geometrinizin algılayabileceği en küçük etkidir ve bunun altındaki herhangi bir gerçek sonuç, p değeri ne olursa olsun gürültüdür.
  2. Gerçek bir null değeri altında boyutlandırın. hiçbir şey enjekte edin. Plasebo hattının tamamını çalıştırın. P-değeri yaklaşık olarak aynı olmalıdır. [0,1][0, 1]yani tekrarlanan çekilişlerde yaklaşık %10 oranında 0,10'un altına düşmelidir. Bundan çok daha sık tetikleniyorsa tahmin kümeniz veya filtre eşiğiniz üretim açısından önem taşıyor demektir ve işlem hattı gerçek verilere dokunmadan bozulur.

Kontrol 2, insanların atladığı ve önemli olandır. İlk önce onu çalıştırın.

Pratik Hususlar

Dengeli nedensel değerlendirme sistemi

Donör Havuzunu Seçmek

Donörlerin tedavi edilen üniteyle makul şekilde karşılaştırılabilir ve müdahaleden etkilenmemiş olması gerekir. Uygulama çalışması için: benzer enstrümanlar üzerinde aynı algoritma - aynı sektör, piyasa değeri yüzdelik dilimi, likidite kademesi. Çok sembollü doğrulama'daki katman sınıflandırması burada doğrudan yeniden kullanılabilir; Enstrümanları adil bir sağlamlık testi haline getiren özellikler aynı zamanda onları adil bir bağışçı havuzu haline getiriyor. Mekan etkinlikleri için: Değişikliğin ulaşmadığı mekanlarda aynı araç.

Yayılma olan birimleri hariç tutun. Bir enstrümandaki algoritmanızı değiştirmek, ilişkili enstrümanlara ilişkin alıntılarınızı değiştirdiyse bu enstrümanlar kısmen işleme alınır. Bunları bırakmak, sentetik kontrolü tedavi edilen birimin dönem sonrası yoluna doğru saptırır ve tahmininizi sıfıra doğru daraltır; bu, kötü bir kontrolün pozitif sonuçlar üretmesi kadar kolay bir şekilde boş sonuçlar üreten bir tasarım hatasıdır.

Müdahale Öncesi Uyum Bütün Tartışmadır

SCM'nin güvenilirliği tamamen dönem öncesi uyumuna bağlıdır. Müdahale öncesi MSPE'yi rapor edin ve uygunluğu gösterin. Kötü bir ön uyum sonrasındaki her şeyi geçersiz kılar T0T_0.

Abadie ve ark. (2015) kuralı açıkça belirtmektedir: Donörlerin hiçbir dışbükey kombinasyonu tedavi edilen birimin müdahale öncesi gidişatını yeniden oluşturmuyorsa yöntemi uygulamayın. Bu dürüst bir yanlışlama kriteridir ve olması gerekenden daha nadirdir; çoğu tahminci, onlara ne verirseniz verin bir sayı döndürür. SCM size ne zaman güvenilir bir karşı olgu üretemediğini söyler ve bu mesaja verilecek doğru yanıt, uyum düzelene kadar bağış havuzunu genişletmek değil, başarısızlığı yayınlamaktır. Ön uyumu kovalamak için havuzu genişletmek aynı aşırı uyumdur bu serinin geri kalanı kontrol-oluşturma adımına taşınmıştır.

Kısa Panellerde Aşırı Uyum

İzlenecek SCM'ye özgü miktar, bağışçıların oranıdır JJ dönem öncesi gözlemlere T0T_0. İle JJ Serbest ağırlıklar takıldı T0T_0 noktaları, mükemmel ön uyum inşaat yoluyla elde edilebilir hale gelir JJ yaklaşımlar T0T_0 - ve bu şekilde elde edilen mükemmel bir ön uyum hiçbir bilgi taşımaz. Kale T0T_0 önemli ölçüde daha büyük JJ; Eğer bir strateji değişiklikten önce 30 gün boyunca uygulandıysa ve 20 aday bağışçınız varsa, SCM probleminiz yok, enterpolasyon var demektir. Azaltmalar:

  1. Düzenleme: SparseSC ekler 1\ell_1 Ve 2\ell_2 ağırlık optimizasyonuna cezalar.
  2. Bağışçı havuzunu kısıtlayın: Daha az, daha iyi gerekçelere sahip bağışçılar daha fazla bağışçıyı yener; bu da daha kaba bir permütasyon ağı pahasına olur, çünkü JJ aynı zamanda minimum p-değerinizi de belirler. Bu gerilim gerçektir ve net bir çözümü yoktur.
  3. Artırılmış SCM: Ben-Michael, Feller ve Rothstein (2021), mükemmel ön uyumun elde edilemediği durumlarda önyargıyı düzeltmek için bir sonuç modeli kullanıyor.

Durağan Olmama

SCM'yi asla fiyat seviyelerinde değil, kümülatif getirilerde çalıştırın; seviyeler sahte uyumlara davetiye çıkarır. Dönem sonrası sapmaya güvenmeden önce müdahale öncesi boşluğun ortalama sıfır olduğunu ve durağan olduğunu doğrulayın; Gözlemlenen bir seri yerine uygun bir kalıntıyı test ederken ihtiyaç duyduğunuz düzeltilmiş kritik değerler de dahil olmak üzere ADF ve Engle-Granger makinesi, istatistiksel arbitraj ve çift ticareti kapsamında ele alınmaktadır.

Çoklu İşlenmiş Birimler

Aynı anda birden fazla varlığa dağıtım yapmak, tek işlemli birim tasarımını bozar. Uzantılar: Farklı zamanlarda tedavi edilen birimler için havuzlanmış SCM (işlem gören birimler arasındaki ortalama etkiler) ve kademeli benimseme tasarımları (Ben-Michael ve diğerleri, 2022).

SCM Ne Zaman Kullanılmamalıdır?

Belirsiz nedensel yapı

Şunlara çok uygundur: bilinen bir tarihte ayrı, iyi tanımlanmış bir müdahale; karşılaştırılabilir tedavi edilmemiş birimlerden oluşan bir makul bağışçı havuzu; müdahaleler önceden öngörülmez, çünkü öngörü tedavi edilen birimi daha önce harekete geçirir T0T_0 ve kimliği ihlal ediyor.

Şunlar için pek uygun değil: haftalar boyunca değişen bir parametre gibi sürekli tedavi; gerçekten işlenmemiş benzerlerin bulunmadığı ortamlar; sinyal-gürültü oranının ağırlık tahminini geride bıraktığı yüksek frekanslı değerlendirme.

Sonuç

Gerçek ve sentetik yörüngeler birlikte çözümleniyor

Seçme ve karıştırma farklı başarısızlık modlarıdır ve farklı araçlara ihtiyaç duyarlar. DSR ve PBO aramayı fiyatlandırır. SCM karşı-olgusal olanı fiyatlandırır ve bu seride tam olarak bir deney yaptığınız halde sonuca güvenemediğiniz durumu ele alan tek araçtır.

Geçici bir kıyaslama yerine onu tercih etmenin nedeni, daha büyük etkiler yaratması değil - çoğunlukla daha küçük etkiler yaratmasıdır - ancak reddedebilmesidir. Müdahaleden önce hiçbir dışbükey donör kombinasyonu enstrümanınızı takip etmiyorsa, SCM bunu söyler ve durursunuz. Eğer tedavi edilen boşluk donör bulutunun içinde yer alıyorsa, plasebo p-değeri bunu söylüyor ve siz de boş rapor veriyorsunuz. Bu iki çıkış, yöntemin değeridir ve rapor edilmiş bir dönem öncesi MSPE ve plasebo p değeri olmayan bir SCM yazımı, onu birbirinden ayrılan iki çizgiden oluşan bir grafikten daha fazlasını yapan tek parçaları atlamıştır.


Daha Fazla Okuma

  • Abadie, A., Diamond, A. ve Hainmueller, J. (2010). "Karşılaştırmalı Vaka Çalışmaları için Sentetik Kontrol Yöntemleri." Amerikan İstatistik Birliği Dergisi, 105(490), 493-505.
  • Abadie, A. (2021). "Sentetik Kontrollerin Kullanımı: Fizibilite, Veri Gereksinimleri ve Metodolojik Yönler." Ekonomi Edebiyatı Dergisi, 59(2), 391-425.
  • Ben-Michael, E., Feller, A. ve Rothstein, J. (2021). "Artırılmış Sentetik Kontrol Yöntemi." Amerikan İstatistik Birliği Dergisi, 116(536), 1789-1803. -Cunningham, S. (2021). Nedensel Çıkarım: Karışık Liste. Bölüm 10: Sentetik Kontrol. [mixtape.scunning.com] adresinden temin edilebilir(https://mixtape.scunning.com/10-synthetic_control).
  • Microsoft Araştırması. SparseSC: Seyrek Sentetik Kontroller. github.com/microsoft/SparseSC.
Sorumluluk Reddi: Bu makalede sağlanan bilgiler yalnızca eğitim ve bilgilendirme amaçlıdır ve finansal, yatırım veya ticaret tavsiyesi niteliği taşımaz. Kripto para ticareti önemli bir kayıp riski içerir.

Yazarlar

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

Piyasanın Önünde Olun

Özel yapay zeka ticaret içgörüleri, piyasa analizi ve platform güncellemeleri için bültenimize abone olun.

Gizliliğinize saygı duyuyoruz. İstediğiniz zaman abonelikten çıkabilirsiniz.