نحوه عملکرد پیشگیری از تطبیق خودکار و معاملات صوری
قابلیت پیشگیری از تطبیق خودکار با شناسایی سفارشهای متعلق به یک حساب از معاملات داخلی جلوگیری میکند. این مقاله سازوکار موتور تطبیق و مرز قانونی معاملات صوری را بررسی میکند.
نحوه عملکرد پیشگیری از تطبیق خودکار در موتور تطبیق
هر سفارشی که یک بازار دریافت میکند، دارای فیلدهایی است که موتور پیش از تطبیق آنها را میخواند: سمت سفارش (خرید یا فروش)، قیمت، حجم و زمان اعتبار. قابلیت پیشگیری از تطبیق خودکار (Self-match prevention) دو فیلد دیگر به این موارد میافزاید. اولی یک شناسه است؛ عددی یا رشتهای که مشخص میکند سفارش متعلق به کدام شرکت، حساب یا گروه استراتژی است. دومی دستوری است که به موتور میگوید در صورت مواجهه دو سفارش فعال با شناسه یکسان، چه اقدامی انجام دهد.
این بررسی در لحظهای انجام میشود که یک سفارش تهاجمی (aggressing order) به قیمت سفارشِ در انتظار (resting order) میرسد که قرار است با آن تطبیق یابد. چهار نتیجه در این زمینه رایج است:
- لغو سفارش در انتظار: سفارش ورودی به دفتر سفارشات (Order Book) وارد شده و میتواند با هر آنچه در آن قیمت پشت سر سفارش قبلی قرار دارد، تطبیق یابد.
- لغو سفارش ورودی: سفارش در انتظار موقعیت خود را در صف حفظ میکند و سفارش تهاجمی حذف میشود.
- لغو هر دو سفارش: سختگیرانهترین تنظیم ممکن.
- کاهش حجم و لغو: سفارش بزرگتر به اندازه حجم سفارش کوچکتر کاهش مییابد، سفارش کوچکتر لغو میشود و باقیمانده سفارش بزرگتر فعال میماند.
در هیچیک از این چهار حالت، معاملهای انجام نمیشود. هیچ موردی در نوار قیمت (Tape) ثبت نمیشود، هیچ رکوردی در گزارشهای اجرای معامله (Fill log) درج نمیگردد و در عوض، یک لغوِ ناخواسته (unsolicited cancel) برای یک یا هر دو طرف ارسال میشود.
موقعیت در صف، هزینه پنهان این فرآیند است. سفارش در انتظاری که تحت دستور «لغو قدیمیترین» حذف میشود، تمام امتیازاتی را که با انتظار در صف کسب کرده بود، از دست میدهد. تحت اولویت قیمت-زمان، این زیان کامل است: ورود مجدد باعث میشود سفارش پشت سر تمام کسانی قرار بگیرد که در زمان انتظار آن، به صف پیوستهاند. راهنمای ما در مورد تخمین موقعیت در صف به بررسی ارزش این جایگاه میپردازد.
یک ابزار، چندین دفتر سفارش
این بررسی در سطح هر بازار (Venue) انجام میشود. موتور تطبیق تنها سفارشهایی را با هم مقایسه میکند که نزد خودش نگهداری میشوند. دو سفارش شما که در دو دفتر سفارش متفاوت در انتظار هستند، برای یکدیگر نامرئیاند و هیچ مکانیزم معاملاتی سهام در ایالات متحده بر آنها نظارت ندارد. یک سهم واحد در ایالات متحده همزمان در چندین دفتر سفارش معامله میشود. جدول زیر تعداد بازارهای مجزای قیمتگذاری و ثبت معامله را برای شش نماد شناختهشده در یک بازه پانزده دقیقهای در صبح 10 ژوئن 2026 نشان میدهد.
کد دقیق SQL پشت هر عدد
SELECT
q.ticker AS ticker,
q.quoting_venues AS quoting_venues,
t.printing_venues AS printing_venues
FROM
(
SELECT
ticker,
countDistinct(bid_exchange) AS quoting_venues
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')
AND sip_timestamp >= toDateTime('2026-06-10 14:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-10 14:15:00', 'UTC')
AND bid_price > 0
GROUP BY ticker
) AS q
INNER JOIN
(
SELECT
ticker,
countDistinct(exchange) AS printing_venues
FROM global_markets.stocks_trades
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')
AND sip_timestamp >= toDateTime('2026-06-10 14:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-10 14:15:00', 'UTC')
GROUP BY ticker
) AS t ON t.ticker = q.ticker
ORDER BY quoting_venues DESC, tickerنماد AAPL در آن بازه پانزده دقیقهای از 16 بازار مجزا پیشنهاد قیمت دریافت کرد و معاملات در 17 مورد از آنها ثبت شد. کمحجمترین نماد در این جدول همچنان در 11 بازار قیمتگذاری میشد. یک مسیریاب هوشمند سفارش (Smart Order Router) که سفارشهای خُرد را به صورت طراحیشده تقسیم میکند، در بیشتر مواقع استراتژیهای شما را در دفاتر سفارش متفاوتی قرار میدهد که در آنجا هیچ بررسی در سطح موتور تطبیق اعمال نمیشود. شرکتها این شکاف را در لایه مدیریت سفارش، پیش از خروج از سیستم، میبندند. سفارشهای خودتان که در دو دفتر سفارش در قیمت یکسان در دو سمت مخالف قرار دارند، منجر به ایجاد بازار قفلشده یا متقاطع میشود که قوانین خاص خود را دارد.
تعداد تطبیقهای یک دفتر سفارش در یک جلسه معاملاتی
بررسی تطبیق خودکار در مسیر هر تطبیقی که موتور انجام میدهد قرار دارد و در یک نماد نقدشونده، این مسیر در تمام طول روز فعال است. جدول زیر یک جلسه کامل معاملاتی یک سهم را به بازههای پانزده دقیقهای تقسیم کرده و تعداد معاملات ثبتشده در هر کدام را شمارش میکند، با این شرط که فقط بازههایی با حداقل 200 معامله نمایش داده شوند.
کد دقیق SQL پشت هر عدد
SELECT
formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 15 MINUTE), '%H:%i') AS et_time,
count() AS trade_count
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-10 08:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-11 04:00:00', 'UTC')
GROUP BY et_time
HAVING count() >= 200
ORDER BY et_timeدر ساعت 04:00 به وقت ET، آن نماد در پانزده دقیقه 9402 معامله ثبت کرد و در ساعت 19:45 به وقت ET، تعداد 1345 معامله در 64 بازه که از حد نصاب 200 معامله عبور کرده بودند، ثبت شد. هر ثبت معامله، یک جفت سفارش است که موتور آنها را به هم رسانده و بررسی مذکور، پیش از اجازه تطبیق، شناسههای هر دو طرف را میخواند. هر سفارشی که در دفتر سفارشات قرار میگیرد، کاندیدای تطبیق با سفارش دیگری از همان حساب در ادامه روز است.
آنچه نوار قیمت هنگام ثبت معامله خودکار نشان میدهد
یک تطبیق خودکارِ پیشگیریشده، هیچ اثری بر جای نمیگذارد. نوار قیمت تنها معاملات اجراشده را نشان میدهد و هر ثبت معامله با کدهای وضعیت (condition flags) همراه است؛ کدهایی که بازار گزارشدهنده برای توصیف نحوه انجام معامله پیوست میکند. جدول زیر یک جلسه کامل معاملاتی یک سهم را بر اساس این کدها تفکیک میکند.
کد دقیق SQL پشت هر عدد
SELECT
condition_name,
print_count,
round(100 * print_count / sum(print_count) OVER (), 2) AS share_pct
FROM
(
SELECT
cc.id AS condition_id,
any(cc.name) AS condition_name,
count() AS print_count
FROM
(
SELECT toInt32(arrayJoin(conditions)) AS condition_id
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-10 08:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-11 04:00:00', 'UTC')
) AS f
INNER JOIN
(
SELECT
toInt32(id) AS id,
any(name) AS name
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks'
AND has(data_types, 'trade')
GROUP BY id
) AS cc ON cc.id = f.condition_id
GROUP BY condition_id
)
ORDER BY print_count DESC
LIMIT 10Odd Lot Trade شامل 48.34% از معاملات علامتگذاریشده در آن جلسه است و جدول، 10 کد رایج روز را فهرست میکند. فهرست را بخوانید و به آنچه غایب است توجه کنید. عدم وجود کد به این معناست که دو سفارش از یک شرکت آمدهاند. یک معامله خودکار که ثبت میشود، مانند هر معامله دیگری در آن قیمت به نظر میرسد؛ بنابراین نظارت بر آن از طریق نوار قیمت انجام نمیشود، بلکه بر اساس شناسههای مشارکتکنندهای که بازار در اختیار دارد و شماره حسابهای درجشده روی سفارشها صورت میگیرد.
مرز پیشگیری از تطبیق خودکار و قانون معاملات صوری
پیشگیری از تطبیق خودکار یک سرویسِ بازار است. شما آن را انتخاب و پیکربندی میکنید و اگر آن را تنظیم نکنید، موتور با کمال میل دو سفارش شما را با هم تطبیق میدهد. ممنوعیت معاملات صوری (Wash trade) اختیاری نیست و به هیچ تنظیمی وابسته نیست.
بخش 9(الف)(1) قانون بورس اوراق بهادار 1934، تراکنشهایی در اوراق بهادار را هدف قرار میدهد که شامل تغییر در مالکیت ذینفعانه نبوده و با هدف ایجاد ظاهر گمراهکننده از فعالیت معاملاتی انجام میشوند. قانون بورس کالا نیز معادل آن را برای معاملات آتی دارد و قانون 534 CME آن را در کتاب قوانین بورس بازنویسی کرده است. قانون 5210 FINRA برای کارگزاران-معاملهگران تحت هر دو قانون قرار دارد و مواد تکمیلی آن مستقیماً به معاملات خودکار میپردازد: معاملات بین دو الگوریتم غیرمرتبط در یک شرکت، به خودی خود تخلف محسوب نمیشوند، اما انتظار میرود شرکت سیاستهایی برای بررسی و کاهش آنها داشته باشد.
برای هر کسی که بیش از یک استراتژی را اجرا میکند، دو پیامد وجود دارد. یک تقاطع خودکار (Self-cross) میتواند ممنوعیت مذکور را در بازاری که هیچ دستور پیشگیری از تطبیق خودکار در آن تنظیم نکردهاید، نقض کند، زیرا این قانون به تراکنش و قصد پشت آن مربوط میشود. تقاطع خودکاری که توسط سیستم پیشگیری از تطبیق خودکار متوقف شده، هیچ قانونی را نقض نمیکند؛ چرا که توقف آن، هدف اصلی این سیستم است.
نحوه پیکربندی توسط اپراتورها: CME، ICE، LME و MiFID II
در CME Globex، پیشگیری از تطبیق خودکار بر اساس شناسهای که هنگام ثبت سفارش ارسال میشود، عمل میکند. شرکتها شناسههایی را که استفاده خواهند کرد ثبت میکنند، هر سفارش دارای یکی از آنهاست و یک دستور جفتشده مشخص میکند که در صورت مواجهه دو سفارش با آن شناسه، موتور کدام سمت را لغو کند. سفارشهایی که بدون شناسه ارسال شوند، به طور عادی تطبیق مییابند که این همان تله برای اپراتورهای جدید است: تنظیمات پیشفرض غیرفعال است.
ICE از «قابلیت پیشگیری از معامله خودکار» استفاده میکند که به جای سفارش به سفارش، بر اساس شناسه شرکت معاملاتی پیکربندی میشود و نتایج لغو مشابهی دارد. بورس فلزات لندن (LME) نیز «پیشگیری از اجرای خودکار» را در LMEselect برای شناسههای معاملاتی اعضا ارائه میدهد. در اروپا، ماده 17 دستورالعمل MiFID II وظیفه سیستمها و کنترلها را بر عهده هر شرکت سرمایهگذاری فعال در معاملات الگوریتمی میگذارد که شامل تست، قابلیت توقف اضطراری (kill functionality) و پیشگیری از معاملات بینظم است. ماده 48 وظیفه مشابهی را بر عهده خودِ بازار میگذارد و ابزارهای پیشگیری در سمت بازار به تجهیزات استاندارد تبدیل شدهاند.
پیکربندی در سطح حساب یا شرکت انجام میشود، نه نماد به نماد. حجم سطح اختیار معامله یک دارایی پایه، دلیل این امر را نشان میدهد.
کد دقیق SQL پشت هر عدد
SELECT
toString(date) AS session_date,
countDistinct(ticker) AS contracts_traded,
countDistinct(strike_price) AS strikes_traded
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date >= '2026-06-01'
AND date <= '2026-06-30'
AND volume > 0
AND iv_converged = 1
GROUP BY date
ORDER BY dateدر 2026-06-01، یک دارایی پایه دارای 1579 قرارداد قابل معامله با حجم بود که در 112 قیمت اعمال (Strike) توزیع شده بودند و جدول، 21 جلسه با ساختار مشابه را پوشش میدهد. تنظیم قانون به صورت قرارداد به قرارداد در این تعداد، غیرممکن است. شناسه به حساب متصل میشود و با هر سفارشی که آن حساب ارسال میکند، همراه است.
حالت خطایی که گزارشهای اجرای معامله شما توضیح نمیدهند
در عمل، این موضوع به این صورت رخ میدهد: دستور «لغو جدیدترین» سفارشی را که تازه ارسال کردهاید، در بدو ورود و پیش از آنکه بتواند تطبیق یابد، از بین میبرد. از داخل ربات، این توالی به صورت یک سفارش جدید و به دنبال آن یک لغو که هیچکس درخواست نکرده، خوانده میشود. هیچ اجرای معامله، هیچ رد سفارش و هیچ رشته خطایی که دلیل آن را نام ببرد وجود ندارد، بنابراین اپراتورهایی که برای اولین بار با آن مواجه میشوند، تمایل دارند به دنبال باگ در مسیر لغو خود بگردند.
دو عادت باعث میشود این وضعیت قابل درک باشد. پیامهای وضعیت سفارش بازار را به صورت دقیق و بدون خلاصهسازی عادیسازیشده ثبت کنید، زیرا دلیل پیشگیری معمولاً به عنوان یک فیلد در آن پیام درج میشود. برای هر لغوی که کد خودتان آغازگر آن نبوده، هشدار تنظیم کنید. این هشدار باید در کنار مدارهای قطعکننده معاملات خودکار شما قرار گیرد، زیرا این خطا از همان کلاس است: بازار وضعیت سفارش شما را تغییر داده و فرآیند شما طوری ادامه یافته که گویی هیچ اتفاقی نیفتاده است.
پرسشهای متداول
پیشگیری از تطبیق خودکار چیست؟
یک بررسی در موتور تطبیق که مانع از معامله دو سفارش با شناسه شرکت یا حساب یکسان با یکدیگر میشود. هنگامی که آنها در شرف تطبیق باشند، موتور طبق دستور پیوستشده به سفارش، سفارش در انتظار، سفارش ورودی یا هر دو را لغو میکند.
آیا معامله خودکار همان معامله صوری (Wash trade) است؟
خیر. معامله خودکار هرگونه اجرای معامله بین دو سفارش از یک مالک ذینفع واحد است. معامله صوری، معامله خودکاری است که بدون ریسک واقعی بازار و با قصد ایجاد ظاهر گمراهکننده از فعالیت انجام میشود. معاملات خودکار غیرعمدی بین الگوریتمهای غیرمرتبط، متفاوت از معاملات سازمانیافته تلقی میشوند و همچنان انتظار میرود شرکتها بر آنها نظارت داشته باشند.
آیا پیشگیری از تطبیق خودکار در بورسهای مختلف کار میکند؟
خیر. هر موتور تطبیق این بررسی را فقط برای سفارشهای موجود در دفتر سفارشات خود اعمال میکند. دو سفارش از یک شرکت که در دو بازار مختلف در انتظار هستند، میتوانند با هم معامله شوند که این وظیفه را بر عهده بررسیهای پیش از معامله خودِ شرکت در سطحی بالاتر از بازارها میگذارد.
چرا سفارش من بدون اجرای معامله و بدون دلیل لغو شد؟
دستور «لغو جدیدترین» در پیشگیری از تطبیق خودکار یکی از احتمالات است: بازار سفارش را در بدو ورود، پیش از آنکه بتواند با سفارش در انتظاری که شناسه شما را دارد تطبیق یابد، لغو کرده است. دلیل آن معمولاً به جای رد سفارش، به عنوان یک فیلد در پیام لغو بازار ظاهر میشود.
کدام بازارها به شناسه پیشگیری از تطبیق خودکار نیاز دارند؟
الزامات بسته به بازار و محصول متفاوت است. CME هنگام ثبت سفارش به شناسهای نیاز دارد که از قبل ثبت شده باشد، در حالی که ICE و بورس فلزات لندن پیکربندیهای خود را در سطح شرکت ارائه میدهند و بازارهای اروپایی تحت MiFID II وظایف سیستمها و کنترلها را بر عهده دارند. کتاب قوانین بازار برای محصولی که معامله میکنید، مرجع اصلی است.
هر جدول در اینجا حاوی کد SQL تولیدکننده آن است، بنابراین هر کدام را باز کرده و مطالعه کنید. برای شمارش بازارهایی که یک نماد مورد معامله شما را قیمتگذاری میکنند، یا برای تفکیک یک جلسه معاملاتی به کدهای وضعیت، سوال خود را به زبان ساده در پایانه Strasmore بپرسید.