
+
एल्गोरिथम ट्रेडिंग रणनीतियों के सफल backtesting, भाग 1 30 जून 2014 05:00 3 टिप्पणियाँ दृश्य: 1498 यह लेख शुरुआती गाइड और रणनीति पहचान के साथ शुरू कर दिया है, जो मात्रात्मक व्यापार पर श्रृंखला जारी है। बीमार इस नस में जारी रखने और रणनीति backtesting के विषय पर विस्तार प्रदान इसलिए इन रह गया है, और अधिक शामिल लेख के दोनों बहुत लोकप्रिय हो गया है। एल्गोरिथम backtesting मनोविज्ञान, गणित, सांख्यिकी, सॉफ्टवेयर विकास और बाजार / विनिमय microstructure सहित कई क्षेत्रों के ज्ञान की आवश्यकता है। मैं आईएम के दो या तीन छोटे टुकड़ों में उन्हें विभाजित करने के लिए जा रहा है, ताकि एक लेख में उन विषयों की सभी को कवर करने की उम्मीद नहीं कर सके। हम इस खंड में चर्चा करेंगे क्या? बीमार backtesting परिभाषित करने से शुरू करते हैं और फिर मैं इसे बाहर किया जाता है कैसे की मूल बातें वर्णन करेंगे। तो मुझे लगता है कि हम मात्रात्मक व्यापार करने के लिए शुरुआती गाइड में पर छुआ पूर्वाग्रहों पर स्पष्ट होगा। अगले मैं विभिन्न उपलब्ध backtesting सॉफ्टवेयर विकल्पों में से एक तुलना पेश करेंगे। बाद में लेख में हम अक्सर मुश्किल से उल्लेख किया है या नजरअंदाज कर दिया जाता है कि रणनीति कार्यान्वयन के विवरण पर दिखेगा। हम भी एक ट्रेडिंग विदेशी मुद्रा के idiosyncrasies शामिल करके backtesting प्रक्रिया को और अधिक यथार्थवादी बनाने के लिए कैसे विचार करेगी। तो फिर हम लेनदेन की लागत और कैसे सही ढंग से एक backtest सेटिंग में उन्हें मॉडल पर चर्चा करेंगे। हम अपने backtests के प्रदर्शन पर चर्चा के साथ खत्म होती है और अंत में एक मतलब लौटना जोड़े व्यापार के रूप में जाना एक आम क्वांट रणनीति का एक उदाहरण प्रदान करेगा। Backtesting है क्या चर्चा और यही कारण है कि हम अपने एल्गोरिथम ट्रेडिंग में इसे बाहर ले जाना चाहिए द्वारा शुरू कर देता है। Backtesting क्या है? हम और अधिक मज़बूती से प्रचुर मात्रा में डेटा की उपलब्धता का एक परिणाम के रूप में, पिछले प्रदर्शन से भविष्य के प्रदर्शन के बारे में अपेक्षाओं प्रदान कर सकते हैं, क्योंकि एल्गोरिथम ट्रेडिंग निवेश वर्गों के अन्य प्रकार से अलग खड़ा है। इस बाहर किया जाता है, जिसके द्वारा प्रक्रिया backtesting के रूप में जाना जाता है। सरल शब्दों में, backtesting व्यापार संकेतों का एक सेट करने के लिए होता है, जो ऐतिहासिक वित्तीय डेटा की एक धारा, करने के लिए अपने विशेष रणनीति एल्गोरिथ्म उजागर द्वारा किया जाता है। (हम दो संकेतों की एक राउंड ट्रिप होने के लिए यहाँ मतलब होगा जो) प्रत्येक व्यापार एक संबद्ध लाभ या नुकसान होगा। अपनी रणनीति backtest की अवधि से अधिक इस लाभ / हानि का संचय (भी पी एल या pnl के रूप में जाना जाता है) कुल लाभ और हानि को बढ़ावा मिलेगा। शैतान details8221 में हमेशा होता है ;!; पाठ्यक्रम की 8220 है कि हालांकि, इस विचार का सार है एक एल्गोरिथम रणनीति backtesting के लिए प्रमुख कारण क्या हैं? छानने का काम आप रणनीति पहचान पर लेख से याद करते हैं। प्रारंभिक अनुसंधान के स्तर पर हमारे लक्ष्य के लिए एक रणनीति पाइप लाइन की स्थापना की और उसके बाद कुछ मानदंडों को पूरा नहीं किया था कि किसी भी रणनीति बाहर फिल्टर करने के लिए किया गया था। हम अपने प्रदर्शन की जरूरत को पूरा नहीं करते रणनीति है कि समाप्त कर सकते हैं के रूप में backtesting, एक और निस्पंदन तंत्र के साथ हमें प्रदान करता है। मॉडलिंग backtesting करने के लिए हमें की अनुमति देता है (सुरक्षित!) इस तरह के लेन-देन की लागत, आदेश मार्ग, विलंबता, तरलता या अन्य बाजार microstructure मुद्दों के रूप में कुछ बाजार घटना के नए मॉडल का परीक्षण करें। रणनीति अनुकूलन पूर्वाग्रहों से भरा है हालांकि अधिक उपयोग, backtesting हमें उस रणनीति के साथ जुड़े मापदंडों की मात्रा या मूल्यों को संशोधित करने और अपने प्रदर्शन में recalculating द्वारा एक रणनीति के प्रदर्शन को बढ़ाने के लिए अनुमति देता है। सत्यापन हमारी रणनीति अक्सर हमारी रणनीति पाइप लाइन के माध्यम से, बाह्य स्रोत रहे हैं। एक रणनीति backtesting इसे गलत तरीके से लागू नहीं किया गया है। हम शायद ही कभी बाहरी रणनीतियों से उत्पन्न संकेतों के लिए उपयोग किया जाएगा, हालांकि, हम अक्सर इस तरह के शार्प अनुपात और नुक्सान विशेषताओं के रूप में प्रदर्शन मेट्रिक्स के लिए उपयोग होगा। इस प्रकार हम अपने स्वयं के कार्यान्वयन के साथ उनकी तुलना कर सकते हैं। Backtesting एल्गोरिथम ट्रेडिंग के लिए लाभ का एक मेजबान प्रदान करता है। हालांकि, यह सीधी एक रणनीति backtest करने के लिए हमेशा संभव नहीं है। सामान्य तौर पर, रणनीति बढ़ जाती है की आवृत्ति के रूप में, यह सही ढंग से बाजार और आदान-प्रदान के microstructure प्रभाव मॉडल करने के लिए कठिन हो जाता है। यह इस प्रकार कम विश्वसनीय backtests और एक चुने रणनीति का एक पेचीदा मामला मूल्यांकन करने के लिए ले जाता है। यह निष्पादन प्रणाली के अति उच्च आवृत्ति एल्गोरिदम के साथ के रूप में, रणनीति प्रदर्शन के लिए महत्वपूर्ण है, जहां एक विशेष समस्या है। दुर्भाग्य से, backtesting सभी प्रकार के पूर्वाग्रहों से भरा है। हम पिछले लेख में इनमें से कुछ मुद्दों पर छुआ है, लेकिन अब हम गहराई में उन पर चर्चा करेंगे। रणनीति Backtests पीडि़त पूर्वाग्रहों एक backtested रणनीति के प्रदर्शन को प्रभावित कर सकते हैं कि कई पूर्वाग्रहों रहे हैं। दुर्भाग्य से, इन पूर्वाग्रहों प्रदर्शन फुलाना के बजाय इसे से इनकार करने की प्रवृत्ति है। इस प्रकार आप हमेशा रणनीति के वास्तविक प्रदर्शन पर एक आर्दश ऊपरी बाध्य होने के लिए एक backtest पर विचार करना चाहिए। ऐसा लगता है कि सबसे अच्छा के रूप में हम क्रम में हमारे एल्गोरिथम रणनीतियों के बारे में सूचित निर्णय करने में कर सकते हैं उन्हें कम से कम करने के लिए हमारा काम है इसलिए एल्गोरिथम ट्रेडिंग से पूर्वाग्रहों को समाप्त करने के लिए लगभग असंभव है। मैं चर्चा करना चाहते हैं कि चार प्रमुख पूर्वाग्रहों कर रहे हैं: अधिक उपयोग पूर्वाग्रह, देखो आगे पूर्वाग्रह, उत्तरजीविता पूर्वाग्रह और मनोवैज्ञानिक सहिष्णुता पूर्वाग्रह। अधिक उपयोग पूर्वाग्रह यह शायद सभी backtest पूर्वाग्रहों के सबसे घातक है। यह समायोजन या backtest डेटा सेट पर रणनीति प्रदर्शन बहुत ही आकर्षक है, जब तक अतिरिक्त व्यापार मानकों को शुरू करना शामिल है। हालांकि, एक बार रणनीति के प्रदर्शन को स्पष्ट रूप से अलग हो सकता है रहते हैं। इस पूर्वाग्रह के लिए एक और नाम 8220 है, वक्र fitting8221; या 8220; डेटा-स्नूपिंग bias8221 ;. अधिक उपयोग पूर्वाग्रह एल्गोरिथम रणनीतियों अक्सर कई मापदंडों को शामिल के रूप में समाप्त करने के लिए कठिन है। 8220; Parameters8221; इस उदाहरण में (यानी चल औसत समरेखण पैरामीटर) या अस्थिरता माप आवृत्ति अवधि के औसत के साथ, प्रवेश / निकास मापदंड होना अवधि वापस लग सकता है। अधिक उपयोग पूर्वाग्रह एक न्यूनतम करने के लिए मानकों की संख्या रखने और प्रशिक्षण सेट में डेटा बिंदुओं की मात्रा में वृद्धि से कम से कम किया जा सकता है। वास्तव में, एक भी अपने मौजूदा रणनीति के लिए प्रासंगिक नहीं हो सकता है, इस प्रकार पुराने प्रशिक्षण अंक (जैसे एक विनियामक वातावरण के रूप में) एक पूर्व शासन के अधीन हो सकता है के रूप में बाद के सावधान रहना होगा और चाहिए। इस पूर्वाग्रह को कम करने में मदद करने के लिए एक विधि एक संवेदनशीलता विश्लेषण करने के लिए है। Surface8221; इस संवर्द्धित मानकों को अलग-अलग और एक 8220 की साजिश रचने का मतलब है, प्रदर्शन का। अन्य सभी कारकों पर विचार के साथ पैरामीटर विकल्पों के लिए ध्वनि, मौलिक तर्क है, एक चिकनी पैरामीटर सतह तक ले जाना चाहिए। आप एक बहुत ही उछल प्रदर्शन सतह है, यह अक्सर एक पैरामीटर एक घटना दर्शाती है कि नहीं इसका मतलब है और परीक्षण के आंकड़ों की एक मूर्ति है। वहाँ बहु आयामी अनुकूलन एल्गोरिदम पर एक विशाल साहित्य है और यह अनुसंधान का एक अत्यधिक सक्रिय क्षेत्र है। आप एक शानदार backtest के साथ एक रणनीति लगता है जब मैं इसे यहाँ पर ध्यान केन्द्रित करना है, लेकिन अपने मन की पीठ में रखने के अभ्यस्त! देखो आगे पूर्वाग्रह भविष्य में डेटा गलती से डेटा है कि वास्तव में उपलब्ध नहीं किया गया है, जहां सिमुलेशन में एक बिंदु पर शामिल किया गया है, जब देखो आगे पूर्वाग्रह एक backtesting प्रणाली में पेश किया जाता है। हम कालक्रम के अनुसार backtest चल रहा है और कर रहे हैं, तो हम समय बिंदु एन पहुँचने। डेटा किसी भी बिंदु एन + K के लिए शामिल किया गया है, तो फिर देखो आगे पूर्वाग्रह होता है। जहां कश्मीर और जी.टी.; 0। देखो आगे पूर्वाग्रह त्रुटियों अविश्वसनीय रूप से सूक्ष्म हो सकता है। यहां पेश किया जा सकता है कि कैसे देखो आगे पूर्वाग्रह के तीन उदाहरण हैं: तकनीकी कीड़े सारणियों / कोड में वैक्टर अक्सर iterators या सूचकांक चर है। इन सूचकांकों का गलत ऑफसेट गैर शून्य कश्मीर के लिए एन + K में डेटा को शामिल करके एक नज़र आगे पूर्वाग्रह पैदा कर सकते हैं। इस तरह के दो समय की श्रृंखला के बीच रेखीय प्रतिगमन साथ के रूप में इष्टतम रणनीति मापदंडों की गणना करते समय पैरामीटर गणना देखो आगे पूर्वाग्रह के एक अन्य आम उदाहरण होता है। (भविष्य डेटा सहित) पूरे डेटा सेट अनुकूलन के प्रयोजनों के लिए एक व्यापार रणनीति के लिए प्रतिगमन गुणांक की गणना करने के लिए प्रयोग किया जाता है, और इस तरह पूर्वव्यापी प्रभाव से लागू किया जाता है, तो भविष्य में डेटा शामिल किया और एक नजर-आगे पूर्वाग्रह मौजूद किया जा रहा है। Maxima / Minima कुछ व्यापारिक रणनीतियों ऐसे OHLC डेटा में उच्च या कम कीमतों को शामिल करने के रूप में किसी भी समय अवधि में चरम मानों, का इस्तेमाल करते हैं। इन अधिकतम / न्यूनतम मूल्यों केवल एक समय अवधि के अंत में गणना की जा सकती, क्योंकि इन मूल्यों को वर्तमान अवधि - during - इस्तेमाल कर रहे हैं हालांकि, अगर एक नजर-आगे पूर्वाग्रह शुरू की है। यह उनमें से किसी ट्रेडिंग रणनीति बनाने के उपयोग में कम से कम एक अवधि के द्वारा उच्च / कम मूल्यों अंतराल के लिए हमेशा के लिए आवश्यक है। सर्वाइवरशिप के पक्ष में उत्तरजीविता पूर्वाग्रह एक विशेष रूप से खतरनाक घटना है और निश्चित रणनीति प्रकार के लिए काफी फुलाया प्रदर्शन करने के लिए नेतृत्व कर सकते हैं। Survived8221, यह रणनीतियों समय में एक खास बिंदु पर चुना गया है हो सकता है कि पूर्व की संपत्ति का पूरा ब्रह्मांड में शामिल हैं, लेकिन केवल 8220 है कि उन पर विचार नहीं करते कि डेटासेट पर परीक्षण कर रहे हैं जब होता है; वर्तमान समय के लिए। एक उदाहरण के रूप में, पहले और 2001 के बाजार में आई गिरावट के बाद शेयरों की एक यादृच्छिक चयन पर एक रणनीति के परीक्षण पर विचार करें। दूसरों को बचाए और यहां तक कि अपनी आमदनी के रहने में कामयाब रहे, जबकि कुछ प्रौद्योगिकी के शेयरों, दिवालिया हो गया। हम केवल बाजार गिरावट की अवधि के माध्यम से इसे बनाया है, जो शेयरों के लिए इस रणनीति प्रतिबंधित था, हम वे पहले से ही हमारे लिए उनकी सफलता का प्रदर्शन किया है क्योंकि एक उत्तरजीविता पूर्वाग्रह शुरू होगा। भविष्य की जानकारी पिछले विश्लेषण में शामिल किया जा रहा है के रूप में वास्तव में, यह, देखो आगे पूर्वाग्रह का एक और विशिष्ट मामला है। अपनी रणनीति backtests में उत्तरजीविता पूर्वाग्रह को कम करने के लिए दो मुख्य तरीके हैं: इक्विटी डेटा के मामले में उत्तरजीविता पूर्वाग्रह मुक्त डेटासेट वे सस्ते नहीं हैं और केवल संस्थागत फर्मों द्वारा उपयोग किया जा करने के लिए करते हैं, हालांकि यह संस्थाओं delisted शामिल है कि डेटासेट खरीद करने के लिए संभव है। विशेष रूप से, याहू वित्त डेटा उत्तरजीविता पूर्वाग्रह से मुक्त नहीं है, और यह आमतौर पर कई खुदरा algo व्यापारियों द्वारा प्रयोग किया जाता है। एक भी ऐसी कुछ वस्तुओं (और उनके भविष्य डेरिवेटिव) के रूप में उत्तरजीविता पूर्वाग्रह से ग्रस्त नहीं हैं कि परिसंपत्ति वर्गों, पर व्यापार कर सकते हैं। एक और अधिक हाल डेटा सेट चुना स्टॉक चयन 8220 को भारित है कि संभावना mitigates उपयोग, इक्विटी के मामले में अधिक हाल के आंकड़ों का प्रयोग करें, कम समय अवधि में कुल मिलाकर शेयर हटने की कम संभावना है survivors8221 ;, बस के रूप में। एक भी आगे वर्तमान बिंदु से डेटा इकट्ठा करके एक व्यक्तिगत उत्तरजीविता-पूर्वाग्रह मुक्त डाटासेट का निर्माण शुरू कर सकते हैं। 3-4 साल के बाद, आप के साथ जो डेटा आगे की रणनीति backtest करने के लिए इक्विटी का एक ठोस उत्तरजीविता-पूर्वाग्रह मुक्त सेट होगा। अब हम अपने व्यापार के प्रदर्शन को प्रभावित कर सकता है कि कुछ मनोवैज्ञानिक घटना पर विचार करेगी। अब हम अपने व्यापार के प्रदर्शन को प्रभावित कर सकता है कि कुछ मनोवैज्ञानिक घटना पर विचार करेगी। मनोवैज्ञानिक सहिष्णुता पूर्वाग्रह इस विशेष घटना अक्सर मात्रात्मक व्यापार के संदर्भ में चर्चा नहीं है। हालांकि, यह अधिक विवेकाधीन व्यापार के तरीकों के संबंध में बड़े पैमाने पर चर्चा की है। यह विभिन्न नामों है, लेकिन Ive यह 8220 बुलाने का फैसला किया, मनोवैज्ञानिक सहिष्णुता bias8221; यह समस्या का सार कब्जा है। 5 साल या उससे अधिक की अवधि में backtests निर्माण करते हैं, यह एक ऊपर की ओर रुझान वाली इक्विटी वक्र को देखने चक्रवृद्धि वार्षिक वापसी, शार्प अनुपात की गणना और यहां तक कि विशेषताओं drawdown और परिणामों से संतुष्ट होना आसान है। एक उदाहरण के रूप में, रणनीति 25% की एक अधिकतम रिश्तेदार गिरावट और 4 महीने की एक अधिकतम गिरावट की अवधि के अधिकारी हो सकता है। यह एक गति रणनीति के लिए असामान्य नहीं होगा। ऐसा लगता है कि कुल मिलाकर तस्वीर गुलाबी है क्योंकि घाटे का ऐसे समय को सहन करने के लिए आसान है कि अपने आप को समझाने के लिए सीधा है। हालाँकि, व्यवहार में, यह अभी तक कठिन है! 25% या उससे अधिक के ऐतिहासिक drawdowns backtests में होते हैं, तो सभी संभावना में आप रहते हैं व्यापार में इसी तरह गिरावट की अवधि देखेंगे। गिरावट के इन अवधियों मानसिक रुप से सहना मुश्किल हो जाता है। मैं एक विस्तारित गिरावट एक संस्थागत सेटिंग में, की तरह हो सकता है, उन्हें पहले हाथ देखा है, और यह backtests ऐसे समय घटित होगा सुझाव है, भले ही सुखद नहीं है। कारण है कि मैं यह एक 8220 करार दिया है; bias8221; अन्यथा सफल होगा, जो अक्सर एक रणनीति बढ़ाया गिरावट के समय के दौरान व्यापार से बंद कर दिया जाता है और इस प्रकार एक backtest की तुलना में महत्वपूर्ण खराब प्रदर्शन करने के लिए नेतृत्व करेंगे। इस प्रकार, रणनीति प्रकृति में एल्गोरिथम है, भले ही मनोवैज्ञानिक कारक अभी भी मुनाफे पर भारी प्रभाव पड़ सकता है। takeaway आप backtests में एक निश्चित प्रतिशत और अवधि के drawdowns देखते हैं, तो आप उन्हें चालू व्यापार के वातावरण में होने की उम्मीद करनी चाहिए कि यह सुनिश्चित करने के लिए है, और एक बार फिर लाभप्रदता तक पहुंचने के लिए दृढ़ रहना करने की आवश्यकता होगी। Backtesting के लिए सॉफ्टवेयर संकुल रणनीति backtesting के लिए सॉफ्टवेयर परिदृश्य विशाल है। समाधान लगभग सब कुछ खरोंच (या प्राप्त उपयुक्त प्लगइन्स) से लिखा होना चाहिए, जहां इस तरह सी ++, अजगर और आर के रूप में प्रोग्रामिंग भाषाओं के माध्यम से पूरी तरह से एकीकृत संस्थागत ग्रेड अत्याधुनिक सॉफ्टवेयर से लेकर। क्वांट व्यापारियों के रूप में हम 8220 के लिए सक्षम होने के संतुलन में रुचि रखते हैं, own8221; हमारे व्यापार प्रौद्योगिकी हमारे विकास पद्धति की गति और विश्वसनीयता बनाम हो चुकी है। यहाँ सॉफ्टवेयर चुनाव के लिए महत्वपूर्ण विचार कर रहे हैं: प्रोग्रामिंग कौशल पर्यावरण के चुनाव को एक बड़े हिस्से में सॉफ्टवेयर प्रोग्राम के लिए अपनी क्षमता के नीचे आ जाएगा। मैं कुल ढेर के नियंत्रण में किया जा रहा है सॉफ्टवेयर विक्रेता के लिए जितना संभव हो उतना आउटसोर्सिंग से अपने दीर्घकालिक पीएल पर ज्यादा असर नहीं होगा कि बहस होगी। यह आपको अपनी 8220 पर अधिक नियंत्रण था, तो अन्यथा आसानी से निवारण किया जाना होता है, जो बाहरी कीड़े या आप विक्रेता सॉफ्टवेयर में ठीक करने में असमर्थ हैं कि idiosyncrasies के होने के नकारात्मक पक्ष जोखिम की वजह से है, तकनीक stack8221 ;. आप यह भी उत्पादकता, पुस्तकालय उपलब्धता और निष्पादन की गति के बीच सही संतुलन बनाता है कि एक ऐसा माहौल चाहते हैं। मैं नीचे अपने स्वयं के व्यक्तिगत सिफारिश कर। ऐसे TradeStation के रूप में निष्पादन क्षमता / ब्रोकर इंटरेक्शन कुछ backtesting सॉफ्टवेयर, एक ब्रोकरेज के साथ सीधे संबंध हैं। मैं लेनदेन लागत अक्सर एक उच्च शार्प अनुपात होने का एक बड़ा घटक हैं को कम करने के रूप में इस दृष्टिकोण के एक प्रशंसक नहीं हूं। यदि आप एक विशेष दलाल में बंधे हैं (और TradeStation 8220; forces8221, तुम यह करने के लिए), तो आप अगर ज़रूरत पड़ी एक कठिन समय नए सॉफ्टवेयर में संक्रमण (या एक नया दलाल) होगा। इंटरएक्टिव दलाल यद्यपि एक थोड़ा सुस्त इंटरफेस के साथ, मजबूत है जो एक एपीआई प्रदान करते हैं। वे लगभग किसी भी गणितीय आपरेशन कल्पना के लिए शानदार पुस्तकालयों प्रदान के रूप में algo रणनीति बनाने, लेकिन जहां आवश्यक भी व्यापक अनुकूलन की अनुमति जब कस्टमाइज़ेशन MATLAB या अजगर की तरह एक वातावरण आप लचीलेपन का एक बहुत कुछ देता है। रणनीति जटिलता कुछ सॉफ्टवेयर सिर्फ crunching भारी संख्या या गणितीय जटिलता के लिए बाहर काट is not। एक्सेल सॉफ्टवेयर के ऐसे ही एक टुकड़ा है। यह आसान रणनीतियों के लिए अच्छा है, यह वास्तव में गति से कई संपत्ति या अधिक जटिल एल्गोरिदम, साथ सामना नहीं कर सकते। पूर्वाग्रह Minimisation सॉफ्टवेयर की एक विशेष टुकड़ा है या डेटा व्यापार पूर्वाग्रहों को अधिक उधार? आप आप पूर्वाग्रहों को जन्म दे सकता है, जो कीड़े परिचय न कि, सभी कार्यक्षमता खुद बनाना चाहते हैं कि सुनिश्चित करने की जरूरत। विकास एक की गति एक backtest इंजन को लागू महीने और महीने के खर्च करने की जरूरत नहीं करनी चाहिए। प्रोटोटाइप केवल कुछ ही हफ्तों में लेना चाहिए। अपने सॉफ्टवेयर सिर्फ निष्पादन की गति के लिए कुछ अतिरिक्त प्रतिशत अंक हड़पने के लिए, किसी भी काफी हद तक अपनी प्रगति में बाधा उत्पन्न नहीं है कि सुनिश्चित करें। Room8221 में हाथी, सी ++ 8220 है; यहाँ! निष्पादन की गति अपनी रणनीति (एचएफटी / UHFT के रूप में) निष्पादन समयबद्धता पर पूरी तरह से निर्भर है, तो इस तरह के सी या सी के रूप में तो एक भाषा ++ आवश्यक हो जाएगा। हालांकि, अगर आप इस लेख के दायरे से बाहर है, जो इन डोमेन के लिए लिनक्स कर्नेल अनुकूलन और FPGA उपयोग, पर verging हो जाएगा! पूरी तरह से स्वतंत्र और खुला स्रोत हैं साथ आप एल्गोरिथम ट्रेडिंग रणनीतियों कार्यक्रम कर सकते हैं कि सॉफ्टवेयर वातावरण की कई लागत। वास्तव में, कई हेज फंडों उनके पूरे algo व्यापार के ढेर के लिए खुला स्रोत सॉफ्टवेयर का इस्तेमाल करते हैं। इसके अलावा, एक्सेल और MATLAB दोनों अपेक्षाकृत सस्ते होते हैं और प्रत्येक के लिए स्वतंत्र विकल्प भी शामिल है। अब हम हमारे सॉफ्टवेयर के बुनियादी ढांचे का चयन करने की जरूरत है, जो साथ मानदंड सूचीबद्ध किया है कि, मैं और अधिक लोकप्रिय संकुल और कैसे कुछ के माध्यम से चलाना चाहते हैं, वे तुलना: नोट: मैं केवल सबसे खुदरा चिकित्सकों और करने के लिए उपलब्ध है कि सॉफ्टवेयर शामिल करने के लिए जा रहा हूँ सॉफ्टवेयर डेवलपर्स, इस साइट के पाठकों के रूप में है। अन्य सॉफ्टवेयर में इस तरह के और अधिक संस्थागत ग्रेड उपकरण के रूप में उपलब्ध है, जबकि मैं इन प्रभावी रूप से एक खुदरा में स्थापित करने में इस्तेमाल किया जा करने के लिए बहुत महंगी हैं लग रहा है और मैं व्यक्तिगत रूप से उन लोगों के साथ कोई अनुभव नहीं है। विवरण। WYSIWYG (आप-क्या देख-है-तुम-क्या मिल-) स्प्रेडशीट सॉफ्टवेयर। वित्तीय उद्योग में अत्यंत व्यापक। डाटा और कलन विधि कसकर मिलकर कर रहे हैं। निष्पादन। हाँ, एक्सेल सबसे ब्रोकरेज में बांधा जा सकता। कस्टमाइज़ेशन। VBA मैक्रो कार्यान्वयन छुपा की कीमत पर और अधिक उन्नत कार्यक्षमता अनुमति देते हैं। रणनीति जटिलता। परिसंपत्तियों के कई सैकड़ों के साथ कर रहे हैं रणनीति के रूप में और अधिक उन्नत सांख्यिकीय उपकरण को लागू करने के लिए कठिन हैं। पूर्वाग्रह Minimisation। देखो आगे पूर्वाग्रह सेल पर प्रकाश डाला कार्यक्षमता (कोई VBA संभालने) के माध्यम से पता लगाने के लिए आसान है। विकास की गति। त्वरित बुनियादी रणनीतियों को लागू करने के लिए। निष्पादन की गति। केवल कम आवृत्ति रणनीतियों के लिए उपयुक्त धीमी गति से निष्पादन की गति। लागत। सस्ता या मुफ्त (लाइसेंस के आधार पर)। वैकल्पिक। खुला कार्यालय विवरण। प्रोग्रामिंग वातावरण मूल रूप से कम्प्यूटेशनल गणित, भौतिक विज्ञान और इंजीनियरिंग के लिए बनाया गया है। बहुत अच्छी तरह से vectorised संचालन और संख्यात्मक रेखीय बीजगणित शामिल उन लोगों के लिए उपयुक्त है। क्वांट व्यापार के लिए plugins की एक विस्तृत सरणी प्रदान करता है। मात्रात्मक हेज फंडों में बड़े पैमाने पर उपयोग में। निष्पादन। कोई देशी निष्पादन क्षमता, MATLAB एक अलग निष्पादन प्रणाली की आवश्यकता है। कस्टमाइज़ेशन। कम्प्यूटेशनल गणित के लगभग सभी क्षेत्रों के लिए समुदाय plugins के विशाल सरणी। रणनीति जटिलता। कई उन्नत सांख्यिकीय तरीकों पहले से ही उपलब्ध है और अच्छी तरह से परीक्षण किया। पूर्वाग्रह Minimisation। कठिन व्यापक परीक्षण की आवश्यकता है, देखो आगे पूर्वाग्रह पता लगाने के लिए। विकास की गति। कम स्क्रिप्ट आसानी से परिष्कृत backtests बना सकते हैं। निष्पादन की गति। एक vectorised / parallelised एल्गोरिथ्म मान लिया जाये, MATLAB अत्यधिक अनुकूलित है। पारंपरिक दोहराया छोरों के लिए गरीब। लागत। विवरण। विकास की गति के लिए डिजाइन उच्च स्तर की भाषा। लगभग किसी भी कार्यक्रम संबंधी कार्य कल्पना के लिए पुस्तकालयों की व्यापक सरणी। हेज फंड और निवेश बैंक समुदाय में व्यापक स्वीकृति प्राप्त कर रहा। काफी नहीं है के रूप में तेजी से निष्पादन की गति के लिए सी / सी ++ के रूप में। निष्पादन। अजगर प्लगइन्स की ऐसी इंटरएक्टिव दलाल के रूप में बड़ा दलालों के लिए मौजूद हैं। इसलिए backtest और निष्पादन प्रणाली सभी एक ही 8220 का हिस्सा हो सकता है; तकनीक stack8221 ;. कस्टमाइज़ेशन। अजगर एक बहुत ही स्वस्थ विकास समुदाय है और एक परिपक्व भाषा है। NumPy / SciPy क्वांट व्यापार के लिए प्रासंगिक तेजी से वैज्ञानिक कंप्यूटिंग और सांख्यिकीय विश्लेषण उपकरण प्रदान करते हैं। रणनीति जटिलता: कई plugins मुख्य एल्गोरिदम के लिए मौजूद हैं, लेकिन काफी नहीं है के रूप में एक बड़ा क्वांट समुदाय के रूप में MATLAB के लिए मौजूद है। पूर्वाग्रह Minimisation। एक ही पूर्वाग्रह न्यूनीकरण समस्याओं के किसी भी उच्च स्तर की भाषा के लिए के रूप में मौजूद हैं। परीक्षण के बारे में बेहद सावधान रहने की जरूरत है। विकास की गति। परीक्षण क्षमताओं में बनाया में अजगर मुख्य लाभ मजबूत के साथ विकास की गति है। निष्पादन की गति। काफी नहीं है उपवास के रूप में सी ++, लेकिन वैज्ञानिक कंप्यूटिंग घटकों के रूप में अनुकूलित कर रहे हैं और अजगर कुछ plugins के साथ देशी सी कोड के लिए बात कर सकते हैं। लागत। मुक्त / खुला स्रोत वैकल्पिक। रूबी। Erlang। हास्केल विवरण। उन्नत सांख्यिकीय तरीके और समय श्रृंखला विश्लेषण के लिए डिजाइन पर्यावरण। विशिष्ट, सांख्यिकीय अर्थमितीय और देशी रेखांकन toolsets का विस्तृत सरणी। बड़े डेवलपर समुदाय। निष्पादन। आर विशेष इंटरएक्टिव दलाल में, कुछ दलालों के लिए plugins के पास। इस प्रकार एक एंड-टू-एंड सिस्टम आर कस्टमाइज़ेशन में पूरी तरह से लिखा जा सकता है। आर किसी भी पैकेज के साथ अनुकूलित किया जा सकता है, लेकिन इसकी ताकत सांख्यिकीय / अर्थमितीय डोमेन में झूठ बोलते हैं। रणनीति जटिलता। ज्यादातर उपयोगी उपलब्ध प्लगइन कारण अर्थमितीय, सांख्यिकीय या मशीन सीखने की रणनीतियों प्रदर्शन कर सकते हैं। पूर्वाग्रह Minimisation। ऐसे अजगर या सी ++ के रूप में किसी भी उच्च स्तर की भाषा के लिए पूर्वाग्रह संभावना के समान स्तर। इस प्रकार के परीक्षण के बाहर किया जाना चाहिए। विकास की गति। आर सांख्यिकीय तरीकों पर आधारित लेखन रणनीतियों के लिए तेजी से होता है। निष्पादन की गति। आर सी ++ की तुलना में धीमी है, लेकिन (MATLAB के साथ) के रूप में अपेक्षाकृत vectorised संचालन के लिए अनुकूलित बनी हुई है। लागत। मुक्त / खुला स्रोत वैकल्पिक। एसपीएसएस। Stata विवरण। निष्पादन की गति के लिए डिजाइन परिपक्व, उच्च स्तर की भाषा। मात्रात्मक वित्त और संख्यात्मक पुस्तकालयों की व्यापक सरणी। अक्सर डिबग करने के लिए कठिन है और अजगर या Matlab से लागू करने के लिए समय लेता है। Buy - और बेचने के साइड दोनों में प्रचलित। निष्पादन। ज्यादातर ब्रोकरेज एपीआई सी ++ और जावा में लिखा जाता है। इस प्रकार कई plugins मौजूद हैं। कस्टमाइज़ेशन। सी / सी ++ अंतर्निहित स्मृति तक सीधी पहुंच की अनुमति देता है, इसलिए अति उच्च आवृत्ति रणनीतियों को लागू किया जा सकता है। रणनीति जटिलता। सी ++ एसटीएल अनुकूलित एल्गोरिदम का विस्तृत सरणी प्रदान करता है। लगभग किसी भी विशेष गणितीय एल्गोरिथ्म वेब पर एक मुक्त, खुला स्रोत सी / सी ++ कार्यान्वयन के पास। पूर्वाग्रह Minimisation। देखो आगे पूर्वाग्रह खत्म करने के लिए मुश्किल हो सकता है, लेकिन अन्य उच्च स्तर की भाषा से कोई कठिन। अंतर्निहित स्मृति के साथ काम करते हैं तो अच्छा डीबगिंग उपकरण है, लेकिन एक सावधान रहना चाहिए। विकास की गति। सी ++ काफी वाचाल ही algorithmm के लिए अजगर या Matlab की तुलना में है। अधिक लाइनों के-कोड (एलओसी) अक्सर कीड़े की अधिक संभावना हो जाती है। निष्पादन की गति। सी / सी ++ बहुत तेजी से निष्पादन की गति है और अच्छी तरह से विशिष्ट कम्प्यूटेशनल आर्किटेक्चर के लिए अनुकूलित किया जा सकता। यह इसे उपयोग करने के लिए मुख्य कारण है। लागत। विभिन्न compilers: लिनक्स / जीसीसी मुक्त है, एमएस दृश्य स्टूडियो लाइसेंस भिन्न कर दिया है। वैकल्पिक। सी#। जावा। स्काला विभिन्न रणनीतियों विभिन्न सॉफ्टवेयर संकुल की आवश्यकता होगी। कम आवृत्ति दिशात्मक इक्विटी रणनीतियों की वजह से 8220 तक, TradeStation में लागू करने के लिए आसान कर रहे हैं, जबकि एचएफटी और UHFT रणनीतियों, (वे अक्सर GPUs और FPGAs पर बाहर किया जाता है इन दिनों) C / C ++ में लिखा जाएगा; one8221 में सभी; सॉफ्टवेयर / दलाली की प्रकृति। यह मेरी जरूरत है और रणनीतियों के लिए विकास, परीक्षण की क्षमता है और निष्पादन की गति की गति अनुकूलन के सही डिग्री प्रदान करता है के रूप में मेरी निजी पसंद पायथन के लिए है। मैं तेजी से कुछ भी जरूरत है, मैं 8220 से कर सकते हैं; in8221 ड्रॉप; सी ++ सीधे अपने अजगर कार्यक्रमों से करने के लिए। कई क्वांट व्यापारियों द्वारा इष्ट एक विधि एक चलने का ढंग सी ++ करने के लिए धीमी गति से निष्पादन वर्गों में परिवर्तित तो अजगर में अपनी रणनीति प्रोटोटाइप और के लिए है। आखिरकार पूरे algo सी में लिखा है ++ और 8220 हो सकता है; trade8221 करने के लिए अकेला छोड़ दिया ;! Backtesting पर अगले कुछ लेख में हम व्यापार के आदान-प्रदान के प्रभाव को शामिल करने के लिए कैसे, साथ ही एक एल्गोरिथम ट्रेडिंग backtesting प्रणाली के कार्यान्वयन के आसपास के कुछ विशेष मुद्दों पर एक नज़र रखना होगा। हम रणनीति प्रदर्शन माप पर चर्चा की और अंत में एक उदाहरण रणनीति के साथ समाप्त होगा। QuantStart से माइकल हॉल-मूर द्वारा