পলিমার্কেট বট টিউটোরিয়াল ·
পলিমার্কেটে স্ট্যাটিস্টিক্যাল আরবিট্রাজ: ক্রস-মার্কেট পেয়ার (সম্পর্কিত ঘটনা), পলিমার্কেট-vs-ক্যালশি স্প্রেড, মিন রিভার্শন, এবং বাজার শেষমেশ নিষ্পত্তি হলে stat-arb পজিশন কীভাবে সাইজ করতে হয়।
এই অধ্যায়ে কী আছে
পলিমার্কেটে স্ট্যাটিস্টিক্যাল আরবিট্রাজ সম্পর্কিত বাজারের মধ্যে ক্ষণস্থায়ী ভুল-মূল্যায়ন কাজে লাগায় - একই ঘটনা পলিমার্কেট বনাম ক্যালশি-তে, অথবা পলিমার্কেটের ভেতরে সম্পর্কিত বাজারে। এজ ছোট (সাধারণত ১-৩ সেন্ট) এবং পরিচালনগতভাবে ভঙ্গুর। এই অধ্যায়ে কী কাজ করে, কী কাজ করে না, আর যে মাল্টি-লেগ এক্সিকিউশন ঝুঁকি বেশিরভাগ চেষ্টাকে ধ্বংস করে - সবকিছুর সৎ বিশ্লেষণ আছে।
ক্রস-মার্কেট স্ট্যাটিস্টিক্যাল আরবিট্রাজ পলিমার্কেট ও ক্যালশি, পলিমার্কেট ও Manifold, বা পলিমার্কেটের ভেতরে সম্পর্কিত বাজারের মধ্যে ক্ষণস্থায়ী দাম-অসঙ্গতি কাজে লাগায়। এজ ছোট (সাধারণত ১-৩ সেন্ট) এবং দুই লেগে দ্রুত এক্সিকিউশন দরকার। এই অধ্যায়ে পরিচালনগত জটিলতাসহ সৎ প্লেবুক আছে, যা বেশিরভাগ চেষ্টাকে ব্যর্থ করে।
- পূর্বাভাস বাজারে stat-arb কী বোঝায়
- পলিমার্কেট-vs-ক্যালশি স্প্রেডের উদাহরণ
- পলিমার্কেটের ভেতরে পেয়ার (সম্পর্কিত ঘটনা)
- মিন রিভার্শন বনাম ট্রেন্ড ধারাবাহিকতা
- নিষ্পত্তিশীল (পারপেচুয়াল নয়) বাজারের জন্য সাইজিং
- ঝুঁকি: নিষ্পত্তির পরেও বিচ্যুতি
- কোড: পেয়ার মনিটর এবং থ্রেশহোল্ড-ট্রিগার
পূর্বাভাস বাজারে stat-arb কী বোঝায়
পূর্বাভাস বাজারে স্ট্যাটিস্টিক্যাল আরবিট্রাজ মানে এমন দুটি বাজারের স্প্রেড ট্রেড করা, যেগুলো ধারাবাহিকভাবে একইরকম দামে থাকার কথা। পলিমার্কেটে তিনটি ধরন সাধারণ।
- ক্রস-ভেন্যু: পলিমার্কেট ও ক্যালশি-তে একই ঘটনা (অথবা Manifold, PredictIt)। দাম মিলে যাওয়ার কথা; বাস্তবে ২-৫ সেন্ট সরে যায়।
- একই-ঘটনার পেয়ার: NegRisk মাল্টি-আউটকাম বাজারে প্যারেন্ট বনাম লেগগুলোর যোগফল। যোগফল-১ ইনভ্যারিয়েন্ট লেগগুলোর যোগ 1.0-এর নিচে হলে আরব করার সুযোগ দেয়।
- সম্পর্কিত-ঘটনার পেয়ার: সম্পর্কিত ফলাফলযুক্ত দুটি বাজার (যেমন, "Trump president on Jan 1" বনাম "Trump president on Mar 1")। একে অপরের ২-৩ সেন্টের মধ্যে দাম হওয়ার কথা।
এজ ছোট। পরিচালনগত জটিলতা বাস্তব। বেশিরভাগ চেষ্টা তত্ত্বে নয়, এক্সিকিউশনে মারা যায়।
পলিমার্কেট-vs-ক্যালশি স্প্রেডের উদাহরণ
2025-26-এর পর্যবেক্ষণ অনুযায়ী, পলিমার্কেট ও ক্যালশি একই প্রধান মার্কিন ঘটনা তালিকাভুক্ত করে কিন্তু স্থিরভাবে ১-৪ সেন্ট আলাদা দামে রাখে। এই ব্যবধান কাঠামোগত কারণে থাকে, আর যেকোনো আরবে আপনাকে এটি মডেল করতে হবে।
কাঠামোগত চালক:
- ফি-অসাম্য: ক্যালশি জয়ী ট্রেডে ৪-৭% নেয় (বাজারভেদে পরিবর্তিত); পলিমার্কেটের টেকার ফি ০। আরবের হিসাবে ক্যালশি-র কামড় বাদ দিতে হবে।
- নিষ্পত্তি-ঝুঁকির প্রিমিয়াম: কোনো বাজারের নিষ্পত্তি অস্পষ্ট হলে, এক ভেন্যুর UMA অন্যটির বিচারকদের তুলনায় আলাদাভাবে নিষ্পত্তি করতে পারে। বাজার এটি দামে ধরে রাখে।
- ট্রেডার-জনসংখ্যা: পলিমার্কেট তুলনামূলকভাবে তরুণ ও বেশি ক্রিপ্টো-নেটিভ; ক্যালশি পেশাদার / হেজের দিকে ঝোঁকে। একই ঘটনায় তারা ব্যবস্থাগতভাবে দ্বিমত করে।
ব্যবধান কাঠামোগত প্রিমিয়াম ও ফি-র চেয়ে বড় হলে আরব কাজ করে। যেখানে কাঠামোগত প্রিমিয়াম ১c এবং মোট ফি ১c, সেখানে ৫-সেন্ট ব্যবধান মানে ৩c-এর আসল এজ।
পলিমার্কেটের ভেতরে পেয়ার (সম্পর্কিত ঘটনা)
পলিমার্কেটের ভেতরে সম্পর্কিত-ঘটনার পেয়ার ক্রস-ভেন্যুর তুলনায় আরব করা সহজ। একই ফি-কাঠামো, একই ওয়ালেট, পরমাণু (atomic) এক্সিকিউশন সম্ভব।
যেসব উদাহরণ ধারাবাহিকভাবে অসঙ্গতভাবে দামায়িত হয়:
- Trump president on date A বনাম Trump president on date B (যেখানে B, A-এর চেয়ে ৯০ দিনের কম পরে)।
- Will Bitcoin hit $100k by July 31 বনাম $100k by August 31।
- একই বাইনারি বাজারে Yes বনাম No লেগ (যোগফল = 1.0 হওয়া উচিত; পাতলা বুকে কখনও 1.04 পর্যন্ত সরে যায়)।
Yes+No=1 আরব সবচেয়ে পরিষ্কার: একই বাজারের দুই লেগ পড়ুন, যোগফল 0.97-এর নিচে নামলে দুটিতেই FOK ছুড়ুন (স্প্রেড কর ধরার জন্য)। প্রয়োজনীয় পুঁজি দুই লেগে প্রায় সমান; দুই ফিল একই রেসপন্সে এলে এক্সিকিউশন পরমাণু হয়।
মিন রিভার্শন বনাম ট্রেন্ড ধারাবাহিকতা
Stat-arb-এর দুটি ধারা। মিন রিভার্শন: পেয়ার নয়েজের কারণে আলাদা হয়ে গেছে; আপনি মিলে যাওয়ার উপর বাজি ধরছেন। ট্রেন্ড ধারাবাহিকতা: নতুন তথ্য এসেছে বলে পেয়ার সরতে শুরু করেছে; আপনি আরও বিচ্যুতির উপর বাজি ধরছেন।
এগুলো আলাদা করা কঠিন। কৌশল: বিচ্যুতি যদি দৃশ্যমান ভলিউমে ঘটে থাকে (একটি হোয়েল এক লেগের বুক সরিয়ে দিয়েছে), তবে সেটা খবর - আপনার মডেল থাকলে তবেই ফেড করুন। ধীরে ধীরে কম ভলিউমে সরে গেলে সেটা নয়েজ - আস্থা নিয়ে রিভার্শন ট্রেড করুন।
নতুন নির্মাতাদের জন্য: শুধু মিন রিভার্শন ট্রেড করুন, এমন পেয়ারে যেখানে বিচ্যুতি ঐতিহাসিক প্রবাহের ১ স্ট্যান্ডার্ড ডেভিয়েশনের কম। ট্রেন্ড ধারাবাহিকতার জন্য এমন মডেল দরকার যা খবর ধরতে পারে; সেটা না থাকলে আপনি অবগত প্রবাহের বিপক্ষে ট্রেড করছেন।
নিষ্পত্তিশীল (পারপেচুয়াল নয়) বাজারের জন্য সাইজিং
পূর্বাভাস বাজার নিষ্পত্তি হয়। ক্রিপ্টো পেয়ারে তা হয় না। এটি হিসাব বদলে দেয়।
পলিমার্কেটে পেয়ার-আরব পজিশনের পরিশোধ-সূচি নির্দিষ্ট: যখন দুই বাজার নিষ্পত্তি হয়, পূর্বানুমিত স্প্রেড আর প্রকৃত স্প্রেডের পার্থক্য লক হয়ে যায়। এখানে রোলিং নেই, অসীম ধারণও নেই।
সাইজিংয়ের তাৎপর্য: আপনি সর্বোচ্চ যত ধরে রাখতে পারবেন, তা নিষ্পত্তি-পর্যন্ত-সময় দ্বারা সীমাবদ্ধ, কারণ পুঁজি ততক্ষণ লক থাকে। ৬ মাসে নিষ্পত্তি হওয়া কোনো পেয়ার আপনাকে শেয়ার-প্রতি ৩c দিতে পারে, কিন্তু ততক্ষণে দুই বাজারই পুরো সাইজ করা থাকলে অন্যত্র পুঁজি কাজে লাগাতে পারবেন না।
সঠিক দৃষ্টিভঙ্গি: পলিমার্কেটে stat-arb হলো সীমাবদ্ধ-সময়ের ট্রেডের একটি ধারা, অবিরাম কৌশল নয়। মোট PnL নয়, বরং প্রতিদিন লক-করা পুঁজি প্রতি PnL তুলনা করুন।
ঝুঁকি: নিষ্পত্তির পরেও বিচ্যুতি
সবচেয়ে খারাপ stat-arb ফলাফল হলো আপনার মিলে-যাওয়ার পূর্বাভাস ভুল, কারণ অন্তর্নিহিত ধারণাটাই ভুল ছিল। উদাহরণ:
- আপনি "Trump president on Apr 1" শর্ট করেছিলেন, ভেবে যে এটা "Trump president on Mar 1"-এর দিকে মিলে যাবে - কিন্তু মার্চের অভিশংসনের কারণে তারিখ ১ বাজার YES নিষ্পত্তি করে এবং তারিখ ২ বাজার NO নিষ্পত্তি করে। আপনার "স্প্রেড সমতল হওয়া উচিত" ধারণা ভুল ছিল।
- আপনি একই NBA Finals বিজয়ীতে পলিমার্কেট বনাম ক্যালশি আরব করেছিলেন। পলিমার্কেট সরকারি সিরিজে যে দল জিতেছে তাতে নিষ্পত্তি করে; ক্যালশি সামান্য ভিন্ন সংজ্ঞা ব্যবহার করে যেখানে ওভারটাইম টাই-ব্রেকার আলাদাভাবে ধরা হয়। দুটোই তাদের ঘোষিত শর্ত অনুযায়ী YES নিষ্পত্তি করে, কিন্তু বিপরীত দিকে।
প্রতিটি বাজারের নিষ্পত্তি-মানদণ্ড খুব মনোযোগ দিয়ে পড়ুন। ক্রস-ভেন্যু আরবে নিষ্পত্তি-অমিলের এক ধাপ দূরত্ব মানে দুই লেগেই পূর্ণ ক্ষতি।
কোড: পেয়ার মনিটর এবং থ্রেশহোল্ড-ট্রিগার
রেফারেন্স: দুটি সম্পর্কিত টোকেন মনিটর করুন, স্প্রেড থ্রেশহোল্ড ছুঁলেই আরব ছুড়ুন।
def pairs_monitor(token_a, token_b, threshold_cents=3, size=10):
"""Buy A and Sell B when (1 - ask_A) + bid_B > 1 + threshold."""
while True:
book_a = fetch_book(token_a)
book_b = fetch_book(token_b)
if not (book_a.best_ask and book_b.best_bid):
time.sleep(2); continue
# implied: cost of buying A at ask + value of selling B at bid
edge = (1 - book_a.best_ask) + book_b.best_bid - 1
if edge > threshold_cents / 100:
print(f"ARB edge={edge:.3f}; firing")
r_a = fok_buy(token_a, price=book_a.best_ask, size=size)
if r_a.status != "matched": continue
r_b = fok_sell(token_b, price=book_b.best_bid, size=size)
if r_b.status != "matched":
# leg A filled, B failed -- unhedged, exit A
fok_sell(token_a, price=book_a.best_bid, size=size)
time.sleep(3)
আংশিক ফিল হলে পরিষ্কার করা জরুরি। এটি না করলে আংশিক এক্সিকিউশন বটকে দিকনির্ভর এক্সপোজারে ফেলে, যা stat-arb-এর পুরো উদ্দেশ্যের ঠিক বিপরীত।


