← Kembali ke artikel
August 7, 2026
Bacaan 5 minit

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

Hampir setiap hasil Granger-causality yang diterbitkan pada crypto dikira berdasarkan pulangan log. Pilihan itu tidak percuma. Pembezaan menjadikan siri pegun, yang diperlukan oleh ujian-F standard, tetapi ia juga membuang perhubungan tahap — dan jika dua syiling disatukan, VAR yang dibezakan salah ditentukan dan ujian menjawab soalan yang sedikit berbeza daripada yang anda tanya.

Toda dan Yamamoto (1995) menawarkan jalan keluar: muatkan VAR pada tahap dengan ketinggalan tambahan, uji hanya yang asal dan dapatkan tahap yang sah χ2\chi^2 tanpa mengira punca unit atau kointegrasi. Ia terkenal dalam ekonometrik dan hampir tidak pernah digunakan untuk crypto lead-lag.

Jadi artikel ini melakukan satu perkara: jalankan kedua-dua ujian pada pasangan yang sama, pada tetingkap yang sama dan laporkan sama ada mereka tidak bersetuju. Kemudian gunakan susulan yang jujur ​​— pembetulan ujian berbilang keluarga berkorelasi pada matriks yang terhasil dan nilai p bergulir untuk melihat sama ada ketinggalan "ketara" cukup stabil untuk didagangkan atau hanya berkelip merentasi ambang.

Teori di bawah hanya sebanyak yang diperlukan untuk membuat perbandingan boleh dibaca. Blog sudah merangkumi punca unit, kointegrasi, pemuatan data, saiz dan kos; itu adalah pautan, bukan bahagian.

Apa yang sebenarnya dituntut oleh kausaliti Granger

Laluan petunjuk arah dalam acara pasaran

Kausalitas Granger ialah dahuluan ramalan, bukan mekanisme: XX Granger-sebab YY kalau lepas XX mengurangkan varians ralat ramalan bagi YY melebihi masa lalu YY sudah menerangkan.

XX Granger-sebab YY jika σ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})

Dua siri yang didorong oleh faktor tersembunyi biasa boleh menunjukkan kaitan Granger tanpa hubungan langsung antara mereka. Dalam crypto, kaveat itu bukan akademik — BTC ialah faktor dominan tunggal di seluruh kompleks altcoin, jadi hampir mana-mana "kausalitas" alt-to-alt ialah artifak calon yang mempunyai kelajuan tindak balas yang berbeza kepada kejutan BTC yang sama.

Rangka kerja VAR

Ujian ini hidup di dalam Vector Autoregression. Untuk dua pembolehubah dengan pp ketinggalan:

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}

Dalam bentuk matriks, VAR(p) dengan kk pembolehubah:

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

Menguji sama ada XX Granger-sebab YY sedang menguji sekatan sendi H0:β1==βp=0H_0: \beta_1 = \cdots = \beta_p = 0 dalam persamaan pertama. Laluan standard ialah ujian-F pada jumlah sisa petak terhad vs tidak terhad,

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

dengan bentuk Wald yang setara secara asimptotik W=T(RSSrRSSu)/RSSudχ2(p)W = T \cdot (RSS_r - RSS_u)/RSS_u \xrightarrow{d} \chi^2(p). Semua yang berikut ialah soalan tentang pekali yang mana sekatan digunakan dan pada data apa VAR telah dipasang.

Pemilihan ketinggalan

pp perkara yang lebih penting daripada kebanyakan penulisan akui: terlalu sedikit ketinggalan merindui dinamik, terlalu banyak membakar darjah kebebasan dan memusnahkan kuasa.

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}

Julat carian yang munasabah: 1-60 pada data kedua, 1-30 pada data minit, 1-48 pada setiap jam. BIC ialah lalai yang betul di sini — ia adalah kriteria yang lebih parsimoni, dan lead-lag dalam pasangan kripto cair ialah fenomena ingatan pendek. Setiap keputusan di bawah melaporkan BIC yang dipilih pp setiap pasangan dan bukannya menetapkan satu ketinggalan merentasi alam semesta, kerana ketinggalan tetap secara senyap menukar pilihan pemilihan ketinggalan kepada tuntutan kepentingan.

Mengapa ujian yang berbeza adalah lalai yang salah

Perbezaan boleh memecah-belahkan hubungan lead-lag

Siri harga kripto ialah I(1). Pembaikan biasa — ambil pulangan log — membeli pegun pada kos tahap kointegrasi, dan jika pasangan itu berkongsi keseimbangan jangka panjang, VAR yang dibezakan adalah salah ditentukan. Jentera unit-root dan kointegrasi di belakang ayat tersebut (ADF, Engle-Granger dengan nilai kritikal Monte-Carlonya, Johansen pada sistem VAR) telah pun diliputi dalam arbitraj statistik dan perdagangan pasangan; andaikan di sini. Intinya hanyalah bahawa ubat biasa - perbezaan, kemudian ujian - adalah keputusan pemodelan dengan akibat, dan Toda-Yamamoto adalah cara untuk mengelak daripada membuatnya.

Prosedur Toda-Yamamoto

Pasangkan VAR dengan p+dmaxp + d_{max} ketinggalan, di mana pp ialah susunan ketinggalan yang optimum dan dmaxd_{max} ialah susunan penyepaduan maksimum siri, kemudian menguji sekatan hanya pada yang pertama pp ketinggalan. Tambahan dmaxd_{max} ketinggalan menyerap tidak pegun; statistik Wald pada yang pertama pp pekali mengikut piawaian χ2(p)\chi^2(p) tidak kira sama ada siri itu adalah I(0), I(1), atau bersepadu.

  1. Tentukan dmaxd_{max} — ADF dan KPSS pada setiap siri. Untuk harga crypto dmax=1d_{max} = 1 hampir selalu.
  2. Pilih pp — muatkan VAR pada tahap, pilih mengikut BIC.
  3. Anggarkan VAR yang ditambah(p+dmaxp + d_{max}) pada tahap, tiada perbezaan.
  4. Wald-uji yang pertama pp ketinggalan sahaja, mengabaikan dmaxd_{max} tambahan. Hasilnya ialah χ2(p)\chi^2(p).

Hasilnya: tiada ujian pra kointegrasi, tiada perbezaan dan saiz ujian yang betul — kadar penolakan di bawah nol kekal hampir nominal walau apa pun sifat penyepaduan itu. Kosnya ialah langkah 4 bukan apa test_causality lakukan secara lalai, di mana kebanyakan pelaksanaan secara senyap-senyap menjadi salah.

Pelaksanaan

Aliran pelaksanaan matriks ketinggalan

Andaikan anda sudah mempunyai bar minit yang dijajarkan dalam DataFrame — pelat dandang pengambilan dan indeks ccxt berada dalam pengesan rejim dengan HMM, dan pembungkus ADF yang anda akan gunakan untuk langkah 1 adalah dalam arbitraj statistik dan perdagangan pasangan.

Satu nota versi sebelum mana-mana ini dijalankan: grangercausalitytests(..., verbose=False) telah ditamatkan dan kemudian dialih keluar dalam model statistik 0.15. Lepaskan hujah (fungsi tidak lagi mencetak secara lalai) atau pin statsmodels<0.15. Kod di bawah menganggap tandatangan moden.

Toda-Yamamoto, dilakukan dengan betul

Sekatan itu perlu dibina dengan tangan. VARResults.test_causality menguji semua ketinggalan pembolehubah penyebab dalam model yang dipasang — pada VAR tambahan(p+1p+1) yang merangkumi dmaxd_{max} ketinggalan dalam sekatan, iaitu apa yang Toda-Yamamoto katakan jangan lakukan. Pembetulan adalah eksplisit RR matriks terhadap kovarians pekali penuh:

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

Dua butiran yang mudah tersalah dan yang membatalkan ujian jika anda melakukannya. Pertama, aritmetik indeks mesti sepadan dengan cara model statistik diratakan params — sahkan pada model yang dipasang itu beta[target_idx * n_per_eq + 1] sama res.params.iloc[1, target_idx] sebelum mempercayai mana-mana nilai-p. Kedua, gunakan np.linalg.solve, bukan pinv: jika VV adalah tunggal sekatan itu merosot dan larian harus gagal dengan kuat dan bukannya mengembalikan nombor yang kelihatan munasabah. Pseudo- songsang di sini ialah cara ujian Wald yang rosak bertahan dalam semakan kod.

Granger berbeza standard, sebagai perbandingan

Garis dasar perbandingan menentang — pulangan log, pasangan yang sama, ketinggalan BIC yang sama:

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}

Nota maxlag=[p] bukannya maxlag=p: melepasi int menjalankan setiap ketinggalan dari 1 hingga pp dan menggoda anda untuk melaporkan yang terbaik, iaitu ujian berbilang yang tidak dilog di atas berbilang ujian yang anda sedang jalankan.

Perbandingannya

Untuk setiap pasangan, jalankan ujian berbeza pada pulangan dan Toda-Yamamoto pada tahap, pada BIC-dipilih yang sama pp, dan jadual di mana kedua-duanya tidak bersetuju. Percanggahan pendapat ialah sel yang menarik: pasangan yang ketara pada perbezaan tetapi tidak pada tahap ialah artifak calon yang membezakan hubungan kointegrasi; sebaliknya mencadangkan hubungan tahap membawa maklumat yang tidak dapat dilihat oleh ujian pulangan.

Perbandingan berbilang pada matriks kausaliti

Menapis matriks kausaliti yang besar

yang penuh n×nn \times n matriks adalah di mana ini menjadi berbahaya. Sapuan 20 aset, 10 lag ialah 3,800 ujian hipotesis, dan Bonferroni ialah pembetulan yang salah untuk keluarga yang berkorelasi ini — ujian berkongsi data, berkongsi faktor BTC dan tidak berdikari, jadi Bonferroni pada masa yang sama terlalu konservatif secara agregat dan mengelirukan tentang sel yang bertahan. Gunakan jentera effective-N daripada artikel Sharpe yang kempis, yang dibina untuk situasi ini: kumpulkan keluarga ujian yang berkorelasi, kira percubaan bebas dan bukannya ujian mentah, dan ambang terhadapnya.

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

Nombor yang penting bukanlah bilangan sel yang berada di bawah 0.05 — tetapi bilangan sel yang bertahan dalam ambang pembetulan N berkesan.

Baca matriks yang masih hidup secara berstruktur, bukan sel demi sel: baris yang mana satu aset menyebabkan banyak yang lain mengesahkan hierarki maklumat; lajur yang disebabkan oleh tiada apa-apa menunjukkan dinamik khusus token yang istimewa dan bukannya penemuan.

Ujian jujur: kestabilan bergolek

Isyarat stabil melalui tingkap bergolek

Satu nilai p dalam sampel hampir tidak bernilai untuk dagangan. Persoalan yang berkaitan ialah sama ada kepentingan berterusan. Perhubungan silang aset dalam kripto adalah bergantung kepada rejim — struktur korelasi berbeza dengan ketara antara tenang dan panik, dan rejim itu sendiri boleh dianggarkan (pengesan rejim HMM) — jadi lag pendahuluan yang dianggarkan pada satu tetingkap ialah pernyataan tentang tetingkap itu.

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

Laporkan dua perkara daripada siri ini: pecahan tingkap di bawah 0.05, dan bilangan lintasan ambang. Hubungan yang signifikan dalam 80% tingkap dengan tiga lintasan ialah objek yang berbeza daripada satu signifikan dalam 55% tingkap dengan empat puluh lintasan, walaupun jika nilai p terkumpul adalah sama. Yang kedua tidak boleh didagangkan — anda tidak boleh menentukan saiz kedudukan pada isyarat yang kewujudannya bertukar setiap beberapa ratus bar, dan lag anggaran semula menjamin anda sentiasa berdagang dengan rejim sebelumnya.

Perangkap data yang khusus untuk Granger

Kutu crypto yang tidak teratur mengganggu isyarat kausal

Kebersihan data kripto generik diliputi di tempat lain — jurang dan lilin yang hilang dalam pariti langsung ujian belakang, disiplin cap masa dalam taksonomi berat sebelah pandangan ke hadapan dan membuktikan tiada pandangan ke hadapan merentasi jangka masa. Satu mod kegagalan, bagaimanapun, adalah khusus Granger dan cukup teruk untuk menamakan:

Pengisian ke hadapan menghasilkan hasilnya. Lilin yang diisi ke hadapan mengulangi penutup sebelumnya, yang menyuntik autokorelasi tulen ke dalam siri — dan autokorelasi lag-1 dalam YY yang diselaraskan secara mekanikal dengan XX tidak dapat dibezakan, kepada ujian-F, daripada hubungan sebab akibat satu lag. Perkara yang sama berlaku di seluruh venue: 1 saat mengimbangi antara dua pertukaran pada bar minit boleh mencipta atau memusnahkan kepentingan lag-1 secara langsung, kerana ia mengalihkan bahagian sempadan bar yang mana satu pergerakan mendarat. Sebelum menjalankan mana-mana ini, sahkan bahawa jurang digugurkan dan bukannya diisi dan kedua-dua siri dicop dari jam yang sama.

Melaporkan penemuan lead-lag dalam literatur

Konstelasi bukti untuk penyelidikan lead-lag

Ini adalah petikan, bukan ukuran daripada artikel ini. Mereka di sini untuk menyatakan apa yang didakwa oleh rekod yang diterbitkan, supaya perbandingan di atas mempunyai sesuatu untuk dipersetujui atau tidak dipersetujui.

  • BTC kepada altcoin. Kajian 2026 dalam Pasaran Kewangan Asia-Pasifik (Springer) melaporkan penghantaran harga frekuensi tinggi daripada Bitcoin kepada altcoin, dengan syiling bermodal kecil menunjukkan respons tertangguh dengan ketara dan kecairan yang lebih rendah dikaitkan dengan tindak balas yang lebih perlahan. Magnitud ketinggalan yang lazimnya dipetik daripada barisan kerja ini — kira-kira 1-3 minit BTC ke ETH, lebih lama untuk had pertengahan dan kecil, semakin satu arah apabila had pasaran jatuh — ialah dapatan yang dipetik, tidak diperoleh semula di sini. Peringkat kapitalisasi pasaran yang mereka gunakan ialah tangga yang sama digunakan dalam pengesahan berbilang simbol.
  • CEX mengetuai DEX. Penyelidikan tentang struktur mikro kripto (MDPI) melaporkan tempat berpusat yang mendominasi penemuan harga, dengan aliran maklumat berjalan CEX-to-DEX dan tiada sebab-musabab songsang yang ketara — konsisten dengan enjin padanan sub-milisaat berbanding penyelesaian masa sekatan.
  • ETH sebagai syiling bebas. Kerja VAR-SVAR (MDPI) mencari rejim di mana Ethereum bertindak sebagai sumber dan Bitcoin sebagai penerima limpahan, terutamanya semasa fasa didorong DeFi dan NFT.

Pertukaran silang, secara ringkas

Jeda syiling-dua-tempat yang sama adalah persediaan sebenar, tetapi ekonominya — ambang yuran, tangga kependaman, sebab lag itu wujud sama sekali — sudah diatasi dalam arbitraj statistik dan perdagangan pasangan dan kimchi premium. Satu-satunya perkara yang Granger tambah ialah soalan kestabilan: adakah kausaliti Binance-to-Coinbase berterusan penting, atau adakah ia berkelip seperti yang lain? Jalankan ujian bergolek pada pasangan tempat; jawapannya ialah siri masa nilai-p, bukan ya.

Mengubah ketinggalan yang masih ada kepada kedudukan

Ambang isyarat menjadi kedudukan terkawal

Jika pasangan mengosongkan ambang yang diperbetulkan dan ujian guling, isyarat itu sendiri adalah remeh: peramal terkumpul kembali ke atas tetingkap ketinggalan, ambang.

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

Tiga perkara yang bukan sebahagian daripada artikel ini kerana ia telah diselesaikan di sini:

Had

Sempadan ketidakpastian penyebab

Penyebab Granger bukan kausaliti. Pembaur (peristiwa makro menggerakkan kedua-dua kaki dengan sedikit salah penjajaran cap masa), pemacu biasa (dua alt kedua-duanya mengikuti BTC pada kelajuan berbeza) dan pembolehubah yang ditinggalkan (menguji BTC kepada DOGE tanpa ETH dalam sistem) semuanya menghasilkan statistik penting tanpa aliran maklumat langsung. Mengehadkan kepada ujian bivariat, seperti yang dilakukan oleh artikel ini, menjadikan masalah pembolehubah yang ditinggalkan lebih teruk, bukan lebih baik.

Kelinearan. Ujian hanya melihat struktur ramalan linear dalam min bersyarat. Kripto mempunyai pengelompokan turun naik, kesan leverage dan suis rejim — lihat ramalan turun naik GARCH dan korelasi dinamik DCC-GARCH untuk cerita detik kedua. Alternatif bukan linear yang patut diketahui: ujian kernel Diks-Panchenko (2006), pemindahan entropi sebagai analog teori-maklumat, dan kausalitas kopula Granger merentas pengedaran bersama penuh.

Pemecahan struktur. Sebarang perhubungan yang dianggarkan pada satu tetingkap adalah bersyarat pada rejim tetingkap itu; ujian rolling di atas adalah diagnostik minimum, dan ia adalah diagnostik, bukan pembetulan.

Ringkasan

Isyarat lag plumbum teguh disuling daripada bunyi bising

  1. Pasangkan VAR pada aras, pilih pp oleh BIC setiap pasangan, ditambah dengan dmaxd_{max}, dan Wald-test yang pertama pp ketinggalan sahaja. Bina matriks sekatan dengan tangan — milik perpustakaan test_causality mengehadkan ketinggalan tambahan juga, yang bukan Toda-Yamamoto.
  2. Jalankan ujian pulangan berbeza sebagai garis dasar pada pasangan dan ketinggalan yang sama, dan laporkan perselisihan faham. Jadual itu adalah penemuan; matriks asterisk bukan.
  3. Betulkan matriks untuk keluarga ujian berkorelasi melalui N berkesan, bukan Bonferroni, dan laporkan bilangan sel yang hidup.
  4. Gulungkannya. Laporkan pecahan tingkap penting dan kiraan lintasan. Kepentingan bahawa kelipan bukanlah ketinggalan yang boleh didagangkan tidak kira betapa kecilnya nilai p terkumpul.
  5. Kurangkan celah daripada mengisi ke hadapan, dan semak penjajaran jam merentas venue, sebelum mempercayai sebarang keputusan lag-1.

Hasil yang sangat baik bagi prosedur ini adalah negatif — perhubungan BTC-ke-alt yang ketara dalam sampel, bertahan dalam pembetulan, dan masih melepasi garisan 0.05 dalam kedua-dua arah setiap beberapa ratus bar adalah hasil sebenar tentang kebolehdagangan dan berbaloi untuk diterbitkan sebagai satu.

Rujukan

Penafian: Maklumat yang disediakan dalam artikel ini adalah untuk tujuan pendidikan dan maklumat sahaja dan bukan merupakan nasihat kewangan, pelaburan, atau dagangan. Dagangan mata wang kripto melibatkan risiko kerugian yang ketara.

Pengarang

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

Kekal Mendahului Pasaran

Langgan surat berita kami untuk pandangan dagangan AI eksklusif, analisis pasaran, dan kemas kini platform.

Kami menghormati privasi anda. Berhenti melanggan pada bila-bila masa.