রিসোর্স লোড হচ্ছে... লোডিং...

5.2 কিভাবে পরিমাণগত ট্রেডিং ব্যাকটেস্টিং করবেন

লেখক:ভাল, তৈরিঃ 2019-05-08 13:08:52, আপডেটঃ

সংক্ষিপ্তসার

ব্যাকটেস্টিং এর গুরুত্ব এবং গুরুত্ব অনস্বীকার্য। পরিমাণগত ব্যাকটেস্টিং করার সময়, কৌশলটি ঐতিহাসিক পরিবেশে যথাসম্ভব বাস্তব এবং কাছাকাছি স্থাপন করা উচিত। যদি ঐতিহাসিক পরিবেশে কিছু বিবরণ উপেক্ষা করা হয়, তবে পুরো পরিমাণগত ব্যাকটেস্টিং অবৈধ হতে পারে। এই নিবন্ধটি যথাযথ পরিমাণগত ট্রেডিং ব্যাকটেস্টিং কিভাবে করবেন তা ব্যাখ্যা করবে।

ব্যাকটেস্টিং ডেটা প্লেব্যাকের সমতুল্য। ঐতিহাসিক কে-লাইন ডেটা পুনরায় প্লে করে এবং শার্প অনুপাত, সর্বাধিক পুনরুদ্ধারের হার, বার্ষিক রিটার্নের হার এবং মূলধন বক্ররেখা যেমন বাস্তব বাজারের ট্রেডিং নিয়মগুলি সম্পাদন করে। বর্তমানে, অনেকগুলি সফ্টওয়্যার রয়েছে যা এই সমস্ত করতে পারে, যেমন মেটাট্রেডার, মাল্টিচার্টস এবং আইবি ট্রেডার ওয়ার্কস্টেশন, যা সমস্তই খুব বিস্তৃত, এছাড়াও গিটহাব.কম এ ভিএনপিওয়াই নামে একটি ওপেন সোর্স রয়েছে, যা নমনীয়ভাবে কাস্টমাইজ করা যায়।

এফএমজেড কোয়ান্ট একটি বাণিজ্যিক পরিমাণগত ট্রেডিং সফ্টওয়্যার হিসাবে, উচ্চ-কার্যকারিতা ব্যাকটেস্ট ইঞ্জিনের সাথে আসে, ফর-লুপ (পোলিং) ব্যাকটেস্ট ফ্রেমওয়ার্ক ব্যবহার করে, দ্রুত গণনা পরিমাণে গণনা করতে। এবং ইউনিফাইড ব্যাকটেস্টিং এবং রিয়েল-টাইম কোড, ব্যাকটেস্টিং সহজ, তবে বাস্তব বাজারের কঠিন দ্বিধা সমাধান করেছে।

এফএমজেড কোয়ান্ট ব্যাকটেস্ট ইন্টারফেসের ভূমিকা

  • ১ম ধাপ

উদাহরণস্বরূপ, এফএমজেড কোয়ান্ট থার্মোস্ট্যাট টাইমিং কৌশলটি গ্রহণ করে, আসুন এফএমজেড কোয়ান্টের অফিসিয়াল ওয়েবসাইট (www.fmz.com) খুলুন। ড্যাশবোর্ড, কৌশল ক্লিক করুন, একটি কৌশল নির্বাচন করুন, ব্যাকটেস্ট ক্লিক করুন এবং নিম্নলিখিত পৃষ্ঠায় যানঃ

5.2 How to do quantitative trading backtesting 5.2 How to do quantitative trading backtesting

ব্যাকটেস্ট কনফিগারেশন ইন্টারফেসে, আপনি এটি আপনার প্রকৃত প্রয়োজন অনুযায়ী কাস্টমাইজ করতে পারেন। যেমনঃ ব্যাকটেস্ট সময়কাল সেট করুন, কে লাইন চক্র, ডেটা টাইপ (সিমুলেশন স্তরের ডেটা বা বাস্তব বাজারের স্তরের ডেটা। এর বিপরীতে, সিমুলেশন স্তরের ডেটা ব্যাকটেস্টিং গতি দ্রুত, বাস্তব বাজারের স্তরের ডেটা ব্যাকটেস্টিং আরও নির্ভুল) । এছাড়াও, আপনি ব্যাকটেস্ট এবং অ্যাকাউন্টের প্রাথমিক তহবিলের জন্য কমিশন ফিও সেট করতে পারেন।

  • ২য় ধাপ

mylanguage core ট্রেডিং লাইব্রেরিতে ক্লিক করুন (কারণ এই কৌশলটি এম ভাষায় লেখা আছে, যদি আপনি অন্য প্রোগ্রামিং ভাষা ব্যবহার করেন তবে এই বিকল্পটি প্রদর্শিত নাও হতে পারে) প্রথমে, ট্রেডিং লেবেল সেট করুন। এফএমজেড কোয়ান্ট এম ভাষায় দুটি ধরণের ব্যাকটেস্ট এক্সিকিউশন পদ্ধতি রয়েছে, যা হলঃ বন্ধ মূল্য মডেল এবং সর্বশেষ মূল্য মডেল। বর্তমান কে লাইন শেষ হওয়ার পরে মডেলটি কার্যকর করা হয় এবং পরবর্তী কে লাইনের শুরুতে ট্রেডিং কার্যকর করা হয়; সর্বশেষ মূল্য মডেলটি প্রতিটি মূল্য পরিবর্তনের জন্য একটি মডেলের কার্যকরকরণকে বোঝায় এবং যখন ট্রেডিং সিগন্যালটি প্রতিষ্ঠিত হয়, তখন এটি অবিলম্বে বাণিজ্য করবে। নীচে দেখানো হয়েছেঃ

5.2 How to do quantitative trading backtesting 5.2 How to do quantitative trading backtesting

ডিফল্ট ওপেন লটের আকার ব্যাকটেস্টিংয়ের সময় খোলা এবং বন্ধ হওয়া পজিশনের পরিমাণকে বোঝায়। একবারের সর্বোচ্চ ট্রেড পরিমাণ একক লেনদেনের মাধ্যমে ব্যাকটেস্ট ইঞ্জিনে পাঠানো সর্বোচ্চ খোলা পজিশন।

প্রকৃত ট্রেডিং মূল্য এবং পরিকল্পিত ট্রেডিং মূল্যের মধ্যে সর্বদা একটি বিচ্যুতি থাকবে। এই অফসেটটি সাধারণত এমন একটি দিকে চলে যা ব্যবসায়ীর পক্ষে অনুকূল নয়, যার ফলে ট্রেডিংয়ে অতিরিক্ত ক্ষতি হয়। অতএব, বাস্তব ট্রেডিং পরিবেশের অনুকরণ করতে স্লিপিং যুক্ত করা প্রয়োজন।

  • তৃতীয় ধাপ

futures contract পূরণ করুন আপনি যে ধরনের চুক্তি ব্যাকটেস্ট করতে চান তার সাথে, ক্রিপ্টোকারেন্সির জন্য, আমাদের কেবল k-line এর সময় নির্দিষ্ট করতে হবে যা আমরা ব্যাকটেস্ট করতে চাই, এই ক্ষেত্রে, কেবল সাপ্তাহিক k লাইন ব্যবহার করুন, সুতরাং, this_week দিন।

5.2 How to do quantitative trading backtesting

রিয়েল-মার্কেট সেটিংস অপশনটি মূলত রিয়েল-মার্কেট ট্রেডিংয়ের জন্য ব্যবহৃত হয়, ব্যাকটেস্টিং পরিবেশে, আমরা কেবল এটিকে ডিফল্ট সেটিং বজায় রাখব এটি ঠিক থাকবে। যদি স্বয়ংক্রিয় পুনরুদ্ধারের অগ্রগতি চিহ্নিত করা হয়, তবে যখন রোবটটি বাস্তব বাজারে থামে, রোবটটি পুনরায় চালু করা হলে সিগন্যালটি পুনরায় গণনা না করে স্বয়ংক্রিয়ভাবে পূর্ববর্তী সিগন্যাল অবস্থানটি পুনরুদ্ধার করবে। অর্ডার পুনরায় চেষ্টা করার সংখ্যা ডিফল্টরূপে 20 এ সেট করা হয়। অর্ডার স্থাপন ব্যর্থ হলে, এটি 20 বার পর্যন্ত পুনরায় প্রেরণের চেষ্টা করবে। নেটওয়ার্ক পোলিং ব্যবধান (মিলিসেকেন্ড) যেখানে রোবট প্রতিবার কৌশল কোডটি কার্যকর করে।

5.2 How to do quantitative trading backtesting

  • চতুর্থ ধাপ

স্পট ট্রেডিং অপশনটি মূলত ক্রিপ্টোকারেন্সি ট্রেডিংয়ের জন্য, যখন ব্যাকটেস্টিং, এটি ডিফল্ট সেটিংসে রাখুন ঠিক থাকবে। যদি আপনি চান, আপনি এই সেটিংসে সমস্ত পরামিতি নির্দিষ্ট করতে পারেন। এছাড়াও, কিছু ক্রিপ্টোকারেন্সি এক্সচেঞ্জের জন্য, আপনি লিভারেজ আকার এবং অন্যান্য সম্পর্কিত সেটিংস সেট করতে পারেন।

5.2 How to do quantitative trading backtesting

কৌশল ব্যাকটেস্ট

ব্যাকটেস্টিং করার আগে, আপনার ট্রেডিং কৌশল নির্ধারণ করুন। এখানে আমরা থার্মোস্ট্যাট টাইমিং কৌশলটিকে উদাহরণ হিসাবে নিই। এই কৌশলটি বাজারের অবস্থার অনুযায়ী ট্রেন্ড মার্কেটে একটি ট্রেন্ড কৌশল গ্রহণ করবে, এবং অস্থির বাজারে একটি দোলক কৌশল গ্রহণ করবে। উত্স কোডটি নীচে দেখানো হয়েছে (এফএমজেড কোয়ান্ট ওয়েবসাইটের কৌশল স্কয়ার পৃষ্ঠা থেকেও ডাউনলোড করা যেতে পারে):

// 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;

সিমুলেশন ব্যাকটেস্টিং ইন্টারফেসে, ব্যাকটেস্টিং সেটিংস কনফিগার করার পরে, স্টার্ট ব্যাকটেস্টিং বোতামে ক্লিক করুন, এবং ব্যাকটেস্টিং ফলাফলগুলি কয়েক সেকেন্ডের পরে অবিলম্বে প্রদর্শিত হবে। ব্যাকটেস্টিং লগটিতে, এটি ব্যাকটেস্টিং, লগ এবং লেনদেনের মোট সংখ্যার জন্য কত সেকেন্ড ব্যবহৃত হয়েছে তা প্রদর্শন করবে। অ্যাকাউন্টের তথ্য কৌশল ব্যাকটেস্টের চূড়ান্ত ফলাফলগুলি মুদ্রণ করেঃ গড় লাভ এবং ক্ষতি, অবস্থান লাভ এবং ক্ষতি, মার্জিন, কমিশন ফি এবং আনুমানিক রিটার্ন।

5.2 How to do quantitative trading backtesting

স্ট্যাটাস বার ট্রেডিং বৈচিত্র্য, অবস্থান, অবস্থান মূল্য, সর্বশেষ মূল্য, পূর্ববর্তী ট্রেডিং সংকেত প্রকার, অবস্থান সর্বোচ্চ এবং সর্বনিম্ন মূল্য, আপডেট সংখ্যা পাশাপাশি মূলধন এবং সময় তথ্য রেকর্ড করে। উপরন্তু, উদ্ভিজ্জ মুনাফা এবং ক্ষতির লেবেল, অ্যাকাউন্টের বিস্তারিত তহবিল বক্ররেখা প্রদর্শিত হয়, এবং সাধারণভাবে ব্যবহৃত কর্মক্ষমতা সূচক এছাড়াও অন্তর্ভুক্ত করা হয়ঃ রিটার্ন হার, বার্ষিক রিটার্ন হার, শার্প অনুপাত, বার্ষিক অস্থিরতা, এবং সর্বোচ্চ পুনরুদ্ধার হার, যা মূলত ব্যবহারকারীদের চাহিদা বিপুল সংখ্যাগরিষ্ঠ সন্তুষ্ট করতে পারেন।

তাদের মধ্যে, সবচেয়ে গুরুত্বপূর্ণ কর্মক্ষমতা সূচক হলঃ শার্প অনুপাত। এটি ব্যাপক সূচক বাস্তবায়ন করার সময় সুবিধা এবং ঝুঁকি বিবেচনা করা হয়, এবং এটি একটি তহবিল পণ্য পরিমাপ করার জন্য একটি গুরুত্বপূর্ণ সূচক। সাধারণভাবে, এটি আপনি কত ঝুঁকি বহন, প্রতিটি সময় যখন আপনি মুনাফা উপার্জন, তাই শার্প অনুপাত মান উচ্চতর, ভাল।

বার্ষিক উদ্বায়ীতা, সহজভাবে বলতে গেলে, একটি পরিসংখ্যানকে বার্ষিকীকরণ করা একটি স্বল্প সময়ের মধ্যে পর্যবেক্ষণগুলি ধরে রাখে যা এক বছরের মধ্যে অব্যাহত থাকবে। এটি তহবিলের ঝুঁকির একটি পরিমাপ, তবে এটি অবশ্যই পুরো ঝুঁকি নয়। উদাহরণস্বরূপ, কৌশল এ এর বৃহত্তর উদ্বায়ীতা রয়েছে, তবে এটি উপরে উদ্বায়ীতা হয়েছে, মুনাফা ভাল; কৌশল বি এর একটি ছোট উদ্বায়ীতা রয়েছে, তবে এটি ধারাবাহিকভাবে চলমান হয়েছে ((ক্লান্তই সরানো হয়নি) । আমরা কি বলতে পারি যে কৌশল বি কৌশল এ এর চেয়ে ভাল? কৌশল এ নীচে দেখানো হয়েছেঃ

5.2 How to do quantitative trading backtesting

অবশেষে, লগ ইনফরমেশনে, ব্যাকটেস্টিংয়ের সময় প্রতিটি ট্রেডিং ব্রোকারেজ পরিস্থিতির একটি বিস্তারিত রেকর্ড, যার মধ্যে ট্রেডিংয়ের নির্দিষ্ট সময়, এক্সচেঞ্জের তথ্য, খোলা এবং বন্ধ পজিশনের ধরণ, ব্যাকটেস্ট ইঞ্জিনের অর্ডার ম্যাচিং প্রক্রিয়া, পাশাপাশি লেনদেনের সংখ্যা এবং মুদ্রণযোগ্য তথ্য অন্তর্ভুক্ত রয়েছে।

5.2 How to do quantitative trading backtesting

ব্যাকটেস্টিংয়ের পর

অনেক সময়, এবং বেশিরভাগ ক্ষেত্রে, ব্যাকটেস্টিং এর ফলাফল আপনার প্রত্যাশার থেকে অনেক দূরে থাকবে। সর্বোপরি, দীর্ঘমেয়াদী, স্থিতিশীল এবং লাভজনক কৌশল পাওয়া এত সহজ নয়, যার জন্য আপনার বাজার বোঝার ক্ষমতা প্রয়োজন।

যদি আপনার কৌশল ব্যাকটেস্টের ফলাফলগুলি অর্থ হারাচ্ছে, তবে হতাশ হবেন না। এটি আসলে বেশ স্বাভাবিক। দেখুন যে কোড দ্বারা কৌশল যুক্তিটি ভুলভাবে ব্যাখ্যা করা হয়েছে কিনা, এটি কিছু চরম পরামিতি ব্যবহার করছে কিনা, এটি খুব বেশি উদ্বোধনী অবস্থানের শর্তাবলী ব্যবহার করছে কিনা ইত্যাদি। এটি অন্য কোণ থেকে ট্রেডিং কৌশল এবং ট্রেডিং ধারণা পুনরায় পরীক্ষা করাও প্রয়োজনীয়।

যদি আপনার কৌশল ব্যাকটেস্টের ফলাফল খুব ভাল হয়, তহবিলের বক্ররেখা নিখুঁত হয়, যার শার্প অনুপাত 1 এর চেয়ে বেশি। দয়া করে তাড়াহুড়ো করবেন না। এই ক্ষেত্রে, বেশিরভাগ পরিস্থিতি ভবিষ্যতের ফাংশনগুলি ব্যবহার করছে, দাম চুরি করছে, অতিরিক্ত ফিটিং, বা কোনও স্লিপিং মূল্য যুক্ত করা হয়নি ইত্যাদি। আপনি এই সমস্যাগুলি বাদ দিতে নমুনা ছাড়াই ডেটা এবং সিমুলেশন রিয়েল মার্কেট ট্রেডিং ব্যবহার করতে পারেন।

সংক্ষেপে

উপরেরটি হ'ল ট্রেডিং কৌশল ব্যাকটেস্টিংয়ের পুরো প্রক্রিয়া, এটি বলা যেতে পারে যে এটি প্রতিটি বিবরণে নির্দিষ্ট ছিল। এটি লক্ষ করা উচিত যে historicalতিহাসিক ডেটা ব্যাকটেস্টিং একটি আদর্শ পরিবেশ যেখানে সমস্ত ঝুঁকি পরিচিত। অতএব, কৌশলটির ব্যাকটেস্টিং সময়ের জন্য একটি ষাঁড় এবং ভালুকের বাজারের মধ্য দিয়ে যাওয়া ভাল। কার্যকর সংখ্যক ব্যবসায়ের পরিমাণ 100 বারের কম হওয়া উচিত নয়, যাতে কিছু বেঁচে থাকা পক্ষপাত এড়ানো যায়।

বাজার সর্বদা পরিবর্তন এবং বিবর্তনের প্রক্রিয়ায় থাকে। ঐতিহাসিক ব্যাকটেস্টিং কৌশলটির অর্থ এই নয় যে ভবিষ্যতে একই হবে। এটি কেবল ব্যাকটেস্টিং পরিবেশে পরিচিত সম্ভাব্য ঝুঁকিগুলির সাথে মোকাবিলা করার জন্য নয়, ভবিষ্যতে অজানা ঝুঁকিগুলির সাথেও মোকাবিলা করার জন্য। অতএব, কৌশলটির ঝুঁকি প্রতিরোধ এবং সার্বজনীনতা বাড়ানো খুব প্রয়োজনীয়।

স্কুলের পর ব্যায়াম

  1. এই বিভাগে কৌশল কপি করার চেষ্টা করুন এবং এটি ব্যাকটেস্ট করুন।

  2. আপনার ট্রেডিং অভিজ্ঞতার উপর ভিত্তি করে এই বিভাগে কৌশল উন্নত এবং অপ্টিমাইজ করার চেষ্টা করুন।


আরও দেখুন