تودا-ياماموتو ضد جرانجر المختلف: هل يستمر التأخر في تقدم BTC؟
يتم حساب كل نتيجة سببية لـ Granger منشورة تقريبًا على العملات المشفرة على عوائد السجل. وهذا الاختيار ليس مجانيا. يؤدي التفريق إلى جعل السلسلة ثابتة، وهو ما يتطلبه اختبار F القياسي، ولكنه يتجاهل أيضًا علاقة المستوى - وإذا تم تكامل عملتين، فسيتم تحديد VAR المختلف بشكل خاطئ ويجيب الاختبار على سؤال مختلف قليلاً عن السؤال الذي طرحته.
يعرض تودا وياماموتو (1995) طريقة للخروج: قم بتركيب تقنية VAR على المستويات ذات التأخرات الإضافية، واختبر المستويات الأصلية فقط، واحصل على حكم صالح. بغض النظر عن جذور الوحدة أو التكامل المشترك. إنه معروف جيدًا في الاقتصاد القياسي ولا يتم تطبيقه أبدًا على تأخر التشفير.
لذا فإن هذه المقالة تفعل شيئًا واحدًا: قم بتشغيل كلا الاختبارين على نفس الأزواج، في نفس النافذة، وقم بالإبلاغ عما إذا كانوا يختلفون. ثم قم بتطبيق المتابعة الصادقة - تصحيح اختبار متعدد الأسرة المترابطة على المصفوفة الناتجة، وقيمة p متدرجة لمعرفة ما إذا كان التأخر "الهام" مستقرًا بدرجة كافية للتداول أو مجرد وميض عبر العتبة.
النظرية أدناه هي فقط بقدر ما هو مطلوب لجعل المقارنة واضحة. تغطي المدونة بالفعل جذور الوحدات، والتكامل المشترك، وتحميل البيانات، والتحجيم، والتكاليف؛ هذه روابط وليست أقسام
ما تدعيه سببية جرانجر في الواقع

سببية جرانجر هي أسبقية تنبؤية وليست آلية: أسباب جرانجر إذا الماضي يقلل من تباين خطأ التنبؤ أبعد مما مضى يشرح بالفعل.
أسباب جرانجر لو
يمكن لسلسلتين مدفوعتين بعامل خفي مشترك أن تظهرا علاقة سببية لجرانجر دون وجود صلة مباشرة بينهما. في العملات المشفرة، هذا التحذير ليس أكاديميًا - BTC هو عامل مهيمن واحد عبر مجمع العملات البديلة بأكمله، لذا فإن أي "سببية" تقريبًا من بديل إلى بديل هي قطعة أثرية مرشحة لسرعات استجابة مختلفة لنفس صدمة BTC.
إطار عمل VAR
يعيش الاختبار داخل الانحدار التلقائي المتجه. لاثنين من المتغيرات مع التخلف:
في شكل مصفوفة، VAR(p) مع المتغيرات:
اختبار ما إذا كان أسباب جرانجر يختبر القيد المشترك في المعادلة الأولى المسار القياسي هو اختبار F على مجموع المربعات المتبقية المقيدة وغير المقيدة،
مع صيغة والد المكافئة مقاربة . كل ما يلي هو سؤال حول ما هي المعاملات التي تم تطبيق القيد عليها، وعلى أي بيانات تم تركيب VAR.
اختيار التأخر
إنها مهمة أكثر مما تعترف به معظم الكتابات: فالقليل جدًا من التأخيرات يخطئ الديناميكيات، والكثير جدًا من درجات الحرية يحرق ويدمر القوة.
نطاقات البحث المعقولة: 1-60 في البيانات الثانية، 1-30 في بيانات الدقيقة، 1-48 في كل ساعة. BIC هو المعيار الافتراضي الصحيح هنا - فهو المعيار الأكثر بخلًا، كما أن تأخر التقدم في أزواج العملات المشفرة السائلة هو ظاهرة قصيرة الذاكرة. كل نتيجة أدناه تشير إلى اختيار BIC لكل زوج بدلاً من إصلاح تأخر واحد عبر الكون، لأن التأخير الثابت يحول بصمت اختيار تحديد التأخير إلى مطالبة بالأهمية.
لماذا يعتبر الاختبار المختلف هو الإعداد الافتراضي الخاطئ

سلسلة أسعار التشفير هي I(1). الحل المعتاد - أخذ عوائد السجل - يشتري الثبات على حساب مستوى التكامل المشترك، وإذا كان الزوج يشترك في توازن طويل المدى، فسيتم تحديد VAR المختلف بشكل خاطئ. إن آلية جذر الوحدة والتكامل المشترك وراء هذه الجملة (ADF، Engle-Granger بقيمها الحرجة لمونت كارلو، Johansen على نظام VAR) تمت تغطيتها بالفعل في المراجحة الإحصائية وتداول الأزواج؛ افترض ذلك هنا. النقطة المهمة هنا هي أن العلاج المعتاد ــ الاختلاف ثم الاختبار ــ هو اتخاذ قرار نموذجي له عواقب، وتودا ياماموتو هو السبيل لتجنب اتخاذ القرار.
إجراء تودا-ياماموتو
تناسب VAR مع يتخلف، حيث هو الترتيب الأمثل للتأخر و هو أقصى ترتيب تكامل للسلسلة، ثم اختبر القيود ** فقط على الأول يتخلف **. اضافية التأخر يمتص عدم السكون؛ إحصائية والد في الأول المعاملات تتبع المعيار بغض النظر عما إذا كانت المتسلسلة هي I(0) أو I(1) أو متكاملة.
- ** تحديد ** — ADF وKPSS في كل سلسلة. لأسعار التشفير دائما تقريبا.
- اختر — تناسب VAR على المستويات، اختر من خلال BIC.
- تقدير VAR المعزز() على المستويات، لا فرق.
- ** اختبار والد الأول يتخلف فقط **، متجاهلاً إضافات. النتيجة هي .
المردود: عدم وجود اختبار مسبق للتكامل المشترك، وعدم وجود اختلافات، وحجم الاختبار الصحيح - يظل معدل الرفض تحت القيمة الصفرية قريبًا من الاسمي مهما كانت خصائص التكامل. التكلفة هي أن الخطوة 4 ليست ما test_causality يتم ذلك بشكل افتراضي، وهو المكان الذي تسوء فيه معظم عمليات التنفيذ بهدوء.
التنفيذ

افترض أنك قمت بالفعل بمحاذاة أشرطة الدقائق في DataFrame - اللوحة النموذجية لجلب وفهرس ccxt موجودة في اكتشاف النظام باستخدام HMM، ومجمّع ADF الذي ستستخدمه للخطوة 1 موجود في المراجحة الإحصائية والأزواج Trading.
ملاحظة إصدار واحد قبل تشغيل أي من هذا: grangercausalitytests(..., verbose=False) تم إهماله ثم إزالته في statsmodels 0.15. قم بإسقاط الوسيطة (لم تعد الوظيفة تُطبع بشكل افتراضي) أو قم بتثبيتها statsmodels<0.15. الرمز أدناه يفترض التوقيع الحديث.
تودا ياماموتو، تم بشكل صحيح
يجب أن يتم بناء القيد باليد. VARResults.test_causality اختبارات جميع تأخر المتغير المسبب في النموذج المجهز - على VAR المعزز() والتي تتضمن التأخر في التقييد، وهو بالضبط ما يقول تودا ياماموتو ألا يفعله. الإصلاح صريح مصفوفة ضد التباين الكامل للمعامل:
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: لو المفرد هو القيد المتدهور ويجب أن يفشل التشغيل بصوت عالٍ بدلاً من إرجاع رقم يبدو معقولاً. والعكس الزائف هنا هو كيف تنجو اختبارات Wald المكسورة من مراجعة الكود.
اختلاف جرانجر القياسي للمقارنة
خط الأساس الذي تتم المقارنة معه - إرجاعات السجل، نفس الأزواج، نفس تأخر 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}
ملحوظة maxlag=[p] بدلا من maxlag=p: تمرير int يعمل كل تأخير من 1 إلى ويغريك بالإبلاغ عن أفضل اختبار، وهو اختبار متعدد غير مسجل بالإضافة إلى الاختبار المتعدد الذي تقوم بتشغيله بالفعل.
المقارنة
لكل زوج، قم بإجراء الاختبار المختلف على العوائد وتودا-ياماموتو على المستويات، عند نفس رمز BIC المحدد ، وجدولة حيث يختلف الاثنان. الخلاف هو الخلية المثيرة للاهتمام: الزوج المهم على الاختلافات ولكن ليس على المستويات هو قطعة أثرية مرشحة لتمييز علاقة التكامل المشترك؛ ويشير العكس إلى أن علاقة المستوى تحمل معلومات لا يستطيع اختبار الإرجاع رؤيتها.
مقارنات متعددة على مصفوفة السببية

الكامل المصفوفة هي المكان الذي يصبح فيه هذا خطيرًا. إن عملية المسح المكونة من 20 أصلًا و10 تأخرات هي 3800 اختبار فرضي، ويعد 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 الفعالة.
اقرأ المصفوفة الباقية من الناحية الهيكلية، وليس خلية بعد خلية: الصفوف التي يتسبب فيها أحد الأصول في ظهور العديد من الأصول الأخرى تؤكد التسلسل الهرمي للمعلومات؛ يشير العمود الناتج عن لا شيء إلى ديناميكيات خاصة ومحددة بالرمز بدلاً من الاكتشاف.
الاختبار الصادق: الثبات عند التدحرج

إن القيمة الاحتمالية الفردية في العينة تكاد تكون عديمة القيمة للتداول. السؤال ذو الصلة هو ما إذا كانت الأهمية تستمر. تعتمد العلاقات بين الأصول في العملات المشفرة على النظام — يختلف هيكل الارتباط بشكل حاد بين الهدوء والذعر، والنظام نفسه يمكن تقديره (اكتشاف نظام 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% من النوافذ التي تحتوي على ثلاثة تقاطعات هي كائن مختلف عن علاقة مهمة في 55% من النوافذ التي تحتوي على أربعين تقاطعًا، حتى لو كانت القيمة الاحتمالية المجمعة متطابقة. والثاني غير قابل للتداول - لا يمكنك تحديد حجم مركز على إشارة يتقلب وجودها كل بضع مئات من الأشرطة، ويضمن تأخر إعادة التقدير أنك تتداول دائمًا على النظام السابق.
مصيدة البيانات الخاصة بـ Granger

تتم تغطية نظافة بيانات التشفير العامة في مكان آخر - الفجوات والشموع المفقودة في backtest-live parity، ونظام الطابع الزمني في تصنيف تحيز النظرة المستقبلية وإثبات عدم وجود نظرة مستقبلية عبر التصنيف الأطر الزمنية. ومع ذلك، فإن أحد أوضاع الفشل خاص بـ Granger وهو شديد بما يكفي لتسمية:
الملء الأمامي يصنع النتيجة. تكرر الشمعة المملوءة للأمام الإغلاق السابق، مما يؤدي إلى إدخال ارتباط تلقائي خالص في السلسلة - وارتباط تلقائي متأخر 1 في التي تتماشى ميكانيكيا مع لا يمكن تمييزه، وفقًا لاختبار F، عن العلاقة السببية ذات التأخر الواحد. وينطبق الشيء نفسه على جميع الملاعب: إزاحة الساعة لمدة ثانية واحدة بين تبادلين على أشرطة الدقائق يمكن أن تنشئ أو تدمر أهمية التأخر 1 تمامًا، لأنها تغير أي جانب من حدود الشريط الذي تهبط عليه الحركة. قبل تشغيل أي من هذا، تأكد من إسقاط الفجوات بدلاً من سدها، ومن أن كلا السلسلتين مختومتان من نفس الساعة.
تم الإبلاغ عن نتائج تأخر الرصاص في الأدبيات

هذه اقتباسات وليست قياسات من هذه المقالة. إنهم هنا ليقولوا ما يدعيه السجل المنشور، بحيث يكون للمقارنة أعلاه ما يتفق عليه أو لا يتفق معه.
- تحويل البيتكوين إلى العملات البديلة. دراسة عام 2026 في الأسواق المالية في آسيا والمحيط الهادئ (سبرينجر) تشير إلى انتقال الأسعار عالي التردد من البيتكوين إلى العملات البديلة، حيث تظهر العملات الصغيرة ذات القيمة السوقية استجابات متأخرة بشكل كبير وانخفاض السيولة المرتبطة بردود فعل أبطأ. إن أحجام التأخير التي يتم اقتباسها عادةً من خط العمل هذا - ما يقرب من 1-3 دقائق من BTC إلى ETH، أطول بالنسبة للشركات المتوسطة والصغيرة، وأحادية الاتجاه بشكل متزايد مع انخفاض القيمة السوقية - هي نتائج مستشهد بها، ولم يتم إعادة استخلاصها هنا. إن طبقة القيمة السوقية التي تعتمد عليها هي نفس السلم المستخدم في التحقق من صحة الرموز المتعددة.
- CEX تقود DEX. البحث في البنية المجهرية للعملات المشفرة (MDPI) تشير إلى أماكن مركزية تهيمن على اكتشاف الأسعار، مع تدفق المعلومات الذي يعمل من CEX إلى DEX وعدم وجود علاقة سببية عكسية كبيرة - بما يتوافق مع محركات المطابقة التي تقل عن المللي ثانية مقابل تسوية وقت الكتلة.
- ETH كعملة مستقلة. عمل VAR-SVAR (MDPI) يعثر على الأنظمة التي يعمل فيها Ethereum كمصدر وBitcoin كمستلم غير مباشر، لا سيما خلال المراحل التي تعتمد على DeFi وNFT.
التبادل المتبادل، باختصار
إن تأخر نفس العملة في مكانين هو إعداد حقيقي، ولكن اقتصادياته - عتبات الرسوم، وسلم الكمون، وسبب وجود التأخير على الإطلاق - تم العمل عليها بالفعل في المراجحة الإحصائية وتداول الأزواج وعلاوة الكيمتشي. الشيء الوحيد الذي يضيفه جرانجر هو سؤال الاستقرار: هل العلاقة السببية بين Binance وCoinbase مستمرة مهمة، أم أنها تومض مثل أي شيء آخر؟ قم بإجراء اختبار التدحرج على زوج المكان؛ الجواب هو سلسلة زمنية ذات قيمة 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
ثلاثة أشياء ليست جزءًا من هذه المقالة لأنها قد تم تسويتها هنا بالفعل:
- التكاليف هي التي تحدد ذلك. يجب أن توضح إشارة التأخير الدقيقة على العملات البديلة انتشارها وتأثيرها ورسومها - راجع نماذج الانزلاق والتكلفة واقتصاديات صانع-المتلقي، وماذا يحدث عند تطبيق التكاليف على مجموعة محددة الفائز.
- التحجيم ليس تحويلاً للقيمة p. يعد قياس التعريض بشكل عكسي مع القيمة p لـ Granger أمرًا خاطئًا: القيمة p هي دليل ضد الصفر، وليس حجم التأثير، وتتحرك مع طول العينة. الحجم حول التأثير المقدر وعدم اليقين - راجع Kelly sizing.
- يتم التحقق من الصحة بشكل تدريجي. إعادة التقدير على أساس متجدد وتقييم خارج العينة؛ التحسين المسبق هو البروتوكول.
القيود

سببية جرانجر ليست سببية. العوامل المربكة (حدث كبير يحرك كلا الساقين مع محاذاة طفيفة للطابع الزمني)، والدوافع المشتركة (بديلان يتبعان BTC بسرعات مختلفة)، والمتغيرات المحذوفة (اختبار BTC إلى DOGE بدون ETH في النظام) جميعها تنتج إحصائيات مهمة دون تدفق مباشر للمعلومات. إن التقييد بالاختبارات ثنائية المتغير، كما تفعل هذه المقالة، يجعل مشكلة المتغير المحذوف أسوأ، وليس أفضل.
الخطية. يرى الاختبار البنية التنبؤية الخطية فقط في المتوسط الشرطي. تحتوي العملات المشفرة على مجموعات من التقلبات، وتأثيرات الرافعة المالية، ومفاتيح النظام - راجع تنبؤات GARCH للتقلبات والارتباط الديناميكي DCC-GARCH للاطلاع على قصة اللحظة الثانية. البدائل غير الخطية التي تستحق المعرفة: اختبار النواة لديكس-بانتشينكو (2006)، ونقل الإنتروبيا باعتبارها التناظرية النظرية للمعلومات، وسببية كوبولا جرانجر عبر التوزيع المشترك الكامل.
الفواصل الهيكلية. أي علاقة تقدر على نافذة واحدة تكون مشروطة بنظام تلك النافذة؛ الاختبار المتداول أعلاه هو الحد الأدنى للتشخيص، وهو تشخيص وليس إصلاحًا.
ملخص

- قم بتركيب VAR على المستويات، حدد بواسطة BIC لكل زوج، زيادة بمقدار ، واختبار والد الأول يتخلف فقط. قم ببناء مصفوفة التقييد يدويًا - المكتبة
test_causalityيقيد التأخر المتزايد أيضًا، وهو ليس تودا ياماموتو. - قم بإجراء اختبار العائد المختلف كخط أساس على نفس الأزواج والتأخر، والإبلاغ عن الخلافات. هذا الجدول هو النتيجة. مصفوفة من العلامات النجمية ليست كذلك.
- قم بتصحيح المصفوفة لعائلة اختبار مترابطة عبر N الفعال، وليس Bonferroni، وقم بالإبلاغ عن عدد الخلايا التي بقيت على قيد الحياة.
- قم بلفها. قم بالإبلاغ عن جزء النوافذ الهامة وعدد المعابر. أهمية أن الومضات ليست تأخرًا قابلاً للتداول بغض النظر عن مدى صغر القيمة الاحتمالية المجمعة.
- قم بإسقاط الفجوات بدلاً من ملء المقدمة، وتحقق من محاذاة الساعة عبر الأماكن، قبل تصديق أي نتيجة متأخرة.
النتيجة الجيدة تمامًا لهذا الإجراء هي سلبية - علاقة BTC إلى alt التي تكون مهمة في العينة، وتنجو من التصحيح، ولا تزال تتجاوز خط 0.05 في كلا الاتجاهين كل بضع مئات من الأشرطة هي نتيجة حقيقية حول قابلية التداول، وتستحق النشر كواحدة.
المراجع
- جرانجر، سي دبليو جيه. (1969). "تحقيق العلاقات السببية من خلال النماذج الاقتصادية القياسية والأساليب الشاملة للطيف." الاقتصاد القياسي، 37(3)، 424-438.
- تودا، إتش واي. وياماموتو، ت. (1995). "الاستدلال الإحصائي في الانحدار الذاتي المتجه مع العمليات المتكاملة المحتملة." مجلة الاقتصاد القياسي، 66(1-2)، 225-250.
- ديكس، سي. وبانتشينكو، في. (2006). "مبادئ توجيهية إحصائية وعملية جديدة لاختبار السببية غير البارامترية لجرانجر." مجلة الديناميكيات الاقتصادية والتحكم، 30(9-10)، 1647-1669.
- صفت، ا.م، محمد، ع (2019). "علاقة الرصاص والتأخر بين Bitcoin وEthereum: أدلة من البيانات اليومية والساعة." بحوث في الأعمال التجارية والمالية الدولية، 50، 306-321.
- "انتقال السعر من البيتكوين إلى العملات البديلة: أدلة وآثار عالية التكرار على استراتيجية التداول." الأسواق المالية لآسيا والمحيط الهادئ، سبرينغر، 2026.
- "المخاطر غير المباشرة في أسواق العملات المشفرة: نظرة على سببية VAR-SVAR Granger." مجلة المخاطر والإدارة المالية، MDPI.
- "الهيكل ذو المستويين لأسواق أسعار تمويل العملات المشفرة." الرياضيات، MDPI.
- "التبادلات اللامركزية والمركزية: ما هي العملات الرقمية التي تشكل خطرًا أكبر للعدوى؟" ساينس دايركت، 2023.
Authors
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.