← العودة إلى قائمة المقالات
July 14, 2026
5 دقائق للقراءة

Almgren-Chriss بلا تهويل: التنفيذ الأمثل الذي يمكنك تطبيقه في فترة بعد الظهر

Almgren-Chriss بلا تهويل: التنفيذ الأمثل الذي يمكنك تطبيقه في فترة بعد الظهر
#التنفيذ
#Almgren-Chriss
#أثر السوق
#التنفيذ الأمثل
#TWAP
#التحليل الكمي
#بايثون
#العملات الرقمية

ورقة Almgren وChriss (2001)، "Optimal execution of portfolio transactions" (Journal of Risk 3(2)، 5–39)، هي على الأرجح الورقة الأكثر استشهادًا في أبحاث التنفيذ، وواحدة من الأقل تطبيقًا بشكل صحيح. معظم أكواد "Almgren-Chriss" المتداولة هي في جوهرها جدولة TWAP مغلفة بكتلة تعليقات. ومعظم المقالات التي تتناولها تتخطى الاشتقاق، وتشير بشكل عابر إلى دالة sinh، ولا تلمس أبدًا الجزء الذي يهم فعليًا في الإنتاج: من أين تأتي المعاملات.

هذا المقال يقدم الصورة الكاملة: افتراضات النموذج، معروضة بصراحة؛ المسار المغلق الصيغة، مُشتقًا لا مُجرد تأكيد؛ الحد الفعال وكيفية اختيار معامل تجنب المخاطرة؛ ومعايرة المدخلات الثلاثة — الأثر المؤقت η\eta، الأثر الدائم γ\gamma، والتقلب σ\sigma — من بيانات دفتر الأوامر والصفقات في Binance، مع كود Python عملي ونقاش صريح لأسباب تشتت نتائج المعايرة. هذا هو العمود الفقري الفكري لكل ما عداه في مجال التنفيذ: TWAP وVWAP وPOV هي حالات خاصة أو أقارب استدلالية (انظر TWAP وVWAP وPOV: خوارزميات التنفيذ التي يستخدمها الجميع)، ومناهج التعلم الآلي الحديثة — جداول التعلم المعزز ونماذج الأثر العصبية — هي محاولات لتخفيف بالضبط الافتراضات التي نحن على وشك كتابتها.

الإعداد: ما الذي يفترضه النموذج فعليًا

أنت تملك XX وحدة من أصل ما (لنقل 100 BTC) ويجب عليك تصفيتها بالكامل بحلول الزمن TT. قسّم [0,T][0, T] إلى NN فترة طول كل منها τ=T/N\tau = T/N. متغير القرار لديك هو مسار الحيازات x0=X,x1,,xN=0x_0 = X, x_1, \dots, x_N = 0، مع صفقات nk=xk1xkn_k = x_{k-1} - x_k تُنفَّذ في الفترة kk.

ثلاثة افتراضات تحمل النموذج بأكمله:

1. مسار عشوائي حسابي (Arithmetic random walk). السعر غير المتأثر يتبع

Sk=Sk1+στξkτg ⁣(nkτ),S_k = S_{k-1} + \sigma \sqrt{\tau}\, \xi_k - \tau\, g\!\left(\frac{n_k}{\tau}\right),

حيث ξk\xi_k متغيرات عشوائية طبيعية قياسية مستقلة ومتطابقة التوزيع، وσ\sigma هو التقلب المطلق (دولارات لكل جذر زمن، وليس نسبة مئوية). حسابي وليس هندسيًا: على مدى بضع ساعات يكون الفرق ضئيلًا، والمسار الحسابي يبقي الجبر خطيًا-تربيعيًا. لا انجراف (drift): يناقش Almgren وChriss حد الانجراف، لكن بالنسبة لتصفية داخل اليوم يكون تقدير الألفا الخاص بك على مدى 4 ساعات ضجيجًا في الغالب، وتعيينه صفرًا هو الافتراض الصادق الافتراضي.

2. أثر دائم خطي. g(v)=γvg(v) = \gamma v: التداول بمعدل vv يزيح السعر بشكل دائم وتناسبي، ولا يتلاشى هذا الإزاحة أبدًا. كل وحدة تبيعها تدفع سعر المنتصف للأسفل بمقدار γ\gamma إلى الأبد. يبدو هذا فجًا، لكن هناك سببًا عميقًا للإبقاء عليه خطيًا: أثبت Huberman وStanzl (2004) أن الأثر الدائم غير الخطي في حجم الصفقة يسمح باستراتيجيات ذهاب وإياب (round-trip) ذات ربح متوقع موجب — أي تلاعب بالأسعار. الأثر الدائم الخطي ليس تبسيطًا للراحة؛ إنه الخيار الوحيد الخالي من المراجحة في هذه الفئة من النماذج.

3. أثر مؤقت خطي. السعر الذي تحصل عليه فعليًا في الفترة kk هو

S~k=Sk1h ⁣(nkτ),h(v)=ϵsgn(v)+ηv.\tilde{S}_k = S_{k-1} - h\!\left(\frac{n_k}{\tau}\right), \qquad h(v) = \epsilon\, \mathrm{sgn}(v) + \eta v.

ϵ\epsilon يمثل نصف فارق العرض والطلب (bid-ask spread) بالإضافة إلى الرسوم؛ وη\eta هو ميل التكلفة الهامشية لطلب السيولة بمعدل vv. يؤثر الأثر المؤقت فقط على تنفيذك الخاص ويتلاشى فورًا — يُعاد ملء الدفتر بالكامل قبل أمرك الفرعي التالي. كل كلمة من الكلمات الثلاث "خطي" و"فورًا" و"بالكامل" غير صحيحة في الأسواق الحقيقية، والقسم الأخير من المقال يتناول مدى هذا الخطأ. لكن أولًا، لنرَ المقابل مقابل قبول هذه الافتراضات.

تكلفة وتباين المسار

اجمع التنفيذات، اطرحها من العلامة الابتدائية XS0X S_0، فتحصل على انزلاق التنفيذ (implementation shortfall). توقعه وتباينه على الضجيج ξk\xi_k هما:

E[C]=12γX2الدائم+ϵXالفارق+η~τk=1Nnk2المؤقت,V[C]=σ2τk=1Nxk2,E[C] = \underbrace{\tfrac{1}{2}\gamma X^2}_{\text{الدائم}} + \underbrace{\epsilon X}_{\text{الفارق}} + \underbrace{\frac{\tilde{\eta}}{\tau} \sum_{k=1}^{N} n_k^2}_{\text{المؤقت}}, \qquad V[C] = \sigma^2 \tau \sum_{k=1}^{N} x_k^2,

مع η~=η12γτ\tilde{\eta} = \eta - \tfrac{1}{2}\gamma\tau (تصحيح تقطيع (discretization) يتلاشى عندما τ0\tau \to 0).

ملاحظتان تفوتان على معظم التطبيقات:

  • التكلفة الدائمة 12γX2\tfrac{1}{2}\gamma X^2 لا تعتمد على المسار. مع أثر دائم خطي لا يتلاشى، تدفع نفس الرسم الدائم بغض النظر عن كيفية جدولتك. التحسين هو بالكامل صراع بين حد التكلفة المؤقتة (الذي يريد تداولًا بطيئًا ومتساويًا — يتم تصغيره بواسطة nk=X/Nn_k = X/N، أي TWAP) وحد التباين (الذي يريد التخلص من مخزونك بالأمس — يتم تصغيره بالتصفية الفورية).
  • حد التباين مرجّح بالمخزون، لا بالتداول. المخاطرة تتراكم على ما لا تزال تحمله، xkx_k، وليس على ما تتداوله. لهذا السبب تدفع الإلحاحية الجدول نحو البداية.

الصيغة المغلقة: sinh وcosh ومعامل الإلحاحية

يقوم Almgren-Chriss بتصغير دالة الهدف ذات المتوسط والتباين

U(x)=E[C]+λV[C],U(x) = E[C] + \lambda V[C],

حيث λ0\lambda \geq 0 هو تجنب المخاطرة بوحدات 1/دولار. عيّن U/xj=0\partial U / \partial x_j = 0 للنقاط الداخلية. حد التكلفة المؤقتة يساهم بفروق ثانية لـ xx، وحد التباين يساهم بـ xjx_j نفسها، فتحصل على معادلة فرق خطية من الرتبة الثانية:

xj12xj+xj+1τ2=κ~2xj,κ~2=λσ2η~.\frac{x_{j-1} - 2x_j + x_{j+1}}{\tau^2} = \tilde{\kappa}^2 x_j, \qquad \tilde{\kappa}^2 = \frac{\lambda \sigma^2}{\tilde{\eta}}.

هذه هي النظيرة المتقطعة لـ x=κ2xx'' = \kappa^2 x، ومع شرطي الحدود x0=Xx_0 = X، xN=0x_N = 0 يكون الحل زائديًا (hyperbolic):

  xj=Xsinh ⁣(κ(Ttj))sinh(κT)  nj=2sinh(κτ/2)sinh(κT)cosh ⁣(κ(Ttj1/2))X,\boxed{\;x_j = X\, \frac{\sinh\!\big(\kappa\,(T - t_j)\big)}{\sinh(\kappa T)}\;} \qquad n_j = \frac{2\sinh(\kappa\tau/2)}{\sinh(\kappa T)}\, \cosh\!\big(\kappa (T - t_{j-1/2})\big)\, X,

حيث κ\kappa حل لـ 2τ2(cosh(κτ)1)=κ~2\tfrac{2}{\tau^2}\left(\cosh(\kappa\tau) - 1\right) = \tilde{\kappa}^2، والتي عند τ\tau صغيرة تصبح ببساطة κκ~=λσ2/η\kappa \approx \tilde{\kappa} = \sqrt{\lambda\sigma^2/\eta}.

مسارات الحيازة المثلى لقيم مختلفة من كابا، من خط TWAP المستقيم إلى المنحنيات العدوانية المُحمَّلة في البداية

كل شيء عن الاستراتيجية مضغوط في رقم واحد:

κ=λσ2η[الوحدات: 1/زمن].\kappa = \sqrt{\frac{\lambda \sigma^2}{\eta}} \qquad [\text{الوحدات: } 1/\text{زمن}].

κ\kappa هو الإلحاحية (urgency). مقلوبه θ=1/κ\theta = 1/\kappa هو الزمن المميز للصفقة: المقياس الزمني الذي يستحق فيه تحمل مخاطرة المخزون مقابل توفير تكلفة الأثر. لاحظ ما لا تعتمد عليه κ\kappa: حجم الأمر XX والموعد النهائي TT. سواء كان المقياس الزمني الجوهري لصفقتك 20 دقيقة أو 6 ساعات، فهذا يُحدَّد فقط بتجنب المخاطرة والتقلب والسيولة. إذا كان θT\theta \ll T، فموعدك النهائي غير ذي صلة — يقوم النموذج بالتصفية وفق جدوله الخاص وذيل الأفق غير مستخدم. إذا كان θT\theta \gg T، فالموعد النهائي هو القيد الفعّال وأنت فعليًا تنفّذ TWAP.

الحد المحايد للمخاطرة هو TWAP — هذا هو سبب وجود TWAP

خذ λ0\lambda \to 0، فيكون κ0\kappa \to 0. عندها sinh(z)z\sinh(z) \to z و

x(t)=Xsinh(κ(Tt))sinh(κT)    XTtT.x(t) = X\,\frac{\sinh(\kappa(T-t))}{\sinh(\kappa T)} \;\longrightarrow\; X\,\frac{T-t}{T}.

يتحول المسار الأمثل إلى الخط المستقيم: كميات متساوية في فترات زمنية متساوية. TWAP ليس أسلوبًا استدلاليًا يصادف أنه يعمل؛ إنه الحل الأمثل الدقيق لنموذج Almgren-Chriss لمتداول محايد للمخاطرة مع أثر خطي. في كل مرة يُشغّل فيها أحدهم TWAP، فهو ضمنيًا يؤكد λ=0\lambda = 0: "لا يهمني تباين انزلاقي، بل متوسطه فقط." هذا موقف يمكن الدفاع عنه بالنسبة للأوامر الصغيرة والآفاق القصيرة. لكنه موقف غريب لتصفية 5% من الحجم اليومي على مدى 8 ساعات في أصل يتحرك بتقلب يومي 4%، وهو بالضبط السياق الذي يشغّله الناس فيه على أي حال. الحد المعاكس λ\lambda \to \infty يعطي xj0x_j \to 0 لكل j>0j > 0: تخلص من كل شيء في الفترة الأولى، وادفع أيًا كانت التكلفة. بين هذين الطرفين، يتدرج κT\kappa T: κT0.5\kappa T \lesssim 0.5 لا يكاد يُميَّز عن TWAP، بينما κT3\kappa T \gtrsim 3 يكون محمَّلًا بشدة نحو البداية.

الحد الفعال للتنفيذ

لكل λ\lambda تحصل على مسار واحد، وتكلفة متوقعة واحدة E(λ)E(\lambda)، وتباين واحد V(λ)V(\lambda). تفحص λ[0,)\lambda \in [0, \infty) يرسم منحنى في مستوى (V,E)(V, E)الحد الفعال للتنفيذ (efficient frontier of execution)، بتماثل مباشر مع نموذج Markowitz. المنحنى محدب ومتناقص: أقل تباين يكلف دائمًا انزلاقًا متوقعًا أعلى، مع عوائد متناقصة بشدة. عند نقطة الحد التي يحددها λ\lambda معين، يكون تجنب المخاطرة هو ميل المماس (بالسالب): λ=E/V\lambda = -\partial E / \partial V.

الحد الفعال لتكلفة التنفيذ مقابل التباين مع خط المماس الذي يوضح لامدا كميل المنحنى

يعيد الحد الفعال صياغة السؤال "ما هي λ\lambda؟" — الذي لا يستطيع أحد الإجابة عنه استبطانيًا — إلى "أي مقايضة بين التكلفة والمخاطرة أريدها؟"، وهو سؤال يستطيع أي مكتب تداول الإجابة عنه فعليًا. ثلاث طرق عملية لاختيار النقطة:

  1. منطق التكلفة الهامشية. سِر على طول الحد واسأل: "بالانتقال من هذه النقطة إلى التالية، أدفع ΔE\Delta E دولارًا من التكلفة المتوقعة لإزالة Δstd\Delta\text{std} دولارًا من الانحراف المعياري للانزلاق — هل أقبل هذه الصفقة؟" ركبة المنحنى (knee) عادة واضحة ضمن عامل 2، والمسار غير حساس لـ λ\lambda عند هذه الدقة.
  2. ميزانية المخاطرة. حدّد أقصى انحراف معياري مقبول للانزلاق (مثلًا "الانحراف المعياري ليوم واحد للمركز المتبقي يجب أن يبقى تحت 15 نقطة أساس من القيمة الاسمية") وخذ أرخص مسار يحقق ذلك. هذه مسألة مقيدة يكون مضاعف لاغرانج فيها هو λ\lambda ذاتها.
  3. استهداف الزمن المميز. اختر θ=1/κ\theta = 1/\kappa مباشرة ("يجب أن يكون لهذا الأمر عمر نصف قدره 90 دقيقة") واستنتج λ=η/(σ2θ2)\lambda = \eta/(\sigma^2\theta^2). هذا ما يفعله معظم الممارسين ضمنيًا عندما يضبطون شريط تمرير "الإلحاحية".

مثال عملي بأرقام سنبررها في قسم المعايرة. بيع X=100X = 100 BTC عند S_0 = \100{,}000،بأفق، بأفق T = 4ساعات،ساعات،\sigma = $600لكلBTCلكللكل BTC لكل\sqrt{\text{ساعة}}(حوالي3(حوالي 3% تقلب يومي)،\eta = 1.0\ $\cdot\text{ساعة}/\text{BTC}،، \lambda = 10^{-6}\ $^{-1}$. عندها

κ=106×3.6×1051.0=0.6 ساعة1,κT=2.4,θ1.7 ساعة.\kappa = \sqrt{\frac{10^{-6} \times 3.6\times 10^{5}}{1.0}} = 0.6\ \text{ساعة}^{-1}, \qquad \kappa T = 2.4, \qquad \theta \approx 1.7\ \text{ساعة}.

الجدول الأمثل يبيع 46.2 BTC في الساعة الأولى (مقارنة بـ TWAP: 25). التكلفة المؤقتة: \eta \int_0^T v(t)^2 dt \approx \3{,}290مقابلمقابل$2{,}500لـTWAP.الانحرافالمعياريللانزلاق:لـ TWAP. الانحراف المعياري للانزلاق:$53{,}000مقابلمقابل$69{,}300$ لـ TWAP. إذن مقابل 0.8 نقطة أساس إضافية من التكلفة المتوقعة على القيمة الاسمية البالغة 10 ملايين دولار، تخفّض مخاطرة الانزلاق بنسبة 23%. هذا هو المضمون الكامل للنموذج في جملة واحدة: إنه يسعّر التأمين، ويترك لك قرار شرائه.

المسار نفسه هو عشرة أسطر من Python:

import numpy as np

def almgren_chriss(X, T, N, sigma, eta, gamma, lam):
    """Optimal liquidation trajectory (discrete AC 2001)."""
    tau = T / N
    eta_t = eta - 0.5 * gamma * tau          # tilde-eta
    kappa_t2 = lam * sigma**2 / eta_t        # tilde-kappa^2
    kappa = np.arccosh(0.5 * kappa_t2 * tau**2 + 1) / tau
    t = np.arange(N + 1) * tau
    x = X * np.sinh(kappa * (T - t)) / np.sinh(kappa * T)
    n = x[:-1] - x[1:]                       # child order sizes
    E = 0.5 * gamma * X**2 + (eta_t / tau) * np.sum(n**2)
    V = sigma**2 * tau * np.sum(x[1:]**2)
    return x, n, E, V

x, n, E, V = almgren_chriss(X=100, T=4, N=48, sigma=600,
                            eta=1.0, gamma=0.3, lam=1e-6)
print(f"first-hour qty: {n[:12].sum():.1f} BTC, "
      f"E=${E:,.0f}, std=${np.sqrt(V):,.0f}")

افحص lam عبر np.logspace(-8, -4, 50) وارسم EE مقابل V\sqrt{V} — هذا هو حدّك الفعال، وسطح القرار بأكمله يتسع لرسم بياني واحد يمكنك تسليمه للجنة المخاطر.

المعايرة: η\eta وγ\gamma وσ\sigma من بيانات Binance

هنا يموت 90% من التطبيقات بصمت. صيغة المسار تافهة؛ أما المعاملات فليست كذلك. ثلاث كميات، وثلاث مسائل تقدير مختلفة.

مخططات تشتت المعايرة لانزلاق السعر مقابل معدل المشاركة وتغير السعر مقابل صافي تدفق الأوامر من بيانات Binance

σ\sigma: السهلة

التقلب المطلق لكل جذر ساعة، من عوائد سعر المنتصف. استخدم أشرطة (bars) لمدة دقيقة واحدة وقم بالتحجيم؛ عند العينات الأدق، يحيّز ضجيج البنية المجهرية (bid-ask bounce) التباين المُحقَّق نحو الأعلى. هذا التقدير متين — التقلب هو المعامل الوحيد الذي ستحصل عليه بشكل صحيح.

η\eta: الأثر المؤقت من الدفتر ومن الصفقات

طريقان متكاملان. الطريق أ — المشي عبر دفتر L2. من لقطات العمق، احسب تكلفة كسح (sweep) افتراضي قابل للتنفيذ بحجم qq: المتوسط المرجح بالحجم (VWAP) للمستويات المستهلكة ناقص سعر المنتصف. ملاءمة cost(q)ϵ+ηinstq\text{cost}(q) \approx \epsilon + \eta_{\text{inst}}\, q تعطي الأثر الفوري لكل BTC. لتحويلها إلى η\eta القائمة على المعدل في النموذج، يجب أن تفترض زمن إعادة ملء الدفتر Δtr\Delta t_r (بترتيب 10–60 ثانية بالنسبة لـ BTCUSDT): التداول بمعدل vv يستهلك vΔtrv \Delta t_r لكل دورة تحديث، لذا ηηinstΔtr\eta \approx \eta_{\text{inst}} \Delta t_r. هذا الافتراض — إعادة ملء فورية وكاملة على ساعة ثابتة — هو بالضبط الشق الذي يدخل منه نموذج Obizhaeva-Wang؛ المزيد أدناه. الطريق ب — انحدار الانزلاق المُحقَّق على المشاركة. قسّم تدفق الطرف الآخذ (taker) العدواني إلى صناديق مدتها دقيقة واحدة؛ لكل صندوق، أجرِ انحدارًا لـ VWAP جانب الآخذ ناقص سعر منتصف الافتتاح على معدل حجم الآخذ. الطريق ب يقيس ما فرضه السوق فعليًا على المهاجمين (aggressors)؛ الطريق أ يقيس ما سيفرضه الدفتر القائم الآن. عندما يختلفان بعامل 3، ثِق بـ ب للمستوى وبـ أ للشكل داخل اليوم.

γ\gamma: الأثر الدائم عبر انحدار على طراز Kyle

أجرِ انحدارًا لتغيرات سعر المنتصف على صافي تدفق الآخذ الموجّه على مدى نوافذ 5 دقائق:

ΔS5m=γQnet+ضجيج,Qnet=مشتريات الآخذمبيعات الآخذ.\Delta S_{5m} = \gamma\, Q_{\text{net}} + \text{ضجيج}, \qquad Q_{\text{net}} = \text{مشتريات الآخذ} - \text{مبيعات الآخذ}.

ثم تحقق من أن الأثر لم يرتد بعد نافذة واحدة لاحقة — المكوّن غير المرتدّ هو "الدائم" على المقياس الزمني لتداولك. هذا هو الأكثر تشتتًا (noisy) من بين الثلاثة بفارق واسع.

كود عملي، باستخدام نقاط نهاية REST العامة فقط من Binance:

import requests, numpy as np, pandas as pd

B = "https://api.binance.com/api/v3"
sym = "BTCUSDT"

kl = requests.get(f"{B}/klines", params=dict(
    symbol=sym, interval="1m", limit=1000)).json()
close = np.array([float(k[4]) for k in kl])
sigma = np.diff(close).std() * np.sqrt(60)       # $/sqrt(h)

d = requests.get(f"{B}/depth",
                 params=dict(symbol=sym, limit=5000)).json()
bids = np.array(d["bids"], dtype=float)          # [price, qty]
mid = (bids[0, 0] + float(d["asks"][0][0])) / 2
cq = np.cumsum(bids[:, 1])                       # cum qty
cn = np.cumsum(bids[:, 0] * bids[:, 1])          # cum notional
sizes = np.linspace(0.5, 50, 40)                 # BTC probes
cost = [mid - np.interp(q, cq, cn) / q for q in sizes]
eps, eta_inst = np.polyfit(sizes, cost, 1)[::-1] # cost ~ eps + k*q
eta = eta_inst * (30 / 3600)                     # 30s refresh -> $*h/BTC

tr = requests.get(f"{B}/aggTrades",
                  params=dict(symbol=sym, limit=1000)).json()
df = pd.DataFrame(dict(
    t=[t["T"] for t in tr],
    p=[float(t["p"]) for t in tr],
    q=[float(t["q"]) * (-1 if t["m"] else 1) for t in tr]))
df["bin"] = df.t // 300_000                      # 5-min bins
g = df.groupby("bin").agg(dp=("p", lambda s: s.iloc[-1] - s.iloc[0]),
                          qn=("q", "sum"))
gamma = np.polyfit(g.qn, g.dp, 1)[0]             # $/BTC
print(f"sigma={sigma:.0f} $/sqrt(h)  eta={eta:.2f} $*h/BTC  "
      f"gamma={gamma:.3f} $/BTC")

للإنتاج، استبدل صفحة aggTrades الواحدة ببضعة أيام من الأرشيفات التاريخية وشغّل انحدار γ\gamma على آلاف الصناديق، لا حفنة منها.

لماذا معايرة العملات الرقمية مشوشة، وما العمل حيال ذلك

شغّل انحدار γ\gamma على بيانات حقيقية وستحصل على R2R^2 بضع نسب مئوية فقط، وعلى معامل يتحرك بعامل 2–5 بين الأيام. هذا ليس خللًا في كودك. الأسباب بنيوية:

  • الداخلية (Endogeneity). التدفق يستجيب للسعر بقدر ما يستجيب السعر للتدفق. متداولو الزخم يشترون لأن السعر ارتفع؛ الانحدار الخطي البسيط (OLS) للعوائد على التدفق يلتقط استجابتهم وينسبها خطأً للأثر. الحل النظيف هو استخدام تنفيذاتك الخاصة (خارجية بحكم البناء) — والتي لا تملكها إلا بعد التداول لفترة.
  • التقعر (Concavity). الأثر الحقيقي مقعّر بالنسبة للحجم — تجريبيًا قريب من قانون الجذر التربيعي (وجدت ورقة Almgren وThum وHauptmann وLi، 2005، "Direct estimation of equity market impact"، أسًا قريبًا من 0.6؛ نفس التقعر متين في العملات الرقمية). ملاءمة خط مستقيم لدالة مقعّرة تعني أن η\eta وγ\gamma لديك تعتمدان على نطاق الحجم في العينة. عايِر عند معدلات المشاركة التي ستتداول بها فعليًا.
  • التجزؤ وقيادة المشتقات. BTCUSDT الفوري (spot) على Binance هو منصة واحدة من عديد، وغالبًا ما يحدث اكتشاف السعر على العقود الآجلة الدائمة (perps). تدفق لا تراه أبدًا يحرّك السعر الذي تجري عليه الانحدار، مما يضخّم حد الضجيج.
  • الاعتماد على النظام (Regime). η\eta المقاسة في جلسة آسيا لا تصف افتتاح الولايات المتحدة؛ يتضاعف الأثر تقريبًا عندما يتضاعف التقلب. عايِر لكل جلسة، وأعد الملاءمة أسبوعيًا على الأقل.

النعمة المنقذة: المسار متسامح. κ1/η\kappa \propto \sqrt{1/\eta}، لذا خطأ بعامل 2 في η\eta يحرّك κ\kappa بمقدار 2\sqrt{2} فقط، ودالة التكلفة مسطحة قرب الأمثل. الحصول على η\eta صحيحة ضمن عامل 2، وعلى λ\lambda صحيحة ضمن رتبة حجم واحدة، يلتقط بالفعل معظم التحسن المتاح مقارنة بـ TWAP. الدقة تهم من أجل تقديرات التكلفة قبل التداول؛ أما المتانة فتكفي من أجل الجدولة.

أين ينهار النموذج، والأوراق التي تصلحه

Almgren-Chriss هو هيكل داعم (scaffold)، ومعرفة العارضة الحاملة للوزن بالضبط تخبرك بالامتداد الذي يجب اللجوء إليه.

الأثر غير الخطي — Almgren (2003). ورقة "Optimal execution with nonlinear impact functions and trading-enhanced risk" (Applied Mathematical Finance 10، 1–18) تعيد صياغة البرنامج بأثر مؤقت من نوع قانون القوة h(v)=ηvαh(v) = \eta v^\alpha. بالنسبة لـ α1/2\alpha \approx 1/2 المفضّل تجريبيًا — قانون الجذر التربيعي — تتغير طبيعة المسارات المثلى: الأثر المقعّر يعاقب الاندفاعات (bursts) أقل مما يفعل الأثر الخطي، لذا تصبح الجداول المثلى أكثر تحميلًا نحو البداية عند نفس λ\lambda. البنية النوعية (معامل الإلحاحية، الحد الفعال) تبقى صامدة؛ لكن صيغة sinh لا تبقى.

المرونة ودفتر الأوامر المحدود — Obizhaeva وWang (2013). ورقة "Optimal trading strategy and supply/demand dynamics" (Journal of Financial Markets 16(1)، 1–32؛ الورقة العملية تداولت منذ 2005) تستبدل الثنائية المؤقت/الدائم بدفتر أوامر محدود العمق وأثر يتلاشى أسّيًا: صفقتك تلتهم الدفتر، ويُعاد ملء الدفتر بمعدل مرونة ρ\rho. افتراض AC بأن "الأثر المؤقت يتلاشى فورًا" هو الحد ρ\rho \to \infty. تتغير شكل الاستراتيجية المثلى بشكل كبير: كتلة تداول في البداية، كتلة في النهاية، ومعدل تداول ثابت بينهما — الكتل تستغل تعافي الدفتر. إذا كانت فترة أمرك الفرعي قابلة للمقارنة بزمن إعادة الملء لدى المنصة (في العملات الرقمية، ثوانٍ إلى دقيقة — وغالبًا ما تكون كذلك)، فأنت في أراضي Obizhaeva-Wang، وليس Almgren-Chriss، وتصحيح Δtr\Delta t_r في المعايرة أعلاه هو إشارة تحذيرك.

غياب المراجحة الديناميكية — Gatheral (2010). ورقة "No-dynamic-arbitrage and market impact" (Quantitative Finance 10(7)، 749–759) تسأل عن أي توليفات من دالة الأثر الفوري f(v)f(v) ونواة التلاشي G(t)G(t) متسقة داخليًا، أي لا تسمح باستراتيجية ذهاب وإياب ذات تكلفة متوقعة سالبة. النتائج حادة: التلاشي الأسّي متوافق فقط مع الأثر الخطي — اجمع بين تلاشٍ أسّي وأثر جذر تربيعي ويمكن ضخ النموذج للمال عبر سلسلة صفقات متذبذبة؛ الأثر غير الخطي يتطلب تلاشيًا من نوع قانون القوة، مع متراجحة تربط الأسّين (بالنسبة لأثر vδ\sim v^\delta وتلاشٍ tγd\sim t^{-\gamma_d}، تقريبًا γd+δ1\gamma_d + \delta \geq 1). هذه هي الورقة التي يجب قراءتها قبل أن تُلحق نواة تلاشٍ متطورة بنموذج الأثر لديك: معظم التوليفات المرتجلة قابلة للمراجحة سرًا، مما يعني عمليًا أن مُحسِّنك سيكتشف المراجحة وينتج جداول تذبذبية عبثية. إذا كان مسارك "الأمثل" يتناوب بين الشراء والبيع أثناء تصفية خالصة، فأنت قد انتهكت Gatheral، لا أنك اكتشفت ألفا.

تتمات التعلم الآلي. خيطان في هذه السلسلة يُبنيان مباشرة على هذا الهيكل. أولًا، تنفيذ التعلم المعزز: بمجرد أن تقرّ بأن الأثر غير خطي، ومعتمد على الحالة، وجزئي الملاحظة، تختفي الصيغة المغلقة، ويصبح التعلم المعزز (RL) (من ورقة Nevmyvaka وFeng وKearns لعام 2006 حول Q-learning فصاعدًا) طريقة طبيعية للبحث في فضاء المسارات — لكن كل وكيل RL جاد للتنفيذ يُقاس أداؤه مقابل حل AC، وغالبًا ما يُهيَّأ منه ابتداءً. ثانيًا، نماذج الأثر السعري العصبية: استبدال h(v)=ηvh(v) = \eta v بدالة متعلَّمة (learned functional) لحالة دفتر الأوامر، مع الحفاظ على منطق الجدولة القائم على المتوسط والتباين فوقها. لا معنى لأي من التتمتين دون معرفة بالضبط ما هو الأساس الخطي-الغاوسي ولماذا له هذا الشكل.

الخلاصة

النموذج هو ثلاثة افتراضات، ومعادلة فرق واحدة، ورقم واحد. أثر دائم خطي (مفروض بغياب التلاعب)، أثر مؤقت خطي (تقريب تعايره حول قيمته)، وضجيج براوني حسابي. الأمثل يوازن بين تباين المخزون وتكلفة الأثر، وتنهار الاستراتيجية بأكملها إلى الإلحاحية κ=λσ2/η\kappa = \sqrt{\lambda\sigma^2/\eta}، ويظهر TWAP كحالة تحلل عند λ=0\lambda = 0 — وهذه هي الحقيقة الأكثر فائدة في النموذج بأكمله، لأنها تحوّل سؤال "هل يجب أن نستخدم TWAP هنا؟" من مسألة عادة إلى ادعاء قابل للتحقق حول تجنب المخاطرة. المعايرة هي العمل الحقيقي: σ\sigma سهلة، η\eta لعبة بعامل 2، γ\gamma مشروع بحثي، والمسار يغتفر الثلاثة جميعًا. طبّقه في فترة بعد ظهر واحدة؛ وأمضِ بقية الشهر في تشخيصات الانحدار.

المراجع

  • Almgren, R., Chriss, N. (2001). "Optimal execution of portfolio transactions." Journal of Risk, 3(2), 5–39.
  • Almgren, R. (2003). "Optimal execution with nonlinear impact functions and trading-enhanced risk." Applied Mathematical Finance, 10(1), 1–18.
  • Almgren, R., Thum, C., Hauptmann, E., Li, H. (2005). "Direct estimation of equity market impact." Risk, 18(7), 58–62.
  • Huberman, G., Stanzl, W. (2004). "Price manipulation and quasi-arbitrage." Econometrica, 72(4), 1247–1275.
  • Obizhaeva, A., Wang, J. (2013). "Optimal trading strategy and supply/demand dynamics." Journal of Financial Markets, 16(1), 1–32.
  • Gatheral, J. (2010). "No-dynamic-arbitrage and market impact." Quantitative Finance, 10(7), 749–759.
  • Nevmyvaka, Y., Feng, Y., Kearns, M. (2006). "Reinforcement learning for optimized trade execution." ICML 2006.
blog.disclaimer

Authors

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

ابقَ متقدماً على السوق

اشترك في نشرتنا الإخبارية للحصول على رؤى حصرية حول تداول الذكاء الاصطناعي وتحليلات السوق وتحديثات المنصة.

نحترم خصوصيتك. يمكنك إلغاء الاشتراك في أي وقت.