5.2 मात्रात्मक ट्रेडिंग बैकटेस्टिंग कैसे करें

लेखक:अच्छाई, बनाया गयाः 2019-05-08 13:08:52, अद्यतन किया गयाः

सारांश

बैकटेस्टिंग के महत्व और महत्व में कोई संदेह नहीं है। मात्रात्मक बैकटेस्टिंग करते समय, रणनीति को ऐतिहासिक वातावरण में यथासंभव वास्तविक और करीब रखा जाना चाहिए। यदि ऐतिहासिक वातावरण में कुछ विवरणों को नजरअंदाज कर दिया जाता है, तो संपूर्ण मात्रात्मक बैकटेस्टिंग अमान्य हो सकती है। यह लेख उचित मात्रात्मक ट्रेडिंग बैकटेस्टिंग करने का तरीका बताएगा।

बैकटेस्टिंग डेटा प्लेबैक के बराबर है। ऐतिहासिक के-लाइन डेटा को वापस चलाकर और वास्तविक बाजार के व्यापार नियमों, जैसे कि शार्प अनुपात, अधिकतम रिट्रेसमेंट दर, वार्षिक रिटर्न दर और पूंजी वक्र को निष्पादित करके। वर्तमान में, कई सॉफ़्टवेयर हैं जो इन सभी को कर सकते हैं, जैसे कि मेटाट्रेडर, मल्टीचार्ट्स और आईबी ट्रेडर वर्कस्टेशन, जो सभी बहुत व्यापक हैं, पर वीएनपीवाई नामक एक ओपन-सोर्स भी है।github.com, जो लचीले ढंग से अनुकूलित किया जा सकता है।

एफएमजेड क्वांट एक वाणिज्यिक मात्रात्मक ट्रेडिंग सॉफ्टवेयर के रूप में, उच्च प्रदर्शन बैकटेस्ट इंजन के साथ आता है, जो गणना को तेजी से मात्रात्मक बनाने के लिए फोर-लूप (पोलिंग) बैकटेस्ट फ्रेम का उपयोग करता है। और एकीकृत बैकटेस्टिंग और वास्तविक समय कोड, बैकटेस्टिंग आसान, लेकिन वास्तविक बाजार मुश्किल दुविधा को हल करता है।

एफएमजेड क्वांट बैकटेस्ट इंटरफेस परिचय

  • चरण 1

उदाहरण के तौर पर एफएमजेड क्वांट थर्मोस्टैट समय की रणनीति लेते हुए, आइए एफएमजेड क्वांट की आधिकारिक वेबसाइट खोलें (www.fmz.com) डैशबोर्ड, रणनीति पर क्लिक करें, एक रणनीति का चयन करें, बैकटेस्ट पर क्लिक करें, और निम्नलिखित पृष्ठ पर जाएंः

img img

बैकटेस्ट कॉन्फ़िगरेशन इंटरफ़ेस में, आप इसे अपनी वास्तविक आवश्यकताओं के अनुसार अनुकूलित कर सकते हैं। जैसेः सेट बैकटेस्ट अवधि, के लाइन चक्र, डेटा प्रकार (सिम्युलेशन स्तर के डेटा या वास्तविक बाजार स्तर के डेटा। इसके विपरीत, सिमुलेशन स्तर के डेटा बैकटेस्टिंग गति तेज है, वास्तविक बाजार स्तर के डेटा बैकटेस्टिंग अधिक सटीक है) । इसके अलावा, आप बैकटेस्ट और खाते के प्रारंभिक धन के लिए कमीशन शुल्क भी सेट कर सकते हैं।

  • चरण 2

mylanguage core ट्रेडिंग लाइब्रेरी पर क्लिक करें (क्योंकि यह रणनीति M भाषा द्वारा लिखी गई है, यदि आप किसी अन्य प्रोग्रामिंग भाषा का उपयोग करते हैं, तो यह विकल्प दिखाई नहीं दे सकता है) सबसे पहले, ट्रेडिंग लेबल सेट करें। FMZ Quant M भाषा में दो प्रकार के बैकटेस्ट निष्पादन विधियां हैं, जो हैंः समापन मूल्य मॉडल और नवीनतम मूल्य मॉडल। समापन मूल्य मॉडल वर्तमान K लाइन पूरा होने के बाद मॉडल के निष्पादन को संदर्भित करता है, और व्यापार अगली K लाइन की शुरुआत में निष्पादित होता है; नवीनतम मूल्य मॉडल प्रत्येक मूल्य परिवर्तन के लिए एक मॉडल के निष्पादन को संदर्भित करता है, और जब ट्रेडिंग सिग्नल स्थापित होता है, तो यह तुरंत व्यापार करेगा। जैसा कि नीचे दिखाया गया हैः

img img

डिफ़ॉल्ट ओपन लॉट आकार बैकटेस्टिंग के दौरान खोलने और बंद करने की स्थिति की राशि को संदर्भित करता है. एक बार अधिकतम व्यापार राशि अधिकतम खोलने की स्थिति है जो एक ही लेनदेन द्वारा बैकटेस्ट इंजन को भेजी जाती है.

वास्तविक व्यापार मूल्य और नियोजित व्यापार मूल्य के बीच हमेशा विचलन होगा। यह ऑफसेट आम तौर पर उस दिशा में आगे बढ़ रहा है जो व्यापारी के लिए अनुकूल नहीं है, जिसके परिणामस्वरूप व्यापार में अतिरिक्त नुकसान होता है। इसलिए, वास्तविक व्यापार वातावरण का अनुकरण करने के लिए फिसलन जोड़ना आवश्यक है।

  • चरण 3

फ्यूचर्स कॉन्ट्रैक्ट को उस प्रकार के कॉन्ट्रैक्ट के साथ भरें जिसे आप बैकटेस्ट करना चाहते हैं, क्रिप्टोकरेंसी के लिए, हमें केवल k-लाइन की अवधि निर्दिष्ट करने की आवश्यकता है जिसे हम बैकटेस्ट करना चाहते हैं, इस मामले में, बस साप्ताहिक k लाइन का उपयोग करें, इसलिए, this_week डालें।

img

वास्तविक बाजार सेटिंग्स विकल्प मुख्य रूप से वास्तविक बाजार व्यापार के लिए उपयोग किया जाता है, बैकटेस्टिंग वातावरण में, हम बस इसे बनाए रखते हैं डिफ़ॉल्ट सेटिंग ठीक होगा। यदि स्वचालित वसूली प्रगति सही चिह्नित है, तो जब रोबोट वास्तविक बाजार में रुकता है, तो रोबोट को पुनरारंभ करने से स्वचालित रूप से संकेत की पुनः गणना किए बिना पिछले संकेत की स्थिति को बहाल कर देगा। ऑर्डर पुनः प्रयासों की संख्या डिफ़ॉल्ट रूप से 20 पर सेट है। जब ऑर्डर विफल हो जाता है, तो यह 20 बार तक फिर से भेजने की कोशिश करेगा। नेटवर्क पोलिंग अंतराल (मिलिसकंड) वह जगह है जहां रोबोट हर दूसरी बार रणनीति कोड निष्पादित करता है।

img

  • चरण 4

स्पॉट ट्रेडिंग विकल्प मुख्य रूप से क्रिप्टोक्यूरेंसी ट्रेडिंग के लिए है, जब बैकटेस्टिंग, इसे डिफ़ॉल्ट सेटिंग्स में रखें ठीक होगा। यदि आप चाहते हैं, तो आप इन सेटिंग्स में सभी मापदंडों को निर्दिष्ट कर सकते हैं। इसके अलावा, कुछ क्रिप्टोक्यूरेंसी एक्सचेंजों के लिए, आप लीवरेज आकार और अन्य संबंधित सेटिंग्स भी सेट कर सकते हैं।

img

रणनीति बैकटेस्ट

बैकटेस्टिंग से पहले, अपनी ट्रेडिंग रणनीति निर्धारित करें। यहाँ हम थर्मोस्टेट टाइमिंग रणनीति को उदाहरण के रूप में लेते हैं। यह रणनीति बाजार की स्थिति के अनुसार ट्रेंड बाजार में एक ट्रेंड रणनीति अपनाएगी, और अस्थिर बाजार में एक दोलन रणनीति अपनाएगी। स्रोत कोड नीचे दिखाया गया है (एफएमजेड क्वांट वेबसाइट के रणनीति वर्ग पृष्ठ से भी डाउनलोड किया जा सकता है):

// Calculate CMI indicator to distinguish between Oscillating and trend market
CMI:=ABS(C-REF(C,29))/(HHV(H,30)-LLV(L,30))*100;

// Define key prices
KOD:=(H+L+C)/3;

// In the Oscillating market, the closing price is greater than the key price is suitable for selling market, otherwise it is for buying market
BE:=IFELSE(C>KOD,1,0);
SE:=IFELSE(C<=KOD,1,0);

// Define 10-day ATR indicator
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR10:=MA(TR,10);

// Define the highest and lowest price 3-day moving average
AVG3HI:=MA(H,3);
AVG3LO:=MA(L,3);

// Calculate the entry price of the Oscillating market
LEP:=IFELSE(C>KOD,O+ATR10*0.5,O+ATR10*0.75);
SEP:=IFELSE(C>KOD,O-ATR10*0.75,O-ATR10*0.5);
LEP1:=MAX(LEP,AVG3LO);
SEP1:=MIN(SEP,AVG3HI);

// Calculate the entry price of the trend market
UPBAND:=MA(C,50)+STD(C,50)*2;
DNBAND:=MA(C,50)-STD(C,50)*2;

// Calculate the quit price of the trend market
MA50:=MA(C,50);

// Oscillating strategy logic
CMI<20&&C>=LEP1,BK;
CMI<20&&C<=SEP1,SK;
CMI<20&&C>=AVG3HI,SP;
CMI<20&&C<=AVG3LO,BP;

// Trend strategy logic
CMI>=20&&C>=UPBAND,BK;
CMI>=20&&C<=DNBAND,SK;
CMI>=20&&C<=MA50,SP;
CMI>=20&&C>=MA50,BP;
AUTOFILTER;

सिमुलेशन बैकटेस्टिंग इंटरफ़ेस में, बैकटेस्टिंग सेटिंग्स को कॉन्फ़िगर करने के बाद, स्टार्ट बैकटेस्ट बटन पर क्लिक करें, और बैकटेस्टिंग परिणाम कुछ सेकंड के बाद तुरंत प्रदर्शित होंगे। बैकटेस्ट लॉग में, यह दिखाएगा कि बैकटेस्ट, लॉग और लेनदेन की कुल संख्या के लिए कितने सेकंड का उपयोग किया गया था। खाता जानकारी रणनीति बैकटेस्ट के अंतिम परिणामों को प्रिंट करती हैः औसत लाभ और हानि, स्थिति लाभ और हानि, मार्जिन, कमीशन शुल्क और अनुमानित रिटर्न।

img

स्थिति पट्टी ट्रेडिंग विविधता, पदों, पदों की कीमतों, नवीनतम मूल्य, पिछले ट्रेडिंग सिग्नल प्रकार, पदों की उच्चतम और निम्नतम कीमत, अद्यतनों की संख्या के साथ-साथ पूंजी और समय की जानकारी को रिकॉर्ड करती है। इसके अलावा, फ्लोटिंग लाभ और हानि लेबल में, खाते की विस्तृत फंड वक्र प्रदर्शित की जाती है, और आमतौर पर उपयोग किए जाने वाले प्रदर्शन संकेतक भी शामिल हैंः रिटर्न दर, वार्षिक रिटर्न दर, शार्प अनुपात, वार्षिक अस्थिरता, और अधिकतम रिट्रेसमेंट दर, जो मूल रूप से उपयोगकर्ताओं की विशाल बहुमत की जरूरतों को पूरा कर सकती है।

इनमे से सबसे महत्वपूर्ण प्रदर्शन सूचक है: शार्प रेशियो। यह व्यापक सूचकांक को लागू करते समय लाभ और जोखिमों पर विचार करता है, और यह एक फंड उत्पादों को मापने के लिए एक महत्वपूर्ण सूचकांक है। सामान्य तौर पर, यह है कि जब भी आप लाभ कमाते हैं, तो आप कितना जोखिम उठाते हैं, इसलिए शार्प रेशियो मूल्य जितना अधिक होगा, उतना ही बेहतर होगा।

वार्षिक अस्थिरता, सरल शब्दों में, एक आंकड़े को वार्षिक बनाने से यह मान लिया जाता है कि एक वर्ष के दौरान कम समय सीमा पर अवलोकन जारी रहेगा। यह फंड के जोखिम का एक उपाय है, लेकिन यह निश्चित रूप से पूरा जोखिम नहीं है। उदाहरण के लिए, रणनीति ए में अधिक अस्थिरता है, लेकिन यह ऊपर की ओर अस्थिरता रही है, लाभ अच्छा है; रणनीति बी में एक छोटी अस्थिरता है, लेकिन यह लगातार बढ़ रही है ((बस बिल्कुल नहीं बढ़ रही है) । क्या हम कह सकते हैं कि रणनीति बी रणनीति ए से बेहतर है? रणनीति ए जैसा कि नीचे दिखाया गया हैः

img

अंत में, लॉग जानकारी में, बैकटेस्टिंग के दौरान प्रत्येक ट्रेडिंग ब्रोकरेज स्थिति का विस्तृत रिकॉर्ड, जिसमें ट्रेडिंग का विशिष्ट समय, एक्सचेंज जानकारी, खुली और बंद स्थिति का प्रकार, बैकटेस्ट इंजन मैच ऑर्डर तंत्र, साथ ही लेनदेन की संख्या और प्रिंट आउट जानकारी शामिल है।

img

बैकटेस्टिंग के बाद

कई बार, और ज्यादातर मामलों में, बैकटेस्टिंग के परिणाम आपकी अपेक्षाओं से बहुत दूर होंगे। आखिरकार, एक दीर्घकालिक, स्थिर और लाभदायक रणनीति प्राप्त करना इतना आसान नहीं है, जिसके लिए बाजार को समझने की आपकी क्षमता की आवश्यकता होती है।

यदि आपकी रणनीति बैकटेस्ट के परिणाम पैसे खो रहे हैं, तो हतोत्साहित न हों। यह वास्तव में काफी सामान्य है। जांचें कि क्या कोड द्वारा रणनीति तर्क की गलत व्याख्या की गई है, क्या यह कुछ चरम मापदंडों का उपयोग कर रहा है, क्या यह बहुत अधिक उद्घाटन स्थिति की स्थिति का उपयोग कर रहा है, आदि। यह भी एक और कोण से व्यापार रणनीतियों और व्यापारिक विचारों की फिर से जांच करना आवश्यक है।

यदि आपकी रणनीति बैकटेस्ट के परिणाम बहुत अच्छे हैं, तो वित्तपोषण वक्र एकदम सही है, 1 से अधिक के शार्प अनुपात के साथ। कृपया जल्दबाजी न करें, इस मामले में, अधिकांश स्थितियां भविष्य के कार्यों का उपयोग कर रही हैं, कीमतों को चोरी कर रही हैं, ओवर-फिटिंग, या कोई स्लिप मूल्य जोड़ा नहीं गया है, आदि। आप इन मुद्दों को बाहर करने के लिए नमूना डेटा और सिमुलेशन रियल-मार्केट ट्रेडिंग का उपयोग कर सकते हैं।

संक्षेप में

उपरोक्त ट्रेडिंग रणनीति बैकटेस्टिंग की पूरी प्रक्रिया है, यह कहा जा सकता है कि यह हर विवरण के लिए विशिष्ट रहा है। यह ध्यान दिया जाना चाहिए कि ऐतिहासिक डेटा बैकटेस्टिंग एक आदर्श वातावरण है जहां सभी जोखिम ज्ञात हैं। इसलिए, रणनीति के बैकटेस्टिंग समय के लिए बैल और भालू बाजार के दौर से गुजरना सबसे अच्छा है। कुछ बचे हुए पूर्वाग्रहों से बचने के लिए, ट्रेडिंग की प्रभावी संख्या 100 से कम नहीं होनी चाहिए।

बाजार हमेशा परिवर्तन और विकास की प्रक्रिया में है। ऐतिहासिक बैकटेस्टिंग रणनीति का मतलब यह नहीं है कि भविष्य एक जैसा ही रहेगा। यह न केवल रणनीति को बैकटेस्टिंग वातावरण में ज्ञात संभावित जोखिमों का सामना करने देना है, बल्कि भविष्य में अज्ञात जोखिमों से भी निपटना है। इसलिए, रणनीति के जोखिम प्रतिरोध और सार्वभौमिकता को बढ़ाना बहुत आवश्यक है।

स्कूल के बाद व्यायाम

  1. इस खंड में रणनीति की नकल करने की कोशिश करें और इसे बैकटेस्ट करें।

  2. अपने व्यापारिक अनुभव के आधार पर इस खंड में रणनीति में सुधार और अनुकूलन करने का प्रयास करें।


अधिक