← Kembali ke artikel
August 7, 2026
5 menit baca

Toda-Yamamoto vs Granger yang Berbeda: Apakah Lead-Lag BTC Bertahan?

Toda-Yamamoto vs Granger yang Berbeda: Apakah Lead-Lag BTC Bertahan?
#causal-inference
#Granger-causality
#lead-lag
#crypto
#VAR

Hampir setiap hasil kausalitas Granger yang dipublikasikan pada kripto dihitung berdasarkan pengembalian log. Pilihan itu tidaklah gratis. Perbedaan membuat rangkaian tersebut stasioner, yang disyaratkan oleh uji F standar, namun hal ini juga menghilangkan hubungan level — dan jika dua koin terkointegrasi, VAR yang berbeda salah ditentukan dan pengujian tersebut menjawab pertanyaan yang sedikit berbeda dari yang Anda tanyakan.

Toda dan Yamamoto (1995) menawarkan jalan keluarnya: sesuaikan VAR pada level dengan kelambatan ekstra, uji hanya yang asli, dan dapatkan validitas yang valid. χ2\chi^2 terlepas dari akar unit atau kointegrasi. Ini terkenal dalam ekonometrik dan hampir tidak pernah diterapkan pada lead-lag kripto.

Jadi artikel ini melakukan satu hal: jalankan kedua pengujian pada pasangan yang sama, melalui jendela yang sama, dan laporkan apakah keduanya tidak setuju. Kemudian terapkan tindak lanjut yang jujur ​​— koreksi pengujian ganda kelompok yang berkorelasi pada matriks yang dihasilkan, dan nilai p bergulir untuk melihat apakah jeda "signifikan" cukup stabil untuk diperdagangkan atau hanya berkedip melewati ambang batas.

Teori di bawah ini hanya diperlukan agar perbandingannya dapat dibaca. Blog ini sudah mencakup akar unit, kointegrasi, pemuatan data, ukuran, dan biaya; itu adalah tautan, bukan bagian.

Apa yang sebenarnya diklaim oleh kausalitas Granger

Jalur lead-lag terarah dalam peristiwa pasar

Kausalitas Granger adalah prioritas prediktif, bukan mekanisme: XX Penyebab Granger YY jika lewat XX mengurangi varians kesalahan perkiraan sebesar YY melampaui masa lalu YY sudah menjelaskan.

XX Penyebab Granger 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 seri yang didorong oleh faktor tersembunyi yang sama dapat menunjukkan kausalitas Granger tanpa hubungan langsung di antara keduanya. Dalam kripto, peringatan itu tidak bersifat akademis — BTC adalah satu-satunya faktor dominan di seluruh kompleks altcoin, jadi hampir semua "kausalitas" alt-to-alt merupakan artefak kandidat dengan kecepatan respons berbeda terhadap guncangan BTC yang sama.

Kerangka VAR

Tes ini ada di dalam Autoregresi Vektor. Untuk dua variabel dengan pp tertinggal:

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 variabel:

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 apakah XX Penyebab Granger YY sedang menguji pembatasan bersama H0:β1==βp=0H_0: \beta_1 = \cdots = \beta_p = 0 pada persamaan pertama. Rute standarnya adalah uji-F pada jumlah kuadrat sisa yang dibatasi dan tidak dibatasi,

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

dengan bentuk Wald yang setara secara asimtotik W=T(RSSrRSSu)/RSSudχ2(p)W = T \cdot (RSS_r - RSS_u)/RSS_u \xrightarrow{d} \chi^2(p). Berikut ini adalah pertanyaan tentang koefisien mana yang pembatasannya diterapkan, dan pada data apa VAR dipasang.

Seleksi jeda

pp lebih penting daripada yang diakui sebagian besar artikel: terlalu sedikit kelambatan yang meleset dari dinamika, terlalu banyak kelambatan yang membakar derajat kebebasan dan menghancurkan kekuasaan.

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}

Rentang pencarian yang masuk akal: 1-60 pada data kedua, 1-30 pada data menit, 1-48 pada data per jam. BIC adalah default yang tepat di sini — ini adalah kriteria yang lebih pelit, dan lead-lag pada pasangan kripto likuid adalah fenomena memori pendek. Setiap hasil di bawah melaporkan BIC yang dipilih pp per pasangan daripada memperbaiki satu lag di seluruh alam semesta, karena lag yang tetap secara diam-diam mengubah pilihan pemilihan lag menjadi klaim signifikansi.

Mengapa tes yang berbeda adalah default yang salah

Perbedaan dapat memecah-belah hubungan timbal balik

Seri harga kripto adalah I(1). Perbaikan yang biasa dilakukan – ambil log-return – membeli stasioneritas dengan mengorbankan tingkat kointegrasi, dan jika pasangan mata uang tersebut memiliki keseimbangan jangka panjang, perbedaan VAR akan salah ditentukan. Akar unit dan mesin kointegrasi di balik kalimat tersebut (ADF, Engle-Granger dengan nilai kritis Monte-Carlo, Johansen pada sistem VAR) sudah tercakup dalam arbitrase statistik dan perdagangan berpasangan; asumsikan di sini. Intinya hanyalah bahwa perbaikan yang biasa dilakukan - perbedaan, kemudian pengujian - adalah keputusan pemodelan dengan konsekuensi, dan Toda-Yamamoto adalah cara untuk menghindari pengambilan keputusan tersebut.

Prosedur Toda-Yamamoto

Pasang VAR dengan p+dmaxp + d_{max} tertinggal, di mana pp adalah urutan lag optimal dan dmaxd_{max} adalah urutan integrasi maksimum rangkaian, lalu uji batasan hanya pada rangkaian pertama pp tertinggal. Ekstra dmaxd_{max} kelambanan menyerap ketidakstasioneran; statistik Wald pada yang pertama pp koefisien mengikuti standar χ2(p)\chi^2(p) terlepas dari apakah deret tersebut I(0), I(1), atau terkointegrasi.

  1. Menentukan dmaxd_{max} — ADF dan KPSS pada setiap seri. Untuk harga kripto dmax=1d_{max} = 1 hampir selalu.
  2. Memilih pp — sesuaikan VAR pada level, pilih berdasarkan BIC.
  3. Perkirakan VAR yang diperbesar(p+dmaxp + d_{max}) pada level, tidak ada perbedaan.
  4. Uji Wald yang pertama pp hanya tertinggal, mengabaikan dmaxd_{max} tambahan. Hasilnya adalah χ2(p)\chi^2(p).

Imbalannya: tidak ada pra-uji kointegrasi, tidak ada pembedaan, dan ukuran pengujian yang benar — tingkat penolakan di bawah nol tetap mendekati nominal, apa pun properti integrasinya. Biayanya adalah langkah 4 tidak berapa test_causality dilakukan secara default, sehingga sebagian besar implementasi menjadi salah.

Pelaksanaan

Alur implementasi matriks lag

Asumsikan Anda sudah menyelaraskan bilah menit di DataFrame - boilerplate pengambilan dan indeks ccxt ada di deteksi rezim dengan HMM, dan pembungkus ADF yang akan Anda gunakan untuk langkah 1 sudah ada arbitrase statistik dan perdagangan berpasangan.

Satu catatan versi sebelum semua ini berjalan: grangercausalitytests(..., verbose=False) tidak digunakan lagi dan kemudian dihapus di statsmodels 0.15. Hilangkan argumen (fungsi tidak lagi dicetak secara default) atau sematkan statsmodels<0.15. Kode di bawah ini mengasumsikan tanda tangan modern.

Toda-Yamamoto, dilakukan dengan benar

Pembatasan harus dibuat dengan tangan. VARResults.test_causality menguji semua kelambatan dari variabel penyebab dalam model yang dipasang — pada VAR yang ditambah (p+1p+1) yang mencakup dmaxd_{max} kelambatan dalam pembatasan, hal yang menurut Toda-Yamamoto tidak boleh dilakukan. Perbaikannya bersifat eksplisit RR matriks terhadap kovarians koefisien 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 detail yang mudah salah dan membuat tes tidak valid jika Anda melakukannya. Pertama, aritmatika indeks harus sesuai dengan bagaimana statsmodels diratakan params — verifikasi pada model yang terpasang itu beta[target_idx * n_per_eq + 1] sama res.params.iloc[1, target_idx] sebelum mempercayai nilai p apa pun. Kedua, gunakan np.linalg.solve, bukan pinv: jika VV bersifat tunggal, pembatasannya merosot dan proses tersebut harusnya gagal total daripada mengembalikan angka yang tampak masuk akal. Kebalikan semu di sini adalah bagaimana pengujian Wald yang rusak dapat bertahan dalam tinjauan kode.

Granger yang berbeda standar, sebagai perbandingan

Garis dasar yang dibandingkan dengan perbandingan ini — pengembalian log, pasangan yang sama, lag 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}

Catatan maxlag=[p] daripada maxlag=p: meneruskan int menjalankan setiap lag dari 1 hingga pp dan menggoda Anda untuk melaporkan yang terbaik, yaitu beberapa pengujian yang tidak dicatat di atas beberapa pengujian yang sudah Anda jalankan.

Perbandingannya

Untuk setiap pasangan, jalankan tes perbedaan pada pengembalian dan Toda-Yamamoto pada level, pada BIC yang sama yang dipilih pp, dan tabulasikan jika keduanya tidak setuju. Ketidaksepakatan adalah sel yang menarik: pasangan yang signifikan dalam hal perbedaan tetapi tidak dalam tingkatan merupakan artefak kandidat yang membedakan hubungan kointegrasi; kebalikannya menunjukkan bahwa hubungan level membawa informasi yang tidak dapat dilihat oleh tes pengembalian.

Beberapa perbandingan pada matriks kausalitas

Memfilter matriks kausalitas yang besar

Penuh n×nn \times n matriks adalah tempat ini menjadi berbahaya. Sapuan 20 aset, 10 lag berarti 3.800 pengujian hipotesis, dan Bonferroni adalah koreksi yang salah untuk kelompok yang berkorelasi ini — pengujian tersebut berbagi data, berbagi faktor BTC, dan sama sekali tidak independen, sehingga Bonferroni secara bersamaan terlalu konservatif dalam agregat dan menyesatkan tentang sel mana yang bertahan. Gunakan mesin efektif-N dari artikel Sharpe yang kempes, yang dibuat untuk situasi ini: mengelompokkan rangkaian pengujian yang berkorelasi, menghitung uji coba independen, bukan uji coba mentah, dan melakukan ambang batas terhadap uji tersebut.

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

Angka yang penting bukanlah berapa banyak sel yang berada di bawah 0,05 — namun berapa banyak yang bertahan pada ambang batas efektif-N yang dikoreksi.

Baca matriks yang masih ada secara struktural, bukan sel demi sel: baris di mana satu aset menyebabkan banyak aset lainnya mengonfirmasi hierarki informasi; kolom yang disebabkan oleh ketiadaan menunjukkan dinamika yang unik dan spesifik terhadap token, bukan sebuah penemuan.

Tes yang jujur: stabilitas bergulir

Sinyal stabil melalui jendela bergulir

Nilai p tunggal dalam sampel hampir tidak berharga untuk diperdagangkan. Pertanyaan yang relevan adalah apakah signifikansi bertahan. Hubungan lintas aset dalam kripto bergantung pada rezim — struktur korelasinya sangat berbeda antara tenang dan panik, dan rezim itu sendiri dapat diperkirakan (Deteksi rezim HMM) — jadi perkiraan lead-lag pada satu jendela adalah pernyataan tentang jendela 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 hal dari rangkaian ini: pecahan jendela di bawah 0,05, dan jumlah penyeberangan ambang batas. Suatu hubungan yang signifikan pada 80% jendela dengan tiga persimpangan adalah objek yang berbeda dari satu hubungan signifikan pada 55% jendela dengan empat puluh persimpangan, meskipun nilai p yang dikumpulkan adalah identik. Yang kedua tidak dapat diperdagangkan — Anda tidak dapat mengukur posisi berdasarkan sinyal yang keberadaannya berubah setiap beberapa ratus bar, dan jeda estimasi ulang menjamin Anda selalu memperdagangkan rezim sebelumnya.

Perangkap data yang khusus untuk Granger

Kutu kripto yang tidak teratur mengganggu sinyal sebab akibat

Kebersihan data kripto umum dibahas di tempat lain – kesenjangan dan candle yang hilang paritas backtest-live, disiplin stempel waktu di taksonomi bias melihat ke depan Dan terbukti tidak melihat ke depan dalam jangka waktu tertentu. Namun, ada satu mode kegagalan yang spesifik untuk Granger dan cukup parah untuk disebutkan:

Pengisian ke depan menghasilkan hasilnya. Lilin yang diisi ke depan mengulangi penutupan sebelumnya, yang memasukkan autokorelasi murni ke dalam rangkaian — dan autokorelasi lag-1 di YY yang secara mekanis selaras dengan XX tidak dapat dibedakan, menurut uji F, dari hubungan sebab akibat satu lag. Hal yang sama juga berlaku di berbagai lokasi: perbedaan jam 1 detik antara dua bursa pada bar menit dapat langsung menciptakan atau menghancurkan signifikansi lag-1, karena hal ini menggeser sisi batas bar mana yang menjadi tempat pergerakan. Sebelum menjalankan semua ini, pastikan bahwa celah telah dihilangkan dan bukan diisi, dan bahwa kedua rangkaian dicap dari jam yang sama.

Temuan lead-lag yang dilaporkan dalam literatur

Konstelasi bukti untuk penelitian lead-lag

Ini adalah kutipan, bukan pengukuran dari artikel ini. Mereka di sini untuk menyampaikan apa yang diklaim oleh catatan yang dipublikasikan, sehingga perbandingan di atas ada yang setuju atau tidak setuju.

  • BTC ke altcoin. Studi tahun 2026 di Pasar Keuangan Asia-Pasifik (Peloncat) melaporkan transmisi harga frekuensi tinggi dari Bitcoin ke altcoin, dengan koin berkapitalisasi kecil menunjukkan respons yang tertunda secara signifikan dan likuiditas yang lebih rendah terkait dengan reaksi yang lebih lambat. Besaran lag yang biasa dikutip dari pekerjaan ini — kira-kira 1-3 menit BTC ke ETH, lebih lama untuk kapitalisasi menengah dan kecil, semakin searah seiring turunnya kapitalisasi pasar — ​​temuan yang dikutip, tidak diturunkan kembali di sini. Tingkat kapitalisasi pasar yang mereka tempati adalah tangga yang sama dengan yang digunakan validasi multi-simbol.
  • CEX memimpin DEX. Penelitian tentang struktur mikro kripto (MDPI) melaporkan lokasi terpusat yang mendominasi penemuan harga, dengan aliran informasi berjalan dari CEX ke DEX dan tidak ada kausalitas balik yang signifikan — konsisten dengan mesin pencocokan sub-milidetik versus penyelesaian waktu blok.
  • ETH sebagai koin independen. Pekerjaan VAR-SVAR (MDPI) menemukan rezim di mana Ethereum bertindak sebagai sumber dan Bitcoin sebagai penerima limpahan, terutama selama fase yang didorong oleh DeFi dan NFT.

Pertukaran silang, sebentar

Keterlambatan dua tempat yang sama merupakan suatu hal yang benar-benar terjadi, namun faktor keekonomiannya — ambang batas biaya, tangga latensi, alasan terjadinya kelambatan tersebut — telah diselesaikan dalam beberapa tahun terakhir. arbitrase statistik dan perdagangan berpasangan Dan premium kimchi. Satu-satunya hal yang Granger tambahkan adalah pertanyaan stabilitas: apakah kausalitas Binance-ke-Coinbase terus-menerus signifikan, atau apakah kausalitasnya berkedip-kedip seperti yang lainnya? Jalankan tes bergulir pada pasangan venue; jawabannya adalah deret waktu nilai-p, bukan ya.

Mengubah ketertinggalan menjadi sebuah posisi

Ambang batas sinyal menjadi posisi terkendali

Jika pasangan melewati ambang batas yang dikoreksi dan uji bergulir, sinyalnya sendiri sepele: prediktor kumulatif kembali melalui jendela jeda, ambang batas.

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 hal yang bukan merupakan bagian dari pasal ini karena sudah diatur di sini:

Keterbatasan

Batasan ketidakpastian sebab akibat

Kausalitas Granger bukanlah kausalitas. Perancu (peristiwa makro yang menggerakkan kedua kaki dengan sedikit ketidakselarasan stempel waktu), penggerak umum (dua alt mengikuti BTC dengan kecepatan berbeda), dan variabel yang dihilangkan (menguji BTC ke DOGE tanpa ETH di sistem) semuanya menghasilkan statistik signifikan tanpa aliran informasi langsung. Membatasi pengujian bivariat, seperti yang dilakukan artikel ini, membuat masalah variabel yang dihilangkan menjadi lebih buruk, bukan lebih baik.

Linearitas. Pengujian ini hanya melihat struktur prediksi linier dalam rata-rata bersyarat. Crypto memiliki pengelompokan volatilitas, efek leverage, dan peralihan rezim — lihat Perkiraan volatilitas GARCH Dan Korelasi dinamis DCC-GARCH untuk cerita momen kedua. Alternatif nonlinier yang perlu diketahui: uji kernel Diks-Panchenko (2006), entropi transfer sebagai analog teori informasi, dan kausalitas kopula Granger di seluruh distribusi gabungan penuh.

Kerusakan struktural. Hubungan apa pun yang diperkirakan pada satu jendela bergantung pada rezim jendela tersebut; tes bergulir di atas adalah diagnostik minimum, dan ini adalah diagnostik, bukan perbaikan.

Ringkasan

Sinyal lead-lag yang kuat disaring dari kebisingan

  1. Sesuaikan VAR pada level, pilih pp dengan BIC per pasang, ditambah dengan dmaxd_{max}, dan uji Wald yang pertama pp hanya tertinggal. Bangun matriks pembatasan dengan tangan - milik perpustakaan test_causality membatasi penambahan lag juga, yang bukan merupakan Toda-Yamamoto.
  2. Jalankan pengujian return yang berbeda sebagai dasar pada pasangan dan lag yang sama, dan laporkan ketidaksepakatan. Tabel itu adalah temuannya; matriks tanda bintang tidak.
  3. Perbaiki matriks untuk kelompok uji yang berkorelasi melalui N yang efektif, bukan Bonferroni, dan laporkan berapa banyak sel yang bertahan.
  4. Gulung. Laporkan sebagian kecil jendela yang signifikan dan jumlah penyeberangan. Signifikansi bahwa kedipan bukanlah kelambatan yang dapat diperdagangkan tidak peduli seberapa kecil nilai p yang dikumpulkan.
  5. Hilangkan kesenjangan alih-alih mengisi ke depan, dan periksa penyelarasan jam di seluruh tempat, sebelum mempercayai hasil lag-1 apa pun.

Hasil yang sangat baik dari prosedur ini adalah negatif — hubungan BTC-ke-alt yang signifikan dalam sampel, bertahan dari koreksi, dan masih melewati garis 0,05 di kedua arah setiap beberapa ratus batang adalah hasil nyata tentang kemampuan diperdagangkan, dan layak dipublikasikan sebagai satu kesatuan.

Referensi

Penafian: Informasi yang disediakan dalam artikel ini hanya untuk tujuan edukasi dan informasi serta tidak merupakan nasihat keuangan, investasi, atau trading. Trading mata uang kripto mengandung risiko kerugian yang signifikan.

Penulis

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

Selangkah Lebih Maju dari Pasar

Berlangganan newsletter kami untuk wawasan AI trading eksklusif, analisis pasar, dan pembaruan platform.

Kami menghormati privasi Anda. Berhenti berlangganan kapan saja.