Sunday 19 June 2016

C ++ و استراتيجيات الاختبار التداول في الظهر






+

أفضل لغة برمجة لحسابي أنظمة التداول بواسطة مايكل قاعات مور في 26 يوليو 2013 أحد الأسئلة الأكثر شيوعا أتلقى في حقيبة البريد QS هو ما هي لغة البرمجة أفضل للتداول حسابي. الجواب القصير هو أنه لا يوجد أفضل لغة. المعلمات استراتيجية، يجب أن يكون كل اعتبار الأداء، نمطية، والتنمية، المرونة والتكلفة. هذه المادة سوف مخطط المكونات الضرورية للبنية النظام التجاري حسابي وكيف تؤثر على القرارات المتعلقة بتنفيذ اختيار اللغة. أولا، سوف يتم النظر في المكونات الرئيسية لنظام التداول حسابي، مثل أدوات البحث، محسن محفظة، مدير المخاطر ومحرك التنفيذ. وفي وقت لاحق، سوف تدرس استراتيجيات التداول المختلفة وكيف أنها تؤثر على تصميم النظام. على وجه الخصوص ستناقش وتيرة التداول وحجم التداول المرجح على حد سواء. مرة واحدة وقد تم اختيار استراتيجية التداول، فمن الضروري مهندس النظام بأكمله. وهذا يشمل اختيار الأجهزة، ونظام التشغيل (ق) ومرونة النظام ضد نادرة، والأحداث الكارثية. بينما يجري النظر في الهندسة المعمارية، ويجب إيلاء الاعتبار الواجب لأداء - على حد سواء لأدوات البحث وكذلك البيئة تنفيذ الحية. ما هو نظام التداول نحاول القيام به قبل اتخاذ قرار بشأن أفضل لغة التي لكتابة نظام التداول الآلي من الضروري تحديد المتطلبات. هو النظام ستكون محض التنفيذ استنادا سيتطلب نظام إدارة المخاطر أو محفظة حدة البناء هل النظام يتطلب backtester عالية الأداء بالنسبة لمعظم الاستراتيجيات التي يمكن تقسيم النظام التجاري إلى فئتين: البحوث وتوليد إشارة. تشعر بالقلق الأبحاث مع تقييم أداء استراتيجية على البيانات التاريخية. ومن المعروف أن عملية تقييم استراتيجية التداول على بيانات السوق مسبق كما backtesting. فإن حجم البيانات والتعقيد الحسابي يكون لها تأثير كبير على كثافة الحسابية من backtester. سرعة وحدة المعالجة المركزية والتزامن وغالبا ما تكون العوامل التي تحد في تحسين سرعة تنفيذ البحث. وتشعر جيل إشارة مع توليد مجموعة من إشارات التداول من خوارزمية وإرسال أوامر من هذا القبيل إلى السوق، وعادة عن طريق وساطة. لاستراتيجيات معينة مطلوب على مستوى عال من الأداء. I / O قضايا مثل النطاق الترددي للشبكة والكمون وغالبا ما تكون العامل المحدد في تحسين أنظمة التنفيذ. وهكذا فإن اختيار اللغات لكل مكون من كامل النظام الخاص بك قد تكون مختلفة تماما. نوع، التردد وحجم استراتيجية نوع من استراتيجية حسابي العاملين سيكون لها تأثير كبير على تصميم النظام. وسيكون من الضروري للنظر في الأسواق التي يجري تداولها، والاتصال للبائعين البيانات الخارجية، وتيرة وحجم الاستراتيجية، والمفاضلة بين سهولة تطوير وتحسين الأداء، فضلا عن أي أجهزة مخصصة، بما في ذلك في موقع واحد مخصص الخوادم، وحدات معالجة الرسومات أو شرائح (FPGA) التي قد تكون ضرورية. والخيارات التقنية لالتردد المنخفض استراتيجية الأسهم الأمريكية ستكون مختلفة كثيرا عن تلك التي من ارتفاع وتيرة المراجحة الإحصائية التداول استراتيجية في السوق الآجلة. قبل اختيار لغة العديد من البائعين البيانات يجب أن يتم تقييم التي تتعلق إلى الاستراتيجية في متناول اليد. سيكون من الضروري النظر في الاتصال للبائع، هيكل من أي واجهات برمجة التطبيقات، وحسن توقيت البيانات، ومتطلبات التخزين والمرونة في مواجهة بائع دون اتصال. ومن الحكمة أيضا أن تمتلك الوصول السريع إلى بائعين متعددين أدوات مختلفة كل لها المراوغات التخزين الخاصة، والأمثلة التي تشمل عدة رموز مؤشر الأسهم للأسهم وتواريخ انتهاء صلاحية العقود الآجلة (ناهيك عن أي بيانات OTC محددة). هذا يحتاج إلى أن تؤخذ في الاعتبار في تصميم المنصة. ومن المرجح أن يكون واحدا من أكبر مسببات كيف سيتم تعريف كومة تقنية ترددات استراتيجية. تتطلب استراتيجيات توظيف البيانات بشكل متكرر أكثر من الحانات بدقة أو ثانيا الاعتبارات الهامة فيما يتعلق بالأداء. استراتيجية تتجاوز ثانيا البارات (أي وضع علامة البيانات) يؤدي إلى أداء مدفوعة تصميم هو الشرط الأساسي. لاستراتيجيات عالية التردد كمية كبيرة من بيانات السوق سوف تحتاج إلى خزنها وتقييمها. برامج مثل HDF5 أو KDB تستخدم عادة لهذه الأدوار. من أجل معالجة كميات كبيرة من البيانات اللازمة لتطبيقات هفت، يجب أن تستخدم لbacktester وتنفيذ نظام الأمثل على نطاق واسع. C / C (ربما مع بعض المجمع) من المرجح أن المرشح الأقوى اللغة. سوف استراتيجيات فائقة التردد تتطلب يكاد يكون من المؤكد أجهزة مخصصة مثل التصميم بما وتبادل المشاركة في الموقع واللب / واجهة الشبكة ضبط. تشمل أنظمة بحوث النظم البحوث عادة خليط من تطوير التفاعلية والبرمجة الآلية. عادة ما يستغرق في السابق مكان داخل بيئة تطوير متكاملة مثل البصرية ستوديو، ماتلاب أو R الاستوديو. ويشمل هذا الأخير الحسابات العددية واسعة على العديد من المعالم ونقاط البيانات. وهذا يؤدي إلى اختيار لغة توفير بيئة مباشرة إلى رمز اختبار، ولكنها توفر أيضا أداء كافية لتقييم الاستراتيجيات على أبعاد المعلمة متعددة. وتشمل بيئات التطوير نموذجية في هذا المجال يعتمد Microsoft Visual C / C، والذي يحتوي على المرافق التصحيح واسعة وقدرات إنجاز قانون (عن طريق التحسس) ولمحات عامة واضحة من المكدس المشروع بأكمله (عبر مكتب إدارة السجلات قاعدة البيانات، LINQ) ماتلاب. الذي صمم لواسعة الجبر الخطي العددي وعمليات vectorised، ولكن بطريقة حدة R ستوديو التفاعلي. الذي يلتف وحدة R لغة الإحصائية في بيئة تطوير متكاملة IDE كسوف كامل العضوية لينكس جافا و C وبيئات التطوير شبه ملكية مثل Enthought الستارة عن بيثون، والتي تشمل بيانات المكتبات تحليل مثل NumPy. SciPy. scikit تعلم والباندا في التفاعلية (وحدة) بيئة واحدة. لbacktesting العددي، كل لغة من اللغات المذكورة أعلاه هي مناسبة، على الرغم من أنه ليس من الضروري استخدام واجهة المستخدم الرسومية / IDE كما سيتم تنفيذ التعليمات البرمجية في الخلفية. نظر رئيس في هذه المرحلة هو أن سرعة التنفيذ. لغة مترجمة (مثل C) هي غالبا ما تكون مفيدة إذا كانت أبعاد المعلمة backtesting كبيرة. تذكر أنه من الضروري أن نكون حذرين من هذه النظم إذا كان هذا هو الحال تفسر لغات مثل بايثون في كثير من الأحيان الاستفادة من المكتبات عالية الأداء مثل NumPy / الباندا للخطوة backtesting، من أجل الحفاظ على درجة معقولة من القدرة التنافسية مع جمعت حكمه. في نهاية المطاف اختيار اللغة لbacktesting سيتم تحديدها من قبل احتياجات حسابي محددة فضلا عن مجموعة من المكتبات المتاحة في اللغة (أكثر على أن أدناه). ومع ذلك، فإن اللغة المستخدمة في البيئات backtester والبحوث يمكن أن تكون مستقلة تماما عن تلك المستخدمة في مكونات البناء محفظة وإدارة المخاطر والتنفيذ، كما سيتضح. غالبا ما يتم التغاضي محفظة البناء وإدارة المخاطر ومكونات البناء المحافظ وإدارة المخاطر من قبل التجار حسابي التجزئة. هذا هو دائما تقريبا خطأ. توفر هذه الأدوات الآلية التي سيتم الحفاظ على رأس المال. أنها لا تحاول فقط للتخفيف من عدد من الرهانات محفوفة بالمخاطر، ولكن أيضا تقليل زبد من الصفقات أنفسهم، والحد من تكاليف المعاملات. إصدارات متطورة من هذه المكونات يمكن أن يكون لها تأثير كبير على نوعية وconsistentcy الربحية. ومن اليسير لخلق استقرارا استراتيجيات كآلية للأعمال الاستثمارية ومدير المخاطر يمكن بسهولة تعديل للتعامل مع أنظمة متعددة. وهكذا ينبغي النظر فيها العناصر الأساسية في البداية من تصميم نظام التداول حسابي. وظيفة من نظام البناء المحفظة إلى اتخاذ مجموعة من الصفقات المطلوبة وإنتاج مجموعة من الصفقات الفعلية التي تقلل من زبد، والحفاظ على التعرض لعوامل مختلفة (مثل القطاعات، فئات الأصول، وما إلى ذلك التقلب) وتحسين تخصيص رأس المال لمختلف الاستراتيجيات في محفظة. بناء محفظة غالبا ما يقلل من مشكلة الجبر الخطي (مثل عواملها المصفوفة) وبالتالي الأداء يعتمد إلى حد كبير على فعالية العددي تنفيذ الجبر الخطي المتاحة. وتشمل المكتبات المشتركة uBLAS. LAPACK وNAG لC. كما تمتلك ماتلاب عمليات مصفوفة الأمثل على نطاق واسع. الثعبان يستخدم NumPy / SciPy لمثل هذه الحسابات. وهناك محفظة إعادة توازن الجسم في كثير من الأحيان تتطلب مكتبة مصفوفة جمعت (والأمثل أيضا) لتنفيذ هذه الخطوة خارج، حتى لا عنق الزجاجة النظام التجاري. إدارة المخاطر هي جزء آخر مهم للغاية لنظام التداول حسابي. خطر يمكن أن تأتي في أشكال عديدة: زيادة تقلب (على الرغم من أن هذا يمكن أن ينظر إليها على أنها مرغوب فيه لاستراتيجيات معينة)، وزيادة الترابط بين فئات الأصول، والتقصير تجاه الطرف الآخر، وانقطاع التيار الخادم، أحداث البجعة السوداء والبق التي لم يتم كشفها في رمز التداول، على سبيل المثال لا قليل. مكونات إدارة المخاطر ومحاولة توقع آثار التقلبات المفرطة والترابط بين فئات الأصول وتأثير لاحق (ق) على رأس المال التجاري. في كثير من الأحيان وهذا يقلل إلى مجموعة من الحسابات الإحصائية مثل اختبارات الضغط مونتي كارلو. هذه هي مشابهة جدا لاحتياجات الحسابية من المشتقات تسعير المحرك وعلى هذا النحو سوف تكون وحدة المعالجة المركزية ملزمة. هذه المحاكاة هي parallelisable غاية (أنظر أدناه)، وإلى درجة معينة، فمن الممكن لرمي الأجهزة في المشكلة. أنظمة التنفيذ وظيفة من نظام التنفيذ هو الحصول على إشارات التداول التي تمت تصفيتها من مكونات بناء محفظة وإدارة المخاطر وإرسالها إلى وساطة أو غيرها من وسائل الوصول إلى الأسواق. وبالنسبة لغالبية استراتيجيات التداول الحسابية التجزئة وهذا ينطوي على اتصال API أو FIX إلى الوساطة مثل وسطاء التفاعلية. الاعتبارات الأساسية عند البت في لغة تشمل نوعية API، وتوافر لغة المجمع لAPI، تردد تنفيذ والزلل المتوقعة. تشير نوعية API لمدى توثيقها هو عليه، أي نوع من الأداء تقدمها، سواء كان ذلك يحتاج برنامج مستقل يمكن الوصول إليها أو ما إذا كان يمكن إنشاء بوابة بطريقة مقطوعة الرأس (أي لا GUI). في حالة وسطاء التفاعلية، تحتاج أداة التاجر خوادم تكون قيد التشغيل في بيئة واجهة المستخدم الرسومية من أجل الوصول إلى واجهة برمجة التطبيقات الخاصة بهم. كان لي مرة واحدة لتثبيت إصدار سطح المكتب أوبونتو على خادم سحابة أمازون للوصول إلى وسطاء التفاعلية عن بعد، لمجرد هذا السبب فإن معظم واجهات برمجة التطبيقات توفر C و / أو واجهة جافا. وهي عادة ما تكون على المجتمع لتطوير مغلفة بلغة معينة لC، بيثون، R، إكسل وماتلاب. لاحظ أنه مع كل البرنامج المساعد إضافية تستخدم (مغلفة API خاصة) هناك مجالا لبقة للتسلل إلى النظام. دائما اختبار الإضافات من هذا النوع وضمان الحفاظ عليها بشكل فعال. مقياس جدير بالاهتمام هو أن نرى كيف بذلت العديد من التحديثات الجديدة إلى مصدر برنامج في الأشهر الأخيرة. تردد التنفيذ هو من أهمية قصوى في خوارزمية التنفيذ. لاحظ أن المئات من أوامر قد ترسل كل دقيقة وعلى هذا النحو الأداء أمر بالغ الأهمية. سيتم تكبدها الانزلاق من خلال نظام التنفيذ أداء سيء وهذا سيكون له تأثير كبير على الربحية. اللغات كتبته بشكل ثابت (انظر أدناه) مثل C / جافا هي الأمثل عموما للتنفيذ ولكن هناك مفاضلة في الوقت اللازم لتطوير واختبار وسهولة الصيانة. اللغات كتابتها بشكل حيوي، مثل بيثون وبيرل هي الآن السريعة عموما بما فيه الكفاية. تأكد من تصميم المكونات بطريقة حدات (انظر أدناه) بحيث يمكن تبديل الخروج من مثل جداول النظام دائما. التخطيط والتنمية المعمارية معالجة مكونات نظام التداول، وقد نوقشت متطلبات تردد وحجمه أعلاه، ولكن لم يتم بعد تغطية البنية الأساسية للنظام. تلك بوصفها تاجر التجزئة أو العمل في صندوق صغير من المرجح أن يرتدي قبعات كثيرة. وسيكون من الضروري أن تكون تغطي معالم النموذج ألفا، وإدارة المخاطر، والتنفيذ، وكذلك التنفيذ النهائي للنظام. قبل الخوض في لغات معينة سوف تناقش تصميم بنية النظام الأمثل. فصل من المخاوف واحد من أهم القرارات التي يجب أن يتم في البداية هو كيفية فصل مخاوف من نظام التداول. في مجال تطوير البرمجيات، وهذا يعني أساسا كيفية تفريق الجوانب المختلفة للنظام التجاري إلى مكونات وحدات منفصلة. من خلال تعريض اجهات في كل عنصر من العناصر فمن السهل أن مبادلة خارج أجزاء من نظام للإصدارات الأخرى التي أداء المعونة أو موثوقية أو صيانة، دون تعديل أي رمز التبعية الخارجية. هذا هو أفضل الممارسات لهذه الأنظمة. لاستراتيجيات على ترددات منخفضة نسبيا ننصح مثل هذه الممارسات. لغلاه التداول عالية التردد قد يكون لا يمكن تجاهله على حساب التغيير والتبديل في النظام لمزيد من الأداء كتاب القواعد. قد يكون إلى جانب نظام أكثر إحكاما مرغوب فيه. إنشاء خريطة المكونة للنظام التداول حسابي الجدير مقال في حد ذاته. ومع ذلك، النهج الأمثل هو التأكد من وجود مكونات منفصلة للمدخلات بيانات السوق التاريخية وفي الوقت الحقيقي، وتخزين البيانات، API الوصول إلى البيانات، backtester، المعلمات استراتيجية، وبناء محفظة وإدارة المخاطر ونظم التنفيذ الآلي. على سبيل المثال، إذا كان مخزن البيانات المستخدمة هو الأداء الضعيف حاليا، حتى في مستويات كبيرة من التحسين، وأنه يمكن أن يكون تبادلت مع الحد الأدنى من يعيد كتابة لابتلاع البيانات أو الوصول إلى البيانات API. كما بكثير كما backtester ونشعر بالقلق مكونات اللاحقة، وليس هناك فرق. فائدة أخرى من المكونات المنفصلة هو أنه يتيح مجموعة متنوعة من لغات البرمجة لاستخدامها في النظام العام. ليست هناك حاجة إلى أن تقتصر على لغة واحدة إذا كانت طريقة التواصل من المكونات هي اللغة مستقلة. وسيكون هذا هو الحال إذا كانت تتصل عبر TCP / IP، ZeroMQ أو بعض الدول الأخرى بروتوكول لغة مستقلة. وكمثال ملموس، والنظر في حالة وجود نظام backtesting يتم كتابتها في C لعدد الطحن الأداء، في حين يتم كتابة النظم مدير محفظة والتنفيذ في بيثون باستخدام SciPy وIBPy. اعتبارات الأداء الأداء هو اعتبار هام بالنسبة لمعظم استراتيجيات التداول. لاستراتيجيات التردد العالي هو العامل الأكثر أهمية. ويشمل أداء مجموعة واسعة من القضايا، مثل سرعة حسابي التنفيذ، استتار الشبكة وعرض النطاق الترددي، والبيانات I / O، التزامن / التوازي والتحجيم. كل من هذه المجالات وتغطي بشكل فردي عن طريق الكتب الكبيرة، لذلك هذا المقال سوف الصفر فقط سطح كل موضوع. والآن سيتم مناقشتها الهندسة المعمارية واختيار اللغة من حيث تأثيرها على الأداء. الحكمة السائدة كما قال دونالد نث. أحد الآباء في علوم الحاسب الآلي، هو أن من السابق لأوانه الأمثل هو أصل كل الشرور. هذا هو دائما تقريبا حالة - إلا عند بناء خوارزمية التداول عالية التردد بالنسبة لأولئك الذين يرغبون في استراتيجيات أدنى تردد، نهج مشترك هو بناء نظام في أبسط طريقة ممكنة وتحسين فقط عندما تبدأ الاختناقات على ما يبدو. وتستخدم أدوات التنميط لتحديد أين تنشأ اختناقات. ملامح ويمكن إجراء لجميع العوامل المذكورة أعلاه، إما في بيئة مايكروسوفت ويندوز أو لينكس. هناك العديد من نظام التشغيل واللغة الأدوات المتاحة للقيام بذلك، وكذلك المرافق طرف ثالث. والآن سيتم مناقشتها اختيار اللغة في سياق الأداء. C، جافا، بايثون، R وماتلاب تحتوي على جميع المكتبات عالية الأداء (إما كجزء من مستواهم أو خارجيا) لبنية البيانات الأساسية والعمل حسابي. سفن C مع مكتبة قالب قياسي، في حين يحتوي بيثون NumPy / SciPy. المهام الرياضية شيوعا هي التي يمكن العثور عليها في هذه المكتبات ونادرا ما يكون مفيدا لكتابة تطبيق جديد. الاستثناء الوحيد هو إذا كان مطلوبا بنية الأجهزة مخصصة للغاية وخوارزمية هو الاستفادة واسعة من ملحقات الشخصية (مثل مخابئ مخصص). ومع ذلك، في كثير من الأحيان التجديد من الوقت النفايات عجلة التي يمكن أن تنفق على نحو أفضل تطوير وتحسين أجزاء أخرى من البنية التحتية التجارية. الوقت اللازم لتطوير ثمين للغاية خاصة في سياق المطورين الوحيد. الكمون غالبا ما تكون مسألة نظام التنفيذ كما تقع أدوات البحث عادة على نفس الجهاز. عن السابق، الكمون يمكن أن تحدث في عدة نقاط على طول مسار التنفيذ. يجب استشارة قواعد البيانات (القرص / شبكة الكمون)، يجب أن تتولد إشارات (نظم التشغيل، اللب الرسائل الكمون)، إشارات التجارة أرسلت (NIC الكمون) وأوامر معالجتها (نظم تبادل الكمون الداخلي). لعمليات تردد أعلى من الضروري أن تصبح مألوفة وثيقا مع الأمثل اللب وكذلك تعظيم الاستفادة من شبكة النقل. هذه هي منطقة عميقة وبشكل ملحوظ خارج نطاق المادة، ولكن إذا كان المطلوب خوارزمية UHFT ثم يكون على بينة من عمق المعرفة المطلوبة التخزين المؤقت مفيد جدا في أدوات مطور التداول الكمي. يشير التخزين المؤقت لمفهوم تخزين البيانات الوصول إليها بشكل متكرر على نحو يسمح بالوصول الأداء العالي، على حساب جفاء المحتمل للبيانات. تحدث حالة استخدام المشتركة في تطوير الشبكة عند التقاط البيانات من قاعدة بيانات علائقية المدعومة من القرص ووضعه في الذاكرة. أي طلبات لاحقة للبيانات لا يجب أن تصل إلى قاعدة البيانات وذلك المكاسب الأداء يمكن أن تكون كبيرة. لحالات التداول التخزين المؤقت يمكن أن تكون مفيدة للغاية. على سبيل المثال، الحالة الراهنة للمحفظة استراتيجية يمكن تخزينها في ذاكرة التخزين المؤقت حتى يتم إعادة توازن الجسم عليه، مثل أن القائمة لا توجد الآن ر تحتاج إلى مجدد على كل حلقة من الخوارزمية التداول. ومن المرجح أن تكون عملية وحدة المعالجة المركزية عالية أو القرص I / O هذا التجدد. ومع ذلك، التخزين المؤقت لا يخلو من القضايا الخاصة بها. تجديد بيانات ذاكرة التخزين المؤقت في كل مرة، ويرجع ذلك إلى طبيعة volatilie التخزين ذاكرة التخزين المؤقت، يمكن وضع الطلب الكبير على البنية التحتية. ثمة مسألة أخرى هي الكلب الأساسات. حيث تتم أجيال متعددة من نسخة مخبأ جديدة تحت حمولة عالية للغاية، الأمر الذي يؤدي إلى تتالي فشل. تخصيص الذاكرة الديناميكية هي عملية مكلفة في تنفيذ البرنامج. وبالتالي يتحتم على أعلى تطبيقات التداول الأداء ليكون جيدا يدرك كيف يتم تخصيص الذاكرة ويتم deallocated خلال تدفق البرنامج. معايير اللغة الجديدة مثل جافا، C وبيثون عن أداء جمع القمامة التلقائي. الذي يشير إلى إلغاء تخصيص الذاكرة المخصصة حيوي عندما تذهب الأشياء خارج النطاق. جمع القمامة مفيد للغاية خلال التنمية كما أنه يقلل من الأخطاء والوسائل سهولة القراءة. ومع ذلك، فإنه في كثير من الأحيان دون المستوى الأمثل لبعض استراتيجيات التداول عالية التردد. وغالبا ما المطلوب جمع القمامة المخصصة لهذه الحالات. في جاوة، على سبيل المثال، عن طريق ضبط جامع القمامة والتكوين كومة، فمن الممكن الحصول على الأداء العالي لاستراتيجيات هفت. C لا توجد الآن ر توفير جامع القمامة الأصلي، ولذا فمن الضروري للتعامل مع جميع تخصيص الذاكرة / إلغاء تخصيص كجزء من تنفيذ كائن الصورة. في حين يحتمل أن تكون عرضة للخطأ (مما قد يؤدي إلى مؤشرات متدلية) من المفيد للغاية أن يكون غرامة الحبيبات السيطرة على كيفية ظهور الكائنات على كومة لبعض التطبيقات. عند اختيار لغة تأكد لدراسة الكيفية التي يعمل بها جمع القمامة وعما إذا كان يمكن تعديلها لتحسين لحالة استخدام معينة. العديد من العمليات في أنظمة التداول حسابي قابلة للparallelisation. وهذا يشير إلى مفهوم القيام بعمليات برنامجية متعددة في نفس الوقت، أي بمعنى بشكل متواز. وتشمل ما يسمى الخوارزميات المتوازية embarassingly الخطوات التي يمكن حسابها بشكل مستقل تماما من الخطوات الأخرى. العمليات الإحصائية معينة، مثل مونتي كارلو المحاكاة، هي مثال جيد على الخوارزميات المتوازية embarassingly كما في كل سحب عشوائي وتشغيل مسار لاحقة يمكن حسابها من دون معرفة مسارات أخرى. خوارزميات أخرى parallelisable جزئيا فقط. ديناميات الموائع المحاكاة هي مثال على ذلك، حيث مجال الحوسبة ويمكن تقسيم، ولكن في النهاية هذه المجالات يجب التواصل مع بعضهم البعض، وبالتالي فإن عمليات ومتسلسل جزئيا. خوارزميات Parallelisable تخضع لقانون أمدال الصورة. الذي يوفر الحد الأقصى النظري إلى زيادة أداء خوارزمية parallelised عندما تتعرض لعمليات منفصلة N (على سبيل المثال على نواة وحدة المعالجة المركزية أو موضوع). أصبح Parallelisation متزايد الأهمية باعتبارها وسيلة لتحسين منذ ساعة المعالج سرعات قد تجمد، كما تحتوي على معالجات أحدث الكثير من نوى التي لإجراء عمليات حسابية موازية. صعود أجهزة الرسومات المستهلك (predominently لألعاب الفيديو) قد يؤدي إلى تطوير وحدات الرسومية معالجة (جرافيكس)، التي تحتوي على مئات من النوى لعمليات متزامنة للغاية. هذه وحدات معالجة الرسومات هي الآن بأسعار معقولة جدا. وقد تؤدي الأطر رفيعة المستوى، مثل نفيديا كودا الصورة لاعتماد واسع النطاق في الأوساط الأكاديمية والمالية. هذه الأجهزة GPU عموما يصلح إلا للالجانب البحثي التمويل الكمي، في حين أن الأجهزة أكثر تخصصا الأخرى (بما في ذلك الميدان، برمجة بوابة صالحة - التصميم بما) تستخدم ل(U) هفت. في الوقت الحاضر، فإن معظم إلى اللغات الحديثة تدعم درجة من التزامن / خاصية تعدد. وبالتالي فإنه واضح ومباشر لتحسين وbacktester، لأن جميع الحسابات مستقلة عن غيرها عموما. التوسع في هندسة البرمجيات والعمليات يشير إلى قدرة النظام على التعامل مع الأحمال المتزايدة باستمرار في شكل طلبات أكبر، وارتفاع استخدام المعالج وأكثر تخصيص الذاكرة. في تداول حسابي استراتيجية قادرة على توسيع نطاق ما اذا كان يمكن قبول كميات أكبر من رأس المال والتي لا تزال تنتج عوائد ثابتة. جداول كومة تكنولوجيا التداول إذا كان يمكن أن يدوم حجم التجارة أكبر وزيادة الكمون، دون bottlenecking. في حين نظم يجب أن تكون مصممة لقياس، غالبا ما يكون من الصعب التكهن مسبقا حيث سيحدث عنق الزجاجة. وقطع الأشجار صارمة، والاختبار، والتنميط ورصد تساعد إلى حد كبير في السماح للنظام لتوسيع نطاق. وغالبا ما توصف اللغات أنفسهم unscalable. هذا هو عادة نتيجة للمعلومات المضللة، بدلا من الواقع الصعب. فمن مجموع كومة التكنولوجيا التي ينبغي أن تتحقق لتطويره، وليس اللغة. ومن الواضح أن بعض اللغات والأداء أكبر من غيرها ولا سيما حالات الاستخدام، ولكن لغة واحدة أبدا أفضل من الآخر بكل معنى الكلمة. وسيلة لإدارة النطاق لفصل المخاوف، كما هو مذكور أعلاه. من أجل مواصلة تقديم القدرة على التعامل مع طفرات في النظام (أي التقلب المفاجئ الذي يطلق مجموعة من الصفقات)، فإنه من المفيد إنشاء بنية رسالة الطابور. هذا يعني ببساطة وضع نظام قائمة انتظار الرسائل بين المكونات بحيث مكدسة أوامر حتى إذا مكون معين، غير قادر على معالجة العديد من الطلبات. بدلا من الطلبات التي فقدت أنهم ببساطة الاحتفاظ بها في كومة حتى تتم معالجة الرسالة. هذا مفيد جدا لإرسال الصفقات إلى محرك التنفيذ. إذا كان محرك يعاني تحت الكمون الثقيلة بعد ذلك سوف احتياطية من الصفقات. سوف الانتظار بين مولد إشارة التجارة وAPI التنفيذ وتخفيف هذه القضية على حساب انزلاق التجارة المحتملين. ومفتوحة المصدر وسيط طابور رسالة محترم هو RabbitMQ. الأجهزة وأنظمة التشغيل والأجهزة تعمل الاستراتيجية الخاصة بك يمكن أن يكون لها تأثير كبير على ربحية الخوارزمية الخاصة بك. هذه ليست قضية يقتصر على مضاربين سواء. وهناك خيار الفقراء في الأجهزة ونظام التشغيل يمكن أن يؤدي إلى تحطم آلة أو إعادة تشغيل الكمبيوتر في أكثر اللحظات في غير محله. وبالتالي فمن الضروري النظر حيث سيقيم طلبك. والخيار عموما بين آلة الشخصية المكتبية، خادم بعيد، مزود سحابة أو الخادم الموجود شارك في الصرف. الآلات المكتبية وبسيطة لتثبيت وإدارة، وخصوصا مع أنظمة التشغيل ودية أحدث مستخدم مثل ويندوز 7/8، ماك OSX وأوبونتو. أنظمة سطح المكتب لا تملك بعض عيوب كبيرة، ولكن. وقبل كل شيء هو أن إصدارات أنظمة التشغيل المصممة لأجهزة سطح المكتب من المرجح أن تتطلب إعادة تمهيد / الترقيع (وغالبا ما تكون في أسوأ الأوقات). كما أنها تستهلك المزيد من الموارد الحاسوبية التي كتبها فضيلة تتطلب واجهة المستخدم الرسومية (GUI). يمكن احتوائها الأجهزة في المنزل (أو المكاتب المحلية) بيئة تؤدي إلى مشاكل الاتصال بشبكة الإنترنت والجهوزية السلطة. والميزة الرئيسية لنظام سطح المكتب هي أن حصانا الحسابية هام يمكن شراؤها لجزء من تكلفة خادم مخصص (أو النظام القائم على سحابة) عن بعد من سرعة قابلة للمقارنة. آلة خادم مخصص أو سحابة المستندة، في حين غالبا ما تكون أكثر تكلفة من خيار سطح المكتب، ويسمح للبنية التحتية أكثر أهمية التكرار، مثل النسخ الاحتياطي الآلي للبيانات، والقدرة على ضمان الجهوزية والرصد عن بعد أكثر بشكل مباشر. فهي أصعب لإدارة لأنها تتطلب القدرة على استخدام القدرات الدخول عن بعد من نظام التشغيل. في ويندوز هذا هو عموما عبر بروتوكول سطح المكتب البعيد واجهة المستخدم الرسومية (RDP). في الأنظمة القائمة على يونكس سطر الأوامر تأمين يستخدم شل (SSH). البنية التحتية خادم يعمل بنظام يونكس هي دائما تقريبا سطر الأوامر القائمة على الفور مما يجعل أدوات البرمجة القائمة على واجهة المستخدم الرسومية (مثل ماتلاب أو إكسل) لتكون غير صالحة للاستعمال. خادم تشترك في الموقع، كما يتم استخدام العبارة في أسواق رأس المال، هو مجرد خادم مخصص التي تتواجد داخل تبادل من أجل الحد من الكمون الخوارزمية التداول. وهذا أمر ضروري للغاية لبعض استراتيجيات التداول عالية التردد، والتي تعتمد على الكمون المنخفض من أجل توليد ألفا. الجانب النهائي لاختيار الأجهزة واختيار لغة البرمجة منصة الاستقلال. هل هناك حاجة لرمز لتشغيل عبر أنظمة تشغيل مختلفة متعددة هو رمز مصممة ليتم تشغيلها على نوع معين من بنية المعالج، مثل إنتل إلى x86 / إلى x64 أو أنه سوف يكون من الممكن تنفيذها على معالجات RISC مثل تلك المصنعة بواسطة ARM هذه القضايا سوف تعتمد إلى حد كبير على وتيرة ونوع من الاستراتيجية التي يجري تنفيذها. المرونة واختبار واحدة من أفضل الطرق لانقاص الكثير من المال على التداول حسابي هو خلق نظام مع عدم وجود المرونة. وهذا يشير إلى متانة sytem عندما تخضع إلى الأحداث النادرة، مثل حالات الإفلاس وساطة، التقلبات المفرطة المفاجئ، والتوقف على مستوى المنطقة لمزود خدمة سحابة أو الحذف العرضي من قاعدة بيانات التداول بأكملها. سنوات من الأرباح يمكن القضاء في غضون ثوان مع بنية سيئة التصميم. ومن الضروري للغاية للنظر في قضايا مثل debuggng، والاختبار، وقطع الأشجار، والنسخ الاحتياطي، وارتفاع توافر والرصد كمكونات أساسية للنظام الخاص بك. ومن المرجح أن في أي عرف تطبيق التداول الكمي معقدة إلى حد معقول لا يقل عن 50 من الوقت اللازم لتطوير ستصرف على التصحيح والاختبار والصيانة. ما يقرب من جميع لغات البرمجة إما سفينة مع المصحح المرتبطة بها أو تمتلك بدائل طرف ثالث يحظى باحترام كبير. في جوهرها، ومصحح يسمح بتنفيذ برنامج مع ادراج نقاط لكسر التعسفية في مسار رمز، الذي وقف التنفيذ مؤقتا من أجل تحقيق دولة النظام. الفائدة الرئيسية من التصحيح هو أنه من الممكن للتحقيق في سلوك من التعليمات البرمجية قبل نقطة تحطم المعروفة. التصحيح هو عنصر أساسي في مربع الأدوات لتحليل أخطاء البرمجة. ومع ذلك، فهي تستخدم على نطاق واسع في اللغات المترجمة مثل C أو جافا، لغات تفسير مثل بايثون وغالبا ما تكون أسهل لتصحيح نظرا لعدد أقل من الكونغرس والبيانات أقل مطول. وعلى الرغم من هذا الاتجاه بيثون لا السفينة مع فوسفات. التي هي أداة التصحيح متطورة. مشروع Visual C IDE مايكروسوفت تمتلك اسعة المرافق واجهة المستخدم الرسومية التصحيح، في حين سطر الأوامر لينكس C مبرمج، وجود المصحح جدب. ويشير اختبار في مجال تطوير البرمجيات لعملية تطبيق المعايير المعروفة والنتائج ظائف، وأساليب وأهداف محددة في مصدر برنامج، وذلك لمحاكاة السلوك وتقييم متعددة رمز مسارات، مما يساعد على ضمان أن النظام يتصرف كما يجب. ومن المعروف أن نموذج أكثر حداثة مثل تجارب التنمية المدفوعة باعتبارات (TDD)، حيث وضعت رمز اختبار ضد واجهة محددة مع أي تطبيق. قبل الانتهاء من مصدر برنامج الفعلي سوف تفشل كل الاختبارات. كما هو مكتوب رمز لملء الفراغات، والاختبارات في نهاية المطاف كل تمر، الذي وضع النقطة يجب أن تتوقف. TDD يتطلب مواصفات التصميم مقدما واسعة النطاق فضلا عن درجة صحية من الانضباط من أجل تنفيذ بنجاح. في C، يوفر دفعة إطار وحدة الاختبار. في جاوة، توجد مكتبة JUnit لتحقيق نفس الغرض. لديها الثعبان أيضا unittest حدة كجزء من المكتبة القياسية. العديد من اللغات الأخرى تمتلك الأطر وحدة اختبار وغالبا هناك خيارات متعددة. في بيئة الإنتاج، وقطع الأشجار متطورة من الضروري للغاية. يشير التسجيل إلى عملية إخراج الرسائل، بدرجات متفاوتة من الحدة، فيما يتعلق بالسلوك تنفيذ نظام لملف ثابت أو قواعد البيانات. السجلات هي أول خط الهجوم عندما يبحثون عن السلوك وقت البرنامج غير متوقع. للأسف أوجه القصور في نظام تسجيل تميل إلا أن اكتشفت بعد وقوعها كما هو الحال مع النسخ الاحتياطي مناقشتها أدناه، ينبغي إعطاء نظام تسجيل الاعتبار الواجب قبل أن يتم تصميم النظام. كل من مايكروسوفت ويندوز لينكس تأتي مع قدرة واسعة تسجيل نظام ولغات البرمجة تميل إلى السفينة مع المكتبات تسجيل القياسية التي تغطي معظم حالات الاستخدام. غالبا ما يكون من الحكمة أن تمركز تسجيل المعلومات من أجل تحليلها في وقت لاحق، نظرا لأنه يمكن أن يؤدي في كثير من الأحيان إلى الأفكار حول تحسين الأداء أو خطأ التخفيض، والتي سيكون لها تقريبا بالتأكيد تأثير إيجابي على عوائد التداول الخاص بك. في حين قطع الأشجار من النظام سوف يوفر المعلومات حول ما حدث في الماضي، ورصد تطبيق توفر نظرة ثاقبة ما يحدث الآن. وينبغي النظر في جميع جوانب نظام للرصد. مقاييس مستوى النظام مثل استخدام القرص والذاكرة المتاحة وعرض النطاق الترددي الشبكة واستخدام وحدة المعالجة المركزية توفر معلومات الحمل الأساسية. المقاييس التجارية مثل أسعار غير طبيعية / وحدة التخزين وعمليات السحب السريع المفاجئ والتعرض لمختلف القطاعات حساب / الأسواق وينبغي أيضا أن تراقب بشكل مستمر. وعلاوة على ذلك، ينبغي حرض نظام العتبة التي تقدم إخطارا عندما يتم اختراق بعض المقاييس، ورفع أسلوب الإعلام (البريد الإلكتروني، والرسائل القصيرة، مكالمة هاتفية الآلي) تبعا لشدة متري. مراقبة النظام غالبا ما يكون من اختصاص مدير مسؤول النظام أو العمليات. ومع ذلك، كمطور التجاري الوحيد، ويجب وضع هذه المقاييس كجزء من مخطط أوسع. العديد من الحلول لرصد موجودة: الملكية، استضافت والمفتوحة المصدر، والتي تسمح التخصيص واسعة من المقاييس لحالة استخدام معينة. مايكل قاعات مور مايك هو مؤسس QuantStart وشاركت في صناعة التمويل الكمية على مدى السنوات الخمس الماضية، في المقام الأول كمطور ضليع في الرياضيات وبعد ذلك والاستشارات تاجر ضليع في الرياضيات لصناديق التحوط. Quantocracy هي واحدة من المواقع الرائدة مجمع صلة ضليع في الرياضيات.





No comments:

Post a Comment