Self-match prevention और wash trades का अर्थ
Self-match prevention सुविधा एक ही फर्म के दो ऑर्डर्स को आपस में ट्रेड करने से कैसे रोकती है। मैचिंग इंजन में इसकी कार्यप्रणाली और wash trade कानूनों के बीच का अंतर समझें।
Self-match prevention एक ऐसी matching engine सुविधा है जो एक ही फर्म के दो ऑर्डर्स को आपस में ट्रेड करने से रोकती है। ऑर्डर्स में एंट्री के समय एक पहचानकर्ता (identifier) होता है, और जब दो ऑर्डर्स में एक ही पहचानकर्ता होता है और वे आपस में टकराते हैं, तो इंजन किसी ट्रेड के निष्पादित (print) होने से पहले उनमें से एक या दोनों को रद्द कर देता है। Self-match prevention एक ऐसी venue plumbing है जिसे आप सक्रिय करते हैं, जबकि wash trades पर प्रतिबंध कानून है, और ये दोनों एक ही दायरे में नहीं आते।
जिस क्षण दूसरी रणनीति किसी ऐसे इंस्ट्रूमेंट के लिए quote करती है जिसके लिए आपकी पहली रणनीति पहले से ही quote कर रही है, यह नियम आपके लिए लागू हो जाता है। एक ही सिंबल पर दो-सीढ़ी वाला ग्रिड बॉट उसी शर्तों पर इसका सामना करता है जिस पर एक बैंक डेस्क करती है।
Matching engine पर self-match prevention कैसे काम करता है
वेन्यू को प्राप्त होने वाला प्रत्येक ऑर्डर उन फील्ड्स को साथ लाता है जिन्हें इंजन मिलान से पहले पढ़ता है: side, price, size, time in force। Self-match prevention दो और फील्ड्स जोड़ता है। पहला एक पहचानकर्ता है, एक नंबर या स्ट्रिंग जो यह बताता है कि ऑर्डर किस फर्म, अकाउंट या रणनीति समूह का है। दूसरा एक निर्देश है जो इंजन को बताता है कि जब उस पहचानकर्ता वाले दो लाइव ऑर्डर्स आपस में ट्रेड करने वाले हों, तो क्या करना है।
यह जांच उस क्षण होती है जब एक aggressing order उस resting order की कीमत तक पहुँचता है जिसके साथ उसका मिलान हो सकता है। चार परिणाम सामान्यतः उपयोग किए जाते हैं:
- Resting order को रद्द करना। आने वाला ऑर्डर बुक में आगे बढ़ता है और उस कीमत पर पीछे मौजूद किसी भी ऑर्डर के साथ मिलान कर सकता है।
- Incoming order को रद्द करना। Resting order अपनी कतार की स्थिति (queue position) बनाए रखता है और aggressor गायब हो जाता है।
- दोनों ऑर्डर्स को रद्द करना, जो सबसे सख्त सेटिंग है।
- Decrement और cancel। बड़े ऑर्डर को छोटे के आकार से घटा दिया जाता है, छोटे को रद्द कर दिया जाता है, और शेष भाग लाइव रहता है।
इन चारों में से किसी में भी कोई ट्रेड नहीं होता है। टेप पर कुछ भी print नहीं होता, fill log में कुछ नहीं आता, और इसके बजाय एक या दोनों लेग्स पर एक unsolicited cancel प्राप्त होता है।
Queue position एक अदृश्य लागत है। Cancel-oldest निर्देश के तहत रद्द किया गया एक resting order प्रतीक्षा करके अर्जित की गई हर चीज़ खो देता है। price-time priority के तहत वह नुकसान पूर्ण होता है: दोबारा प्रवेश करने पर ऑर्डर उन सभी के पीछे चला जाता है जो उसके वहां रहने के दौरान कतार में शामिल हुए थे। estimating queue position के लिए हमारी गाइड यह बताती है कि कतार में उस स्थान का क्या मूल्य है।
एक इंस्ट्रूमेंट, कई बुक्स
यह जांच प्रति वेन्यू होती है। एक इंजन केवल उन्हीं ऑर्डर्स की तुलना करता है जो उसके पास होते हैं। दो अलग-अलग बुक्स में आपके दो resting ऑर्डर्स एक-दूसरे के लिए अदृश्य होते हैं, और कोई भी US equities तंत्र उन तक नहीं पहुँचता है। एक एकल US स्टॉक एक साथ कई बुक्स में quote होता है। नीचे दिया गया पैनल 10 जून, 2026 की सुबह पंद्रह मिनट की अवधि में छह प्रसिद्ध नामों के लिए अलग-अलग quoting और printing वेन्यू की गणना करता है।
हर आंकड़े के पीछे का पूरा 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, tickerAAPL ने उस पंद्रह मिनट में 16 अलग-अलग वेन्यू से bids प्राप्त कीं, और उनमें से 17 पर prints दर्ज हुए। पैनल में सबसे कम वॉल्यूम वाले नाम ने भी 11 quoting वेन्यू आकर्षित किए। एक स्मार्ट ऑर्डर राउटर जो child orders को विभाजित करता है, आपकी दो रणनीतियों को अधिकांश समय अलग-अलग बुक्स में रखेगा, जहां इंजन-स्तरीय जांच लागू नहीं होती है। फर्म्स इस अंतर को ऑर्डर मैनेजमेंट लेयर में, बिल्डिंग से कुछ भी बाहर जाने से पहले ही बंद कर देती हैं। दो बुक्स में एक ही कीमत पर विपरीत दिशाओं में आपके अपने ऑर्डर्स भी एक locked or crossed market पैदा करते हैं, जिसके अपने नियम होते हैं।
एक सत्र में एक बुक कितने मिलान करती है
Self-match जांच इंजन द्वारा किए जाने वाले हर मिलान के रास्ते में होती है, और एक liquid नाम पर वह रास्ता पूरे दिन व्यस्त रहता है। नीचे दिया गया पैनल एक स्टॉक के पूरे सत्र को पंद्रह मिनट के स्लाइस में विभाजित करता है और प्रत्येक में prints की गणना करता है, केवल उन स्लाइस को रखते हुए जिनमें कम से कम 200 prints थे।
हर आंकड़े के पीछे का पूरा 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_time04:00 ET पर उस एक नाम ने पंद्रह मिनट में 9402 ट्रेड्स print किए, और 19:45 ET पर उसने 1345 ट्रेड्स print किए, जो उन 64 बकेट्स में फैले थे जिन्होंने 200 print की सीमा को पार किया। प्रत्येक print ऑर्डर्स की एक जोड़ी है जिसे इंजन ने एक साथ लाया, और जांच उन्हें मिलने देने से पहले दोनों तरफ के पहचानकर्ताओं को पढ़ती है। बुक में आने वाला हर ऑर्डर दिन में बाद में उसी अकाउंट से किसी अन्य ऑर्डर से मिलने का उम्मीदवार होता है।
जब self-trade print होता है तो टेप क्या दिखाता है
एक रोका गया self-match पीछे कुछ नहीं छोड़ता। टेप पर केवल वही आता है जो निष्पादित हुआ, और प्रत्येक print condition flags के साथ आता है: वेन्यू द्वारा जोड़े गए कोड जो यह बताते हैं कि ट्रेड कैसे हुआ। नीचे दिया गया पैनल एक स्टॉक के पूरे सत्र को उन 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 उस सत्र में flagged prints के 48.34% को कवर करता है, और पैनल दिन के 10 सबसे सामान्य flags को सूचीबद्ध करता है। सूची पढ़ें और ध्यान दें कि क्या अनुपस्थित है। किसी कोड का न होने का मतलब है कि दो ऑर्डर्स एक ही फर्म से आए थे। एक self-trade जो print होता है, वह उस कीमत पर किसी अन्य ट्रेड जैसा दिखता है, इसलिए इसकी निगरानी टेप से बाहर, वेन्यू द्वारा रखे गए participant identifiers और ऑर्डर्स पर मौजूद अकाउंट नंबरों के आधार पर की जाती है।
Self-match prevention कहाँ समाप्त होता है और wash trade कानून कहाँ शुरू होता है
Self-match prevention एक वेन्यू सेवा है। आप इसे चुनते हैं, आप इसे कॉन्फ़िगर करते हैं, और यदि आपने इसे कभी सेट नहीं किया है तो इंजन आपके दो ऑर्डर्स का खुशी-खुशी मिलान कर देगा। Wash trade प्रतिबंध वैकल्पिक नहीं है और किसी सेटिंग पर निर्भर नहीं है।
Securities Exchange Act of 1934 की धारा 9(a)(1) उन प्रतिभूतियों के लेनदेन तक पहुँचती है जिनमें लाभकारी स्वामित्व (beneficial ownership) में कोई बदलाव नहीं होता, और जो सक्रिय ट्रेडिंग का भ्रामक आभास पैदा करने के लिए किए जाते हैं। Commodity Exchange Act में फ्यूचर्स का समकक्ष मौजूद है, और CME Rule 534 इसे एक्सचेंज रूलबुक में दोहराता है। FINRA Rule 5210 ब्रोकर-डीलर्स के लिए दोनों के तहत आता है, और इसकी पूरक सामग्री सीधे self-trades को संबोधित करती है: एक फर्म में दो असंबंधित एल्गोरिदम के बीच ट्रेड अपने आप में उल्लंघनकारी नहीं हैं, और फर्म से उम्मीद की जाती है कि वह उनकी समीक्षा और उन्हें कम करने के लिए नीतियां बनाए रखे।
एक से अधिक रणनीति चलाने वाले किसी भी व्यक्ति के लिए दो परिणाम होते हैं। एक self-cross उस वेन्यू पर प्रतिबंध का उल्लंघन कर सकता है जहाँ आपने कोई self-match निर्देश सेट नहीं किया है, क्योंकि नियम लेनदेन और उसके पीछे के इरादे से जुड़ा होता है। एक self-cross जिसे self-match prevention ने रोक दिया, वह किसी नियम का उल्लंघन नहीं करता: उसे रोकना ही इसका मुख्य उद्देश्य है।
ऑपरेटर इसे कैसे कॉन्फ़िगर करते हैं: CME, ICE, LME, और MiFID II
CME Globex पर, self-match prevention ऑर्डर एंट्री पर सबमिट किए गए पहचानकर्ता के आधार पर चलता है। फर्म्स उन पहचानकर्ताओं को पंजीकृत करती हैं जिनका वे उपयोग करेंगी, प्रत्येक ऑर्डर एक पहचानकर्ता ले जाता है, और एक युग्मित निर्देश बताता है कि जब उस पहचानकर्ता वाले दो ऑर्डर्स मिलते हैं तो इंजन किस तरफ को रद्द करता है। बिना पहचानकर्ता के भेजे गए ऑर्डर्स सामान्य रूप से मेल खाते हैं, जो एक नए ऑपरेटर के लिए जाल है: डिफ़ॉल्ट रूप से यह बंद रहता है।
ICE 'Self-Trade Prevention Functionality' चलाता है, जिसे ऑर्डर-दर-ऑर्डर के बजाय ट्रेडिंग फर्म पहचानकर्ता के खिलाफ कॉन्फ़िगर किया जाता है, जिसमें रद्द करने के समान परिणाम होते हैं। London Metal Exchange सदस्य ट्रेडिंग पहचानकर्ताओं के लिए LMEselect पर 'Self-Execution Prevention' प्रदान करता है। यूरोप में, MiFID II का अनुच्छेद 17 एल्गोरिथम ट्रेडिंग में लगी किसी भी निवेश फर्म पर सिस्टम और नियंत्रण का कर्तव्य डालता है, जिसमें परीक्षण, 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 date2026-06-01 पर, एक अंडरलाइंग में वॉल्यूम के साथ 1579 अलग-अलग ट्रेड करने योग्य कॉन्ट्रैक्ट्स थे, जो 112 स्ट्राइक्स में फैले थे, और पैनल समान आकार के 21 सत्रों को कवर करता है। उस संख्या पर कॉन्ट्रैक्ट-दर-कॉन्ट्रैक्ट नियम सेट करना अव्यवहारिक है। पहचानकर्ता इसके बजाय अकाउंट से जुड़ता है, और उस अकाउंट द्वारा भेजे गए हर ऑर्डर के साथ जाता है।
वह विफलता मोड जिसे आपके fill logs नहीं समझाएंगे
व्यवहार में यह ऐसे काम करता है। एक 'cancel-newest' निर्देश आपके द्वारा अभी भेजे गए ऑर्डर को आगमन पर ही मार देता है, इससे पहले कि वह मिलान कर सके। बॉट के अंदर से अनुक्रम एक नए ऑर्डर के रूप में पढ़ा जाता है जिसके बाद एक ऐसा cancel आता है जिसका अनुरोध किसी ने नहीं किया था। कोई fill नहीं, कोई reject नहीं, और कोई त्रुटि स्ट्रिंग नहीं है जो कारण बताती हो, इसलिए पहली बार इसका सामना करने वाले ऑपरेटर अक्सर अपने स्वयं के cancel पथ में बग की तलाश करते हैं।
दो आदतें इसे समझने योग्य बनाती हैं। वेन्यू के ऑर्डर स्टेटस संदेशों को सामान्यीकृत सारांश के बजाय verbatim लॉग करें, क्योंकि रोकथाम का कारण आमतौर पर उस संदेश पर एक फील्ड के रूप में आता है। किसी भी ऐसे cancel पर अलर्ट करें जिसे आपके अपने कोड ने उत्पन्न नहीं किया है। वह अलर्ट आपके automated trading circuit breakers के साथ आता है, क्योंकि विफलता एक ही वर्ग की है: वेन्यू ने आपके ऑर्डर की स्थिति बदल दी और आपकी प्रक्रिया ऐसे चलती रही जैसे कुछ हुआ ही न हो।
FAQ
Self-match prevention क्या है?
एक matching engine जांच जो एक ही फर्म या अकाउंट पहचानकर्ता वाले दो ऑर्डर्स को आपस में ट्रेड करने से रोकती है। जब वे मेल खाने वाले होते हैं, तो इंजन ऑर्डर के साथ जुड़े निर्देश का पालन करते हुए resting order, incoming order, या दोनों को रद्द कर देता है।
क्या self-trade और wash trade एक ही चीज़ हैं?
नहीं। Self-trade एक ही लाभकारी स्वामी (beneficial owner) के दो ऑर्डर्स के बीच कोई भी निष्पादन है। Wash trade एक ऐसा self-trade है जो वास्तविक बाजार जोखिम के बिना और गतिविधि का भ्रामक आभास पैदा करने के इरादे से किया जाता है। असंबंधित एल्गोरिदम के बीच अनपेक्षित self-trades को व्यवस्थित ट्रेड्स से अलग माना जाता है, और फर्मों से अभी भी उनकी निगरानी करने की अपेक्षा की जाती है।
क्या self-match prevention अलग-अलग एक्सचेंजों पर काम करता है?
नहीं। प्रत्येक matching engine जांच को केवल अपनी बुक में ऑर्डर्स पर लागू करता है। एक फर्म के दो ऑर्डर्स जो दो वेन्यू पर resting हैं, वे आपस में ट्रेड कर सकते हैं, जो उस काम को वेन्यू के ऊपर फर्म की अपनी pre-trade जांच पर छोड़ देता है।
मेरा ऑर्डर बिना किसी fill और बिना किसी कारण के रद्द क्यों हो गया?
'Cancel-newest' self-match निर्देश एक उम्मीदवार है: वेन्यू ने ऑर्डर को आगमन पर ही रद्द कर दिया, इससे पहले कि वह आपके पहचानकर्ता वाले resting order से मिल सके। कारण आमतौर पर rejection के बजाय वेन्यू के cancel संदेश पर एक फील्ड के रूप में दिखाई देता है।
किन वेन्यू को self-match prevention पहचानकर्ता की आवश्यकता होती है?
आवश्यकताएं वेन्यू और उत्पाद के अनुसार भिन्न होती हैं। CME ऑर्डर एंट्री पर एक पहचानकर्ता मांगता है, जिसे पहले से पंजीकृत करना होता है, जबकि ICE और London Metal Exchange फर्म स्तर पर अपनी कॉन्फ़िगरेशन प्रदान करते हैं और यूरोपीय वेन्यू MiFID II के तहत सिस्टम और नियंत्रण कर्तव्यों का पालन करते हैं। जिस उत्पाद का आप व्यापार करते हैं, उसकी वेन्यू रूलबुक ही आधिकारिक है।
यहाँ प्रत्येक पैनल में वह SQL है जिसने इसे तैयार किया है, इसलिए किसी को भी विस्तार से देखें और पढ़ें। जिस नाम का आप व्यापार करते हैं उसके quoting वेन्यू की गणना करने के लिए, या किसी सत्र को condition flags में विभाजित करने के लिए, Strasmore टर्मिनल पर सादे अंग्रेजी में प्रश्न पूछें।