حين يتجمّد دفتر الأوامر على شاشات التداول أو يقفز في سوق مزدحمة، فالعلّة عادةً في تغذية بيانات السوق: إما أنها تفقد التحديثات عند دخولها، أو تبني الدفتر بشكل خاطئ، أو ترسله ببطء شديد إلى مئات الشاشات. قِس أكثر ساعاتك ازدحامًا أولًا، ثم اختبر كل شركة على تسجيل لذلك اليوم.
إذا كان دفتر الأوامر على شاشات التداول لديك يتجمّد أو يقفز أو يعرض أسعارًا مستحيلة حين تزدحم السوق، فالعيب يقع عادةً في أحد ثلاثة مواضع: تضيع التحديثات عند دخول تغذية البورصة، أو يُركَّب الدفتر بشكل خاطئ، أو يصل إلى مئات الشاشات ببطء شديد. قِس أكثر ساعاتك ازدحامًا قبل أن تستعين بأي أحد، ثم اختبر كل شركة تفكر فيها على تسجيل لذلك اليوم.
الجواب القصير: البورصة ترقّم كل تحديث ترسله. والنظام المبني جيدًا يكتشف الرقم الناقص فورًا، ويضع على الدفتر علامة بأنه غير محدَّث، ثم يعيد بناءه. وتبدأ المشكلة حين تمر الفجوة دون أن يلاحظها أحد، أو حين تستغرق إعادة البناء عدة ثوانٍ، أو حين يعطّل اتصال بطيء واحد كل المتداولين. سجّل تغذية أكثر أيامك ازدحامًا، واجعل إعادة تشغيلها الاختبار الذي يجب أن تجتازه كل شركة: قبل أن تشتري منتجًا، وكمعيار نجاح للمرحلة الأولى حين يبني لك فريق.
اقرأ أيضًا
يظهر ذلك في أشد اللحظات ازدحامًا، مثل إعلان من البنك المركزي أو افتتاح السوق. يتوقف الدفتر على الشاشة ثانية أو ثانيتين، ثم يقفز. وتبقى الأوامر الملغاة ظاهرة. وأحيانًا يكون أعلى سعر يعرضه مشترٍ أعلى من أدنى سعر يطلبه بائع، وهذا ما يُسمّى الدفتر المتقاطع (crossed book). وفي بورصة واحدة، خارج مزادَي الافتتاح والإغلاق، كانت أوامر كهذه ستتطابق فورًا. لذا فإن ظهور دفتر متقاطع لبورصة واحدة على شاشتك يعني أن نسختك من ذلك الدفتر خاطئة.
ثم تصل إلى فريق الدعم لقطات شاشة من متداولَين يريان دفترين مختلفين للأداة نفسها. أو يعترض متداول على السعر الذي نُفّذ به أمره، لأن الشاشة كانت تعرض سعرًا آخر.
تغذية دفتر الأوامر من البورصة تدفق من تغييرات صغيرة: أمر أُضيف، وأمر أُلغي، وصفقة. ويبدأ نظامك من نسخة كاملة من الدفتر تُسمّى اللقطة (snapshot)، ثم يطبّق التغييرات بالترتيب. وكل تغيير مرقّم، لذا يمكن اكتشاف التغيير الناقص. وتقول مواصفة Nasdaq لتغذية TotalView-ITCH 5.0 إن التغذية «تتكوّن من سلسلة من الرسائل المتسلسلة»، أي المرقّمة بالترتيب.
حين تزدحم السوق، يرتفع تدفق التغييرات بحدة. فيضيع بعضها في الطريق أو داخل خوادمك أنت، ويصل بعضها خارج الترتيب. فإن لم يلحظ النظام الفجوة، طبّق كل ما يصله وعرض دفترًا لم يعد يطابق البورصة. وإن لحظها لكنه احتاج إلى ثوانٍ ليتعافى، توقفت الشاشة عن الحركة.
البورصات تتوقع أن يفقد عملاؤها تحديثات. فتوثيق CME Group لتغذيتها MDP 3.0 يقول إنه بعد حدوث فجوة «ينبغي افتراض أن جميع الدفاتر المحفوظة في نظام العميل ربما لم تعد على الحالة الصحيحة والأحدث».
هناك ثلاثة مواضع، ولكل منها إصلاحه الخاص. ويسمّي المهندسون الموضع الثالث fan-out، لأن تدفقًا واحدًا من التحديثات يتفرّع منه إلى شاشات كثيرة. والمقالة التقنية المشار إليها أعلاه تتناول المواضع الثلاثة بالتفصيل.
الموضع الأول هو جانب الاستقبال، حيث تصل تغذية البورصة. وتتيح بعض البورصات طرقًا لاستعادة البيانات الضائعة. فأحد بروتوكولات التوصيل لدى Nasdaq، وهو MoldUDP64، يتيح للمستقبِلين «كشف الحزم الفائتة وإعادة طلبها». وترسل CME تدفقها مرتين، على خطين يُسمّيان A وB، وتشغّل تغذية منفصلة من اللقطات لتحديث الدفاتر. ولا شيء من هذا يفيد إن لم يلحظ نظامك الفجوة.
ثم يُركَّب الدفتر، وهنا يكمن الخطر في تغيير يُطبَّق مرتين، أو خارج الترتيب، أو فوق لقطة غير صحيحة. وتشرح Binance، وهي بورصة للعملات الرقمية، في دليلها الخطوات الدقيقة لوصل اللقطة بالتدفق الحي. والدفتر المبني من دونها يظل يعرض أسعارًا ويبدو سليمًا، لكن الأسعار خاطئة.
وأخيرًا يأتي الـ fan-out، حيث يخرج الدفتر إلى مئات جلسات المتداولين، جلسة لكل شاشة متصلة. والمتداول الذي يعمل على اتصال جوال ضعيف، أو الطرفية التي توقفت عن الاستجابة، يقرأ التحديثات ببطء. فإن انتظر الخادم تلك الجلسة، انتظرت كل الجلسات الأخرى معها. وترك التحديثات المتراكمة لتلك الجلسة تنمو بلا حد ليس أفضل، لأن ذاكرة الخادم تنفد فيتعطل عند الجميع.
في النظام المبني جيدًا، يرتّب الخادم التحديثات مرة واحدة ويرسل النتيجة نفسها إلى كل جلسة. والجلسة التي تتأخر إما أن تتلقى أحدث صورة للدفتر وتتخطى الخطوات الوسيطة، وإما أن يقطع الخادم اتصالها مع ذكر السبب فتعيد الشاشة الاتصال بنسخة جديدة. وقد تتعطل التغذية في أكثر من موضع في وقت واحد.
خذ أكثر ساعة ازدحامًا في الشهر الماضي، واجمع لها هذه الأرقام:
ثم سجّل التغذية الخام ليوم مزدحم كما وصلت تمامًا، مع وقت وصول كل حزمة. فإعادة تشغيل هذا التسجيل بالسرعة الفعلية وبسرعة أعلى هي الاختبار الذي تُخضع له كل شركة في قائمتك، وتكرره بعد كل إصلاح.
البرنامج الذي يستقبل تغذية البورصة ويحفظ الدفتر يُسمّى معالج التغذية (feed handler). وأمامك ثلاثة مسارات، وينبغي أن تشير قياساتك إلى واحد منها. ويمكن الجمع بين المسارين الأخيرين.
أصلح معالج التغذية الذي لديك حين تشير القياسات إلى عيب واحد واضح، مثل فجوات تمر دون أن يلاحظها أحد أو إعادة بناء بطيئة، وما زال الأشخاص الذين يعرفون الكود موجودين.
معالج التغذية الجاهز برنامج مرخّص يتصل بالبورصة، ويلتقط الفجوات، ويسلّم نظامك دفترًا صحيحًا ومحدَّثًا. أما التغذية المُدارة فتذهب أبعد من ذلك: يتصل مزوّد بيانات السوق بالبورصات، وتتلقى أنت منه تدفقًا واحدًا بصيغة واحدة.
أعد بناء الطبقة التي ترسل البيانات إلى المتداولين حين يعمل جانب الاستقبال جيدًا لكن المشكلة باقية: ما زال المتداولون يرون دفاتر مختلفة، أو تُبطئ جلسة بطيئة واحدة سائر الجلسات، أو تخطط لخدمة جلسات أكثر بكثير مما لديك اليوم.
أخضِع كل شركة في قائمتك للاختبارات الخمسة نفسها:
تبني amBrain بنية تحتية للتداول الخوارزمي: تنفيذ الأوامر، وبيانات السوق، وضوابط المخاطر قبل التداول.
يقول سطر على موقع amBrain: «تطوير طرفيات التداول، وأنظمة إدارة الأوامر، وتكامل البورصات عبر بروتوكول FIX».
تشخّص amBrain الأنظمة البطيئة في التداول وAdTech: تُقاس المنصة أثناء تشغيلها من طرف إلى طرف، ويسمّي التقرير أين يذهب الوقت.
تبني amBrain البرمجيات منذ عام 2019. وتصف فريقها في سطر واحد: «فريق يصل إلى 40 شخصًا، نحو 75% منهم من كبار المهندسين». وتعمل بثلاث صيغ: تسليم كامل، أو فريق مخصّص، أو مهندسون مدمجون في فريقك. ويحتفظ العميل بالملكية الكاملة للمنتج وللكود، باستثناء مكوّنات amBrain القابلة لإعادة الاستخدام.
هذه المقالة ليست دراسة حالة، ولا تصف أي عمل لعميل. ولا تذكر أي رقم لزمن الاستجابة لأي نظام بنته amBrain، ولا أي أسعار أو جداول زمنية.
إن كانت amBrain في قائمتك المختصرة، فاطرح عليها الأسئلة الخمسة نفسها التي تطرحها على كل شركة أخرى، واجعل تسجيلك معيار النجاح لأي عمل تتفقان عليه.
أحضر بنيتك الحالية وسيناريو الفشل الذي يقلقك، وسنراجعه معًا خلال نصف ساعة.