10:14 UTC-তে, একটি সাধারণ ব্রেকআউট কৌশল দাম 20-মিনিটের সর্বোচ্চ সীমা অতিক্রম করার পর একটি ক্রিপ্টো পারপেচুয়াল কিনেছিল। ব্যাকটেস্টে $64,210 দামে অর্ডার পূরণ হয়েছে বলে দেখা গেল। ডেটায় সেই সংখ্যাটি ছিল, সংকেতের টাইমস্ট্যাম্প ঠিক ছিল, আর সিমুলেটেড অর্ডারটি পরের বারে পৌঁছেছিল। আমরা প্রায় একে নির্ভুল ফলাফল বলে ধরে নিয়েছিলাম।
তারপর আমরা ইন্সট্রুমেন্ট আইডিগুলো মিলিয়ে দেখলাম। সংকেতটি এসেছিল BTCUSDT পারপেচুয়াল থেকে। অর্ডার পূরণ হয়েছিল BTCUSD ইনভার্স কন্ট্রাক্টে। দুটিই $64,210-এর কাছাকাছি দামে লেনদেন হচ্ছিল, আর দুটিই ছিল লিকুইড বাজার। তবু সেগুলো ছিল আলাদা অর্ডার বুক, আলাদা দাম, টিক সাইজ, গভীরতা ও ফি-সূচি নিয়ে। ব্যাকটেস্ট এমন একটি বাজার জুড়ে দিয়েছিল, যেখানে কোনো ট্রেডারই প্রবেশ করতে পারত না।
কৌশলটি নিজে খুব সাধারণ ছিল: চলমান সর্বোচ্চ সীমার ওপরে ক্লোজ হলে প্রবেশ, চলমান সর্বনিম্ন সীমার নিচে ক্লোজ হলে প্রস্থান, আর প্রতিটি পজিশনের আকার নির্দিষ্ট ডলার-ঝুঁকি অনুযায়ী নির্ধারণ। সমস্যা ধরা পড়ল কেবল তখনই, যখন আমরা “BTC-এর দাম কত ছিল?”-এর চেয়ে আরও নির্দিষ্ট প্রশ্ন করলাম। আমরা জানতে চাইলাম, “সেই সময়ে এই নির্দিষ্ট চুক্তিতে এই অর্ডার দিয়ে কী কেনা যেত?”
কৌশল চালানোর আগেই চার্টটি ছিল একাধিক বাজারের মিশ্রণ
আমাদের গবেষণার ফিডে বিভিন্ন ভেন্যুর তুলনা করা সহজ ছিল। এটি সিম্বলগুলোকে এক মানে রূপান্তর করে একটি সমন্বিত মূল্যধারা দেখাত। বাজার পর্যবেক্ষণের জন্য তা সুবিধাজনক ছিল; এক্সিকিউশনের রেফারেন্স হিসেবে ছিল দুর্বল। একটি সমন্বিত ধারায় বিভিন্ন এক্সচেঞ্জের সেরা দাম দেখানো যেতে পারে, যদিও কৌশলটি কেবল একটি ভেন্যুতেই অর্ডার পাঠাতে পারে।
ব্রেকআউটের সময় সমন্বিত বারের সর্বোচ্চ দাম ছিল $64,205। নির্বাচিত চুক্তিটির নিজস্ব সর্বশেষ লেনদেনের দাম তখনই $64,218-এ পৌঁছে গিয়েছিল। এদিকে, ইনভার্স কন্ট্রাক্টের একটি ক্যাশ করা কোটে তখনও $64,210-এ একটি আস্ক দেখা যাচ্ছিল। সিমুলেটরটি এক মূল্যধারা থেকে ব্রেকআউট নিয়েছিল, আর অন্যটি থেকে আকর্ষণীয় আস্ক। প্রতিটি মানই বাস্তব ছিল। কিন্তু সেগুলোর সমন্বয় ছিল কাল্পনিক।
| ইনপুট | ব্যাকটেস্টে যা ব্যবহার করা হয়েছিল | অর্ডারের জন্য যা দরকার ছিল |
|---|---|---|
| ব্রেকআউটের সর্বোচ্চ দাম | সমন্বিত BTC দাম | নির্বাচিত চুক্তির নিজস্ব মূল্য-ইতিহাস |
| প্রবেশের রেফারেন্স | ক্যাশ করা ইনভার্স-কন্ট্রাক্ট আস্ক | লেনদেন করা ইন্সট্রুমেন্টের তাজা আস্ক |
| অর্ডার পূরণের পরিমাণ | অনুরোধ করা পজিশনের আকার | প্রতিটি মূল্যস্তরে উপলভ্য পরিমাণ |
বাজার-ডেটা টেবিলের একটি সারি সম্পূর্ণ মনে হতে পারে, অথচ তার ঘরগুলোতে ভিন্ন ভিন্ন বাজারের তথ্য থাকতে পারে। সিম্বলের উপনাম মানেই যে দুটি ইন্সট্রুমেন্টের অর্ডার বুক এক, তার প্রমাণ নয়। সংকেত তৈরি থেকে এক্সিকিউশন পর্যন্ত চুক্তির আইডি, ভেন্যু, কোট মুদ্রা এবং টাইমস্ট্যাম্প একসঙ্গে রাখতে হবে।
আমরা অর্ডারটি অর্ডার বুকের বিপরীতে পুনরায় চালিয়েছি
নির্বাচিত পারপেচুয়ালটির নিজস্ব সেরা আস্ক এবং সিদ্ধান্ত নেওয়ার সময় উপলভ্য অর্ডার-বুক আপডেট ব্যবহার করে আমরা এন্ট্রিটি আবার চালিয়েছি। কোটটি তাজা ছিল, কিন্তু সেরা স্তরে ছিল মাত্র 0.18 BTC। আমাদের সিমুলেটেড অর্ডার ছিল 0.50 BTC। বাকি 0.32 BTC আরও উঁচু আস্কে গিয়ে পূরণ হতো।
ফি ধরার আগেই সমন্বিত এন্ট্রির দাম প্রতি BTC-তে দেখানো দামের চেয়ে $21 বেশি ছিল। একটি ট্রেডে এই পার্থক্য সামান্য। কিন্তু পুরো পরীক্ষায় কৌশলটির মোট মুনাফার বেশির ভাগই এসেছিল কয়েকটি দ্রুত ব্রেকআউট থেকে। সঠিক অর্ডার বুকের বিপরীতে সেই এন্ট্রিগুলো পুনরায় চালালে মোট ফল 31% কমে যায়; টেকার ফি ও বাজার-প্রভাব তা আরও কমায়।
এমন দুটি ঘটনাও আমরা পেয়েছি, যেখানে সেরা-অর্ডার-বুকের কোটটি সংকেতের সিদ্ধান্তের সময়ের পরে এসেছিল। নিকটতম টাইমস্ট্যাম্প ধরে ডেটা মেলালে ব্যাকটেস্ট নীরবে ভবিষ্যতের আপডেট বেছে নিতে পারে। এখন আমরা পেছনমুখীভাবে মিল করি: অর্ডার পাঠানোর সময়ের মধ্যে কোটটি পর্যবেক্ষণ করা হয়ে থাকতে হবে, এবং আমরা কোটটির বয়সও নথিবদ্ধ করি। সর্বশেষ ব্যবহারযোগ্য কোটটি খুব পুরোনো হলে, সিমুলেটর অর্ডারটিকে অপূর্ণযোগ্য হিসেবে চিহ্নিত করে অথবা বাসি-ডেটার স্পষ্ট নিয়ম প্রয়োগ করে।
লেনদেনযোগ্য দামের জন্য যা দরকার
বারের ক্লোজ সংকেত হিসাব করতে কাজে লাগে। কিন্তু নির্দিষ্ট কোনো অর্ডার ওই দামে পূরণ হতে পারত—এটি তা প্রমাণ করে না। তার জন্য দামটি নির্দিষ্ট ইন্সট্রুমেন্ট ও ভেন্যুর হতে হবে, অর্ডার পৌঁছানোর সময় উপলভ্য থাকতে হবে, আর অনুরোধ করা পরিমাণের জন্য বিপরীত দিকে যথেষ্ট পরিমাণ থাকতে হবে। ডেটা এসব প্রশ্নের উত্তর দিতে না পারলে, সৎ ফলাফল হবে একটি পরিসর বা অপূর্ণ অর্ডার—মনগড়া নির্দিষ্ট দাম নয়।
বাজারের প্রেক্ষাপট বোঝার জন্য আমরা সমন্বিত মূল্যধারা রেখেছি, তবে এক্সিকিউশনের ধারা থেকে সরিয়ে দিয়েছি। এখন সংকেত নির্বাচিত চুক্তিটির নিজস্ব ইতিহাসের ওপর নির্ভর করে; অর্ডারগুলো সেই চুক্তির অর্ডার বুকের বিপরীতে পুনরায় চালানো হয়, আর অর্ডার পূরণের হিসাবের পর ফি ও পরিমাণ প্রয়োগ করা হয়। বাড়তি কিছু সংযোগকাজ, আর ইকুইটি কার্ভ অনেক কম আকর্ষণীয়।
ব্রেকআউটটি সত্যিই ঘটেছিল। ব্যাকটেস্ট শুধু কৌশলটির নির্বাচিত বাজারের চেয়ে ভালো একটি বাজার তাকে দিয়েছিল।
← সব পোস্ট


