📝

Draft article

This draft is visible to admins and superusers only. Sign in with an authorized account.

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

منحنيات الانزلاق السعري لا ثوابته: نماذج تكلفة تصمد أمام التداول الحي

منحنيات الانزلاق السعري لا ثوابته: نماذج تكلفة تصمد أمام التداول الحي
#الانزلاق السعري
#تكاليف المعاملات
#أثر السوق
#الاختبار الخلفي
#التنفيذ
#tca
#قانون الجذر التربيعي
#نماذج التكلفة

السطر الأغلى ثمنا في معظم الاختبارات الخلفية هو slippage_bps = 5. ليس لأن الرقم 5 خاطئ - فمتوسطا على مدى سنة من التعبئات قد يكون صحيحا تماما - بل لأن الثابت خاطئ بشكل شرطي، وعملية اختيار استراتيجيتك هي آلة مصممة لاكتشاف الأخطاء الشرطية واستغلالها. الانزلاق السعري دالة في حجم الأمر، والسبريد، والتقلب، والسيولة المتاحة. الثابت هو تلك الدالة محسوبة عند نقطة واحدة ثم معممة على كل شيء، بما في ذلك انهيار التصفية في الساعة الثالثة صباحا حين تنطلق إشارة الارتداد نحو المتوسط لديك بأقوى ما يكون بينما يكون عمق دفتر الأوامر عُشر عمقه المعتاد فقط. الاختبار الخلفي يفرض 5 نقاط أساس هناك أيضا. التداول الحي لن يفعل.

هذا المقال يتناول نموذج التكلفة داخل حلقة الاختبار الخلفي: الدالة cost(size, market_state) التي تُطرح من كل صفقة محاكاة. وهو عمدا لا يتناول التنبؤ بالأثر مسبقا لجدولة تنفيذ - فتلك مسألة مصاحبة، تمت تغطيتها من جانب النموذج في نمذجة أثر السعر ومن جانب الجدولة المثلى في Almgren-Chriss. هنا السؤال أضيق نطاقا، وبالنسبة لأي شخص يختار الاستراتيجيات عبر الاختبار الخلفي، أكثر إلحاحا: ما الدالة التي يجب أن تحل محل ثابتك الحالي، وكيف تشتقها من بيانات تملكها فعلا، وكم يتغير الجواب الذي تنتهي إليه بخصوص الاستراتيجية التي ستشغّلها. الجزء الأخير له إجابة تجريبية حاسمة: أعد ترتيب 20 نسخة من عائلة استراتيجية واحدة تحت أربعة نماذج تكلفة وشاهد لوحة الترتيب تنقلب رأسا على عقب.

سلّم نماذج التكلفة

سلّم نماذج تكلفة من أربع درجات من النقاط الأساس الثابتة إلى المشاركة بالجذر التربيعي

مثل سلّم محاكاة التعبئة، تشكّل نماذج التكلفة سلّم دقة تحتاج فيه كل درجة بيانات أكثر وتزيل تحيّزا منهجيا محددا. الدرجات تراكمية: كل درجة تحتفظ بحدود الدرجة التي تحتها وتضيف حدا واحدا.

M0: النقاط الأساس الثابتة

C0=fee+cC_0 = \text{fee} + c

رقم واحد، يُطبّق على كل صفقة. أنماط الفشل الثلاثة، بترتيب تصاعدي من حيث الضرر:

  1. عمى الحجم. أمر صغير بقيمة 10 آلاف دولار وأمر أب بقيمة 5 ملايين دولار يدفعان نفس التكلفة. أي مقارنة بين استراتيجيات عبر مستويات سعة مختلفة تصبح بلا معنى.
  2. عمى النظام. بعد ظهر ثلاثاء هادئ وانهيار FTX يدفعان نفس التكلفة. الخطأ ليس ضجيجا عشوائيا؛ إنه مرتبط عكسيا تماما مع الحالات التي تركّز فيها الاستراتيجيات المدفوعة بالأحداث تداولها.
  3. سمّية الاختيار. حين تمسح 200 تركيبة معاملات، يكتشف المُحسّن أنه تحت تكلفة ثابتة، يصبح معدل الدوران رخيصا مقارنة بالواقع فينحرف البحث بأكمله نحو النسخ عالية التردد. خطأ التكلفة يصبح قوة اتجاهية في اختيار النموذج، لا قوة متماثلة على الأرباح والخسائر.

M1: التناسب مع السبريد

C1=fee+st2C_1 = \text{fee} + \frac{s_t}{2}

احتسب نصف السبريد المقاس عند لحظة اتخاذ القرار (بالإضافة إلى الرسم، وهو حتمي ويجب أن يبقى دائما بندا منفصلا). هذا أول نموذج يستجيب للسوق على الإطلاق: السبريدات تتسع عند الأخبار، وعند افتتاح الجلسات، وفي العملات البديلة الرقيقة، بحيث تتحرك التكلفة الآن بالتزامن مع متغير سيولة واحد على الأقل. ما يظل غائبا: السبريد يسعّر تعبئة نقطة واحدة عند أعلى الدفتر. أي شيء أكبر يمشي عبر الدفتر، وهذا المسار غير مرئي بالنسبة لـ sts_t.

M2: التحجيم بالتقلب

C2=fee+st2+cσσtC_2 = \text{fee} + \frac{s_t}{2} + c_\sigma \, \sigma_t

أضف حدا متناسبا مع التقلب قصير المدى. المبرر تجريبي وبنيوي في آن واحد: السبريدات والعمق يحددهما صنّاع السوق الذين تتناسب مخاطر اختيارهم المعاكس ومخزونهم مع σ\sigma (منطق تسعير Avellaneda-Stoikov معكوسا)، لذا فإن تكلفة طلب السيولة مقوّمة طبيعيا بوحدات التقلب. حين لا تملك أي بيانات دفتر أوامر إطلاقا - أشرطة يومية، تاريخ طويل - فإن cσσtc_\sigma \sigma_t بقيمة cσc_\sigma حول 0.05-0.1 من التقلب اليومي يصبح فورا نموذجا أفضل بكثير من أي ثابت، لأنه على الأقل يتنفس مع النظام السوقي.

M3: الجذر التربيعي في المشاركة

C3=fee+st2+Yσt(QVt)δ,δ0.40.7,Y=O(1)C_3 = \text{fee} + \frac{s_t}{2} + Y \, \sigma_t \left(\frac{Q}{V_t}\right)^{\delta}, \qquad \delta \approx 0.4\text{–}0.7, \quad Y = O(1)

حد الحجم. QQ هو حجم أمرك، و VtV_t حجم تداول السوق خلال النافذة الزمنية ذات الصلة، و σt\sigma_t التقلب خلال النافذة نفسها. هذا الشكل الدالّي ليس مجرد راحة رياضية؛ إنه واحد من أكثر النتائج التجريبية تكرارا في البنية الدقيقة للسوق، ومن المهم أن نكون دقيقين بشأن مصدره.

نقطة البداية النظرية هي Kyle (1985)، "Continuous auctions and insider trading" (Econometrica 53(6), 1315-1335). في نموذج Kyle يضع صانع السوق السعر كدالة خطية في صافي تدفق الأوامر، Δp=λq\Delta p = \lambda q، حيث

λ=12Σ0σu\lambda = \frac{1}{2}\frac{\sqrt{\Sigma_0}}{\sigma_u}

  • الأثر لكل وحدة تدفق يتناسب مع عدم اليقين في القيمة مقسوما على حجم التداول العشوائي. لامدا Kyle أعطت المجال وحدة قياسه للسيولة (العمق هو 1/λ1/\lambda) وأول ادعاء قابل للاختبار: التكلفة لكل دولار متداول تعتمد على نسبة المعلومات إلى السيولة، لا على ثابت. لكن النموذج خطي في الحجم، والبيانات تقول عكس ذلك.

البيانات تقول إنه مقعّر. Almgren, Thum, Hauptmann and Li (2005)، "Direct estimation of equity market impact" (Risk, يوليو 2005)، اشتقوا نموذجهم من نحو 700,000 أمر أسهم أمريكية من مكاتب Citigroup ووجدوا أن الأثر المؤقت ينمو كقوة للمشاركة بأس 3/53/5 - اختبروا صراحة ورفضوا كلا الشكلين الخطي والجذر التربيعي الصرف لصالح δ=0.6\delta = 0.6 - بينما جاء الأثر الدائم عند 0.89±0.100.89 \pm 0.10، لا يمكن تمييزه إحصائيا عن الخطي (وهذا مطمئن، لأن Huberman and Stanzl (2004) أظهرا أن الأثر الدائم غير الخطي يسمح بالتلاعب). Tóth et al. (2011)، "Anomalous price impact and the critical nature of liquidity in financial markets" (Physical Review X 1, 021006)، باستخدام قرابة 500,000 أمر كبير من Capital Fund Management عبر أسواق العقود الآجلة، وجدوا E[ΔP]YσdQ/Vd\mathbb{E}[\Delta P] \approx Y \sigma_d \sqrt{Q/V_d} بقيمة YY من رتبة الواحد - وقدّموا التفسير الذي أصبح الآن قياسيا: الدفتر المرئي يشكّل جزءا ضئيلا جدا من السيولة الكامنة، وهذه الأخيرة خطية محليا حول السعر المتوسط، مما يجعل تكلفة اختراقها تتحجّم كجذر تربيعي. أعمال لاحقة صقلت الحواف: Zarinelli, Treccani, Farmer and Lillo (2015)، "Beyond the square root" (Market Microstructure and Liquidity 1(2))، أظهروا على سبعة ملايين أمر مؤسسي من ANcerno أن الجذر التربيعي يلائم البيانات جيدا عبر نحو عقدين من رتب حجم الأوامر لكن الشكل اللوغاريتمي يمتد عبر خمسة؛ Bucci et al. (2019, Physical Review Letters 122, 108302) وثّقوا التحوّل من الأثر الخطي (شبيه Kyle) عند مشاركة صغيرة جدا إلى الجذر التربيعي فوقها. وFrazzini, Israel and Moskowitz (2018)، "Trading Costs" (SSRN 3229719)، باستخدام 1.7 تريليون دولار من تنفيذات حية فعلية لدى AQR على مدى 19 عاما، وجدوا تكاليف محققة أصغر بمرتبة كاملة من التقديرات الأكاديمية السابقة - تحذير مفاده أن المعاملات المشتقة من تدفق أوامر آخرين، بإلحاح مختلف ومحتوى معلوماتي مختلف، لا تنتقل إلى تدفقك أنت.

بالنسبة لحلقة الاختبار الخلفي، الخلاصة العملية ثلاث عبارات. الأثر يتحجّم مع التقلب. الأثر مقعّر في الحجم، بأس ينبغي أن تعامله كـ 0.50.5 حتى تُظهر بياناتك الخاصة ما يبرر 0.60.6. المعامل YY من رتبة الواحد لكنه يتفاوت حسب المنصة والأصل - والأهم - أسلوب تداولك أنت، ولهذا السبب فإن القسم التالي يتناول اشتقاقه لا نسخه. المعايرة العميقة (نوى التلاشي، تفكيك الأثر العابر عن الدائم، الأثر المتقاطع) تنتمي إلى مقال نمذجة الأثر؛ الاختبار الخلفي يحتاج فقط إلى المنحنى.

رقم محسوب، لتثبيت المقادير. عقد BTC الآجل الدائم، تقلب يومي σd=250\sigma_d = 250 نقطة أساس، حجم تداول يومي للمنصة Vd=6V_d = 6 مليار دولار، Y=0.75Y = 0.75، δ=0.5\delta = 0.5:

حجم الأمر QQ Q/VdQ/V_d Q/Vd\sqrt{Q/V_d} حد الأثر + نصف السبريد (0.5 نقطة أساس)
50 ألف دولار 0.0008% 0.0029 0.5 نقطة أساس 1.0 نقطة أساس
500 ألف دولار 0.008% 0.0091 1.7 نقطة أساس 2.2 نقطة أساس
5 ملايين دولار 0.083% 0.0289 5.4 نقطة أساس 5.9 نقطة أساس
50 مليون دولار 0.83% 0.0913 17.1 نقطة أساس 17.6 نقطة أساس

ثلاث رتب من الحجم تمتد على عامل يقارب 18 في التكلفة. لا يوجد ثابت يغطي هذا الجدول، وكل مقارنة استراتيجيات تغيّر حجم المركز مع تثبيت slippage_bps تقارن ضمنيا تفاحا عند 50 ألف دولار ببرتقال عند 5 ملايين دولار.

اشتقاق المنحنى: تعبئاتك أنت، أو تعبئات لا أحد

من تعبئاتك الخاصة

البيانات الصحيحة هي سجل TCA الخاص بك: صف واحد لكل أمر أب مع السعر المتوسط عند الوصول، وVWAP التعبئة المحققة، وحجم الأمر، وحالة السوق عند لحظة القرار - بالضبط مجموعة البيانات التي ينتجها قياس نقص التنفيذ كناتج جانبي. النقص بالنقاط الأساس مقابل سعر الوصول، مطبّعا بالتقلب المتزامن، ومُرحدرا على المشاركة، يعطيك YY و δ\delta مباشرة.

الفخ هو الضجيج. نقص أمر واحد هو الأثر زائد ضجيج السعر خلال نافذة التنفيذ، والضجيج يهيمن: بالنسبة لتنفيذ مدته 10 دقائق عند تقلب يومي 250 نقطة أساس، حد الضجيج هو σd10/144021\sigma_d\sqrt{10/1440} \approx 21 نقطة أساس مقابل إشارة أثر ربما 3 نقاط أساس. نسبة الإشارة إلى الضجيج 0.15 لكل ملاحظة هي سبب حاجة Almgren وزملائه لـ 700 ألف أمر وسبب وجوب أن تشتقّ من متوسطات الحاويات، لا من النقاط الخام مطلقا:

import numpy as np
import pandas as pd

def fit_sqrt_curve(orders: pd.DataFrame) -> tuple[float, float]:
    """orders: one row per parent order.
       is_bps    -- implementation shortfall vs arrival mid, bps, cost-positive
       sigma_bps -- volatility at arrival (same window used at simulation time)
       q_over_v  -- parent size / market volume over the execution window
    Fits I = Y * sigma * (Q/V)^delta on participation-bucket medians."""
    df = orders.query("q_over_v > 0 and sigma_bps > 0").copy()
    df["i_norm"] = df.is_bps / df.sigma_bps            # impact in vol units
    df["bucket"] = pd.qcut(np.log10(df.q_over_v), 12, duplicates="drop")
    b = (df.groupby("bucket", observed=True)
           .agg(i=("i_norm", "median"), qv=("q_over_v", "median")))
    b = b[b.i > 0]               # noisy buckets can go negative; drop, don't clip
    delta, log_y = np.polyfit(np.log(b.qv), np.log(b.i), 1)
    return float(np.exp(log_y)), float(delta)

على بضعة آلاف من أوامر الكريبتو الأب هذا الاشتقاق يصبح مستقرا بالفعل إلى نحو ±30% على YY و±0.1 على δ\delta - خشن، لكن الفرق بين منحنى مُشتق وثابت مُخمَّن ليس 30%، بل الشكل بأكمله. أعد الاشتقاق كل ربع سنة؛ الانحراف في YY نفسه مؤشر تشخيصي (ارتفاع YY عند مشاركة ثابتة يعني إما تغيّر نظام سيولة المنصة أو أن تدفق أوامرك أصبح أكثر إفصاحا عن المعلومات/أسهل اكتشافا).

البداية الباردة: لا تعبئات بعد

قبل أول أمر حي لديك بيانات عامة فقط، وخياران أمينان.

مشي عمق الدفتر. احسب متوسط تكلفة المشي عبر لقطات L2 عند كل حجم، بالضبط كما يفعل محاكي التعبئة لكل صفقة، لكن مجمّعة في منحنى. هذا حد أدنى بإشارة معروفة: اللقطة تُظهر السيولة التي نجت من تدفق كل الآخرين، وديناميكيات إعادة التعبئة غير مرئية، وأوامرك الفرعية السابقة ستكون قد حرّكت الدفتر قبل وصول أوامرك اللاحقة.

def curve_from_book(snapshots, sizes_usd, safety=1.75):
    """snapshots: iterable of (mid, asks), asks = [(price, qty), ...] best-first.
    Depth-walk cost is a LOWER bound on realized cost -- scale it."""
    rows = []
    for q_usd in sizes_usd:
        costs = []
        for mid, asks in snapshots:
            rem, paid, got = q_usd / mid, 0.0, 0.0
            for p, q in asks:
                x = min(q, rem)
                paid += x * (p - mid); got += x; rem -= x
                if rem <= 0:
                    break
            if rem <= 0:
                costs.append(paid / got / mid * 1e4)
        rows.append((q_usd, safety * float(np.median(costs))))
    return pd.DataFrame(rows, columns=["q_usd", "cost_bps"])

تتبّع أثر الصفقات العامة. صنّف صفقات المهاجِمين حسب الحجم، قِس حركة السعر المتوسط بعد ثوان قليلة من كل صفقة، واستخرج منحنى أثر تجريبي. هذا يستعيد الشكل المقعّر وتقريبا التحجيم الصحيح بـ σ\sigma، لكن المستوى منحاز في اتجاه لا يمكنك تحديد إشارته مسبقا: الطبعات العامة قرارات متداولين آخرين، لذا الطبعات الكبيرة مطّلعة شرطيا (تحيّز الأثر المقاس نحو الأعلى مقارنة بإعادة توازنك غير المطّلعة) بينما المتداولون الأكثر حساسية للسيولة يقسّمون أوامرهم بدقة للاختباء (تحيّز نحو الأسفل). استخدمه للشكل، لا للمستوى.

على أي حال، بروتوكول البداية الباردة هو: خذ المنحنى المشتق من البيانات العامة، طبّق عامل أمان 1.5-2، تداول بأحجام صغيرة، وابدأ في ملء جدول TCA الذي سيحل محله. المنحنى العام سقالة، لا جدار حامل.

اعتماد النظام: نفس الأمر، خمسة أضعاف التكلفة

منحنيات تكلفة تتباعد عبر أنظمة تقلب هادئة وعادية ومتوترة

كل حد في C3C_3 يعتمد على الحالة، وفي موجة تقلب حادة تتحرك كلها ضدك في آن واحد. السبريدات تتناسب مع التقلب قصير المدى، لذا يتسع sts_t بمقدار 5-10 أضعاف. σt\sigma_t يدخل حد الأثر مباشرة. حجم التداول VtV_t يرتفع أيضا - وهو ما يبدو ساذجا وكأنه يخفّض المشاركة - لكنه يرتفع أقل من σ\sigma في البسط، والتعويض يخفي أثرا أخبث: العمق المعروض قرب السعر المتوسط ينهار أسرع بكثير من حجم التداول، لذا يصبح المنحنى المحقق أكثر حدة مما تتنبأ به الصيغة المشتقة من المدخلات المتوترة وحدها.

بشكل ملموس، بالمنحنى المشتق أعلاه، أمر BTC بقيمة 3 ملايين دولار:

  • يوم هادئ: σd=150\sigma_d = 150 نقطة أساس، سبريد نقطة أساس واحدة، Vd=6V_d = 6 مليار دولار. التكلفة =0.5+0.75×150×0.0005=0.5+2.5=3.0= 0.5 + 0.75 \times 150 \times \sqrt{0.0005} = 0.5 + 2.5 = 3.0 نقاط أساس.
  • يوم أزمة (بمستوى LUNA أو FTX): σd=700\sigma_d = 700 نقطة أساس، سبريد 6 نقاط أساس، Vd=18V_d = 18 مليار دولار. التكلفة =3.0+0.75×700×0.000167=3.0+6.8=9.8= 3.0 + 0.75 \times 700 \times \sqrt{0.000167} = 3.0 + 6.8 = 9.8 نقاط أساس.

الصيغة تقول 3.3 أضعاف. TCA المحقق في أيام الضغط يأتي باستمرار أعلى من الصيغة - انهيار العمق الذي لا يراه حد الجذر التربيعي - وهنا مكان مضاعف الضغط المقاس. في تعبئاتنا، البقايا غير المفسرة في حاوية الأزمة تسجّل 1.4-1.8 ضعفا فوق صيغة المدخلات المتوترة، بحيث تصل تكلفة الضغط الإجمالية إلى 4.5-6 أضعاف تكلفة اليوم الهادئ لنفس الأمر. هذا هو المصدر الأمين لعبارة "نفس الأمر يكلّف 5 أضعاف أكثر في موجة تقلب": نحو ضعفين من σ\sigma صافيا من الحجم، وضعفان من السبريد، والباقي من تبخّر العمق أسرع مما تسمح إحصائيات الحجم.

التنفيذ هو نموذج تكلفة شرطي: اشتقّ المنحنى لكل حاوية نظام، أو بشكل مكافئ اشتقّ منحنى واحدا وجدول مضاعفات مفتاحه شريحة تقلب محقق عند لحظة القرار (نافذة متتبعة فقط - علامة نظام محسوبة على العينة الكاملة هي تحيّز استباقي مهرّب عبر نموذج التكلفة):

النظام (شريحة تقلب متتبعة لساعة واحدة) التردد مضاعف السبريد مضاعف المنحنى (مقاس)
هادئ (< p25) 25% 0.6x 0.7x
عادي (p25-p75) 50% 1.0x 1.0x
مرتفع (p75-p95) 20% 1.8x 1.6x
ضغط (> p95) 5% 5-10x 3-6x

Frazzini, Israel and Moskowitz (2018) يوثّقون الظاهرة نفسها في بياناتهم المؤسسية: التكاليف المحققة تتحرك بقوة مع التقلب المتزامن، ونموذج تكلفة بلا حد تقلب متغير عبر الزمن يسعّر بشكل خاطئ الأطراف بالضبط. سبب أهمية هذا الجدول أكثر مما يوحي صف الضغط بنسبة 5% هو الارتباط: الاستراتيجيات لا تأخذ عينات من هذه الصفوف بشكل موحّد. نظام اختراق التقلب يقوم بمعظم تداوله في الصفين السفليين. صانع سوق هادئ يربح في الصف العلوي ويخرج بخسارة عبر الصف السفلي. ترجيح صفقات كل استراتيجية بمدرّج نظامها الخاص - بدلا من فرض المتوسط غير الشرطي على الجميع - هو أكبر تصحيح وحيد للأرباح والخسائر في هذه الصفحة كلها بالنسبة للأنظمة المدفوعة بالأحداث، وأكثر قيمة من الفرق بين أي درجتين متجاورتين في السلّم.

تجربة الحساسية: أربعة نماذج تكلفة، لوحة ترتيب واحدة منقلبة

لو غيّر نموذج التكلفة الأرباح والخسائر بإزاحة ثابتة، لما كان لأي من هذا أهمية بالنسبة للاختيار - كل نسخة كانت ستتحرك بالتساوي وكان الحد الأقصى سيبقى صامدا. لكن الأمر ليس كذلك، لأن حساسية التكلفة تتفاوت بين النسخ برتبة كاملة. التجربة التي تجسّد هذا:

الإعداد. عائلة استراتيجية واحدة - ارتداد نحو المتوسط بدرجة z وانفراط Donchian على عقود BTC وETH الآجلة الدائمة، أشرطة دقيقة واحدة، 18 شهرا - مع شبكة على أفق الاحتفاظ (15 دقيقة / ساعة / 4 ساعات / 24 ساعة) وعتبة الدخول: 20 نسخة، معدل دوران أحادي الجانب من 0.4x إلى 11x من رأس المال يوميا، أوامر بقيمة 250 ألف دولار تُنفّذ على مدى 5 دقائق. كل نسخة تُختبر خلفيا مرة واحدة لكل نموذج تكلفة:

  • M0: الرسوم فقط؛
  • M1: الرسوم + 5 نقاط أساس ثابتة؛
  • M2: الرسوم + نصف السبريد + 0.08σ5m0.08\,\sigma_{5m}؛
  • M3: الرسوم + المنحنى المشتق Y=0.75Y=0.75، δ=0.5\delta=0.5 مع جدول مضاعف النظام أعلاه.

نفس التعبئات، نفس الإشارات، نفس مسار الكود - نموذج التكلفة يُمرَّر إلى محرّك الاختبار الخلفي كوسيط بنّاء، تماما كأي معامل من الدرجة الأولى:

from dataclasses import dataclass

@dataclass(frozen=True)
class SqrtCost:
    y: float = 0.75        # fitted impact coefficient
    delta: float = 0.5     # fitted exponent
    fee_bps: float = 2.5   # taker fee, always separate
    def cost_bps(self, q_usd: float, st) -> float:
        part = q_usd / st.window_volume_usd
        return (self.fee_bps + st.stress_mult *
                (st.spread_bps / 2 + self.y * st.sigma_bps * part ** self.delta))

for model in [ZeroCost(), ConstCost(5.0), VolCost(0.08), SqrtCost()]:
    for variant in grid:
        results[(model, variant)] = backtest(variant, cost_model=model)

النتائج (تشغيل تمثيلي؛ عوائد صافية مُسنَّنة):

النسخة معدل الدوران/يوم M0 M1 (5 نقاط أساس) M2 M3 (المنحنى) الترتيب M1 → M3
MR-15m, z=1.0 11.4x +187% +61% +9% −14% 1 → 17
MR-15m, z=1.5 7.9x +141% +52% +15% −2% 2 → 13
BO-1h, k=2 3.1x +74% +43% +28% +19% 3 → 4
MR-1h, z=2.0 2.4x +58% +38% +25% +21% 4 → 2
BO-4h, k=3 0.9x +39% +33% +29% +26% 7 → 1

مخطط نتوء لترتيب 20 استراتيجية ينقلب عبر أربعة نماذج تكلفة

معاملات ارتباط الرتب (Kendall τ\tau) بين لوحات الترتيب: τ(M0,M1)=0.79\tau(\text{M0},\text{M1}) = 0.79 - الثابت بالكاد يعيد ترتيب أي شيء، إنه ضريبة، لا نموذج. τ(M1,M3)=0.39\tau(\text{M1},\text{M3}) = 0.39 - ستة من أعلى عشرة في M1 تغادر أعلى عشرة تحت M3، وبطل M1 ينتقل من +61% إلى سلبي. τ(M2,M3)=0.74\tau(\text{M2},\text{M3}) = 0.74 - حد التقلب وحده يستعيد معظم إعادة الترتيب؛ حد الحجم ينهي المهمة بالنسبة للنسخ التي تتداول بكميات كبيرة نسبة لحجم النافذة. الآلية هي بالضبط سمّية الاختيار من الدرجة M0: 5 نقاط أساس ثابتة تدعم الصفقات التي تكلّف فعلا 15 نقطة أساس (كبيرة، سريعة، في ضغط) وتُفرط في فرض ضرائب على تلك التي تكلّف 2 (صغيرة، صبورة، في هدوء)، لذا فإن الترتيب حسب M1 يُرقّي بشكل منهجي النسخ التي تكاليفها الحقيقية الأكثر تقديرا بأقل من قيمتها. المُحسّن لم يجد ألفا؛ وجد حد الخطأ في نموذج تكلفتك.

هذا هو سبب انتماء نموذج التكلفة إلى نفس الفئة الذهنية التي ينتمي إليها تقسيم walk-forward أو دالة الهدف: معامل اختبار خلفي من الدرجة الأولى تُغيّره، لا ثابت بيئي تضبطه مرة واحدة. إذا كان ترتيب نسخة ما مستقرا عبر M2 وM3، فميزتها حقيقية بالنسبة للتكاليف. إذا انهار ترتيبها بالصعود على السلّم، فقد تعلّمت أنها كانت أثرا زائفا لنموذج التكلفة - نفس الحدث المعرفي مثل استراتيجية تموت خارج العينة في التحسين walk-forward، وتستحق نفس الاستجابة. وإذا اخترت الحد الأقصى من 200 نسخة تحت M1، فإن منطق شارب المخفَّض ينطبق بمنعطف إضافي: أجريت بحث اختبار متعدد كانت فيه إحصائية الاختبار نفسها منحازة لصالح المداخل عالية التردد.

حدود أمينة: الأرباح والخسائر كنطاق

الانضباط الأخير ينبع من الاعتراف بأن نموذج التكلفة غير مؤكد حتى بعد الاشتقاق. YY له فترة ثقة، ومضاعفات الضغط مُقدَّرة من حفنة من أيام الطرف، والمستقبل سيرسم أنظمته الخاصة. لذا توقف عن الإبلاغ عن صافي الأرباح والخسائر كرقم واحد. أبلغ عنه كنطاق عبر سيناريوهات تكلفة مسمّاة:

  • متفائل: الحد الأدنى من مشي العمق، بلا مضاعفات ضغط. لا تُبلغ عنه وحده أبدا؛ مهمته الوحيدة هي تحديد الحد الأعلى لأفضل حالة.
  • واقعي: المنحنى المشتق، مضاعفات النظام المشتقة - تقديرك المركزي.
  • متشائم: Y×1.5Y \times 1.5، السبريد ×2\times 2، صف الضغط يُطبَّق دائما عند قيمته p75 على الأقل. تقريبا: المنحنى المشتق محسوبا عند الحافة غير الودية من فترة ثقة كل معامل.

قاعدتا قرار تجعلان النطاق قابلا للتنفيذ. الأولى: خصّص بناء على المتشائم، أبلغ بناء على الواقعي. استراتيجية تنجو فقط تحت النموذج الواقعي هي رهان على أن اشتقاق تكلفتك خالٍ من الخطأ في الاتجاه المكلف - رهان لم تضعه واعيا. الثانية: تتبّع نسبة الهشاشة - عرض النطاق مقسوما على الأرباح والخسائر الإجمالية. من التجربة أعلاه: BO-4h عند معدل دوران 0.9x تُظهر إجمالي +39%، نطاق [+22%, +29%]، هشاشة 0.44. MR-15m عند 11.4x تُظهر إجمالي +187%، نطاق [−31%, +34%] - هشاشة 2.2، وإشارة الاستراتيجية تنقلب داخل النطاق. تلك الاستراتيجية الثانية ليس لها إشارة قابلة للتحديد بحالة معرفتك الحالية بالتكلفة؛ العبارتان الأمينتان هما "لا نعرف" و"خفّض معدل الدوران حتى نعرف". اختبار خلفي يطبع +34% ويحذف حافة −31% من النطاق ليس متفائلا، بل غير قابل للدحض.

النطاق لا يكلّف شيئا لإنتاجه - ثلاثة مدخلات إضافية فقط في مسح نموذج التكلفة الذي تديره أصلا الآن - ويغيّر المحادثات. "هذه الاستراتيجية تحقق 20%" يدعو للتصديق. "هذه الاستراتيجية تحقق 11-19% عبر سيناريوهات التكلفة لدينا، وتبقى إيجابية تحت السيناريو المتشائم" يدعو للتخصيص.

أين يندمج هذا

في محرّك الاختبار الخلفي، يقع نموذج التكلفة بالضبط حيث يعيد محاكي التعبئة الكمية المنفَّذة: التعبئات تحدد ما حصلت عليه، ومنحنى التكلفة يحدد ما دفعته مقابله، والدرجات فوق L2 على ذلك السلّم (مشي العمق، نماذج الطابور) تمتص تدريجيا نموذج التكلفة داخل نموذج التعبئة نفسه - المنحنى هو البديل المعلمي الذي تستخدمه حين لا تحاكي الدفتر مباشرة. المعاملات تأتي من سجل TCA الخاص بك حين يكون لديك واحد ومن بيانات عامة مُقيَّسة بالأمان حين لا يكون لديك. الشكل الدالّي يأتي من أربعين عاما من النظرية والقياس - Kyle (1985) لسبب اعتماد التكلفة لكل دولار على السيولة أصلا، وAlmgren et al. (2005) وTóth et al. (2011) للقانون المقعّر نفسه، مع Almgren-Chriss كنظير الجدولة ونماذج الأثر العصبية كحدود التنبؤ. ما يضيفه هذا المقال هو سير العمل: اشتقّ المنحنى، اجعله شرطيا بالنظام، امسحه كمعامل، وأبلغ عن النطاق. لا شيء من هذا برّاق. كله أرخص من أن تكتشف، وأنت في التداول الحي، في أي جانب من slippage_bps = 5 كانت استراتيجيتك فعلا.

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

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

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

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