← กลับไปยังบทความ
August 7, 2026
อ่าน 5 นาที

Toda-Yamamoto vs Differenced Granger: Does the BTC Lead-Lag Survive?

Toda-Yamamoto vs Differenced Granger: Does the BTC Lead-Lag Survive?
#causal-inference
#Granger-causality
#lead-lag
#crypto
#VAR

ผลลัพธ์เชิงสาเหตุ Granger ที่เผยแพร่เกือบทุกรายการในสกุลเงินดิจิทัลจะถูกคำนวณจากการส่งคืนบันทึก ทางเลือกนั้นไม่ฟรี ความแตกต่างทำให้อนุกรมหยุดนิ่งตามที่การทดสอบ F มาตรฐานกำหนด แต่จะละทิ้งความสัมพันธ์ระดับด้วย และหากมีเหรียญสองเหรียญรวมกัน VAR ที่ต่างกันจะถูกระบุผิด และการทดสอบจะตอบคำถามที่แตกต่างจากที่คุณถามเล็กน้อย

Toda และ Yamamoto (1995) เสนอทางออก: ติดตั้ง VAR ในระดับที่มีความล่าช้าเป็นพิเศษ ทดสอบเฉพาะระดับดั้งเดิม และรับ χ2\chi^2 ที่ถูกต้อง โดยไม่คำนึงถึงรากของหน่วยหรือการรวมเหรียญ เป็นที่รู้จักกันดีในด้านเศรษฐมิติและแทบไม่เคยนำไปใช้กับ crypto lead-lag

บทความนี้จึงทำสิ่งหนึ่ง: ทำการทดสอบทั้งสองคู่บนหน้าต่างเดียวกัน และรายงานว่าทั้งคู่ไม่เห็นด้วยหรือไม่ จากนั้นใช้การติดตามผลอย่างตรงไปตรงมา — การแก้ไขการทดสอบหลายกลุ่มที่สัมพันธ์กันบนเมทริกซ์ผลลัพธ์ และค่า p-value เพื่อดูว่าความล่าช้า "อย่างมีนัยสำคัญ" มีความเสถียรเพียงพอที่จะแลกเปลี่ยนหรือเพียงแค่กะพริบข้ามเกณฑ์

ทฤษฎีด้านล่างนี้มีมากเท่าที่จำเป็นเท่านั้นเพื่อให้การเปรียบเทียบชัดเจน บล็อกนี้ครอบคลุมถึงการรูทหน่วย การรวมเหรียญ การโหลดข้อมูล ขนาด และต้นทุนอยู่แล้ว นั่นคือลิงก์ ไม่ใช่ส่วนต่างๆ

สิ่งที่เกรนเจอร์อ้างเหตุผลจริงๆ

เส้นทางตะกั่ว-ความล่าช้าในทิศทางในเหตุการณ์ตลาด

สาเหตุของ Granger คือ ลำดับความสำคัญเชิงคาดการณ์ ไม่ใช่กลไก: XX Granger ทำให้เกิด YY หาก XX ที่ผ่านมาลดความแปรปรวนของข้อผิดพลาดในการคาดการณ์ของ YY เกินกว่าที่ YY ในอดีตได้อธิบายไว้แล้ว

XX Granger-ทำให้เกิด YY ถ้า σ2(YtYt1,,Ytp)>σ2(YtYt1,,Ytp,Xt1,,Xtp)\sigma^2(Y_t \mid Y_{t-1}, \ldots, Y_{t-p}) > \sigma^2(Y_t \mid Y_{t-1}, \ldots, Y_{t-p}, X_{t-1}, \ldots, X_{t-p})

สองชุดที่ขับเคลื่อนด้วยปัจจัยซ่อนเร้นทั่วไปสามารถแสดงสาเหตุของ Granger โดยไม่มีการเชื่อมโยงโดยตรงระหว่างสิ่งเหล่านั้น ในคริปโตนั้น ข้อแม้นั้นไม่ใช่วิชาการ — BTC เป็นปัจจัยหลักเพียงปัจจัยเดียวใน altcoin ที่ซับซ้อนทั้งหมด ดังนั้น "สาเหตุ" จาก alt-to-alt เกือบทั้งหมดจึงเป็นสิ่งประดิษฐ์ที่มีความเร็วในการตอบสนองต่อ BTC ที่ต่างกันออกไป

กรอบการทำงานของ VAR

การทดสอบอยู่ภายใน Vector Autoregression สำหรับตัวแปรสองตัวที่มีความล่าช้า pp:

Yt=α0+i=1pαiYti+i=1pβiXti+ϵ1tY_t = \alpha_0 + \sum_{i=1}^{p} \alpha_i Y_{t-i} + \sum_{i=1}^{p} \beta_i X_{t-i} + \epsilon_{1t} Xt=γ0+i=1pγiXti+i=1pδiYti+ϵ2tX_t = \gamma_0 + \sum_{i=1}^{p} \gamma_i X_{t-i} + \sum_{i=1}^{p} \delta_i Y_{t-i} + \epsilon_{2t}

ในรูปแบบเมทริกซ์ VAR(p) พร้อมตัวแปร kk:

yt=c+A1yt1++Apytp+ut\mathbf{y}_t = \mathbf{c} + \mathbf{A}_1 \mathbf{y}_{t-1} + \cdots + \mathbf{A}_p \mathbf{y}_{t-p} + \mathbf{u}_t

การทดสอบว่า XX Granger เป็นสาเหตุให้ YY กำลังทดสอบข้อจำกัดร่วม H0:β1==βp=0H_0: \beta_1 = \cdots = \beta_p = 0 ในสมการแรกหรือไม่ เส้นทางมาตรฐานคือการทดสอบ F กับผลรวมที่เหลือของกำลังสองที่ถูกจำกัดและไม่จำกัด

F=(RSSrRSSu)/pRSSu/(T2p1)F = \frac{(RSS_r - RSS_u) / p}{RSS_u / (T - 2p - 1)}

ด้วยรูปแบบ Wald ที่เทียบเท่ากับซีมโทติคัล W=T(RSSrRSSu)/RSSudχ2(p)W = T \cdot (RSS_r - RSS_u)/RSS_u \xrightarrow{d} \chi^2(p) ทุกสิ่งที่ตามมาคือคำถามเกี่ยวกับ ค่าสัมประสิทธิ์ที่ใช้กับข้อจำกัดใด และข้อมูลที่ VAR ติดตั้งไว้

การเลือกล่าช้า

pp มีความสำคัญมากกว่าที่บทความส่วนใหญ่ยอมรับ: มีความล่าช้าน้อยเกินไปที่พลาดพลวัต มีระดับการเผาผลาญอิสระมากเกินไป และทำลายพลัง

AIC(p)=lnΣ^u(p)+2pk2T,BIC(p)=lnΣ^u(p)+pk2lnTT\text{AIC}(p) = \ln|\hat{\Sigma}_u(p)| + \frac{2pk^2}{T}, \qquad \text{BIC}(p) = \ln|\hat{\Sigma}_u(p)| + \frac{pk^2 \ln T}{T} HQIC(p)=lnΣ^u(p)+2pk2ln(lnT)T\text{HQIC}(p) = \ln|\hat{\Sigma}_u(p)| + \frac{2pk^2 \ln(\ln T)}{T}

ช่วงการค้นหาที่เหมาะสม: 1-60 สำหรับข้อมูลวินาที, 1-30 สำหรับข้อมูลนาที, 1-48 ในรายชั่วโมง BIC เป็นค่าเริ่มต้นที่ถูกต้องที่นี่ — เป็นเกณฑ์ที่รอบคอบมากกว่า และ lead-lag ในคู่สกุลเงินดิจิทัลที่เป็นของเหลวถือเป็นปรากฏการณ์หน่วยความจำสั้น ทุกผลลัพธ์ด้านล่างจะรายงาน pp ที่เลือกโดย BIC ต่อคู่ แทนที่จะแก้ไขหนึ่งความล่าช้าทั่วทั้งจักรวาล เนื่องจากความล่าช้าคงที่จะแปลงตัวเลือกการเลือกความล่าช้าเป็นการกล่าวอ้างที่มีนัยสำคัญ

เหตุใดการทดสอบแบบผลต่างจึงไม่ใช่ค่าเริ่มต้นที่ถูกต้อง

ความแตกต่างสามารถแยกส่วนความสัมพันธ์ระหว่างลีด-แล็กได้

ชุดราคา Crypto คือ I(1) การแก้ไขตามปกติ — รับ log-return — ซื้อความคงที่ที่ต้นทุนของระดับ cointegrating และหากทั้งคู่มีความสมดุลในระยะยาว VAR ที่แตกต่างกันจะถูกระบุผิด เครื่องจักรของหน่วยรากและการรวมเหรียญที่อยู่เบื้องหลังประโยคนั้น (ADF, Engle-Granger พร้อมค่าวิกฤตของ Monte-Carlo, Johansen บนระบบ VAR) ครอบคลุมอยู่แล้วใน การเก็งกำไรทางสถิติและการซื้อขายคู่; ถือว่าที่นี่ ประเด็นก็คือวิธีการแก้ไขตามปกติ — ความแตกต่าง แล้วทดสอบ — เป็นการตัดสินใจในการสร้างแบบจำลองที่มีผลกระทบที่ตามมา และโทดะ-ยามาโมโตะคือหนทางที่จะหลีกเลี่ยง

ขั้นตอนโทดะ-ยามาโมโตะ

ปรับ VAR ด้วยความล่าช้าของ p+dmaxp + d_{max} โดยที่ pp เป็นลำดับความล่าช้าที่เหมาะสมที่สุด และ dmaxd_{max} เป็นลำดับการรวมสูงสุดของซีรีส์ จากนั้นทดสอบข้อจำกัด เฉพาะความล่าช้าของ pp แรกเท่านั้น ความล่าช้าพิเศษของ dmaxd_{max} จะดูดซับความไม่คงที่ สถิติ Wald บนค่าสัมประสิทธิ์ pp แรกเป็นไปตามมาตรฐาน χ2(p)\chi^2(p) ไม่ว่าอนุกรมจะเป็น I(0), I(1) หรือแบบรวมเหรียญก็ตาม

  1. กำหนด dmaxd_{max} — ADF และ KPSS ในแต่ละซีรีส์ สำหรับราคา crypto dmax=1d_{max} = 1 เกือบตลอดเวลา
  2. เลือก pp — ปรับ VAR ให้เหมาะสมกับระดับ เลือกด้วย BIC
  3. ประมาณค่า Augmented VAR(p+dmaxp + d_{max}) ในระดับต่างๆ โดยไม่มีความแตกต่าง
  4. Wald ทดสอบความล่าช้าของ pp แรกเท่านั้น โดยไม่สนใจคุณสมบัติพิเศษของ dmaxd_{max} ผลลัพธ์คือ χ2(p)\chi^2(p)

ผลตอบแทน: ไม่มีการทดสอบก่อนการรวม Cointegration ไม่มีความแตกต่าง และขนาดการทดสอบที่ถูกต้อง — อัตราการปฏิเสธภายใต้ค่า Null จะยังคงใกล้เคียงกับค่าที่กำหนด ไม่ว่าคุณสมบัติการรวมจะกลายเป็นเท่าใด ค่าใช้จ่ายอยู่ที่ขั้นตอนที่ 4 ไม่ใช่สิ่งที่ test_causality ทำโดยค่าเริ่มต้น ซึ่งเป็นจุดที่การใช้งานส่วนใหญ่ผิดพลาดอย่างเงียบๆ

การนำไปปฏิบัติ

กระแสการใช้งาน Lag-matrix

สมมติว่าคุณได้จัดแนวแถบนาทีใน DataFrame แล้ว — ต้นแบบการดึงข้อมูลและดัชนี ccxt อยู่ใน การตรวจจับระบบด้วย HMM และ wrapper ADF ที่คุณจะใช้สำหรับขั้นตอนที่ 1 อยู่ใน การเก็งกำไรทางสถิติและการซื้อขายคู่

หมายเหตุเวอร์ชันหนึ่งก่อนการเรียกใช้ใดๆ นี้: grangercausalitytests(..., verbose=False) เลิกใช้แล้ว และ ถูกลบออกใน statsmodels 0.15 วางอาร์กิวเมนต์ (ฟังก์ชันจะไม่พิมพ์ตามค่าเริ่มต้นอีกต่อไป) หรือปักหมุด statsmodels<0.15 รหัสด้านล่างถือว่าลายเซ็นสมัยใหม่

โทดะ-ยามาโมโตะ ทำถูกต้องแล้ว

ข้อจำกัดจะต้องสร้างด้วยมือ VARResults.test_causality ทดสอบความล่าช้า ทั้งหมด ของตัวแปรที่ก่อให้เกิดในโมเดลที่ติดตั้งไว้ — บน VAR เสริม (p+1p+1) ที่รวมความล่าช้าของ dmaxd_{max} ไว้ในข้อจำกัด ซึ่งเป็นสิ่งที่ Toda-Yamamoto บอกว่าไม่ควรทำ การแก้ไขเป็นเมทริกซ์ RR ที่ชัดเจนเทียบกับค่าสัมประสิทธิ์ความแปรปรวนร่วมแบบเต็ม:

import numpy as np
from scipy.stats import chi2
from statsmodels.tsa.api import VAR


def toda_yamamoto_test(data, target, predictor, max_lag=15, d_max=1,
                       significance=0.05):
    """
    Toda-Yamamoto Granger causality on levels (no differencing).

    Fits VAR(p + d_max) and applies a Wald test to the predictor's
    coefficients at lags 1..p ONLY, leaving the d_max augmenting lags
    unrestricted. Statistic is chi2(p).
    """
    pair = data[[target, predictor]].dropna()
    n_vars = pair.shape[1]
    target_idx = list(pair.columns).index(target)
    pred_idx = list(pair.columns).index(predictor)

    model = VAR(pair)
    p = model.select_order(maxlags=max_lag).bic or 1
    res = model.fit(p + d_max)

    beta = res.params.values.ravel(order="F")
    cov = res.cov_params()
    cov = cov.values if hasattr(cov, "values") else np.asarray(cov)

    n_per_eq = res.params.shape[0]
    idx = [target_idx * n_per_eq + 1 + lag * n_vars + pred_idx
           for lag in range(p)]                      # first p lags only

    R = np.zeros((p, beta.size))
    R[np.arange(p), idx] = 1.0

    Rb = R @ beta
    V = R @ cov @ R.T
    wald = float(Rb @ np.linalg.solve(V, Rb))        # no pinv: V must be PD
    p_value = float(chi2.sf(wald, df=p))

    return {
        "target": target, "predictor": predictor,
        "p": p, "augmented_lag": p + d_max, "d_max": d_max,
        "wald_stat": wald, "p_value": p_value,
        "significant": p_value < significance,
    }

รายละเอียดสองประการที่ผิดพลาดได้ง่ายและทำให้การทดสอบเป็นโมฆะหากคุณทำเช่นนั้น ขั้นแรก เลขคณิตดัชนีจะต้องตรงกับวิธีที่โมเดลสถิติทำให้ params แบนลง — ตรวจสอบโมเดลที่ติดตั้งไว้ว่า beta[target_idx * n_per_eq + 1] เท่ากับ res.params.iloc[1, target_idx] ก่อนที่จะเชื่อถือค่า p ใดๆ ประการที่สอง ใช้ np.linalg.solve ไม่ใช่ pinv: ถ้า VV เป็นเอกพจน์ ข้อจำกัดจะลดลงและการรันควรจะล้มเหลวอย่างดัง แทนที่จะส่งคืนตัวเลขที่ดูน่าเชื่อถือ การผกผันหลอกที่นี่คือวิธีที่การทดสอบ Wald ที่เสียหายสามารถอยู่รอดได้ในการตรวจสอบโค้ด

Granger ที่แตกต่างมาตรฐานสำหรับการเปรียบเทียบ

การเปรียบเทียบพื้นฐานนั้นเทียบกับ — log-returns, คู่เดียวกัน, BIC lag เดียวกัน:

from statsmodels.tsa.stattools import grangercausalitytests


def differenced_granger(data, target, predictor, p):
    """Standard Granger test on log-returns at a fixed lag p."""
    pair = data[[target, predictor]].dropna()   # returns, not levels
    out = grangercausalitytests(pair, maxlag=[p])   # statsmodels >= 0.15
    f_stat, p_value = out[p][0]["ssr_ftest"][:2]
    return {"target": target, "predictor": predictor, "lag": p,
            "f_stat": f_stat, "p_value": p_value}

หมายเหตุ maxlag=[p] แทนที่จะเป็น maxlag=p: การส่ง int รันทุกๆ ความล่าช้าตั้งแต่ 1 ถึง pp และล่อลวงให้คุณรายงานการทดสอบที่ดีที่สุด ซึ่งเป็นการทดสอบหลายรายการที่ไม่ได้บันทึก นอกเหนือจากการทดสอบหลายรายการที่คุณดำเนินการอยู่แล้ว

การเปรียบเทียบ

สำหรับแต่ละคู่ ให้ทำการทดสอบผลตอบแทนที่แตกต่างกันและระดับ Toda-Yamamoto ที่ pp ที่เลือก BIC เดียวกัน และจัดตารางจุดที่ทั้งสองไม่เห็นด้วย ความขัดแย้งเป็นเซลล์ที่น่าสนใจ: คู่ที่มีนัยสำคัญต่อความแตกต่างแต่ไม่อยู่ในระดับคือสิ่งที่ผู้สมัครต้องการในการสร้างความแตกต่างออกไปในความสัมพันธ์ที่ผสานกัน การย้อนกลับแสดงว่าความสัมพันธ์ระดับมีข้อมูลที่การทดสอบการส่งคืนไม่สามารถมองเห็นได้

การเปรียบเทียบหลายรายการบนเมทริกซ์เชิงสาเหตุ

กรองเมทริกซ์เชิงสาเหตุขนาดใหญ่

เมทริกซ์ n×nn \times n แบบเต็มเป็นจุดที่ทำให้เกิดอันตราย การกวาดล้าง 20 สินทรัพย์ 10 แล็กคือการทดสอบสมมติฐาน 3,800 ครั้ง และ Bonferroni เป็นการแก้ไขที่ไม่ถูกต้องสำหรับครอบครัวที่มีความสัมพันธ์กันนี้ การทดสอบจะแชร์ข้อมูล แบ่งปันปัจจัย BTC และไม่มีที่ไหนใกล้เคียงกัน ดังนั้น Bonferroni จึงมีการอนุรักษ์โดยรวมเกินไปและทำให้เข้าใจผิดว่าเซลล์ใดจะอยู่รอด ใช้เครื่องจักร มีประสิทธิภาพ-N จาก บทความ Sharpe ที่ยุบตัว ซึ่งสร้างขึ้นสำหรับสถานการณ์นี้โดยเฉพาะ: จัดกลุ่มกลุ่มการทดสอบที่สัมพันธ์กัน นับการทดลองอิสระมากกว่าการทดลองดิบ และเกณฑ์ขั้นต่ำเทียบกับสิ่งนั้น

def granger_matrix(data, max_lag=15, d_max=1):
    """Toda-Yamamoto p-value matrix. Entry (i, j): does col_j cause col_i?"""
    cols = list(data.columns)
    out = pd.DataFrame(np.nan, index=cols, columns=cols, dtype=float)
    for target in cols:
        for predictor in cols:
            if target == predictor:
                continue
            r = toda_yamamoto_test(data, target, predictor,
                                   max_lag=max_lag, d_max=d_max)
            out.loc[target, predictor] = r["p_value"]
    return out

ตัวเลขที่สำคัญไม่ใช่จำนวนเซลล์ที่ต่ำกว่า 0.05 แต่เป็นจำนวนเซลล์ที่รอดจากเกณฑ์ที่แก้ไขประสิทธิผล-N

อ่านเมทริกซ์ที่ยังมีชีวิตรอดในเชิงโครงสร้าง ไม่ใช่ทีละเซลล์: แถวที่เนื้อหาหนึ่งเป็นสาเหตุของอีกหลายๆ รายการยืนยันลำดับชั้นของข้อมูล คอลัมน์ที่เกิดจากไม่มีอะไรบ่งบอกถึงการเปลี่ยนแปลงที่แปลกประหลาดและมีโทเค็นเฉพาะมากกว่าการค้นพบ

การทดสอบอย่างตรงไปตรงมา: ความเสถียรในการหมุน

สัญญาณเสถียรผ่านหน้าต่างกลิ้ง

ค่า p-value ในตัวตัวอย่างเพียงค่าเดียวเกือบจะไร้ค่าสำหรับการซื้อขาย คำถามที่เกี่ยวข้องคือนัยสำคัญ คงอยู่ หรือไม่ ความสัมพันธ์ข้ามสินทรัพย์ใน crypto นั้นขึ้นอยู่กับระบอบการปกครอง — โครงสร้างความสัมพันธ์แตกต่างกันอย่างมากระหว่างความสงบและความตื่นตระหนก และระบอบการปกครองเองก็สามารถประมาณได้ (การตรวจจับระบอบการปกครอง HMM) — ดังนั้นความล่าช้าของตะกั่วที่ประมาณไว้ในช่วงหนึ่งหน้าต่างจึงเป็นข้อความเกี่ยวกับหน้าต่างนั้น

def rolling_granger(data, target, predictor, window=500, lag=5, step=50):
    """Rolling-window p-value: when is the lead-lag active vs dormant?"""
    rows = []
    for start in range(0, len(data) - window, step):
        chunk = data.iloc[start:start + window][[target, predictor]].dropna()
        if len(chunk) < window * 0.8:
            continue
        try:
            out = grangercausalitytests(chunk, maxlag=[lag])
            f_stat, p_value = out[lag][0]["ssr_ftest"][:2]
        except Exception:
            f_stat, p_value = np.nan, np.nan
        rows.append({"timestamp": data.index[start + window - 1],
                     "f_stat": f_stat, "p_value": p_value})
    return pd.DataFrame(rows).set_index("timestamp")

รายงานสองสิ่งจากชุดนี้: เศษส่วนของหน้าต่างที่ต่ำกว่า 0.05 และจำนวนการข้ามเกณฑ์ ความสัมพันธ์ที่มีนัยสำคัญใน 80% ของหน้าต่างที่มีจุดตัดกัน 3 จุดเป็นวัตถุที่แตกต่างจากจุดที่มีนัยสำคัญใน 55% ของหน้าต่างที่มีจุดตัดกัน 40 จุด แม้ว่าค่า p ที่รวมไว้จะเหมือนกันก็ตาม อย่างที่สองไม่สามารถซื้อขายได้ — คุณไม่สามารถปรับขนาดตำแหน่งบนสัญญาณที่มีการพลิกทุกๆ สองสามร้อยแท่งได้ และความล่าช้าในการประเมินใหม่รับประกันว่าคุณจะซื้อขายแบบเดิมเสมอ

กับดักข้อมูลเฉพาะของเกรนเจอร์

เครื่องหมายเข้ารหัสลับที่ผิดปกติรบกวนสัญญาณเชิงสาเหตุ

สุขอนามัยข้อมูล crypto ทั่วไปครอบคลุมอยู่ในที่อื่น — ช่องว่างและเทียนที่หายไปใน backtest-live parity, ระเบียบวินัยในการประทับเวลาใน อนุกรมวิธานอคติแบบมองไปข้างหน้า และ พิสูจน์ว่าไม่มีการมองไปข้างหน้าข้ามกรอบเวลา] โหมดความล้มเหลวโหมดหนึ่งเป็นแบบเฉพาะเจาะจงของ Granger และรุนแรงพอที่จะตั้งชื่อ:

การเติมไปข้างหน้าจะให้ผลลัพธ์ แท่งเทียนที่เติมไปข้างหน้าจะทำซ้ำการปิดครั้งก่อน ซึ่งแทรกความสัมพันธ์อัตโนมัติล้วนๆ เข้าไปในซีรีส์ และความสัมพันธ์อัตโนมัติ lag-1 ใน YY ที่อยู่ในแนวกลไกกับ XX นั้นแยกไม่ออกจากการทดสอบ F-test จากความสัมพันธ์เชิงสาเหตุหนึ่งความล่าช้า เช่นเดียวกับสถานที่ต่างๆ: การชดเชยเวลา 1 วินาทีระหว่างการแลกเปลี่ยนสองครั้ง บนแถบนาทีสามารถสร้างหรือทำลายนัยสำคัญความล่าช้า 1 ได้ทันที เนื่องจากจะเลื่อนด้านใดของขอบเขตแถบที่การเคลื่อนที่ตกลงไป ก่อนที่จะดำเนินการใดๆ ให้ตรวจสอบว่าช่องว่างถูกทิ้งแทนที่จะถูกเติมเต็ม และทั้งสองชุดถูกประทับตราจากนาฬิกาเดียวกัน

รายงานผลการค้นพบความล่าช้าในวรรณคดี

กลุ่มดาวหลักฐานสำหรับการวิจัยตะกั่ว-แล็ก

สิ่งเหล่านี้เป็นเพียงข้อมูลอ้างอิง ไม่ใช่การวัดผลจากบทความนี้ พวกเขามาที่นี่เพื่อพูดถึงสิ่งที่บันทึกที่เผยแพร่อ้าง เพื่อให้การเปรียบเทียบข้างต้นมีบางอย่างที่เห็นด้วยหรือไม่เห็นด้วย

  • BTC เป็น altcoins การศึกษาในปี 2026 ใน ตลาดการเงินเอเชียแปซิฟิก (Springer) รายงานการส่งผ่านราคาความถี่สูงจาก Bitcoin ไปยัง altcoins โดยเหรียญขนาดเล็กแสดงการตอบสนองล่าช้าอย่างมีนัยสำคัญและสภาพคล่องลดลงซึ่งสัมพันธ์กับปฏิกิริยาที่ช้าลง ขนาดความล่าช้าที่อ้างถึงโดยทั่วไปจากสายงานนี้ - ประมาณ 1-3 นาที BTC ถึง ETH, ยาวกว่าสำหรับหมวกขนาดกลางและขนาดเล็ก, ทิศทางเดียวมากขึ้นเมื่อมูลค่าตลาดลดลง - เป็น การค้นพบที่อ้างถึง, ไม่ได้มาจากที่นี่อีกครั้ง การจัดระดับมูลค่าราคาตลาดที่พวกเขาพักนั้นเป็นลำดับเดียวกับที่ใช้ใน การตรวจสอบหลายสัญลักษณ์
  • CEX เป็นผู้นำ DEX การวิจัยเกี่ยวกับโครงสร้างจุลภาคของสกุลเงินดิจิทัล (MDPI) รายงานสถานที่แบบรวมศูนย์ที่มีอำนาจเหนือการค้นพบราคา โดยมีการไหลของข้อมูลที่ทำงานจาก CEX-to-DEX และไม่มีสาเหตุย้อนกลับที่มีนัยสำคัญ — สอดคล้องกับกลไกการจับคู่ที่ต่ำกว่ามิลลิวินาทีกับการชำระราคาของบล็อก
  • ETH เป็นเหรียญอิสระ งาน VAR-SVAR (MDPI) ค้นหาระบอบการปกครองที่ Ethereum ทำหน้าที่เป็นแหล่งที่มาและ Bitcoin เป็นผู้รับการล้น โดยเฉพาะในช่วงระยะที่ขับเคลื่อนด้วย DeFi และ NFT

กล่าวถึงการข้ามตลาดโดยสังเขป

ความล่าช้าของเหรียญเดียวกันสองสถานที่นั้นเป็นการตั้งค่าที่แท้จริง แต่เศรษฐศาสตร์ของมัน — เกณฑ์ค่าธรรมเนียม, บันไดแฝง, สาเหตุที่เกิดความล่าช้า — ได้ดำเนินการไปแล้วใน การเก็งกำไรทางสถิติและการซื้อขายคู่ และ กิมจิพรีเมี่ยม. สิ่งเดียวที่ Granger เพิ่มคือคำถามด้านความมั่นคง: Binance-to-Coinbase causality ถาวร มีนัยสำคัญหรือไม่ หรือมันสั่นไหวเหมือนอย่างอื่น? ดำเนินการทดสอบแบบกลิ้งบนคู่สถานที่จัดงาน คำตอบคืออนุกรมเวลาของค่า p ไม่ใช่ใช่

เปลี่ยนความสัมพันธ์นำ-ตามที่รอดมาเป็นสถานะการถือครอง

เกณฑ์สัญญาณกลายเป็นตำแหน่งที่ถูกควบคุม

หากคู่หนึ่งผ่านเกณฑ์ที่แก้ไขแล้ว และ การทดสอบแบบกลิ้ง สัญญาณนั้นไม่สำคัญ: ตัวทำนายสะสมจะส่งคืนผ่านหน้าต่างความล่าช้า ซึ่งเป็นเกณฑ์

def lead_lag_signal(btc_returns, alt_returns, lag=5, threshold=0.001):
    """+1 / -1 / 0 on ALT from BTC's cumulative return over `lag` bars."""
    btc_cum = btc_returns.rolling(lag).sum()
    signal = pd.Series(0, index=alt_returns.index)
    signal[btc_cum > threshold] = 1
    signal[btc_cum < -threshold] = -1
    return signal

สามสิ่งที่ไม่ได้เป็นส่วนหนึ่งของบทความนี้เนื่องจากมีการตัดสินไว้แล้วที่นี่:

ข้อจำกัด

ขอบเขตความไม่แน่นอนเชิงสาเหตุ

Granger causality ไม่ใช่สาเหตุ Confounders (เหตุการณ์มหภาคที่เคลื่อนขาทั้งสองข้างโดยมีการประทับเวลาไม่ตรงเล็กน้อย) ตัวขับเคลื่อนทั่วไป (ทั้งสอง Alts ติดตาม BTC ด้วยความเร็วที่แตกต่างกัน) และตัวแปรที่ละเว้น (ทดสอบ BTC ไปยัง DOGE โดยไม่มี ETH ในระบบ) ล้วนสร้างสถิติที่สำคัญโดยไม่มีการไหลของข้อมูลโดยตรง การจำกัดการทดสอบไบวาเรียตดังที่บทความนี้ทำ ทำให้ปัญหาของตัวแปรที่ถูกละไว้แย่ลง ไม่ดีขึ้น

ความเป็นเชิงเส้น การทดสอบจะเห็นเฉพาะโครงสร้างการทำนายเชิงเส้นในค่าเฉลี่ยแบบมีเงื่อนไข Crypto มีการจัดกลุ่มความผันผวน เอฟเฟกต์เลเวอเรจ และสวิตช์ระบอบการปกครอง — ดู การพยากรณ์ความผันผวนของ GARCH และ DCC-GARCH dynamic correlation สำหรับเรื่องราวช่วงเวลาที่สอง ทางเลือกที่ไม่เชิงเส้นที่ควรรู้: การทดสอบเคอร์เนล Diks-Panchenko (2006) การถ่ายโอนเอนโทรปีเป็นอะนาล็อกเชิงข้อมูลเชิงทฤษฎี และความสัมพันธ์เชิงสาเหตุร่วมของ Granger ในการกระจายข้อต่อแบบเต็ม

การแตกหักของโครงสร้าง ความสัมพันธ์ใดๆ ที่ประมาณไว้บนหน้าต่างเดียวนั้นขึ้นอยู่กับเงื่อนไขของระบอบการปกครองของหน้าต่างนั้น การทดสอบแบบกลิ้งด้านบนเป็นการวินิจฉัยขั้นต่ำ และเป็นการวินิจฉัย ไม่ใช่การแก้ไข

สรุป

สัญญาณลีดแล็กที่แข็งแกร่งกลั่นจากสัญญาณรบกวน

  1. ติดตั้ง VAR บน ระดับ เลือก pp ด้วย BIC ต่อคู่ เพิ่มด้วย dmaxd_{max} และทดสอบ Wald เฉพาะความล่าช้าของ pp แรกเท่านั้น สร้างเมทริกซ์ข้อจำกัดด้วยมือ — test_causality ของไลบรารีก็จำกัดความล่าช้าในการเพิ่มด้วยเช่นกัน ซึ่งไม่ใช่ Toda-Yamamoto
  2. รันการทดสอบการส่งคืนที่ต่างกันเป็นพื้นฐานในคู่และความล่าช้าเดียวกัน และ รายงานความขัดแย้ง ตารางนั้นคือการค้นพบ ไม่ใช่เมทริกซ์ของเครื่องหมายดอกจัน
  3. แก้ไขเมทริกซ์สำหรับกลุ่มการทดสอบที่สัมพันธ์กันโดยใช้ N ที่มีประสิทธิผล ไม่ใช่ Bonferroni และรายงานจำนวนเซลล์ที่รอดชีวิต
  4. ม้วนมัน รายงานเศษส่วนของหน้าต่างสำคัญและจำนวนการข้าม นัยสำคัญที่การกะพริบไม่ใช่ความล่าช้าที่สามารถแลกเปลี่ยนได้ ไม่ว่าค่า p-value ที่รวมกันจะน้อยเพียงใด
  5. ลดช่องว่างแทนการเติมไปข้างหน้า และตรวจสอบการวางตำแหน่งนาฬิกาข้ามสถานที่ ก่อนที่จะเชื่อผลความล่าช้า 1 ใดๆ

ผลลัพธ์ที่ดีอย่างสมบูรณ์ของขั้นตอนนี้คือค่าลบ ความสัมพันธ์ BTC-to-alt ซึ่งมีนัยสำคัญในตัวอย่าง ยังคงได้รับการแก้ไข และยังคงข้ามเส้น 0.05 ในทั้งสองทิศทางทุกๆ สองสามร้อยแท่งเป็นผลลัพธ์ที่แท้จริงเกี่ยวกับความสามารถในการซื้อขาย และคุ้มค่าที่จะเผยแพร่เป็นหนึ่งเดียว

อ้างอิง

ข้อจำกัดความรับผิดชอบ: ข้อมูลที่ให้ไว้ในบทความนี้มีไว้เพื่อการศึกษาและให้ข้อมูลเท่านั้น และไม่ถือเป็นคำแนะนำทางการเงิน การลงทุน หรือการเทรด การเทรดสกุลเงินดิจิทัลมีความเสี่ยงสูงที่จะขาดทุน

ผู้เขียน

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

ก้าวนำหน้าตลาด

สมัครรับจดหมายข่าวของเราเพื่อรับข้อมูลเชิงลึกการเทรดด้วย AI เฉพาะ การวิเคราะห์ตลาด และการอัปเดตแพลตฟอร์ม

เราเคารพความเป็นส่วนตัวของคุณ ยกเลิกการสมัครได้ทุกเมื่อ