সোমবার, আমাদের AI গবেষণা এজেন্ট 4.1 Sharpe ratio-সহ একটি ক্রিপ্টো ফিউচার্স কৌশল খুঁজে পেল। বৃহস্পতিবারের মধ্যে, পরীক্ষাগুলো গুনে এবং একই ভ্যালিডেশন সময়সীমার বিপরীতে এজেন্টকে আর টিউন করতে না দিয়ে, ফল দাঁড়াল 0.8। কৌশলটি বদলায়নি। অনুসন্ধানে আসলে কী পাওয়া গেছে, সে সম্পর্কে আমাদের অনুমান বদলেছিল।
এটিকে আমরা ছোট একটি গবেষণা ডায়েরি হিসেবে চালিয়েছি, কারণ “সাবধানে অপ্টিমাইজ করুন” বলা সহজ, কিন্তু কোনো এজেন্ট যখন কোড লিখতে, ব্যাকটেস্ট চালাতে, স্কোর দেখতে এবং কয়েক মিনিটের মধ্যে আবার চেষ্টা করতে পারে, তখন সেই পরামর্শ বাস্তবে প্রয়োগ করা কঠিন। কী কী সমস্যা হলো, ধারাবাহিকভাবে তা এখানে তুলে ধরছি।
সোমবার: এজেন্টকে নির্দিষ্ট সীমার মধ্যে প্রশ্ন দিন
আমরা এজেন্টকে একটি তরল পারপেচুয়াল ফিউচার্স মার্কেটে সহজ একটি ঘণ্টাভিত্তিক ট্রেন্ড ধারণা পরীক্ষা করতে বলেছিলাম: স্বল্পমেয়াদি মুভিং অ্যাভারেজ দীর্ঘমেয়াদিটিকে অতিক্রম করলে পজিশনে ঢোকা, নির্দিষ্ট ভোলাটিলিটি লক্ষ্যমাত্রা অনুযায়ী পজিশনের আকার ঠিক করা, আর বিপরীত সংকেত এলে পজিশন বন্ধ করা। আমরা ইনস্ট্রুমেন্ট, তারিখ, ফি সূচি, ফান্ডিং ইতিহাস, এক্সিকিউশনের অনুমান এবং অনুসন্ধানের জন্য প্যারামিটারের সীমা নির্দিষ্ট করে দিয়েছিলাম।
ঐতিহাসিক নমুনাটি 2021 থেকে 2025 পর্যন্ত চলেছিল। আমরা 2021–2023-কে ডেভেলপমেন্ট, 2024-কে ভ্যালিডেশন হিসেবে নির্ধারণ করি এবং 2025-কে চূড়ান্ত হোল্ডআউট হিসেবে সিল করে রাখি। এই বিভাজন কাজের কনফিগারেশনে লেখা ছিল, তাই এজেন্ট ডেভেলপমেন্টের ফল ও ভ্যালিডেশন স্কোর দেখতে পারত, কিন্তু হোল্ডআউটের রিটার্ন পেতে পারত না।
আমাদের প্রথম ভুল ছিল একটি কাজেই 300টি প্যারামিটার সমন্বয় চালাতে দেওয়া, অথচ অনুসন্ধানের বাজেটকে গবেষণার ফল হিসেবে নথিভুক্ত না করা। এজেন্ট সেরা ফলটি জানাল: 9-hour fast average, 73-hour slow average এবং 0.8% volatility target। এর ভ্যালিডেশন Sharpe ছিল 4.1। আমরা জানতাম এজেন্ট বহু সেটিং পরীক্ষা করেছে। কিন্তু সেই তথ্য ভুলে যাওয়া অসম্ভব করে তোলার ব্যবস্থা তখনও করিনি।
মঙ্গলবার: আবার চালাতেই বিজয়ী বদলে গেল
আমরা পরিষ্কার পরিবেশ থেকে একই কাজ আবার চালালাম। সেরা সেটিং বদলে গেল, আর Sharpe নেমে এল 2.7-এ। প্রথমবার মার্কেট-ডেটা ক্যাশে আপডেট করা ফান্ডিং সিরিজ দিয়েছিল, আর পুনরায় চালানোতে ব্যবহৃত হয়েছিল নির্দিষ্ট সংস্করণের স্ন্যাপশট। দুই কাজই একই তারিখসীমা ব্যবহারের দাবি করেছিল; কিন্তু একটিরই ডেটা সংস্করণ পুনরায় তৈরি করা সম্ভব ছিল।
আমরা স্কোর তুলনা করা থামিয়ে পুরো পরীক্ষার বিবরণ নথিভুক্ত করতে শুরু করলাম: কোড রিভিশন, ডেটা স্ন্যাপশট, ফি, ফান্ডিং, এক্সিকিউশন সেটিং, প্যারামিটারের মান এবং এজেন্ট চালানো প্রতিটি ট্রায়াল। এতে দেখা গেল, 4.1 কোনো রহস্যময় বাজারগত সুবিধা ছিল না। একই ভ্যালিডেশন বছরের ওপর 300টি চেষ্টার অনুসন্ধানে সেটি ছিল মাত্র একটি সেটিংয়ের ফল।
বুধবার: হোল্ডআউট খোলার আগে অনুসন্ধান থামান
আমরা নির্দিষ্ট ডেটা স্ন্যাপশট এবং আগে থেকে ঘোষিত ছোট গ্রিড—24টি সমন্বয়—ব্যবহার করে পরীক্ষা আবার চালালাম। এজেন্ট 2021–2023-এর ডেভেলপমেন্ট সময়কালে সেগুলোর ক্রম নির্ধারণ করতে পারত। বাছাইয়ের জন্য 2024 একবার দেখতে দিলাম, তারপর নির্বাচিত সেটিং ও কোড লক করে দিলাম।
নির্বাচিত কৌশলটি ভ্যালিডেশনে 0.8 Sharpe পেল। সিল করা 2025 হোল্ডআউটে, taker ফি, ফান্ডিং এবং পুরো গবেষণায় প্রয়োগ করা একই এক-বার এক্সিকিউশন বিলম্বের পর স্কোর ছিল 0.3। এটি কাজে লাগার মতো উত্তর ছিল। তবে লাইভ অ্যাকাউন্টে কৌশলটি লাভ করবে—এমন প্রমাণ ছিল না।
এই সপ্তাহের একটি ছোট প্রসঙ্গ: মুভিং-অ্যাভারেজের কোড লেখার চেয়ে “একটি ট্রায়াল” বলতে কী বোঝায়, তা নিয়ে একমত হতে আমাদের বেশি সময় লেগেছিল। প্যারামিটারের সেট বদলালে সেটিকে একটি ট্রায়াল হিসেবে গুনেছি, আর সংকেত বা পজিশনের আকার নির্ধারণের নিয়ম বদলানো রানও গুনেছি। নতুন ডেটা স্ন্যাপশট বা এক্সিকিউশনের অনুমানের জন্য আলাদা রান রেকর্ড রেখেছি, কারণ সেগুলোও একইভাবে ফলের ক্রম বদলে দিতে পারে।
বৃহস্পতিবার: পরেরবার যা বাদ দেব
প্রথমবারের খোলামেলা কাজটি আমরা বাদ দেব। একটি গবেষণা এজেন্টের অনুসন্ধানের বাজেট এবং সে কী কী চেষ্টা করেছে তার রেকর্ড দরকার, বিশেষ করে যখন প্রতিটি ফলের ভিত্তিতে সে পরের চেষ্টা বেছে নিতে পারে। অনানুষ্ঠানিকভাবে উঁকি দেওয়া থেকেও হোল্ডআউটকে সুরক্ষিত রাখতে হবে: কেউ এর ফল পড়ে কৌশল বদলালেই, সেটি আর হোল্ডআউট থাকে না—আরেকটি ভ্যালিডেশন সেটে পরিণত হয়।
ছোট পরিসরের অনুসন্ধানের জন্য পরীক্ষার একটি ব্যবহারিক খতিয়ান সহজ ও স্পষ্ট হতে পারে:
| যা নথিভুক্ত করবেন | কেন তা জরুরি |
|---|---|
| কোড ও ডেটার সংস্করণ | যাতে পুনরায় চালালে একই ইনপুট ও লজিক ব্যবহৃত হয় |
| চেষ্টা করা প্রতিটি ভ্যারিয়েন্ট | যাতে অনুসন্ধানের প্রেক্ষাপটে বিজয়ীকে বোঝা যায় |
| ডেভেলপমেন্ট, ভ্যালিডেশন ও হোল্ডআউটের ভূমিকা | যাতে চূড়ান্ত স্কোর নীরবে আবার টিউনিংয়ে ব্যবহার না হয় |
| ফি, ফান্ডিং ও এক্সিকিউশনের অনুমান | যাতে জানানো ফলটি পরীক্ষা করা যায় এমন সিমুলেশনকে বর্ণনা করে |
হোল্ডআউট খোলার পর নতুন গবেষণা প্রশ্ন নিয়ে ডেভেলপমেন্টে ফিরে যান, আর আগের ফলকে ঐতিহাসিক প্রমাণ হিসেবে সংরক্ষণ করুন। যে সময়সীমা কৌশলটি ইতিমধ্যে দেখেছে, তার বিপরীতে সেটিকে ঘষেমেজে উন্নত করতে থাকবেন না।
এজেন্ট তার কাজ করেছে: দ্রুত অনুসন্ধান করে খতিয়ে দেখার মতো একটি কনফিগারেশন পেয়েছে। আমাদের কাজ ছিল অনুসন্ধানকে বোধগম্য করে তোলা, একটি অক্ষত পরীক্ষা সংরক্ষণ করা এবং স্কোরকে অতীতসহ একটি পরিমাপ হিসেবে দেখা। মজার ফলটি 4.1 বা 0.3 ছিল না। প্রথম সংখ্যাটি ঠিক কীভাবে তৈরি হয়েছিল, তা দেখা।
← সব পোস্ট


