বাজার-ডেটার একটি স্থির স্ন্যাপশট থাকলেই ব্যাকটেস্ট বিশ্বাসযোগ্য হয় না। একই উত্তর আবার পাওয়া গেলেও, সেই উত্তর তৈরির ইনপুট ভেন্ডর বদলে দিয়েছে কি না তা স্ন্যাপশটে ধরা নাও পড়তে পারে।
স্ন্যাপশটটি রাখুন। পাশাপাশি এমন একটি পরিবর্তনের লগ রাখুন, যা জানাবে কী বদলেছে, কখন বদলেছে এবং কৌশলটি তাতে প্রভাবিত হয়েছে কি না। সংশোধিত ট্রেড, হালনাগাদ ফান্ডামেন্টাল, পুনর্গঠিত ফান্ডিং বা ভেন্ডরের নীরবে রিফ্রেশ করা ইতিহাস নিয়ে গবেষণা করলে এটি বিশেষভাবে জরুরি।
পুনরুৎপাদনযোগ্য ব্যাকটেস্টও কেন আপনাকে ভুল পথে চালিত করতে পারে?
ধরা যাক, সোমবার আপনি পাঁচ বছরের ঘণ্টাভিত্তিক বার ডাউনলোড করে একটি কৌশল চালালেন। শুক্রবারে ভেন্ডর একটি ভুল ট্রেড ঠিক করেছে, কর্পোরেট অ্যাকশন সমন্বয় করেছে, অথবা ডেটার ফাঁক পূরণ করেছে। আপনার সংরক্ষিত ফাইল থেকে সোমবারের ফল হুবহু পাওয়া যাবে। এটিই পুনরুৎপাদনযোগ্যতা। কিন্তু ভেন্ডরের বর্তমান ইতিহাস থেকে আবার চালালে ফল ভিন্ন হতে পারে, আর কেন ভিন্ন হলো তার কোনো নথি আপনার কাছে নাও থাকতে পারে।
সমস্যাটি শুধু বড় ধরনের সংশোধনের মধ্যে সীমাবদ্ধ নয়। একটি বদলে যাওয়া হাই স্টপ ট্রিগার করতে পারে; সংশোধিত ক্লোজ কোনো ইন্ডিকেটরকে তার থ্রেশহোল্ডের ওপারে নিয়ে যেতে পারে। বিস্তৃত ইউনিভার্সে একটি সিম্বলের ইতিহাস বদলালে তার র্যাঙ্ক বদলে অন্য অ্যাসেট পোর্টফোলিওর বাইরে চলে যেতে পারে। কৌশলের কোড ও কনফিগারেশন এক হলেও চূড়ান্ত Sharpe বদলে যেতে পারে।
ফাইল হ্যাশ জানায় দুটি ফাইলে পার্থক্য আছে। কিন্তু এতে বোঝা যায় না, স্প্লিট সমন্বয়ে 40 বছরের দাম বদলেছে, ভেন্ডর তিনটি ট্রেড সংশোধন করেছে, নাকি পার্সার ফাঁকা ঘরকে শূন্যে রূপান্তর করেছে।
বাজার-ডেটা পরিবর্তনের লগে কী রাখা উচিত?
যতটা সম্ভব ছোট কিন্তু কার্যকর এককে পরিবর্তন নথিবদ্ধ করুন, এবং প্রভাবিত গবেষণা আবার চালানোর জন্য যথেষ্ট প্রেক্ষাপট রাখুন। বার ফিডের ক্ষেত্রে সাধারণত ইন্সট্রুমেন্ট, ইন্টারভ্যাল, ঘটনার সময়, আগের ও নতুন মান, উৎস এবং আপডেটটি আপনি কখন দেখেছেন—এসব রাখা দরকার। ভেন্ডর মূল পেলোড দিলে সেটিও সংরক্ষণ করুন।
| যা নথিবদ্ধ করবেন | কেন রাখবেন | উদাহরণ |
|---|---|---|
| উৎসের সংস্করণ বা সংগ্রহের সময় | কোন ভেন্ডর-অবস্থা ব্যবহার করা হয়েছে তা শনাক্ত করে | স্ন্যাপশট সংগ্রহ: 2026-11-02 08:15 UTC |
| বদলানো ফিল্ড এবং পুরোনো/নতুন মান | আসলে কী বদলেছে তা দেখায় | ETHUSDT 1h high: 3,412.10 → 3,418.60 |
| পরিবর্তনের শ্রেণিবিভাগ | সংশোধন ও রূপান্তরের পার্থক্য বোঝায় | দেরিতে আসা ট্রেড সংশোধন, স্প্লিট সমন্বয়, ব্যাকফিল |
| পাইপলাইন ও স্কিমার সংস্করণ | উৎসের সম্পাদনা ও আপনার নিজস্ব প্রক্রিয়াকরণের পার্থক্য বোঝায় | Normalizer v7, adjusted-bar schema v3 |
বড় ডেটাসেটের ক্ষেত্রে অপরিবর্তনীয় স্ন্যাপশট এবং সেগুলোর চেকসাম, উৎসের সংস্করণ ও সংগ্রহের সময়ের সংক্ষিপ্ত ম্যানিফেস্ট রাখুন। যেসব পার্টিশন বদলেছে, সেগুলোর রো-স্তরের ডিফ যোগ করুন। এতে ব্যবহারিক ভারসাম্য থাকে: প্রতিটি অপরিবর্তিত রো দ্বিতীয় অডিট টেবিলে না লিখেও পুরো ডেটা থেকে পুনরায় চালানো সম্ভব হয়।
সংশোধনের প্রভাব কীভাবে মাপব?
বদলানো রো গোনা পর্যন্ত থেমে যাবেন না। একই কোড, প্যারামিটার, ফি এবং এক্সিকিউশন অনুমান রেখে পুরোনো ও নতুন ডেটা দিয়ে প্রভাবিত কৌশলটি আবার চালান। সিদ্ধান্তগুলো এবং ফলাফলে পৌঁছানোর পথ তুলনা করুন।
- ডিফ থেকে প্রভাবিত ইন্সট্রুমেন্ট ও ঘটনার সময় শনাক্ত করুন।
- কোন ফিচার, সিগন্যাল, অর্ডার বা পোর্টফোলিও ওয়েট ওই রেকর্ডগুলো ব্যবহার করে তা খুঁজে বের করুন।
- লুকব্যাক ও খোলা পজিশনের অবস্থা ধরে সবচেয়ে ছোট বৈধ সময়সীমা আবার চালান।
- অর্ডার, ফিল, এক্সপোজার, টার্নওভার, ড্রডাউন এবং চূড়ান্ত পারফরম্যান্স তুলনা করুন।
উদাহরণ হিসেবে, ভেন্ডরের সংশোধনে 1-minute হাই $0.02 বদলে গেলে দশ লক্ষ রো স্পর্শ হতে পারে, অথচ দৈনিক মোমেন্টাম কৌশলে কোনো প্রভাব নাও পড়তে পারে। কিন্তু স্টপ লেভেলে একটি বার সংশোধিত হলে সেটি গুরুত্বপূর্ণ হতে পারে। সিদ্ধান্তের ওপর প্রভাব মাপুন; বদলানো রেকর্ডের সংখ্যা তার ভালো বিকল্প নয়।
দুটি প্রশ্ন আলাদা করে রাখুন: “সংরক্ষিত ডেটা থেকে কি ফলটি আবার তৈরি করতে পারি?” এবং “তখন কৌশলটির নাগালে কি ডেটার এই সংস্করণটি ছিল?” পরিবর্তনের লগ—দুই প্রশ্নের উত্তর দিতেই সাহায্য করে, তবে দ্বিতীয়টির জন্য তখনকার প্রাপ্যতার রেকর্ডও দরকার।
এর খরচ কত, আর কখন এটি সার্থক?
পরিবর্তন ট্র্যাক করতে অতিরিক্ত স্টোরেজ, ডেটা গ্রহণের কাজ এবং পরিচালনাগত সিদ্ধান্ত লাগে। ভেন্ডররা স্থিতিশীল সংস্করণ নাও দিতে পারে, আর কিছু ঐতিহাসিক ফিড সংশোধনের স্পষ্ট বিজ্ঞপ্তি ছাড়াই নিয়মিত নতুন করে তৈরি হয়। যে পরিবর্তন আপনি কখনো দেখতেই পাননি, তা লগে রাখতে পারবেন না।
যেখানে সংশোধনে গবেষণার সিদ্ধান্ত বদলাতে পারে, সেখান থেকে শুরু করুন: স্টপ লজিকে ব্যবহৃত বার, কর্পোরেট অ্যাকশন-সমন্বিত ইকুইটি, পয়েন্ট-ইন-টাইম ফান্ডামেন্টাল, এবং পুনর্গঠিত ফান্ডিং বা ওপেন-ইন্টারেস্ট সিরিজ। বিস্তৃত ও স্থিতিশীল ডেটাসেটের জন্য দৈনিক ম্যানিফেস্ট এবং পার্টিশন চেকসামই যথেষ্ট হতে পারে। যেখানে আপডেট ঘনঘন হয় বা পৃথক রেকর্ডে ট্রেডের সিদ্ধান্ত সংবেদনশীল, সেখানে ফিল্ড-স্তরের ডিফ যোগ করুন।
সমালোচকদের কথা ঠিক: প্রতিটি ভেন্ডর-প্রতিক্রিয়ার পূর্ণাঙ্গ, চিরস্থায়ী আর্কাইভ ব্যয়বহুল হয়ে উঠতে পারে, তবু উৎস তখন কী জানত তা ধরে রাখতে ব্যর্থ হতে পারে। সমাধান হলো গুরুত্বপূর্ণ ডেটা ও সিদ্ধান্তের মধ্যে অডিটের পরিধি সীমিত রাখা এবং ঘাটতিগুলো নথিবদ্ধ করা। স্ন্যাপশট দিয়ে পরীক্ষা আবার চালানো যায়। পরিবর্তনের লগ দিয়ে ব্যাখ্যা করা যায়, পরীক্ষার উত্তর কেন বদলেছে।
← সব পোস্ট


