আপনার একটি ছোট ক্রিপ্টো ফিউচারস কৌশল আছে, যা কয়েকটি কন্ট্রাক্টে ট্রেড করে, আর আপনি সেটিকে সবে ব্যাকটেস্ট থেকে পেপার ট্রেডিংয়ে নিয়েছেন। প্রথম রিব্যালেন্সে 0.037 BTC চাওয়া হলো। আপনার সিমুলেটর সেটি গ্রহণ করল; কিন্তু ভেন্যু প্রত্যাখ্যান করল, কারণ কন্ট্রাক্টের পরিমাণের ধাপ 0.001 এবং অর্ডারটি রাউন্ড করার পর ন্যূনতম নোটেশনালের নিচে নেমে যায়। আপনার পজিশন শূন্যই থাকে, অথচ ব্যাকটেস্টে ফিল নথিভুক্ত হয়।
এই অমিলকে ফরম্যাটিংয়ের ত্রুটি ভেবে উড়িয়ে দেওয়া সহজ। কিন্তু এর ফলে আপনি কোন অ্যাসেট ধরে রাখবেন, কখন রিব্যালেন্স করবেন এবং অর্ডার ব্যর্থ হওয়ার পর কতটা ঝুঁকি থেকে যাবে—সেগুলোও বদলে যেতে পারে। প্রতিটি ভেন্যুর ট্রেডিং ফিল্টারকে কৌশলের এক্সিকিউশন নিয়মের অংশ হিসেবে ধরুন, আর ব্যাকটেস্ট ও পেপার অ্যাডাপ্টারকে একই নিয়ম একই ক্রমে প্রয়োগ করান।
কোন এক্সচেঞ্জ ফিল্টার অর্ডারকে অকার্যকর করতে পারে?
আপনার অর্ডারের জন্য প্রয়োজনীয় ইন্সট্রুমেন্ট মেটাডেটা দিয়ে শুরু করুন: পরিমাণের ইনক্রিমেন্ট, ন্যূনতম পরিমাণ, ন্যূনতম নোটেশনাল, প্রাইস ইনক্রিমেন্ট এবং অর্ডারের আকার বা প্রাইস ব্যান্ডের যেকোনো সীমা। ভেন্যুভেদে এগুলোর নাম ও প্রযোজ্য ক্ষেত্র আলাদা হতে পারে। কোনো স্পট পেয়ারের ন্যূনতম সীমা তার পারপেচুয়াল কন্ট্রাক্টের থেকে আলাদা হতে পারে; আপনার কৌশল চলার সময়ও ফিল্টার বদলে যেতে পারে।
ধরুন, একটি কন্ট্রাক্টে আপনার লক্ষ্য পজিশনের মূল্য $12, আর ন্যূনতম অর্ডার মূল্য $10। পরিমাণের ধাপে রাউন্ড করার পর অর্ডারটি যদি $9.80 হয়, তাহলে আনরাউন্ডেড লক্ষ্য ন্যূনতম সীমা পার করলেও অর্ডারটি অকার্যকর। রাউন্ড করে $10.20 করলে অর্ডারটি বৈধ হতে পারে, তবে লক্ষ্যমাত্রার চেয়ে $0.20 বেশি হয়ে যায়। অ্যাকাউন্ট ছোট হলে বা কৌশলটি অনেক ইন্সট্রুমেন্টে ট্রেড করলে এই পার্থক্য উল্লেখযোগ্য হতে পারে।
| নিয়ম | কী নিয়ন্ত্রণ করে | ব্যাকটেস্টে এর প্রভাব |
|---|---|---|
| পরিমাণের ধাপ | অর্ডারের আকারে অনুমোদিত পরিবর্তন | রাউন্ড করা আকার লক্ষ্যমাত্রা থেকে আলাদা হয় |
| ন্যূনতম পরিমাণ বা নোটেশনাল | গ্রহণযোগ্য সবচেয়ে ছোট অর্ডার | কিছু ট্রেড নিষ্ক্রিয় হয়ে যায়, অথবা রাউন্ড করে পরিমাণ বাড়াতে হয় |
| প্রাইস টিক | অনুমোদিত লিমিট ও ট্রিগার প্রাইস | প্রাইস রাউন্ডিং অর্ডার এক্সিকিউট হওয়ার সম্ভাবনা বদলে দেয় |
| প্রাইস ব্যান্ড বা আকারের সর্বোচ্চ সীমা | অর্ডার ফিল্ডের ওপর ভেন্যু নির্ধারিত সীমা | বাজারে অস্থিরতা বা বড় রিব্যালেন্সের সময় অর্ডার প্রত্যাখ্যাত হতে পারে |
অর্ডার প্রক্রিয়ার কোন ধাপে রাউন্ডিং করবেন?
কাঙ্ক্ষিত পজিশন পরিবর্তন হিসাব করার পর এবং অর্ডার পাঠানোর সিদ্ধান্ত নেওয়ার আগে অর্ডার ফিল্ডগুলো রাউন্ড করুন। বিশ্লেষণের জন্য আনরাউন্ডেড লক্ষ্যটি রেখে দিন, তারপর বর্তমান পজিশন, কন্ট্রাক্ট মাল্টিপ্লায়ার ও ভেন্যুর ইনক্রিমেন্ট ব্যবহার করে এক্সিকিউট করা যায় এমন অর্ডার তৈরি করুন। বিক্রির পরিমাণের ধাপ 0.001 হলে, 0.0017 কমানোর লক্ষ্য আপনার নির্দিষ্ট নিয়ম অনুযায়ী হয় 0.001, নয়তো 0.002 হবে। এতে অবশিষ্ট পজিশন আলাদা হবে, তাই “প্রিসিশন অনুযায়ী রাউন্ড করুন” সম্পূর্ণ কোনো নীতি নয়।
পরিমাণের ক্ষেত্রে শূন্যের দিকে ফ্লোর করলে অনুরোধের চেয়ে বেশি এক্সপোজার অনিচ্ছাকৃতভাবে বাড়ে না, তবে এতে ছোট ছোট অবশিষ্ট পজিশন থেকে যেতে পারে, যেগুলো কখনোই ট্রেড হয় না। নিকটতম মানে রাউন্ড করলে গড় বিচ্যুতি কম থাকে, যদিও এতে লক্ষ্যমাত্রা ছাড়িয়ে যেতে পারে। ন্যূনতম নোটেশনাল সামলানোর জন্য আলাদা সিদ্ধান্ত দরকার: ট্রেড বাদ দিন, সীমা পার হওয়া পর্যন্ত জমতে দিন, অথবা পরিমাণ বাড়িয়ে অতিরিক্ত অংশ মেনে নিন। এই আচরণগুলোর মধ্যে নীরবে বদল করবেন না।
আর অর্ডারটি কেন হয়নি, সেই কারণটিও সংরক্ষণ করুন। “অর্ডার নেই: ন্যূনতম নোটেশনালের নিচে” আর “শূন্যে ফিল হয়েছে”—দুটি আলাদা তথ্য দেয়। পোর্টফোলিও রিব্যালেন্সে কোনো অর্ডার বাদ পড়লে নগদ অব্যবহৃত থাকতে পারে, অথবা পুরোনো অ্যাসেটে এক্সপোজার বজায় থাকতে পারে; অ্যাকাউন্টের অবস্থায় সেই ফল নথিভুক্ত করুন।
ব্যাকটেস্ট ও পেপার এক্সিকিউশন কীভাবে সামঞ্জস্যপূর্ণ রাখবেন?
আপনার সিস্টেমের আর্কিটেকচারে সম্ভব হলে দুই পথেই একই অর্ডার যাচাইয়ের ফাংশন ব্যবহার করুন। এতে একই সময়-সংশ্লিষ্ট ইন্সট্রুমেন্ট নিয়ম, কাঙ্ক্ষিত অর্ডার ও অ্যাকাউন্টের অবস্থা দিন। ফাংশনটি হয় নর্মালাইজ করা অর্ডার, নয়তো প্রত্যাখ্যানের নির্দিষ্ট কারণ ফেরত দেবে। এরপর সিমুলেটর নর্মালাইজ করা অর্ডারে তার ফিলের অনুমান প্রয়োগ করতে পারবে, আর পেপার অ্যাডাপ্টার ভেন্যুতে সমতুল্য ফিল্ড পাঠাতে পারবে।
প্রতিটি রানসহ ফিল্টার মেটাডেটার তারিখযুক্ত স্ন্যাপশট রাখুন। পরিমাণের ইনক্রিমেন্ট বা ন্যূনতম সীমা বদলালে, ব্যাকটেস্টে কোন নিয়ম ব্যবহৃত হয়েছিল তা জানা দরকার। এক বছর আগের কৌশল আবার চালানোর সময় আজকের মেটাডেটা আনলে পুরোনো অর্ডারকে অকার্যকর মনে হতে পারে, অথবা এমন দেখাতে পারে যে ঐতিহাসিক অর্ডার সম্ভব ছিল, যদিও বাস্তবে তা ছিল না।
পেপার ভেন্যু অর্ডার প্রত্যাখ্যান করলে, সিগন্যাল বদলানোর আগে পাঠানো ফিল্ড ও ফিল্টারের স্ন্যাপশট মিলিয়ে দেখুন। ব্যাকটেস্টের অর্ডার নর্মালাইজার যদি 0.037 BTC তৈরি করে, অথচ ভেন্যু 0.001 BTC-এর ইনক্রিমেন্ট অনুমোদন করে, তাহলে অমিলটি অ্যাডাপ্টার বা মেটাডেটায়। পাঠানো অর্ডার বৈধ ছিল কিন্তু ফিল হয়নি—এমন হলে আপনি এক্সিকিউশনের আচরণ দেখছেন, যেমন প্রাইস, লিকুইডিটি বা টাইম ইন ফোর্স।
তুলনাটি বিশ্বাস করার আগে কী যাচাই করবেন?
প্রতিটি রিব্যালেন্সের জন্য একটি সংক্ষিপ্ত অডিট ট্রেইল রাখুন: লক্ষ্য পজিশন, বর্তমান পজিশন, কাঁচা অর্ডার, নর্মালাইজ করা অর্ডার, প্রযোজ্য ফিল্টার সংস্করণ এবং চূড়ান্ত অবস্থা। তারপর একই সিদ্ধান্তের সময়ের পেপার ও সিমুলেটেড রেকর্ড তুলনা করুন।
- দুই পথেই কি একই কন্ট্রাক্ট মাল্টিপ্লায়ার ও পরিমাণের একক ব্যবহার করা হয়েছিল?
- রাউন্ডিংয়ের একই দিক ও ন্যূনতম অর্ডারের নীতি কি প্রয়োগ করা হয়েছিল?
- অর্ডার তৈরির সময় ফিল্টারের মানগুলো কি বৈধ ছিল?
- প্রত্যাখ্যাত বা বাদ পড়া অর্ডারের পর দুই অ্যাকাউন্টেই কি একই পজিশন ও নগদ ছিল?
প্রথম পেপার রিব্যালেন্স ব্যর্থ হলেও আপনার কৌশলটি কার্যকর থাকতে পারে। কিন্তু সিমুলেটর যতক্ষণ না ব্যাখ্যা করতে পারে কেন অর্ডারটি গৃহীত, রাউন্ড, বাদ বা প্রত্যাখ্যাত হতো, ততক্ষণ তার ইকুইটি কার্ভ আপনি যে এক্সিকিউশন সিস্টেম চালাতে চাইছেন, সেটির নয়—অন্য একটি সিস্টেমের বর্ণনা দেয়।
← সব পোস্ট

