Toda-Yamamoto vs Differenced Granger: Liệu độ trễ dẫn đầu của BTC có tồn tại được không?
Hầu hết mọi kết quả nhân quả Granger được công bố về tiền điện tử đều được tính toán trên log-return. Sự lựa chọn đó không miễn phí. Sự khác biệt làm cho chuỗi dừng lại, điều mà bài kiểm tra F tiêu chuẩn yêu cầu, nhưng nó cũng loại bỏ mối quan hệ cấp độ - và nếu hai đồng tiền được đồng liên kết, VAR khác biệt sẽ bị xác định sai và bài kiểm tra đang trả lời một câu hỏi hơi khác so với câu hỏi bạn đã hỏi.
Toda và Yamamoto (1995) đưa ra một giải pháp: điều chỉnh VAR ở các cấp độ có độ trễ cao hơn, chỉ kiểm tra những cái ban đầu và nhận được một kết quả hợp lệ. bất kể nghiệm đơn vị hay sự đồng liên kết. Nó nổi tiếng trong kinh tế lượng và hầu như không bao giờ được áp dụng cho độ trễ dẫn đầu của tiền điện tử.
Vì vậy, bài viết này thực hiện một việc: chạy cả hai thử nghiệm trên cùng một cặp, trên cùng một cửa sổ và báo cáo xem chúng có không đồng ý hay không. Sau đó, áp dụng biện pháp theo dõi trung thực — một hiệu chỉnh thử nghiệm đa nhóm tương quan trên ma trận kết quả và giá trị p luân phiên để xem liệu độ trễ "đáng kể" có đủ ổn định để giao dịch hay chỉ nhấp nháy trên ngưỡng.
Lý thuyết dưới đây chỉ đủ để làm cho sự so sánh trở nên rõ ràng. Blog đã đề cập đến các gốc đơn vị, sự đồng tích hợp, tải dữ liệu, định cỡ và chi phí; đó là những liên kết, không phải các phần.
Những gì nhân quả Granger thực sự tuyên bố

Nhân quả Granger là mức độ ưu tiên dự đoán, không phải cơ chế: nguyên nhân Granger nếu đã qua làm giảm phương sai lỗi dự báo của vượt quá những gì quá khứ đã giải thích rồi.
nguyên nhân Granger nếu như
Hai chuỗi được điều khiển bởi một yếu tố ẩn chung có thể cho thấy mối quan hệ nhân quả Granger mà không có mối liên hệ trực tiếp nào giữa chúng. Trong tiền điện tử, lời cảnh báo đó không mang tính học thuật — BTC là yếu tố chi phối duy nhất trên toàn bộ tổ hợp altcoin, do đó, hầu hết mọi "quan hệ nhân quả" từ alt đến alt đều là một tạo tác có thể có tốc độ phản ứng khác nhau đối với cùng một cú sốc BTC.
Khung VAR
Bài kiểm tra tồn tại bên trong Vector Autoregression. Đối với hai biến có độ trễ:
Ở dạng ma trận, VAR(p) với biến:
Kiểm tra xem nguyên nhân Granger đang thử nghiệm hạn chế chung trong phương trình đầu tiên. Lộ trình tiêu chuẩn là thử nghiệm F trên tổng bình phương bị hạn chế và không bị giới hạn,
với dạng Wald tiệm cận tương đương . Mọi thứ tiếp theo là câu hỏi về hệ số nào mà hạn chế được áp dụng và VAR được trang bị dựa trên dữ liệu nào.
Lựa chọn độ trễ
quan trọng hơn hầu hết các bài viết thừa nhận: quá ít độ trễ bỏ lỡ động lực, quá nhiều mức độ tự do đốt cháy và phá hủy quyền lực.
Phạm vi tìm kiếm hợp lý: 1-60 trên dữ liệu thứ hai, 1-30 trên dữ liệu phút, 1-48 trên dữ liệu hàng giờ. BIC là mặc định phù hợp ở đây - đó là tiêu chí kỹ lưỡng hơn và độ trễ dẫn đầu trong các cặp tiền điện tử thanh khoản là một hiện tượng bộ nhớ ngắn. Mọi kết quả bên dưới đều báo cáo BIC đã chọn mỗi cặp thay vì cố định một độ trễ trên toàn vũ trụ, bởi vì độ trễ cố định sẽ âm thầm chuyển đổi lựa chọn độ trễ thành một tuyên bố quan trọng.
Tại sao bài kiểm tra khác biệt lại là mặc định sai

Chuỗi giá tiền điện tử là I(1). Cách khắc phục thông thường - lấy log-return - mua tính ổn định với chi phí ở mức độ đồng liên kết và nếu cặp này chia sẻ trạng thái cân bằng dài hạn thì VAR chênh lệch sẽ bị xác định sai. Cơ chế gốc đơn vị và đồng liên kết đằng sau câu đó (ADF, Engle-Granger với các giá trị tới hạn Monte-Carlo, Johansen trên hệ thống VAR) đã được đề cập trong chênh lệch thống kê và giao dịch theo cặp; giả sử nó ở đây. Vấn đề chỉ là biện pháp khắc phục thông thường - khác biệt, sau đó kiểm tra - là một quyết định kiểu mẫu kèm theo hậu quả, và Toda-Yamamoto là cách để tránh đưa ra quyết định đó.
Quy trình Toda-Yamamoto
Lắp VAR với lag, ở đâu là thứ tự độ trễ tối ưu và là thứ tự tích hợp tối đa của chuỗi, sau đó chỉ kiểm tra các hạn chế ** ở chuỗi đầu tiên độ trễ**. phần bổ sung độ trễ hấp thụ tính không cố định; thống kê Wald lần đầu tiên các hệ số tuân theo một tiêu chuẩn bất kể chuỗi đó là I(0), I(1) hay đồng liên kết.
- Quyết tâm — ADF và KPSS trên mỗi dòng. Đối với giá tiền điện tử hầu như luôn luôn.
- Lựa chọn — điều chỉnh VAR theo cấp độ, chọn theo BIC.
- Ước tính VAR tăng thêm() về cấp độ, không có sự khác biệt.
- Wald-kiểm tra đầu tiên chỉ chậm, bỏ qua tính năng bổ sung. Kết quả là .
Lợi ích: không có thử nghiệm trước đồng tích hợp, không có sự khác biệt và kích thước thử nghiệm chính xác - tỷ lệ loại bỏ dưới giá trị rỗng vẫn ở gần danh nghĩa bất kể các đặc tính tích hợp hóa ra là gì. Cái giá phải trả là bước 4 không phải là bao test_causality thực hiện theo mặc định, đó là lý do khiến hầu hết quá trình triển khai đều diễn ra sai sót một cách lặng lẽ.
Thực hiện

Giả sử bạn đã căn chỉnh các thanh phút trong DataFrame - bản tóm tắt tìm nạp và chỉ mục ccxt nằm trong phát hiện chế độ với HMMvà trình bao bọc ADF bạn sẽ sử dụng cho bước 1 nằm trong chênh lệch thống kê và giao dịch theo cặp.
Một lưu ý về phiên bản trước khi chạy bất kỳ phiên bản nào: grangercausalitytests(..., verbose=False) không còn được dùng nữa và sau đó bị xóa trong mô hình thống kê 0,15. Bỏ đối số (chức năng không còn in theo mặc định) hoặc ghim statsmodels<0.15. Mã bên dưới giả định chữ ký hiện đại.
Toda-Yamamoto, làm đúng
Việc hạn chế phải được xây dựng bằng tay. VARResults.test_causality kiểm tra tất cả độ trễ của biến gây ra trong mô hình phù hợp — trên VAR tăng cường() bao gồm tụt hậu trong hạn chế, đó chính xác là điều Toda-Yamamoto nói không nên làm. Việc sửa chữa là một cách rõ ràng ma trận chống lại hiệp phương sai hệ số đầy đủ:
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,
}
Hai chi tiết rất dễ mắc sai sót và làm mất hiệu lực bài kiểm tra nếu bạn làm như vậy. Đầu tiên, số học chỉ mục phải phù hợp với cách các mô hình thống kê làm phẳng params - xác minh trên một mô hình được trang bị beta[target_idx * n_per_eq + 1] bằng res.params.iloc[1, target_idx] trước khi tin tưởng bất kỳ giá trị p nào. Thứ hai, sử dụng np.linalg.solve, không pinv: nếu như là số ít, hạn chế bị suy biến và quá trình chạy sẽ thất bại nặng nề thay vì trả về một con số có vẻ hợp lý. Một nghịch đảo giả ở đây là cách các bài kiểm tra Wald bị hỏng vẫn tồn tại được khi xem xét mã.
Granger sai phân chuẩn, để so sánh
Đường cơ sở mà so sánh dựa vào - lợi nhuận log, cùng cặp, cùng độ trễ BIC:
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}
Ghi chú maxlag=[p] còn hơn là maxlag=p: truyền một int chạy mỗi độ trễ từ 1 đến và cám dỗ bạn báo cáo bài kiểm tra tốt nhất, đó là bài kiểm tra nhiều bài chưa được ghi lại bên trên bài kiểm tra nhiều lần mà bạn đang chạy.
Sự so sánh
Đối với mỗi cặp, hãy chạy thử nghiệm khác biệt về lợi nhuận và Toda-Yamamoto ở các cấp độ, ở cùng BIC đã chọn , và lập bảng nơi hai người không đồng ý. Sự bất đồng là một tế bào thú vị: một cặp có ý nghĩa về sự khác biệt nhưng không có ý nghĩa về cấp độ là một tạo tác có thể phân biệt được mối quan hệ đồng liên kết; điều ngược lại cho thấy mối quan hệ cấp độ mang thông tin mà bài kiểm tra lợi nhuận không thể nhìn thấy.
Nhiều so sánh trên ma trận nhân quả

đầy đủ ma trận là nơi điều này trở nên nguy hiểm. Quét 20 tài sản, 10 độ trễ là 3.800 thử nghiệm giả thuyết và Bonferroni là sự điều chỉnh sai cho một họ có mối tương quan này - các thử nghiệm chia sẻ dữ liệu, chia sẻ hệ số BTC và không gần như độc lập, vì vậy Bonferroni đồng thời quá bảo thủ về mặt tổng hợp và gây hiểu lầm về những tế bào nào tồn tại. Sử dụng máy móc ** hiệu quả-N từ bài báo Sharpe xì hơi**, được xây dựng cho chính xác tình huống này: nhóm nhóm thử nghiệm tương quan, tính các thử nghiệm độc lập thay vì thử nghiệm thô và ngưỡng chống lại điều đó.
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
Con số quan trọng không phải là có bao nhiêu ô dưới 0,05 - mà là có bao nhiêu ô sống sót qua ngưỡng đã hiệu chỉnh-N hiệu quả.
Đọc ma trận còn sót lại theo cấu trúc, không phải từng ô: các hàng trong đó một nội dung khiến nhiều nội dung khác xác nhận hệ thống phân cấp thông tin; một cột gây ra bởi không có gì gợi ý động lực mang phong cách riêng, dành riêng cho mã thông báo hơn là một khám phá.
Bài kiểm tra trung thực: độ ổn định khi lăn

Một giá trị p trong mẫu gần như vô giá trị để giao dịch. Câu hỏi liên quan là liệu ý nghĩa có tồn tại hay không. Mối quan hệ tài sản chéo trong tiền điện tử phụ thuộc vào chế độ – cấu trúc tương quan khác nhau rõ rệt giữa bình tĩnh và hoảng loạn, và bản thân chế độ này có thể ước tính được (Phát hiện chế độ HMM) — vì vậy ước tính độ trễ dẫn đầu trên một cửa sổ là một tuyên bố về cửa sổ đó.
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")
Báo cáo hai điều từ loạt bài này: tỷ lệ cửa sổ dưới 0,05 và số lần vượt ngưỡng. Mối quan hệ có ý nghĩa ở 80% cửa sổ có ba đường giao nhau là một đối tượng khác với mối quan hệ có ý nghĩa ở 55% cửa sổ có bốn mươi đường giao nhau, ngay cả khi giá trị p gộp là giống hệt nhau. Thứ hai là không thể giao dịch được — bạn không thể xác định kích thước vị thế trên một tín hiệu có sự tồn tại thay đổi sau mỗi vài trăm thanh và độ trễ ước tính lại đảm bảo bạn luôn giao dịch ở chế độ trước đó.
Bẫy dữ liệu dành riêng cho Granger

Vệ sinh dữ liệu tiền điện tử chung được đề cập ở nơi khác - những khoảng trống và thiếu nến trong tính chẵn lẻ backtest-live, kỷ luật dấu thời gian trong phân loại thiên vị nhìn về phía trước Và chứng tỏ không có cái nhìn về phía trước trong các khung thời gian. Tuy nhiên, có một chế độ lỗi dành riêng cho Granger và đủ nghiêm trọng để đặt tên:
Điền chuyển tiếp sẽ tạo ra kết quả. Một cây nến chuyển tiếp lặp lại lần đóng cửa trước đó, đưa hiện tượng tự tương quan thuần túy vào chuỗi — và tự tương quan lag-1 trong được căn chỉnh về mặt cơ học với không thể phân biệt được, theo F-test, với mối quan hệ nhân quả một độ trễ. Điều tương tự cũng áp dụng ở các địa điểm: độ lệch đồng hồ 1 giây giữa hai sàn giao dịch trên các thanh phút có thể tạo ra hoặc phá bỏ hoàn toàn ý nghĩa độ trễ-1 vì nó làm dịch chuyển phía nào của ranh giới thanh mà một nước đi sẽ dừng lại. Trước khi chạy bất kỳ thao tác nào trong số này, hãy xác minh rằng các khoảng trống được loại bỏ chứ không phải được lấp đầy và cả hai chuỗi đều được đóng dấu từ cùng một đồng hồ.
Các phát hiện về độ trễ dẫn đầu được báo cáo trong tài liệu

Đây là những trích dẫn, không phải số đo từ bài viết này. Họ ở đây để nói những gì mà hồ sơ được công bố khẳng định, để sự so sánh ở trên có điều gì đó đồng tình hoặc không đồng tình.
- BTC sang altcoin. Một nghiên cứu năm 2026 tại Thị trường tài chính Châu Á-Thái Bình Dương (lò xo) báo cáo việc truyền giá tần suất cao từ Bitcoin sang các altcoin, với các đồng tiền vốn hóa nhỏ cho thấy phản hồi bị trì hoãn đáng kể và tính thanh khoản thấp hơn liên quan đến phản ứng chậm hơn. Độ trễ thường được trích dẫn từ dòng công việc này - khoảng 1-3 phút BTC so với ETH, dài hơn đối với các công ty vốn hóa vừa và nhỏ, ngày càng một chiều khi vốn hóa thị trường giảm - là những phát hiện được trích dẫn, không được lấy lại ở đây. Mức vốn hóa thị trường mà họ dựa vào cũng giống như bậc thang được sử dụng trong xác thực đa ký hiệu.
- CEX dẫn đầu DEX. Nghiên cứu về vi cấu trúc tiền điện tử (MDPI) báo cáo các địa điểm tập trung chiếm ưu thế trong việc khám phá giá, với luồng thông tin chạy CEX-to-DEX và không có quan hệ nhân quả ngược đáng kể - phù hợp với các công cụ khớp dưới một phần nghìn giây so với giải quyết theo thời gian khối.
- ETH là một đồng tiền độc lập. VAR-SVAR hoạt động (MDPI) tìm thấy các chế độ trong đó Ethereum đóng vai trò là nguồn và Bitcoin với tư cách là người nhận lan tỏa, đặc biệt là trong các giai đoạn do DeFi và NFT điều khiển.
Trao đổi chéo, ngắn gọn
Độ trễ của hai địa điểm giống nhau là một thiết lập thực sự, nhưng tính kinh tế của nó - ngưỡng phí, thang độ trễ, lý do tại sao độ trễ tồn tại - đã được giải quyết trong chênh lệch thống kê và giao dịch theo cặp Và kim chi cao cấp. Điều duy nhất Granger bổ sung là một câu hỏi về tính ổn định: mối quan hệ nhân quả giữa Binance với Coinbase liên tục có ý nghĩa đáng kể hay nó nhấp nháy như mọi thứ khác? Chạy thử nghiệm lăn trên cặp địa điểm; câu trả lời là chuỗi thời gian có giá trị p, không phải là có.
Biến độ trễ còn sót lại thành một vị trí

Nếu một cặp vượt qua ngưỡng đã sửa và thử nghiệm lăn, thì bản thân tín hiệu đó không đáng kể: bộ dự đoán tích lũy quay trở lại cửa sổ độ trễ, đã vượt ngưỡng.
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
Ba điều không nằm trong bài viết này vì chúng đã được giải quyết ở đây:
- Chi phí quyết định điều đó. Tín hiệu độ trễ ở quy mô phút trên các altcoin phải làm rõ mức chênh lệch, tác động và phí — xem mô hình trượt giá và chi phí Và kinh tế của người sản xuất, Và điều gì xảy ra khi chi phí được áp dụng cho người chiến thắng được chọn.
- Kích thước không phải là một phép biến đổi giá trị p. Việc chia tỷ lệ hiển thị tỷ lệ nghịch với giá trị p Granger là sai: giá trị p là bằng chứng chống lại giá trị rỗng, không phải là kích thước hiệu ứng và nó di chuyển theo độ dài mẫu. Kích thước của tác động ước tính và độ không chắc chắn của nó - xem Kích thước Kelly.
- Xác thực được thực hiện từng bước. Ước tính lại trên cơ sở luân phiên và đánh giá ngoài mẫu; tối ưu hóa tiến bộ là giao thức.
Hạn chế

Quan hệ nhân quả Granger không phải là quan hệ nhân quả. Các yếu tố gây nhiễu (một sự kiện vĩ mô di chuyển cả hai chân với dấu thời gian hơi lệch), trình điều khiển chung (hai alt đều theo sau BTC ở tốc độ khác nhau) và các biến bị bỏ qua (kiểm tra BTC thành DOGE mà không có ETH trong hệ thống) đều tạo ra số liệu thống kê quan trọng mà không có luồng thông tin trực tiếp. Việc hạn chế kiểm tra hai biến, như bài viết này làm, làm cho vấn đề biến bị bỏ sót trở nên tồi tệ hơn chứ không tốt hơn.
Tính tuyến tính. Thử nghiệm chỉ thấy cấu trúc dự đoán tuyến tính ở giá trị trung bình có điều kiện. Tiền điện tử có khả năng phân cụm biến động, hiệu ứng đòn bẩy và chuyển đổi chế độ — xem Dự báo biến động GARCH Và Tương quan động DCC-GARCH cho câu chuyện khoảnh khắc thứ hai. Các lựa chọn thay thế phi tuyến đáng để biết: thử nghiệm hạt nhân Diks-Panchenko (2006), chuyển entropy dưới dạng tương tự lý thuyết thông tin và quan hệ nhân quả copula Granger trên toàn bộ phân phối chung.
Phá vỡ cấu trúc. Bất kỳ mối quan hệ nào được ước tính trên một cửa sổ đều phụ thuộc vào chế độ của cửa sổ đó; bài kiểm tra lăn ở trên là chẩn đoán tối thiểu và nó là chẩn đoán chứ không phải là cách khắc phục.
Bản tóm tắt

- Điều chỉnh VAR ở mức, chọn bằng BIC mỗi cặp, tăng thêm , và kiểm tra Wald đầu tiên chỉ lag thôi. Xây dựng ma trận hạn chế bằng tay - của thư viện
test_causalitycũng hạn chế độ trễ tăng cường, điều này không phải của Toda-Yamamoto. - Chạy thử nghiệm lợi nhuận chênh lệch làm cơ sở cho các cặp giống nhau và độ trễ, đồng thời báo cáo những điểm bất đồng. Cái bàn đó chính là phát hiện; một ma trận dấu hoa thị thì không.
- Sửa ma trận cho họ thử nghiệm tương quan thông qua N hiệu dụng, không phải Bonferroni và báo cáo số lượng tế bào sống sót.
- Cuộn nó lại. Báo cáo tỷ lệ cửa sổ quan trọng và số lượng giao nhau. Ý nghĩa của việc nhấp nháy không phải là độ trễ có thể giao dịch cho dù giá trị p gộp nhỏ đến đâu.
- Bỏ các khoảng trống thay vì lấp đầy về phía trước và kiểm tra sự căn chỉnh đồng hồ giữa các địa điểm trước khi tin vào bất kỳ kết quả có độ trễ 1 nào.
Một kết quả hoàn toàn tốt của quy trình này là tiêu cực — mối quan hệ BTC-to-alt có ý nghĩa trong mẫu, tồn tại sau khi điều chỉnh và vẫn vượt qua đường 0,05 theo cả hai hướng cứ sau vài trăm thanh là kết quả thực sự về khả năng giao dịch và đáng được xuất bản dưới dạng một.
Tài liệu tham khảo
- Granger, C.W.J. (1969). "Điều tra mối quan hệ nhân quả bằng mô hình kinh tế lượng và phương pháp xuyên phổ." Kinh tế lượng, 37(3), 424-438.
- Toda, H.Y. và Yamamoto, T. (1995). "Suy luận thống kê về tự hồi quy vectơ với các quy trình có thể được tích hợp." Tạp chí Kinh tế lượng, 66(1-2), 225-250.
- Diks, C. và Panchenko, V. (2006). "Một hướng dẫn thống kê và thực tiễn mới cho việc kiểm tra quan hệ nhân quả Granger không tham số." Tạp chí Động lực và Kiểm soát Kinh tế, 30(9-10), 1647-1669.
- Sifat, I.M., Mohamad, A. (2019). “Mối quan hệ dẫn đầu-độ trễ giữa Bitcoin và Ethereum: Bằng chứng từ dữ liệu hàng giờ và hàng ngày.” Nghiên cứu về Kinh doanh và Tài chính Quốc tế, 50, 306-321.
- "Truyền giá từ Bitcoin sang tiền thay thế: Bằng chứng tần suất cao và ý nghĩa đối với chiến lược giao dịch." Thị trường tài chính châu Á-Thái Bình Dương, Springer, 2026.
- "Rủi ro lan tỏa trên thị trường tiền điện tử: Cái nhìn từ mối quan hệ nhân quả của VAR-SVAR Granger." Tạp chí Quản lý Rủi ro và Tài chính, MDPI.
- "Cấu trúc hai tầng của thị trường tỷ giá tài trợ tiền điện tử." Toán học, MDPI.
- “Sàn giao dịch phi tập trung và tập trung: Token kỹ thuật số nào có nguy cơ lây lan lớn hơn?” ScienceDirect, 2023.
Tác Giả
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.