স্পেকে একটি 20-দিনের Donchian নিরীহ দেখায়। এজেন্ট একটি 20-বারের রোলিং ম্যাক্স লিখে দেয়, ব্যাকটেস্ট parquet ফাইলের প্রথম সারি থেকে শুরু হয়, আর প্রথম দুই সপ্তাহ "20-দিনের হাই" হয় শুধু যা বার আছে তার চলমান সর্বোচ্চ। চার নম্বর দিনে সেটা একটা চার-দিনের হাই। যে স্ট্র্যাটেজি আপনি পরীক্ষা করছেন বলে ভেবেছিলেন, প্রথম ডজন ফিল তৈরি করেছে সেটা সেই স্ট্র্যাটেজি নয়।
ETHUSDT ডেইলি বারে আমার একটি নোটবুক আছে যেখানে পুরো-নমুনার Sharpe 1.4। প্রথম 20 সেশন কেটে দিলে তা নেমে যায় 0.6-এ। সেই 20 রেখে প্রথম বছরের বাকিটা বাদ দিলে প্রিন্ট হয় 3.1। কেউ আগামীকাল লিক করেনি। স্ট্র্যাটেজি অতীত ব্যবহার করেছে, শুধু যথেষ্ট নয়, আর রিপোর্ট সেই অর্ধগঠিত ট্রেডগুলোকে প্রমাণ হিসেবে ধরেছে।
উইন্ডো এখনও ভরতে থাকতেই তাকে ট্রেড করতে দেওয়া
সাধারণ বিপর্যয়টা হল min_periods=1। সুযোগ দিলে Pandas একক বারেও রোলিং মিন হিসেব করে। এজেন্টরা এটা নিয়মিত করে, কারণ ফ্রেমের মাথায় একটি NaN বাগের মতো লাগে, আর সেটা ভরে দিলে ইউনিট টেস্ট সবুজ হয়ে যায়।
রিটার্নের দুটি পর্যবেক্ষণ নিয়ে 20-দিনের রিয়ালাইজড-ভল টার্গেট মানে সাইজ বিস্ফোরণ। দুটি সংখ্যার ভ্যারিয়েন্স একটা কয়েন টস, তাকে ইনভার্ট করলে প্রথম পজিশন হয় উদ্দিষ্ট ঝুঁকির কয়েক গুণ। প্রায়-শূন্য স্ট্যান্ডার্ড ডেভিয়েশনের বিপরীতে z-স্কোর একই কসরত চালায় একটি সাইন দিয়ে: স্ট্র্যাটেজির যেন একটা ক্ষুরধার এন্ট্রি আছে, যা উইন্ডো সৎ হলে আর কখনও দেখা যায় না।
ব্রেকআউট আরও খারাপ, কারণ সেগুলো আসল নিয়মের মতো দেখায়। ছয় নম্বর বারে 20-বারের চ্যানেল মানে ছয়-বারের চ্যানেল। শুরুতেই একগুচ্ছ ট্রেড পান, প্রায়ই এমন শান্ত অংশে যা সম্পূর্ণ ইন্ডিকেটরকে ট্রিগার করত না। শান্ত মার্কেট একটু ড্রিফট করে। টাইট চ্যানেল ফায়ার করে। ইকুইটি কার্ভ এমন হেড স্টার্ট পায় যা পরের কোনো বছর আর পুনরাবৃত্ত হয় না।
জিরো-ফিল আর ফরওয়ার্ড-ফিল আরেক রকম মিথ্যা বানায়। RSI 0 হলে ওভারসোল্ড পড়ে। অনুপস্থিত ATR-এর 0 ইউনিট সাইজ ফাটিয়ে দেয়, আর ব্যাকটেস্ট বিনীতভাবে এক গুদাম কিনে ফেলে। আমি চাই NaN অর্ডার মেরে দিক, 0 যেন একটি অর্ডার উদ্ভাবন না করে।
চার্টের বাঁদিকে ফাঁকা মাস অসম্পূর্ণ দেখায় বলে আমি এখনও নিজেকে row 0 থেকে প্লট করতে ধরি। ফাঁকা মাসটাই সৎ অংশ।
ইকুইটি কার্ভ কেটে নিন, পজিশন রেখে দিন
এটা কোড রিভিউ টিকে যায়। আপনি 20-দিনের ফিচার ঠিকমতো হিসেব করেন, প্লট করা কার্ভ থেকে প্রথম 20 সারি ফেলে দেন, আর 21 জানুয়ারি থেকে প্রকাশ করেন। 21 জানুয়ারির পজিশন খোলা হয়েছিল 14 জানুয়ারিতে। ট্রেইলিং স্টপের হাই-ওয়াটার, পিরামিড কাউন্ট, সেই বার্নের পরের ক্যাশ: সবই হেঁটে ঢুকে পড়েছে "পরিচ্ছন্ন" নমুনায়।
বিপর্যয়টা এমন এক পেপার স্ট্র্যাটেজি যা রাইট-আপের তারিখে শুরু করা যায় না। রিপোর্ট করা শুরু থেকে ফ্ল্যাট রিস্টার্ট করলে প্রথম সপ্তাহের অর্ডার মিলতে চায় না। কখনও ব্যাকটেস্ট ইতিমধ্যে এমন ট্রেডে আছে যা পেপার সিস্টেমের ঢোকার কোনো কারণ নেই। কখনও পেপার সিস্টেম ঢোকে কারণ তার লুকব্যাক ঠান্ডা, আর ব্যাকটেস্ট বসে থাকে কারণ তার লুকানো মাস ইতিমধ্যে ব্রেকআউট নিয়ে নিয়েছে। দুটি ওপেনিং বুক, একটি প্রকাশিত শুরুর তারিখ।
ওয়াক-ফরওয়ার্ড ফোল্ড এটা চুপিচুপি করে। প্রতিটি টেস্ট উইন্ডোর একটি লুকব্যাক লেজ থাকে যা আপনি প্লট করেন না। সেই লেজ সিমুলেট না করলে প্রথম টেস্ট ট্রেড আবার অসম্পূর্ণ-উইন্ডোর ট্রেড। সিমুলেট করে শুধু টেস্ট দিনগুলো রিপোর্ট করলে, টেস্ট দিনের পজিশন নির্ভর করে এমন ফিলের উপর যা আপনি দেখাচ্ছেন না। দ্বিতীয় ভার্সনটি বৈধ গবেষণার পছন্দ হতে পারে। ফোল্ডের প্রথম সকালকে কোল্ড স্টার্ট বলা, যখন ট্রেইলিং স্টপ লেজ থেকেই ইতিমধ্যে লাইভ, এভাবেই দুই গবেষক এক কনফিগ থেকে দুটি Sharpe পান।
ফিচার দিন না হলেও ক্যালেন্ডার দিনে ওয়ার্মআপ
"একে 30 দিন দাও" ফিচারকে অস্পষ্ট রাখে। 5-মিনিটের Donchian-এ ত্রিশ ক্যালেন্ডার দিন মানে 20-পিরিয়ড লুকব্যাকের চেয়ে হাজার হাজার বার বেশি। 20 সেশন লাগে এমন দৈনিক ফিচারে ত্রিশ দিন হয় মোটা, নয় পাতলা, সপ্তাহান্ত আর ফাঁকের উপর নির্ভর করে।
আমাদের একটি perp ভেন্যুর ফান্ডিং-রেট z-স্কোরে 30-দিনের ওয়ার্মআপ পড়েছিল, কারণ স্পেক বলেছিল 30 পিরিয়ড আর কেউ পিরিয়ডকে ক্যালেন্ডারে অনুবাদ করেছিল। সেখানে ফান্ডিং প্রিন্ট হয় প্রতি আট ঘণ্টায়। ত্রিশ দিন মানে প্রায় 90 সেটেলমেন্ট। ত্রিশ পিরিয়ড মানে দশ দিন। অতিরিক্ত দুই মাসের বার্ন-ইন-এ কাকতালীয়ভাবে একটি ডিপেগ সপ্তাহ পড়েছিল। সেটা বাদ দিলে লাইভ উইন্ডো স্ট্র্যাটেজির আসল ইতিহাসের চেয়ে শান্ত দেখাল। লোকে শুরুর-তারিখ সংবেদনশীলতাকে দোষ দিল। ওয়ার্মআপ রেজিম খেয়ে ফেলেছিল।
আর ক্রিপ্টো বনাম ইকুইটি একই সংখ্যার অর্থ বদলে দেয়, কেউ কোনো প্যারামিটার সম্পাদনা না করেই। ETH-এর বিশটি "দিন"-এ শনিবার থাকে। বিশটি ইকুইটি সেশন প্রায় এক ক্যালেন্ডার মাস। স্টক নোটবুক থেকে 20-দিনের লুকব্যাক ঘণ্টার পারপেচুয়াল ক্যান্ডেলে কপি করলে আপনার হাতে থাকে 20-দিনের নামে একটি 20-ঘণ্টার চ্যানেল। তখন প্রথম বৈধ বার হয় হয় 20 ঘণ্টা পরে, নয়তো 20 দিন পরে যদি কোনো পরের ফাংশন রিস্যাম্পল করে, আর আমি একই এজেন্ট ডিফে দুটোই দেখেছি।
প্রথম ট্রেডযোগ্য টাইমস্ট্যাম্প পিন করুন
ওয়ার্মআপ একটি ডেটা প্রয়োজনীয়তা, বোনাস নমুনা নয়। প্রতিটি ফিচার বলে তার কতগুলো সম্পূর্ণ পর্যবেক্ষণ দরকার, যে এককে সে হিসেব হয় সেই এককে। প্রথম ট্রেডযোগ্য টাইমস্ট্যাম্প সেই প্রথম বার যেখানে এসব সত্য এবং একটি ফ্ল্যাট অ্যাকাউন্টকে অর্ডার পাঠানোর অনুমতি থাকত।
| ফিচার | স্পেক সাধারণত যা বলে | আসলে কী থাকতে হয় | নীরব বিকল্প |
|---|---|---|---|
| 20-দিনের Donchian | 20টি দৈনিক হাই | 20টি সম্পূর্ণ সেশন | min_periods=1 সহ রানিং ম্যাক্স |
| 30-দিনের রিয়ালাইজড ভল | 30-দিনের উইন্ডো | 30টি ক্লোজ-টু-ক্লোজ রিটার্ন | দুই-দিনের ভ্যারিয়েন্স, সাইজে ইনভার্ট করা |
| 20-প্রিন্ট ফান্ডিং z-স্কোর | 20 দিন | 20টি ফান্ডিং সেটেলমেন্ট | 20 ক্যালেন্ডার দিন (~90 প্রিন্ট), অথবা ভুল টাইমফ্রেমের 20 বার |
| 5m-এ 14-পিরিয়ড RSI | 14 পিরিয়ড | 14টি বন্ধ পাঁচ-মিনিটের বার | 14 দিন, অথবা গ্যাপ ফরওয়ার্ড-ফিল করা 14 বার |
সেই টাইমস্ট্যাম্পের আগের P&L ট্র্যাক রেকর্ডের বাইরে থাকে। সেই টাইমস্ট্যাম্পের আগের স্টেট এখনও সিমুলেট করতে হতে পারে, যাতে ঘড়ি প্রথম ট্রেডযোগ্য বারে পৌঁছালে ট্রেইলিং স্টপ বা কুলডাউন বাস্তব হয়, কিন্তু সেই ফিল Sharpe, ট্রেড কাউন্ট, বা ক্যাপাসিটি ম্যাথে যায় না। তারপর বিশ্রী চেক চালান: সেই টাইমস্ট্যাম্পে ফ্ল্যাট থেকে রিস্টার্ট, লুকব্যাক শুধু ডেটা হিসেবে উপলব্ধ। অর্ডার বদলালে আপনি লুকানো ট্রেড শিপ করছিলেন।
পেপার ট্রেডিং একই কন্ট্রাক্টে শুরু হয়। প্রতিটি ওয়াক-ফরওয়ার্ড টেস্ট উইন্ডোও তাই। চার্ট যদি এক মাস হারানোর মতো দেখায়, হারানোই থাকুক।
← সব পোস্ট


