অ্যালগরিদমিক ট্রেডিং কৌশলগুলির সফল ব্যাকটেস্টিং - পার্ট I

লেখক:ভাল, তৈরিঃ 2019-03-20 17:00:16, আপডেটঃ

এই নিবন্ধটি পরিমাণগত ট্রেডিং সম্পর্কিত সিরিজের ধারাবাহিকতা, যা শুরু হয়েছিল Beginner's Guide এবং Strategy Identification। এই উভয় দীর্ঘ, আরো জড়িত নিবন্ধ খুব জনপ্রিয় হয়েছে তাই আমি এই ধারা অব্যাহত রাখব এবং কৌশল ব্যাকটেস্টিং বিষয় সম্পর্কে বিস্তারিত প্রদান করব।

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

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

আসুন ব্যাকটেস্টিং কী এবং কেন আমাদের অ্যালগরিদমিক ট্রেডিংয়ে এটি করা উচিত তা নিয়ে আলোচনা করে শুরু করি।

ব্যাকটেস্টিং কি?

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

সহজ কথায় বলতে গেলে, ব্যাকটেস্টিং আপনার নির্দিষ্ট কৌশল অ্যালগরিদমকে historicalতিহাসিক আর্থিক তথ্যের প্রবাহের কাছে প্রকাশ করে পরিচালিত হয়, যা ট্রেডিং সংকেতগুলির একটি সেটকে নিয়ে যায়। প্রতিটি বাণিজ্য (যা আমরা এখানে দুটি সংকেতের একটি round-trip বলতে চাইব) এর সাথে সম্পর্কিত লাভ বা ক্ষতি হবে। আপনার কৌশল ব্যাকটেস্টের সময়কাল জুড়ে এই লাভ / ক্ষতির জমে থাকা মোট লাভ এবং ক্ষতির দিকে পরিচালিত করবে (যা P&L বা PnL নামেও পরিচিত) । এটি ধারণার সারমর্ম, যদিও অবশ্যই শয়তান সর্বদা বিবরণে থাকে!

একটি অ্যালগরিদমিক কৌশল ব্যাকটেস্টিং করার মূল কারণগুলি কী কী?

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

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

দুর্ভাগ্যবশত, ব্যাকটেস্টিং সব ধরনের পক্ষপাতিত্বের সাথে ভরা। আমরা পূর্ববর্তী নিবন্ধগুলিতে এই বিষয়গুলির কিছুতে স্পর্শ করেছি, কিন্তু এখন আমরা সেগুলি গভীরভাবে আলোচনা করব।

কৌশলগত ব্যাকটেস্টকে প্রভাবিত করে এমন পক্ষপাত

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

চারটি প্রধান পক্ষপাত আছে যা আমি আলোচনা করতে চাইঃ অপ্টিমাইজেশান পক্ষপাত, ভবিষ্যতের দিকে তাকানো পক্ষপাত, বেঁচে থাকার পক্ষপাত এবং মানসিক সহনশীলতার পক্ষপাত।

অপ্টিমাইজেশান বায়াস

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

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

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

ভবিষ্যতের দিকে তাকানো পক্ষপাত

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

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

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

বেঁচে থাকার পক্ষপাত

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

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

আপনার কৌশল ব্যাকটেস্টে বেঁচে থাকার পক্ষপাত কমাতে দুটি প্রধান উপায় রয়েছেঃ

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

এখন আমরা কিছু মানসিক ঘটনা বিবেচনা করব যা আপনার ট্রেডিং কর্মক্ষমতাকে প্রভাবিত করতে পারে।

মানসিক সহনশীলতা পক্ষপাত

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

যদি ব্যাকটেস্টে 25% বা তারও বেশি historicalতিহাসিক ড্রডাউন ঘটে থাকে তবে সমস্ত সম্ভাবনা অনুসারে আপনি লাইভ ট্রেডিংয়ে অনুরূপ ড্রডাউনের সময়গুলি দেখতে পাবেন। এই ড্রডাউনের সময়গুলি মানসিকভাবে সহ্য করা কঠিন। আমি প্রাতিষ্ঠানিক পরিবেশে একটি বর্ধিত ড্রডাউন কেমন হতে পারে তা প্রথম হাত থেকে পর্যবেক্ষণ করেছি, এবং এটি মনোরম নয় - এমনকি যদি ব্যাকটেস্টগুলি এমন সময়গুলি ঘটবে বলে মনে করে। আমি এটিকে একটি bias বলেছি কারণ প্রায়শই একটি কৌশল যা অন্যথায় সফল হবে তা বর্ধিত ড্রডাউনের সময় ট্রেডিং থেকে বন্ধ হয়ে যায় এবং তাই ব্যাকটেস্টের তুলনায় নিম্ন পারফরম্যান্সের দিকে পরিচালিত করবে। সুতরাং, যদিও কৌশলটি প্রকৃতির অ্যালগরিদমিক, তবুও মানসিক কারণগুলি লাভজনকতার উপর উল্লেখযোগ্য প্রভাব ফেলতে পারে। গ্রহণযোগ্যতা হ'ল নিশ্চিত করা যে আপনি যদি ব্যাকটেস্টে একটি নির্দিষ্ট শতাংশ এবং সময়কালের ড্রডাউনগুলি দেখেন তবে আপনাকে তাদের পরিবেশের মধ্যে বাস করার আশা করা উচিত, যাতে আপনি আরও লাভজনকতা অর্জন করতে পারেন।

ব্যাকটেস্টিং এর জন্য সফটওয়্যার প্যাকেজ

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

  • প্রোগ্রামিং দক্ষতা - পরিবেশের পছন্দটি বেশিরভাগ ক্ষেত্রে আপনার সফ্টওয়্যার প্রোগ্রাম করার দক্ষতার উপর নির্ভর করবে। আমি যুক্তি দেব যে আপনার সম্পূর্ণ স্ট্যাকের নিয়ন্ত্রণে থাকা আপনার দীর্ঘমেয়াদী P&L এর উপর আউটসোর্সিংয়ের চেয়ে বেশি প্রভাব ফেলবে। এটি বিক্রেতার সফ্টওয়্যারটিতে বাহ্যিক বাগ বা স্বতন্ত্রতা থাকার নেতিবাচক ঝুঁকির কারণে যা আপনি ঠিক করতে অক্ষম, যা অন্যথায় সহজেই সংশোধন করা যেতে পারে যদি আপনার টেক স্ট্যাক এর উপর আপনার আরও নিয়ন্ত্রণ থাকে। আপনি এমন একটি পরিবেশও চান যা উত্পাদনশীলতা, লাইব্রেরি উপলভ্যতা এবং সম্পাদনের গতির মধ্যে সঠিক ভারসাম্য বজায় রাখে। আমি নীচে আমার ব্যক্তিগত পরামর্শ দিচ্ছি।
  • এক্সিকিউশন ক্যাপাসিটি / ব্রোকার ইন্টারঅ্যাকশন - কিছু ব্যাকটেস্টিং সফ্টওয়্যার, যেমন ট্রেডস্টেশন, সরাসরি কোনও ব্রোকারের সাথে সম্পর্কিত। আমি এই পদ্ধতির অনুরাগী নই কারণ লেনদেনের ব্যয় হ্রাস করা প্রায়শই একটি উচ্চতর শার্প অনুপাত অর্জনের একটি বড় উপাদান। যদি আপনি একটি নির্দিষ্ট ব্রোকারের সাথে আবদ্ধ হন (এবং ট্রেডস্টেশন আপনাকে এটি করতে বাধ্য করে), তবে প্রয়োজনে নতুন সফ্টওয়্যার (বা নতুন ব্রোকারে) রূপান্তর করা আপনার পক্ষে আরও কঠিন হবে। ইন্টারেক্টিভ ব্রোকাররা একটি এপিআই সরবরাহ করে যা কিছুটা অস্পষ্ট ইন্টারফেসের সাথে হলেও শক্তিশালী।
  • কাস্টমাইজেশন - MATLAB বা পাইথনের মতো পরিবেশগুলি আপনাকে অ্যালগো কৌশলগুলি তৈরি করার সময় প্রচুর নমনীয়তা দেয় কারণ তারা কল্পনাযোগ্য প্রায় কোনও গাণিতিক ক্রিয়াকলাপের জন্য দুর্দান্ত লাইব্রেরি সরবরাহ করে, তবে প্রয়োজনে বিস্তৃত কাস্টমাইজেশনও দেয়।
  • কৌশল জটিলতা - কিছু সফ্টওয়্যার কেবল ভারী সংখ্যা ক্রাশিং বা গাণিতিক জটিলতার জন্য কাটা হয় না। এক্সেল এমন একটি সফ্টওয়্যার। যদিও এটি সহজ কৌশলগুলির জন্য ভাল, তবে এটি দ্রুততার সাথে অসংখ্য সম্পদ বা আরও জটিল অ্যালগরিদমগুলি মোকাবেলা করতে পারে না।
  • পক্ষপাতের হ্রাস - একটি নির্দিষ্ট সফ্টওয়্যার বা ডেটা কি ট্রেডিং পক্ষপাতের জন্য নিজেকে আরও বেশি উপযোগী করে তোলে? আপনার নিশ্চিত হওয়া দরকার যে আপনি যদি নিজেরাই সমস্ত কার্যকারিতা তৈরি করতে চান তবে আপনি বাগগুলি প্রবর্তন করবেন না যা পক্ষপাতের দিকে পরিচালিত করতে পারে।
  • বিকাশের গতি - একজনকে কয়েক মাস এবং কয়েক মাস ব্যাকটেস্ট ইঞ্জিন বাস্তবায়নে ব্যয় করতে হবে না। প্রোটোটাইপিংয়ে মাত্র কয়েক সপ্তাহ সময় লাগবে। নিশ্চিত করুন যে আপনার সফ্টওয়্যারটি আপনার অগ্রগতিকে খুব বেশি পরিমাণে বাধা দিচ্ছে না, কেবলমাত্র এক্সিকিউশন গতির কয়েকটি অতিরিক্ত শতাংশ পয়েন্ট দখল করতে। সি ++ এখানে কক্ষের হাতি!
  • এক্সিকিউশন স্পিড - যদি আপনার কৌশলটি সম্পূর্ণরূপে এক্সিকিউশন টাইমলাইনে নির্ভরশীল হয় (যেমন এইচএফটি / ইউএইচএফটি) তবে সি বা সি ++ এর মতো একটি ভাষা প্রয়োজনীয় হবে। তবে আপনি এই ডোমেনগুলির জন্য লিনাক্স কার্নেল অপ্টিমাইজেশন এবং এফপিজিএ ব্যবহারের সীমাতে থাকবেন, যা এই নিবন্ধের আওতার বাইরে!
  • খরচ - আপনি যে সফটওয়্যার পরিবেশে অ্যালগরিদমিক ট্রেডিং কৌশল প্রোগ্রাম করতে পারেন তার মধ্যে অনেকগুলি সম্পূর্ণ বিনামূল্যে এবং ওপেন সোর্স। প্রকৃতপক্ষে, অনেক হেজ ফান্ড তাদের পুরো আলগো ট্রেডিং স্ট্যাকের জন্য ওপেন সোর্স সফটওয়্যার ব্যবহার করে। উপরন্তু, এক্সেল এবং ম্যাটলাব উভয়ই তুলনামূলকভাবে সস্তা এবং তাদের প্রত্যেকের জন্য বিনামূল্যে বিকল্পও রয়েছে।

এখন যেহেতু আমরা আমাদের সফটওয়্যার অবকাঠামো বেছে নেওয়ার জন্য প্রয়োজনীয় মানদণ্ড তালিকাভুক্ত করেছি, আমি কিছু জনপ্রিয় প্যাকেজ এবং তাদের তুলনা কিভাবে চালাতে চাইঃ

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

ব্যাকটেস্টিং সফটওয়্যার তুলনা

এমএস এক্সেল

বর্ণনাঃ WYSIWYG (কি-আপনি-দেখেন-আপনি-আপনি-আপনি-পুনরায়) স্প্রেডশীট সফ্টওয়্যার। আর্থিক শিল্পে অত্যন্ত ব্যাপক। তথ্য এবং অ্যালগরিদম ঘনিষ্ঠভাবে যুক্ত।

কার্যকরকরণঃ হ্যাঁ, এক্সেলকে বেশিরভাগ ব্রোকারেজের সাথে সংযুক্ত করা যায়।

কাস্টমাইজেশনঃ ভিবিএ ম্যাক্রো বাস্তবায়ন লুকানোর ব্যয়ে আরও উন্নত কার্যকারিতা দেয়।

কৌশল জটিলতাঃ আরও উন্নত পরিসংখ্যানগত সরঞ্জামগুলি বাস্তবায়ন করা কঠিন, যেমন শত শত সম্পদ সহ কৌশলগুলি।

পক্ষপাতের হ্রাসঃ সেল-হাইলাইটিং কার্যকারিতা (ভিবিএ নেই বলে ধরে নেওয়া) এর মাধ্যমে সামনের দিকে দৃষ্টিভঙ্গি সনাক্ত করা সহজ।

বিকাশের গতিঃ মৌলিক কৌশলগুলি দ্রুত বাস্তবায়ন করা।

এক্সিকিউশন স্পিডঃ ধীর এক্সিকিউশন স্পিড - শুধুমাত্র নিম্ন-ফ্রিকোয়েন্সি কৌশলগুলির জন্য উপযুক্ত।

খরচঃ সস্তা বা বিনামূল্যে (লাইসেন্সের উপর নির্ভর করে) ।

বিকল্পঃ ওপেন অফিস

MATLAB

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

এক্সিকিউশনঃ কোনও নেটিভ এক্সিকিউশন ক্ষমতা নেই, ম্যাটলাবের জন্য পৃথক এক্সিকিউশন সিস্টেমের প্রয়োজন।

কাস্টমাইজেশনঃ কমিউনিটি প্লাগইনগুলির বিশাল অ্যারে কম্পিউটেশনাল গণিতের প্রায় সব ক্ষেত্রের জন্য।

কৌশল জটিলতাঃ অনেক উন্নত পরিসংখ্যান পদ্ধতি ইতিমধ্যে উপলব্ধ এবং ভাল পরীক্ষিত।

পক্ষপাতিত্ব হ্রাসঃ ভবিষ্যতের পক্ষপাতিত্ব সনাক্ত করা আরও কঠিন, ব্যাপক পরীক্ষার প্রয়োজন।

বিকাশের গতিঃ সংক্ষিপ্ত স্ক্রিপ্টগুলি সহজেই জটিল ব্যাকটেস্ট তৈরি করতে পারে।

এক্সিকিউশন স্পিডঃ ভেক্টরাইজড/প্যারালেলাইজড অ্যালগরিদম অনুমান করে, ম্যাটলাব অত্যন্ত অনুকূলিত। ঐতিহ্যগত পুনরাবৃত্তি লুপের জন্য দরিদ্র।

খরচঃ লাইসেন্সের জন্য ~ ১,০০০ মার্কিন ডলার।

বিকল্পঃ ওক্টাভ, সিয়েল্যাব

পাইথন

বর্ণনাঃ উন্নয়নের গতির জন্য ডিজাইন করা একটি উচ্চ স্তরের ভাষা। প্রায় কোনও প্রোগ্রাম্যাটিক কাজের জন্য বিস্তৃত লাইব্রেরি। হেজ ফান্ড এবং বিনিয়োগ ব্যাংক সম্প্রদায়ের মধ্যে বৃহত্তর গ্রহণযোগ্যতা অর্জন করছে। বাস্তবায়নের গতির জন্য সি / সি ++ এর মতো দ্রুত নয়।

এক্সিকিউশনঃ পাইথন প্লাগইনগুলি ইন্টারেক্টিভ ব্রোকারগুলির মতো বৃহত্তর ব্রোকারদের জন্য বিদ্যমান। সুতরাং ব্যাকটেস্ট এবং এক্সিকিউশন সিস্টেমগুলি একই টেক স্ট্যাক এর অংশ হতে পারে।

কাস্টমাইজেশনঃ পাইথনের একটি খুব সুস্থ ডেভেলপমেন্ট কমিউনিটি রয়েছে এবং এটি একটি পরিপক্ক ভাষা। NumPy/SciPy দ্রুত বৈজ্ঞানিক কম্পিউটিং এবং পরিসংখ্যান বিশ্লেষণ সরঞ্জাম সরবরাহ করে যা কোয়ান্ট ট্রেডিংয়ের জন্য প্রাসঙ্গিক।

কৌশল জটিলতাঃ প্রধান অ্যালগরিদমগুলির জন্য অনেকগুলি প্লাগইন রয়েছে, তবে ম্যাটলাবের মতো বড় পরিমাণের সম্প্রদায় নেই।

পক্ষপাতের সংক্ষিপ্তকরণঃ যে কোনও উচ্চ স্তরের ভাষার জন্য একই পক্ষপাতের সংক্ষিপ্তকরণের সমস্যা রয়েছে। পরীক্ষার বিষয়ে অত্যন্ত সতর্ক হওয়া দরকার।

বিকাশের গতিঃ পাইথনের প্রধান সুবিধা হ'ল বিকাশের গতি, পরীক্ষার সক্ষমতার মধ্যে শক্তিশালী।

এক্সিকিউশন স্পিডঃ সি++ এর মত দ্রুত নয়, কিন্তু বৈজ্ঞানিক কম্পিউটিং উপাদানগুলি অপ্টিমাইজ করা হয়েছে এবং পাইথন নির্দিষ্ট প্লাগইনগুলির সাথে নেটিভ সি কোডের সাথে কথা বলতে পারে।

খরচঃ ফ্রি/ওপেন সোর্স

বিকল্পঃ রুবি, এরল্যাং, হাসকেল

R

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

এক্সিকিউশনঃ কিছু ব্রোকারের প্লাগইন রয়েছে, বিশেষত ইন্টারেক্টিভ ব্রোকার। সুতরাং একটি শেষ থেকে শেষ সিস্টেম সম্পূর্ণরূপে R এ লেখা যেতে পারে।

কাস্টমাইজেশনঃ R যেকোনো প্যাকেজের সাথে কাস্টমাইজ করা যায়, কিন্তু এর শক্তিগুলি পরিসংখ্যানগত/অর্থনীতিবিদ্যা ডোমেইনে রয়েছে।

কৌশল জটিলতাঃ উপলব্ধ প্লাগইনগুলির কারণে ইকোনোম্যাট্রিক, পরিসংখ্যান বা মেশিন লার্নিং কৌশল সম্পাদন করার ক্ষেত্রে বেশিরভাগই দরকারী।

পক্ষপাতের হ্রাসঃ পাইথন বা সি ++ এর মতো কোনও উচ্চ-স্তরের ভাষার জন্য একই স্তরের পক্ষপাতের সম্ভাবনা। সুতরাং পরীক্ষা করা উচিত।

ডেভেলপমেন্ট স্পিড: R হল পরিসংখ্যানগত পদ্ধতির উপর ভিত্তি করে কৌশল লেখার জন্য দ্রুত।

এক্সিকিউশন স্পিডঃ R C++ এর চেয়ে ধীর, কিন্তু ভেক্টরাইজড অপারেশনের জন্য তুলনামূলকভাবে অপ্টিমাইজড (ম্যাটলাবের মতো) ।

খরচঃ ফ্রি/ওপেন সোর্স

বিকল্পঃ এসপিএসএস, স্টাটা

সি++

বর্ণনাঃ এক্সিকিউশন গতির জন্য ডিজাইন করা পরিপক্ক, উচ্চ-স্তরের ভাষা। পরিমাণগত অর্থ এবং সংখ্যাসূচক লাইব্রেরি বিস্তৃত। ডিবাগ করা কঠিন এবং প্রায়শই পাইথন বা ম্যাটলাবের চেয়ে বাস্তবায়নে বেশি সময় নেয়। ক্রয় এবং বিক্রয় উভয় পক্ষেই অত্যন্ত প্রচলিত।

এক্সিকিউশনঃ বেশিরভাগ ব্রোকারেজ এপিআই সি ++ এবং জাভাতে লেখা হয়। সুতরাং অনেক প্লাগইন বিদ্যমান।

কাস্টমাইজেশনঃ সি/সি++ অন্তর্নিহিত মেমরিতে সরাসরি অ্যাক্সেসের অনুমতি দেয়, তাই অতি উচ্চ ফ্রিকোয়েন্সি কৌশলগুলি বাস্তবায়ন করা যেতে পারে।

কৌশল জটিলতা: সি++ এসটিএল ব্যাপক পরিসরে অনুকূলিত অ্যালগরিদম প্রদান করে। প্রায় যেকোনো বিশেষায়িত গাণিতিক অ্যালগরিদমের একটি মুক্ত, ওপেন সোর্স সি/সি++ বাস্তবায়ন রয়েছে ওয়েবে।

পক্ষপাতের সংক্ষিপ্তকরণ: ভবিষ্যতের দিকে তাকানো পক্ষপাত দূর করা কঠিন হতে পারে, তবে অন্যান্য উচ্চ-স্তরের ভাষার চেয়ে কঠিন নয়। ভাল ডিবাগিং সরঞ্জাম, তবে অন্তর্নিহিত মেমরির সাথে মোকাবিলা করার সময় সতর্ক থাকতে হবে।

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

এক্সিকিউশন স্পিড: সি/সি++ এর এক্সিকিউশন স্পিড অত্যন্ত দ্রুত এবং এটি নির্দিষ্ট কম্পিউটিং আর্কিটেকচারের জন্য ভালভাবে অপ্টিমাইজ করা যায়। এটি ব্যবহারের মূল কারণ এটি।

খরচঃ বিভিন্ন কম্পাইলারঃ লিনাক্স/জিসিসি বিনামূল্যে, এমএস ভিজ্যুয়াল স্টুডিওতে বিভিন্ন লাইসেন্স রয়েছে।

বিকল্পঃ সি#, জাভা, স্কালা

বিভিন্ন কৌশলগুলির জন্য বিভিন্ন সফ্টওয়্যার প্যাকেজ প্রয়োজন হবে। এইচএফটি এবং ইউএইচএফটি কৌশলগুলি সি / সি ++ এ লেখা হবে (এই দিনগুলিতে এগুলি প্রায়শই জিপিইউ এবং এফপিজিএতে সম্পাদিত হয়), যখন সফ্টওয়্যার / ব্রোকারেজের অল ইন ওয়ান প্রকৃতির কারণে ট্রেডস্টেশনে নিম্ন-ফ্রিকোয়েন্সি দিকনির্দেশমূলক ইক্যুইটি কৌশলগুলি বাস্তবায়ন করা সহজ।

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

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


আরো